From b4033be48c0ee514bd68909c93d3a736ac8f6910 Mon Sep 17 00:00:00 2001 From: MirandaWood Date: Mon, 25 Nov 2024 21:41:20 +0000 Subject: [PATCH 01/39] Revert "fix: Revert "feat: blobs. (#9302)" (#10187)" This reverts commit a415f6552ae9893699747b4d1fc799553e9a9a7e. --- .github/workflows/ci.yml | 2 +- l1-contracts/src/core/Rollup.sol | 294 +- l1-contracts/src/core/interfaces/IRollup.sol | 15 +- .../src/core/libraries/ConstantsGen.sol | 24 +- .../src/core/libraries/DataStructures.sol | 14 + l1-contracts/src/core/libraries/Errors.sol | 7 +- l1-contracts/src/core/libraries/HeaderLib.sol | 82 +- .../src/core/libraries/TxsDecoder.sol | 706 - .../src/core/libraries/crypto/MerkleLib.sol | 61 + l1-contracts/test/Rollup.t.sol | 311 +- l1-contracts/test/base/Base.sol | 8 + l1-contracts/test/decoders/Base.sol | 4 +- l1-contracts/test/decoders/Decoders.t.sol | 245 +- .../decoders/helpers/TxsDecoderHelper.sol | 41 - l1-contracts/test/fixtures/empty_block_1.json | 22 +- l1-contracts/test/fixtures/empty_block_2.json | 24 +- l1-contracts/test/fixtures/mixed_block_1.json | 24 +- l1-contracts/test/fixtures/mixed_block_2.json | 64 +- .../test/merkle/UnbalancedMerkle.t.sol | 53 +- .../test/merkle/helpers/MerkleLibHelper.sol | 8 + l1-contracts/test/sparta/Sparta.t.sol | 12 +- .../Nargo.template.toml | 2 +- .../crates/blob/Nargo.toml | 5 +- .../crates/blob/src/blob.nr | 671 + .../crates/blob/src/blob_public_inputs.nr | 134 + .../crates/blob/src/config.nr | 16395 ++++++++++++---- .../crates/blob/src/lib.nr | 4 + .../crates/blob/src/main.nr | 605 - .../crates/blob/src/negative_roots.nr | 4102 ---- .../crates/blob/src/smaller_config.nr | 77 +- .../crates/blob/src/unconstrained_config.nr | 106 + .../validate_initial_values.nr | 4 +- ...alidate_propagated_from_previous_kernel.nr | 9 - .../crates/rollup-lib/Nargo.toml | 1 + .../base_or_merge_rollup_public_inputs.nr | 20 +- ...block_root_or_block_merge_public_inputs.nr | 13 +- .../src/base/private_base_rollup.nr | 250 +- .../rollup-lib/src/base/public_base_rollup.nr | 245 +- .../block_merge/block_merge_rollup_inputs.nr | 26 + .../block_root/block_root_rollup_inputs.nr | 45 +- .../empty_block_root_rollup_inputs.nr | 7 +- .../crates/rollup-lib/src/block_root/mod.nr | 35 + .../crates/rollup-lib/src/components.nr | 338 +- .../src/merge/merge_rollup_inputs.nr | 23 +- .../rollup-lib/src/root/root_rollup_inputs.nr | 7 + .../src/root/root_rollup_public_inputs.nr | 3 +- .../src/tests/block_root_rollup_inputs.nr | 3 + .../src/tests/previous_rollup_block_data.nr | 5 + .../src/tests/previous_rollup_data.nr | 20 +- .../crates/types/src/abis/mod.nr | 1 + .../crates/types/src/abis/sponge_blob.nr | 143 + .../crates/types/src/constants.nr | 43 +- .../crates/types/src/content_commitment.nr | 12 +- .../crates/types/src/hash.nr | 226 + .../crates/types/src/header.nr | 2 +- .../crates/types/src/tests/fixture_builder.nr | 4 + .../crates/types/src/utils/arrays.nr | 13 + scripts/ci/get_e2e_jobs.sh | 3 +- .../archiver/src/archiver/archiver.test.ts | 4 +- .../archiver/src/archiver/data_retrieval.ts | 43 +- .../bb-prover/src/test/test_circuit_prover.ts | 25 +- yarn-project/circuit-types/src/body.test.ts | 40 + yarn-project/circuit-types/src/body.ts | 63 +- .../src/interfaces/block-builder.ts | 9 +- .../src/interfaces/processed-tx-handler.ts | 6 +- yarn-project/circuit-types/src/l2_block.ts | 6 +- .../src/l2_block_code_to_purge.ts | 10 +- .../circuit-types/src/tx/processed_tx.ts | 6 + .../circuit-types/src/tx_effect.test.ts | 69 +- yarn-project/circuit-types/src/tx_effect.ts | 347 +- yarn-project/circuits.js/src/constants.gen.ts | 24 +- .../src/structs/blob_public_inputs.test.ts | 79 + .../src/structs/blob_public_inputs.ts | 161 + .../src/structs/content_commitment.ts | 31 +- .../circuits.js/src/structs/header.ts | 4 +- yarn-project/circuits.js/src/structs/index.ts | 2 + ...ivate_kernel_tail_circuit_public_inputs.ts | 10 + .../base_or_merge_rollup_public_inputs.ts | 22 +- .../src/structs/rollup/base_rollup_hints.ts | 11 + ...root_or_block_merge_public_inputs.test.ts} | 0 ...block_root_or_block_merge_public_inputs.ts | 7 + .../src/structs/rollup/block_root_rollup.ts | 26 + .../src/structs/rollup/root_rollup.test.ts | 7 + .../src/structs/rollup/root_rollup.ts | 4 + .../src/structs/sponge_blob.test.ts | 56 + .../circuits.js/src/structs/sponge_blob.ts | 137 + .../circuits.js/src/tests/factories.ts | 57 +- .../end-to-end/scripts/e2e_test_config.yml | 3 +- .../composed/integration_l1_publisher.test.ts | 47 +- .../end-to-end/src/e2e_epochs.test.ts | 9 +- .../end-to-end/src/e2e_prover/full.test.ts | 2 +- .../fixtures/dumps/epoch_proof_result.json | 2 +- .../ethereum/src/deploy_l1_contracts.ts | 12 - yarn-project/foundation/package.json | 2 + yarn-project/foundation/src/blob/blob.test.ts | 135 + yarn-project/foundation/src/blob/index.ts | 152 + yarn-project/foundation/src/index.ts | 1 + .../foundation/src/serialize/field_reader.ts | 8 + .../scripts/generate-artifacts.sh | 1 - .../src/type_conversion.ts | 182 +- .../prover-client/src/mocks/test_context.ts | 12 +- .../orchestrator/block-building-helpers.ts | 24 +- .../src/orchestrator/block-proving-state.ts | 26 +- .../src/orchestrator/epoch-proving-state.ts | 2 - .../src/orchestrator/orchestrator.ts | 126 +- .../orchestrator/orchestrator_errors.test.ts | 44 +- .../orchestrator_failures.test.ts | 14 +- .../orchestrator_lifecycle.test.ts | 2 +- .../orchestrator_mixed_blocks.test.ts | 12 +- ...rchestrator_multi_public_functions.test.ts | 15 +- .../orchestrator_multiple_blocks.test.ts | 7 +- .../orchestrator_public_functions.test.ts | 8 +- .../orchestrator_single_blocks.test.ts | 18 +- .../orchestrator_workflow.test.ts | 11 +- .../src/test/bb_prover_base_rollup.test.ts | 4 +- .../src/test/bb_prover_full_rollup.test.ts | 12 +- .../prover-node/src/job/epoch-proving-job.ts | 13 +- .../src/block_builder/light.test.ts | 75 +- .../src/block_builder/light.ts | 30 +- .../src/block_builder/orchestrator.ts | 8 +- .../src/publisher/l1-publisher.test.ts | 98 +- .../src/publisher/l1-publisher.ts | 238 +- .../src/sequencer/sequencer.test.ts | 9 +- .../src/sequencer/sequencer.ts | 31 +- .../src/public/public_processor.test.ts | 37 +- .../simulator/src/public/public_processor.ts | 6 - .../telemetry-client/src/attributes.ts | 2 +- yarn-project/yarn.lock | 148 +- 128 files changed, 17443 insertions(+), 11034 deletions(-) delete mode 100644 l1-contracts/src/core/libraries/TxsDecoder.sol delete mode 100644 l1-contracts/test/decoders/helpers/TxsDecoderHelper.sol create mode 100644 noir-projects/noir-protocol-circuits/crates/blob/src/blob.nr create mode 100644 noir-projects/noir-protocol-circuits/crates/blob/src/blob_public_inputs.nr create mode 100644 noir-projects/noir-protocol-circuits/crates/blob/src/lib.nr delete mode 100644 noir-projects/noir-protocol-circuits/crates/blob/src/main.nr delete mode 100644 noir-projects/noir-protocol-circuits/crates/blob/src/negative_roots.nr create mode 100644 noir-projects/noir-protocol-circuits/crates/blob/src/unconstrained_config.nr create mode 100644 noir-projects/noir-protocol-circuits/crates/types/src/abis/sponge_blob.nr create mode 100644 yarn-project/circuit-types/src/body.test.ts create mode 100644 yarn-project/circuits.js/src/structs/blob_public_inputs.test.ts create mode 100644 yarn-project/circuits.js/src/structs/blob_public_inputs.ts rename yarn-project/circuits.js/src/structs/rollup/{block_root_or_block_merge_public_inputs_test.ts => block_root_or_block_merge_public_inputs.test.ts} (100%) create mode 100644 yarn-project/circuits.js/src/structs/sponge_blob.test.ts create mode 100644 yarn-project/circuits.js/src/structs/sponge_blob.ts create mode 100644 yarn-project/foundation/src/blob/blob.test.ts create mode 100644 yarn-project/foundation/src/blob/index.ts diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 45837c1954d..c07820a3449 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -157,7 +157,7 @@ jobs: concurrency_key: build-x86 # prepare images locally, tagged by commit hash - name: "Build E2E Image" - timeout-minutes: 40 + timeout-minutes: 90 if: (needs.configure.outputs.non-docs == 'true' && needs.configure.outputs.non-barretenberg-cpp == 'true') || github.ref_name == 'master' run: | earthly-ci ./yarn-project+export-e2e-test-images diff --git a/l1-contracts/src/core/Rollup.sol b/l1-contracts/src/core/Rollup.sol index 47e27678fcf..c965c6749e7 100644 --- a/l1-contracts/src/core/Rollup.sol +++ b/l1-contracts/src/core/Rollup.sol @@ -10,6 +10,7 @@ import {IInbox} from "@aztec/core/interfaces/messagebridge/IInbox.sol"; import {IOutbox} from "@aztec/core/interfaces/messagebridge/IOutbox.sol"; import {Leonidas} from "@aztec/core/Leonidas.sol"; import {Constants} from "@aztec/core/libraries/ConstantsGen.sol"; +import {Hash} from "@aztec/core/libraries/crypto/Hash.sol"; import {MerkleLib} from "@aztec/core/libraries/crypto/MerkleLib.sol"; import {SignatureLib} from "@aztec/core/libraries/crypto/SignatureLib.sol"; import {DataStructures} from "@aztec/core/libraries/DataStructures.sol"; @@ -18,7 +19,6 @@ import {Errors} from "@aztec/core/libraries/Errors.sol"; import {HeaderLib} from "@aztec/core/libraries/HeaderLib.sol"; import {ProposeArgs, ProposeLib} from "@aztec/core/libraries/ProposeLib.sol"; import {Timestamp, Slot, Epoch, SlotLib, EpochLib} from "@aztec/core/libraries/TimeMath.sol"; -import {TxsDecoder} from "@aztec/core/libraries/TxsDecoder.sol"; import {Inbox} from "@aztec/core/messagebridge/Inbox.sol"; import {Outbox} from "@aztec/core/messagebridge/Outbox.sol"; import {ProofCommitmentEscrow} from "@aztec/core/ProofCommitmentEscrow.sol"; @@ -86,6 +86,9 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { // // More direct approach would be storing keccak256(header) as well mapping(uint256 blockNumber => BlockLog log) public blocks; + // The below public inputs are filled when proposing a block, then used to verify an epoch proof. + // TODO(#8955): When implementing batched kzg proofs, store one instance per epoch rather than block + mapping(uint256 blockNumber => bytes32) public blobPublicInputsHashes; bytes32 public vkTreeRoot; bytes32 public protocolContractTreeRoot; @@ -94,6 +97,9 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { // Testing only. This should be removed eventually. uint256 private assumeProvenThroughBlockNumber; + // @note Always true, exists to override to false for testing only + bool public checkBlob = true; + constructor( IFeeJuicePortal _fpcJuicePortal, IRewardDistributor _rewardDistributor, @@ -203,15 +209,18 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { * * @param _args - The arguments to propose the block * @param _signatures - Signatures from the validators + * // TODO(#9101): The below _body should be removed once we can extract blobs. It's only here so the archiver can extract tx effects. * @param _body - The body of the L2 block + * @param _blobInput - The blob evaluation KZG proof, challenge, and opening required for the precompile. */ function proposeAndClaim( ProposeArgs calldata _args, SignatureLib.Signature[] memory _signatures, bytes calldata _body, + bytes calldata _blobInput, EpochProofQuoteLib.SignedEpochProofQuote calldata _quote ) external override(IRollup) { - propose(_args, _signatures, _body); + propose(_args, _signatures, _body, _blobInput); claimEpochProofRight(_quote); } @@ -229,17 +238,17 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { * @dev We provide the `_archive` and `_blockHash` even if it could be read from storage itself because it allow for * better error messages. Without passing it, we would just have a proof verification failure. * - * @param _epochSize - The size of the epoch (to be promoted to a constant) - * @param _args - Array of public inputs to the proof (previousArchive, endArchive, previousBlockHash, endBlockHash, endTimestamp, outHash, proverId) - * @param _fees - Array of recipient-value pairs with fees to be distributed for the epoch + * @param _submitArgs - Struct for constructing PIs which has: + * epochSize - The size of the epoch (to be promoted to a constant) + * args - Array of public inputs to the proof (previousArchive, endArchive, previousBlockHash, endBlockHash, endTimestamp, outHash, proverId) + * fees - Array of recipient-value pairs with fees to be distributed for the epoch + * blobPublicInputs- The blob PIs for the proof * @param _aggregationObject - The aggregation object for the proof * @param _proof - The proof to verify */ function submitEpochRootProof( - uint256 _epochSize, - bytes32[7] calldata _args, - bytes32[] calldata _fees, - bytes calldata _aggregationObject, + DataStructures.SubmitProofArgs calldata _submitArgs, + bytes calldata _aggregationObject, // having separate inputs here caused stack too deep bytes calldata _proof ) external override(IRollup) { if (canPrune()) { @@ -247,15 +256,14 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { } uint256 previousBlockNumber = tips.provenBlockNumber; - uint256 endBlockNumber = previousBlockNumber + _epochSize; + uint256 endBlockNumber = previousBlockNumber + _submitArgs.epochSize; // @note The getEpochForBlock is expected to revert if the block is beyond pending. // If this changes you are gonna get so rekt you won't believe it. // I mean proving blocks that have been pruned rekt. Epoch epochToProve = getEpochForBlock(endBlockNumber); - bytes32[] memory publicInputs = - getEpochProofPublicInputs(_epochSize, _args, _fees, _aggregationObject); + bytes32[] memory publicInputs = getEpochProofPublicInputs(_submitArgs, _aggregationObject); require(epochProofVerifier.verify(_proof, publicInputs), Errors.Rollup__InvalidProof()); @@ -269,7 +277,7 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { uint256 totalProverReward = 0; if (isFeeCanonical || isRewardDistributorCanonical) { - for (uint256 i = 0; i < _epochSize; i++) { + for (uint256 i = 0; i < _submitArgs.epochSize; i++) { address coinbase = address(uint160(uint256(publicInputs[9 + i * 2]))); uint256 reward = 0; uint256 toProver = 0; @@ -315,7 +323,7 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { PROOF_COMMITMENT_ESCROW.unstakeBond(proofClaim.bondProvider, proofClaim.bondAmount); } - emit L2ProofVerified(endBlockNumber, _args[6]); + emit L2ProofVerified(endBlockNumber, _submitArgs.args[6]); } function status(uint256 _myHeaderBlockNumber) @@ -388,6 +396,7 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { * @param _signatures - The signatures to validate * @param _digest - The digest to validate * @param _currentTime - The current time + * @param _blobsHash - The EVM blob hash for this block * @param _flags - The flags to validate */ function validateHeader( @@ -395,11 +404,11 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { SignatureLib.Signature[] memory _signatures, bytes32 _digest, Timestamp _currentTime, - bytes32 _txsEffectsHash, + bytes32 _blobsHash, DataStructures.ExecutionFlags memory _flags ) external view override(IRollup) { HeaderLib.Header memory header = HeaderLib.decode(_header); - _validateHeader(header, _signatures, _digest, _currentTime, _txsEffectsHash, _flags); + _validateHeader(header, _signatures, _digest, _currentTime, _blobsHash, _flags); } /** @@ -421,15 +430,6 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { return epochToProve; } - function computeTxsEffectsHash(bytes calldata _body) - external - pure - override(IRollup) - returns (bytes32) - { - return TxsDecoder.decode(_body); - } - function claimEpochProofRight(EpochProofQuoteLib.SignedEpochProofQuote calldata _quote) public override(IRollup) @@ -463,34 +463,39 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { * * @param _args - The arguments to propose the block * @param _signatures - Signatures from the validators - * @param _body - The body of the L2 block + * // TODO(#9101): The below _body should be removed once we can extract blobs. It's only here so the archiver can extract tx effects. + * @param - The body of the L2 block + * @param _blobInput - The blob evaluation KZG proof, challenge, and opening required for the precompile. */ function propose( ProposeArgs calldata _args, SignatureLib.Signature[] memory _signatures, - bytes calldata _body + // TODO(#9101): Extract blobs from beacon chain => remove below body input + bytes calldata, + bytes calldata _blobInput ) public override(IRollup) { if (canPrune()) { _prune(); } - // The `body` is passed outside the "args" as it does not directly need to be in the digest - // as long as the `txsEffectsHash` is included and matches what is in the header. - // Which we are checking in the `_validateHeader` call below. - bytes32 txsEffectsHash = TxsDecoder.decode(_body); + // Since an invalid blob hash here would fail the consensus checks of + // the header, the `blobInput` is implicitly accepted by consensus as well. + (bytes32 blobsHash, bytes32 blobPublicInputsHash) = _validateBlobs(_blobInput); // Decode and validate header HeaderLib.Header memory header = HeaderLib.decode(_args.header); - bytes32 digest = _args.digest(); - setupEpoch(); - _validateHeader({ - _header: header, - _signatures: _signatures, - _digest: digest, - _currentTime: Timestamp.wrap(block.timestamp), - _txEffectsHash: txsEffectsHash, - _flags: DataStructures.ExecutionFlags({ignoreDA: false, ignoreSignatures: false}) - }); + { + bytes32 digest = _args.digest(); + setupEpoch(); + _validateHeader({ + _header: header, + _signatures: _signatures, + _digest: digest, + _currentTime: Timestamp.wrap(block.timestamp), + _blobsHash: blobsHash, + _flags: DataStructures.ExecutionFlags({ignoreDA: false, ignoreSignatures: false}) + }); + } uint256 blockNumber = ++tips.pendingBlockNumber; @@ -500,6 +505,8 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { slotNumber: Slot.wrap(header.globalVariables.slotNumber) }); + blobPublicInputsHashes[blockNumber] = blobPublicInputsHash; + // @note The block number here will always be >=1 as the genesis block is at 0 bytes32 inHash = INBOX.consume(blockNumber); require( @@ -552,20 +559,20 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { * own public inputs used for generating the proof vs the ones assembled * by this contract when verifying it. * - * @param _epochSize - The size of the epoch (to be promoted to a constant) - * @param _args - Array of public inputs to the proof (previousArchive, endArchive, previousBlockHash, endBlockHash, endTimestamp, outHash, proverId) - * @param _fees - Array of recipient-value pairs with fees to be distributed for the epoch + * @param _submitArgs - Struct for constructing PIs which has: + * epochSize - The size of the epoch (to be promoted to a constant) + * args - Array of public inputs to the proof (previousArchive, endArchive, previousBlockHash, endBlockHash, endTimestamp, outHash, proverId) + * fees - Array of recipient-value pairs with fees to be distributed for the epoch + * blobPublicInputs- The blob PIs for the proof * @param _aggregationObject - The aggregation object for the proof */ function getEpochProofPublicInputs( - uint256 _epochSize, - bytes32[7] calldata _args, - bytes32[] calldata _fees, + DataStructures.SubmitProofArgs calldata _submitArgs, bytes calldata _aggregationObject ) public view override(IRollup) returns (bytes32[] memory) { uint256 previousBlockNumber = tips.provenBlockNumber; - uint256 endBlockNumber = previousBlockNumber + _epochSize; - + uint256 endBlockNumber = previousBlockNumber + _submitArgs.epochSize; + bytes32[7] memory args = _submitArgs.args; // Args are defined as an array because Solidity complains with "stack too deep" otherwise // 0 bytes32 _previousArchive, // 1 bytes32 _endArchive, @@ -581,26 +588,26 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { // We do it this way to provide better error messages than passing along the storage values bytes32 expectedPreviousArchive = blocks[previousBlockNumber].archive; require( - expectedPreviousArchive == _args[0], - Errors.Rollup__InvalidPreviousArchive(expectedPreviousArchive, _args[0]) + expectedPreviousArchive == args[0], + Errors.Rollup__InvalidPreviousArchive(expectedPreviousArchive, args[0]) ); bytes32 expectedEndArchive = blocks[endBlockNumber].archive; require( - expectedEndArchive == _args[1], Errors.Rollup__InvalidArchive(expectedEndArchive, _args[1]) + expectedEndArchive == args[1], Errors.Rollup__InvalidArchive(expectedEndArchive, args[1]) ); bytes32 expectedPreviousBlockHash = blocks[previousBlockNumber].blockHash; // TODO: Remove 0 check once we inject the proper genesis block hash require( - expectedPreviousBlockHash == 0 || expectedPreviousBlockHash == _args[2], - Errors.Rollup__InvalidPreviousBlockHash(expectedPreviousBlockHash, _args[2]) + expectedPreviousBlockHash == 0 || expectedPreviousBlockHash == args[2], + Errors.Rollup__InvalidPreviousBlockHash(expectedPreviousBlockHash, args[2]) ); bytes32 expectedEndBlockHash = blocks[endBlockNumber].blockHash; require( - expectedEndBlockHash == _args[3], - Errors.Rollup__InvalidBlockHash(expectedEndBlockHash, _args[3]) + expectedEndBlockHash == args[3], + Errors.Rollup__InvalidBlockHash(expectedEndBlockHash, args[3]) ); } @@ -618,14 +625,15 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { // end_timestamp: u64, // end_block_number: Field, // out_hash: Field, - // fees: [FeeRecipient; Constants.AZTEC_EPOCH_DURATION], + // fees: [FeeRecipient; Constants.AZTEC_MAX_EPOCH_DURATION], // vk_tree_root: Field, // protocol_contract_tree_root: Field, - // prover_id: Field + // prover_id: Field, + // blob_public_inputs: [BlockBlobPublicInputs; Constants.AZTEC_MAX_EPOCH_DURATION], // <--This will be reduced to 1 if/when we implement multi-opening for blob verification // } // previous_archive.root: the previous archive tree root - publicInputs[0] = _args[0]; + publicInputs[0] = args[0]; // previous_archive.next_available_leaf_index: the previous archive next available index // normally this should be equal to the block number (since leaves are 0-indexed and blocks 1-indexed) @@ -633,41 +641,85 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { publicInputs[1] = bytes32(previousBlockNumber + 1); // end_archive.root: the new archive tree root - publicInputs[2] = _args[1]; + publicInputs[2] = args[1]; // end_archive.next_available_leaf_index: the new archive next available index publicInputs[3] = bytes32(endBlockNumber + 1); // previous_block_hash: the block hash just preceding this epoch - publicInputs[4] = _args[2]; + publicInputs[4] = args[2]; // end_block_hash: the last block hash in the epoch - publicInputs[5] = _args[3]; + publicInputs[5] = args[3]; // end_timestamp: the timestamp of the last block in the epoch - publicInputs[6] = _args[4]; + publicInputs[6] = args[4]; // end_block_number: last block number in the epoch publicInputs[7] = bytes32(endBlockNumber); // out_hash: root of this epoch's l2 to l1 message tree - publicInputs[8] = _args[5]; + publicInputs[8] = args[5]; uint256 feesLength = Constants.AZTEC_MAX_EPOCH_DURATION * 2; // fees[9 to (9+feesLength-1)]: array of recipient-value pairs for (uint256 i = 0; i < feesLength; i++) { - publicInputs[9 + i] = _fees[i]; + publicInputs[9 + i] = _submitArgs.fees[i]; } - uint256 feesEnd = 9 + feesLength; + uint256 offset = 9 + feesLength; // vk_tree_root - publicInputs[feesEnd] = vkTreeRoot; + publicInputs[offset] = vkTreeRoot; + offset += 1; // protocol_contract_tree_root - publicInputs[feesEnd + 1] = protocolContractTreeRoot; + publicInputs[offset] = protocolContractTreeRoot; + offset += 1; // prover_id: id of current epoch's prover - publicInputs[feesEnd + 2] = _args[6]; + publicInputs[offset] = args[6]; + offset += 1; + + // blob_public_inputs + uint256 blobOffset = 0; + for (uint256 i = 0; i < _submitArgs.epochSize; i++) { + uint8 blobsInBlock = uint8(_submitArgs.blobPublicInputs[blobOffset++]); + // asserting here to avoid looping twice in one fn + { + // Blob public inputs are 112 bytes long - see _validateBlobs() for explanation + bytes32 calcBlobPublicInputsHash = sha256( + abi.encodePacked(_submitArgs.blobPublicInputs[blobOffset:blobOffset + 112 * blobsInBlock]) + ); + require( + calcBlobPublicInputsHash == blobPublicInputsHashes[previousBlockNumber + i + 1], + Errors.Rollup__InvalidBlobPublicInputsHash( + blobPublicInputsHashes[previousBlockNumber + i + 1], calcBlobPublicInputsHash + ) + ); + } + for (uint256 j = 0; j < Constants.BLOBS_PER_BLOCK; j++) { + if (j < blobsInBlock) { + // z + publicInputs[offset++] = + bytes32(_submitArgs.blobPublicInputs[blobOffset:blobOffset += 32]); + // y + (publicInputs[offset++], publicInputs[offset++], publicInputs[offset++]) = + _bytes32ToBigNum(bytes32(_submitArgs.blobPublicInputs[blobOffset:blobOffset += 32])); + // To fit into 2 fields, the commitment is split into 31 and 17 byte numbers + // TODO: The below left pads, possibly inefficiently + // c[0] + publicInputs[offset++] = bytes32( + uint256(uint248(bytes31(_submitArgs.blobPublicInputs[blobOffset:blobOffset += 31]))) + ); + // c[1] + publicInputs[offset++] = bytes32( + uint256(uint136(bytes17(_submitArgs.blobPublicInputs[blobOffset:blobOffset += 17]))) + ); + } else { + offset += Constants.BLOB_PUBLIC_INPUTS; + } + } + } // the block proof is recursive, which means it comes with an aggregation object // this snippet copies it into the public inputs needed for verification @@ -678,7 +730,7 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { assembly { part := calldataload(add(_aggregationObject.offset, mul(i, 32))) } - publicInputs[i + feesEnd + 3] = part; + publicInputs[i + Constants.ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH] = part; } return publicInputs; @@ -848,6 +900,7 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { * @param _signatures - The signatures for the attestations * @param _digest - The digest that signatures signed * @param _currentTime - The time of execution + * @param _blobsHash - The EVM blob hash for this block * @dev - This value is provided to allow for simple simulation of future * @param _flags - Flags specific to the execution, whether certain checks should be skipped */ @@ -856,14 +909,12 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { SignatureLib.Signature[] memory _signatures, bytes32 _digest, Timestamp _currentTime, - bytes32 _txEffectsHash, + bytes32 _blobsHash, DataStructures.ExecutionFlags memory _flags ) internal view { uint256 pendingBlockNumber = canPruneAtTime(_currentTime) ? tips.provenBlockNumber : tips.pendingBlockNumber; - _validateHeaderForSubmissionBase( - _header, _currentTime, _txEffectsHash, pendingBlockNumber, _flags - ); + _validateHeaderForSubmissionBase(_header, _currentTime, _blobsHash, pendingBlockNumber, _flags); _validateHeaderForSubmissionSequencerSelection( Slot.wrap(_header.globalVariables.slotNumber), _signatures, _digest, _currentTime, _flags ); @@ -920,7 +971,7 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { * - The last archive root in the header MUST match the current archive * - The slot MUST be larger than the slot of the previous block (ensures single block per slot) * - The timestamp MUST be equal to GENESIS_TIME + slot * SLOT_DURATION - * - The `txsEffectsHash` of the header must match the computed `_txsEffectsHash` + * - The `blobsHash` of the block must match the computed `_blobsHash` * - This can be relaxed to happen at the time of `submitProof` instead * * @param _header - The header to validate @@ -928,7 +979,7 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { function _validateHeaderForSubmissionBase( HeaderLib.Header memory _header, Timestamp _currentTime, - bytes32 _txsEffectsHash, + bytes32 _blobsHash, uint256 _pendingBlockNumber, DataStructures.ExecutionFlags memory _flags ) internal view { @@ -975,8 +1026,8 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { // Check if the data is available require( - _flags.ignoreDA || _header.contentCommitment.txsEffectsHash == _txsEffectsHash, - Errors.Rollup__UnavailableTxs(_header.contentCommitment.txsEffectsHash) + _flags.ignoreDA || _header.contentCommitment.blobsHash == _blobsHash, + Errors.Rollup__UnavailableTxs(_header.contentCommitment.blobsHash) ); // If not canonical rollup, require that the fees are zero @@ -986,6 +1037,93 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { } } + /** + * @notice Validate a blob. + * Input bytes: + * input[:32] - versioned_hash + * input[32:64] - z + * input[64:96] - y + * input[96:144] - commitment C + * input[144:192] - proof (a commitment to the quotient polynomial q(X)) + * - This can be relaxed to happen at the time of `submitProof` instead + * @notice Apparently there is no guarantee that the blobs will be processed in the order sent + * so the use of blobhash(_blobNumber) may fail in production + * @param _blobInput - The above bytes to verify a blob + */ + function _validateBlob(bytes calldata _blobInput, uint256 _blobNumber) + internal + view + returns (bytes32 blobHash) + { + if (!checkBlob) { + return bytes32(_blobInput[0:32]); + } + assembly { + blobHash := blobhash(_blobNumber) + } + require(blobHash == bytes32(_blobInput[0:32]), Errors.Rollup__InvalidBlobHash(blobHash)); + + // Staticcall the point eval precompile https://eips.ethereum.org/EIPS/eip-4844#point-evaluation-precompile : + (bool success,) = address(0x0a).staticcall(_blobInput); + require(success, Errors.Rollup__InvalidBlobProof(blobHash)); + } + + /** + * @notice Validate an L2 block's blobs and return the hashed blobHashes and public inputs. + * Input bytes: + * input[:1] - num blobs in block + * input[1:] - 192 * num blobs of the above _blobInput + * @param _blobsInput - The above bytes to verify a blob + */ + function _validateBlobs(bytes calldata _blobsInput) + internal + view + returns (bytes32 blobsHash, bytes32 blobPublicInputsHash) + { + // We cannot input the incorrect number of blobs below, as the blobsHash + // and epoch proof verification will fail. + uint8 numBlobs = uint8(_blobsInput[0]); + bytes32[] memory blobHashes = new bytes32[](numBlobs); + bytes memory blobPublicInputs; + for (uint256 i = 0; i < numBlobs; i++) { + // Add 1 for the numBlobs prefix + uint256 blobInputStart = i * 192 + 1; + // Since an invalid blob hash here would fail the consensus checks of + // the header, the `blobInput` is implicitly accepted by consensus as well. + blobHashes[i] = _validateBlob(_blobsInput[blobInputStart:blobInputStart + 192], i); + // We want to extract the 112 bytes we use for public inputs: + // * input[32:64] - z + // * input[64:96] - y + // * input[96:144] - commitment C + // Out of 192 bytes per blob. + blobPublicInputs = + abi.encodePacked(blobPublicInputs, _blobsInput[blobInputStart + 32:blobInputStart + 144]); + } + // Return the hash of all z, y, and Cs, so we can use them in proof verification later + blobPublicInputsHash = sha256(blobPublicInputs); + // Hash the EVM blob hashes for the block header + blobsHash = Hash.sha256ToField(abi.encodePacked(blobHashes)); + } + + /** + * @notice Converts a BLS12 field element from bytes32 to a nr BigNum type + * The nr bignum type for BLS12 fields is encoded as 3 nr fields - see blob_public_inputs.ts: + * firstLimb = last 15 bytes; + * secondLimb = bytes 2 -> 17; + * thirdLimb = first 2 bytes; + * Used when verifying epoch proofs to gather public inputs. + * @param _input - The field in bytes32 + */ + function _bytes32ToBigNum(bytes32 _input) + internal + pure + returns (bytes32 firstLimb, bytes32 secondLimb, bytes32 thirdLimb) + { + firstLimb = bytes32(uint256(uint120(bytes15(_input << 136)))); + secondLimb = bytes32(uint256(uint120(bytes15(_input << 16)))); + thirdLimb = bytes32(uint256(uint16(bytes2(_input)))); + } + function _fakeBlockNumberAsProven(uint256 _blockNumber) private { if (_blockNumber > tips.provenBlockNumber && _blockNumber <= tips.pendingBlockNumber) { tips.provenBlockNumber = _blockNumber; diff --git a/l1-contracts/src/core/interfaces/IRollup.sol b/l1-contracts/src/core/interfaces/IRollup.sol index 3f128d7db5a..d6613f4f1d0 100644 --- a/l1-contracts/src/core/interfaces/IRollup.sol +++ b/l1-contracts/src/core/interfaces/IRollup.sol @@ -36,20 +36,20 @@ interface IRollup { function propose( ProposeArgs calldata _args, SignatureLib.Signature[] memory _signatures, - bytes calldata _body + bytes calldata _body, + bytes calldata _blobInput ) external; function proposeAndClaim( ProposeArgs calldata _args, SignatureLib.Signature[] memory _signatures, bytes calldata _body, + bytes calldata _blobInput, EpochProofQuoteLib.SignedEpochProofQuote calldata _quote ) external; function submitEpochRootProof( - uint256 _epochSize, - bytes32[7] calldata _args, - bytes32[] calldata _fees, + DataStructures.SubmitProofArgs calldata _submitArgs, bytes calldata _aggregationObject, bytes calldata _proof ) external; @@ -61,7 +61,7 @@ interface IRollup { SignatureLib.Signature[] memory _signatures, bytes32 _digest, Timestamp _currentTime, - bytes32 _txsEffecstHash, + bytes32 _blobsHash, DataStructures.ExecutionFlags memory _flags ) external view; @@ -105,10 +105,7 @@ interface IRollup { ) external view; function getEpochForBlock(uint256 _blockNumber) external view returns (Epoch); function getEpochProofPublicInputs( - uint256 _epochSize, - bytes32[7] calldata _args, - bytes32[] calldata _fees, + DataStructures.SubmitProofArgs calldata _submitArgs, bytes calldata _aggregationObject ) external view returns (bytes32[] memory); - function computeTxsEffectsHash(bytes calldata _body) external pure returns (bytes32); } diff --git a/l1-contracts/src/core/libraries/ConstantsGen.sol b/l1-contracts/src/core/libraries/ConstantsGen.sol index 4aea0600b23..dc7b87f2a53 100644 --- a/l1-contracts/src/core/libraries/ConstantsGen.sol +++ b/l1-contracts/src/core/libraries/ConstantsGen.sol @@ -92,8 +92,9 @@ library Constants { uint256 internal constant FUNCTION_SELECTOR_NUM_BYTES = 4; uint256 internal constant INITIALIZATION_SLOT_SEPARATOR = 1000000000; uint256 internal constant INITIAL_L2_BLOCK_NUM = 1; + uint256 internal constant FIELDS_PER_BLOB = 4096; + uint256 internal constant BLOBS_PER_BLOCK = 3; uint256 internal constant PRIVATE_LOG_SIZE_IN_BYTES = 576; - uint256 internal constant BLOB_SIZE_IN_BYTES = 126976; uint256 internal constant AZTEC_MAX_EPOCH_DURATION = 32; uint256 internal constant GENESIS_ARCHIVE_ROOT = 19007378675971183768036762391356802220352606103602592933942074152320327194720; @@ -170,6 +171,9 @@ library Constants { uint256 internal constant FUNCTION_LEAF_PREIMAGE_LENGTH = 5; uint256 internal constant GLOBAL_VARIABLES_LENGTH = 9; uint256 internal constant APPEND_ONLY_TREE_SNAPSHOT_LENGTH = 2; + uint256 internal constant APPEND_ONLY_TREE_SNAPSHOT_LENGTH_BYTES = 36; + uint256 internal constant SPONGE_BLOB_LENGTH = 11; + uint256 internal constant BLOB_PUBLIC_INPUTS = 6; uint256 internal constant L1_TO_L2_MESSAGE_LENGTH = 6; uint256 internal constant L2_TO_L1_MESSAGE_LENGTH = 3; uint256 internal constant SCOPED_L2_TO_L1_MESSAGE_LENGTH = 4; @@ -202,6 +206,7 @@ library Constants { uint256 internal constant TX_REQUEST_LENGTH = 12; uint256 internal constant TOTAL_FEES_LENGTH = 1; uint256 internal constant HEADER_LENGTH = 24; + uint256 internal constant HEADER_LENGTH_BYTES = 616; uint256 internal constant PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 490; uint256 internal constant PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 866; uint256 internal constant PRIVATE_CONTEXT_INPUTS_LENGTH = 37; @@ -221,9 +226,9 @@ library Constants { uint256 internal constant PRIVATE_TO_PUBLIC_KERNEL_CIRCUIT_PUBLIC_INPUTS_LENGTH = 1140; uint256 internal constant KERNEL_CIRCUIT_PUBLIC_INPUTS_LENGTH = 605; uint256 internal constant CONSTANT_ROLLUP_DATA_LENGTH = 13; - uint256 internal constant BASE_OR_MERGE_PUBLIC_INPUTS_LENGTH = 30; - uint256 internal constant BLOCK_ROOT_OR_BLOCK_MERGE_PUBLIC_INPUTS_LENGTH = 90; - uint256 internal constant ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH = 76; + uint256 internal constant BASE_OR_MERGE_PUBLIC_INPUTS_LENGTH = 51; + uint256 internal constant BLOCK_ROOT_OR_BLOCK_MERGE_PUBLIC_INPUTS_LENGTH = 666; + uint256 internal constant ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH = 652; uint256 internal constant GET_NOTES_ORACLE_RETURN_LENGTH = 674; uint256 internal constant NOTE_HASHES_NUM_BYTES_PER_BASE_ROLLUP = 2048; uint256 internal constant NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP = 2048; @@ -272,6 +277,17 @@ library Constants { uint256 internal constant START_EMIT_NULLIFIER_WRITE_OFFSET = 208; uint256 internal constant START_EMIT_L2_TO_L1_MSG_WRITE_OFFSET = 224; uint256 internal constant START_EMIT_UNENCRYPTED_LOG_WRITE_OFFSET = 226; + uint256 internal constant TX_START_PREFIX = 8392562855083340404; + uint256 internal constant REVERT_CODE_PREFIX = 1; + uint256 internal constant TX_FEE_PREFIX = 2; + uint256 internal constant NOTES_PREFIX = 3; + uint256 internal constant NULLIFIERS_PREFIX = 4; + uint256 internal constant L2_L1_MSGS_PREFIX = 5; + uint256 internal constant PUBLIC_DATA_UPDATE_REQUESTS_PREFIX = 6; + uint256 internal constant NOTE_ENCRYPTED_LOGS_PREFIX = 7; + uint256 internal constant ENCRYPTED_LOGS_PREFIX = 8; + uint256 internal constant UNENCRYPTED_LOGS_PREFIX = 9; + uint256 internal constant CONTRACT_CLASS_LOGS_PREFIX = 10; uint256 internal constant PROOF_TYPE_PLONK = 0; uint256 internal constant PROOF_TYPE_HONK = 1; uint256 internal constant PROOF_TYPE_OINK = 2; diff --git a/l1-contracts/src/core/libraries/DataStructures.sol b/l1-contracts/src/core/libraries/DataStructures.sol index 61accf40655..61d9edff8ed 100644 --- a/l1-contracts/src/core/libraries/DataStructures.sol +++ b/l1-contracts/src/core/libraries/DataStructures.sol @@ -92,4 +92,18 @@ library DataStructures { address bondProvider; address proposerClaimant; } + + /** + * @notice Struct for submitting the Epoch Proof + * @param epochSize - The size of the epoch (to be promoted to a constant) + * @param args - Array of public inputs to the proof (previousArchive, endArchive, previousBlockHash, endBlockHash, endTimestamp, outHash, proverId) + * @param fees - Array of recipient-value pairs with fees to be distributed for the epoch + * @param blobPublicInputs- The blob PIs for the proof + */ + struct SubmitProofArgs { + uint256 epochSize; + bytes32[7] args; + bytes32[] fees; + bytes blobPublicInputs; + } } diff --git a/l1-contracts/src/core/libraries/Errors.sol b/l1-contracts/src/core/libraries/Errors.sol index a53b8c10f62..a32f7a0122a 100644 --- a/l1-contracts/src/core/libraries/Errors.sol +++ b/l1-contracts/src/core/libraries/Errors.sol @@ -60,6 +60,9 @@ library Errors { error Rollup__InvalidProposedArchive(bytes32 expected, bytes32 actual); // 0x32532e73 error Rollup__InvalidTimestamp(Timestamp expected, Timestamp actual); // 0x3132e895 error Rollup__InvalidVersion(uint256 expected, uint256 actual); // 0x9ef30794 + error Rollup__InvalidBlobHash(bytes32 blobHash); // 0xc4a168c6 + error Rollup__InvalidBlobProof(bytes32 blobHash); // 0x5ca17bef + error Rollup__InvalidBlobPublicInputsHash(bytes32 expected, bytes32 actual); // 0xfe6b4994 error Rollup__NoEpochToProve(); // 0xcbaa3951 error Rollup__NonSequentialProving(); // 0x1e5be132 error Rollup__NotClaimingCorrectEpoch(Epoch expected, Epoch actual); // 0xf0e0744d @@ -76,10 +79,6 @@ library Errors { error Rollup__NonZeroL2Fee(); // 0x7e728abc error Rollup__InvalidBasisPointFee(uint256 basisPointFee); // 0x4292d136 - //TxsDecoder - error TxsDecoder__InvalidLogsLength(uint256 expected, uint256 actual); // 0x829ca981 - error TxsDecoder__TxsTooLarge(uint256 expected, uint256 actual); // 0xc7d44a62 - // HeaderLib error HeaderLib__InvalidHeaderSize(uint256 expected, uint256 actual); // 0xf3ccb247 error HeaderLib__InvalidSlotNumber(Slot expected, Slot actual); // 0x09ba91ff diff --git a/l1-contracts/src/core/libraries/HeaderLib.sol b/l1-contracts/src/core/libraries/HeaderLib.sol index 4f29c431039..db3e90827c0 100644 --- a/l1-contracts/src/core/libraries/HeaderLib.sol +++ b/l1-contracts/src/core/libraries/HeaderLib.sol @@ -24,7 +24,7 @@ import {Errors} from "@aztec/core/libraries/Errors.sol"; * | 0x0020 | 0x04 | lastArchive.nextAvailableLeafIndex * | | | ContentCommitment { * | 0x0024 | 0x20 | numTxs - * | 0x0044 | 0x20 | txsEffectsHash + * | 0x0044 | 0x20 | blobsHash * | 0x0064 | 0x20 | inHash * | 0x0084 | 0x20 | outHash * | | | StateReference { @@ -91,7 +91,7 @@ library HeaderLib { struct ContentCommitment { uint256 numTxs; - bytes32 txsEffectsHash; + bytes32 blobsHash; bytes32 inHash; bytes32 outHash; } @@ -104,7 +104,7 @@ library HeaderLib { uint256 totalFees; } - uint256 private constant HEADER_LENGTH = 0x268; // Header byte length + uint256 private constant HEADER_LENGTH = Constants.HEADER_LENGTH_BYTES; // Header byte length /** * @notice Decodes the header @@ -126,7 +126,7 @@ library HeaderLib { // Reading ContentCommitment header.contentCommitment.numTxs = uint256(bytes32(_header[0x0024:0x0044])); - header.contentCommitment.txsEffectsHash = bytes32(_header[0x0044:0x0064]); + header.contentCommitment.blobsHash = bytes32(_header[0x0044:0x0064]); header.contentCommitment.inHash = bytes32(_header[0x0064:0x0084]); header.contentCommitment.outHash = bytes32(_header[0x0084:0x00a4]); @@ -160,78 +160,4 @@ library HeaderLib { return header; } - - function toFields(Header memory _header) internal pure returns (bytes32[] memory) { - bytes32[] memory fields = new bytes32[](24); - - // must match the order in the Header.getFields - fields[0] = _header.lastArchive.root; - fields[1] = bytes32(uint256(_header.lastArchive.nextAvailableLeafIndex)); - fields[2] = bytes32(_header.contentCommitment.numTxs); - fields[3] = _header.contentCommitment.txsEffectsHash; - fields[4] = _header.contentCommitment.inHash; - fields[5] = _header.contentCommitment.outHash; - fields[6] = _header.stateReference.l1ToL2MessageTree.root; - fields[7] = bytes32(uint256(_header.stateReference.l1ToL2MessageTree.nextAvailableLeafIndex)); - fields[8] = _header.stateReference.partialStateReference.noteHashTree.root; - fields[9] = bytes32( - uint256(_header.stateReference.partialStateReference.noteHashTree.nextAvailableLeafIndex) - ); - fields[10] = _header.stateReference.partialStateReference.nullifierTree.root; - fields[11] = bytes32( - uint256(_header.stateReference.partialStateReference.nullifierTree.nextAvailableLeafIndex) - ); - fields[12] = _header.stateReference.partialStateReference.publicDataTree.root; - fields[13] = bytes32( - uint256(_header.stateReference.partialStateReference.publicDataTree.nextAvailableLeafIndex) - ); - fields[14] = bytes32(_header.globalVariables.chainId); - fields[15] = bytes32(_header.globalVariables.version); - fields[16] = bytes32(_header.globalVariables.blockNumber); - fields[17] = bytes32(_header.globalVariables.slotNumber); - fields[18] = bytes32(_header.globalVariables.timestamp); - fields[19] = bytes32(uint256(uint160(_header.globalVariables.coinbase))); - fields[20] = bytes32(_header.globalVariables.feeRecipient); - fields[21] = bytes32(_header.globalVariables.gasFees.feePerDaGas); - fields[22] = bytes32(_header.globalVariables.gasFees.feePerL2Gas); - fields[23] = bytes32(_header.totalFees); - - // fail if the header structure has changed without updating this function - require( - fields.length == Constants.HEADER_LENGTH, - Errors.HeaderLib__InvalidHeaderSize(Constants.HEADER_LENGTH, fields.length) - ); - - return fields; - } - - // TODO(#7346): Currently using the below to verify block root proofs until batch rollups fully integrated. - // Once integrated, remove the below fn (not used anywhere else). - function toFields(GlobalVariables memory _globalVariables) - internal - pure - returns (bytes32[] memory) - { - bytes32[] memory fields = new bytes32[](Constants.GLOBAL_VARIABLES_LENGTH); - - fields[0] = bytes32(_globalVariables.chainId); - fields[1] = bytes32(_globalVariables.version); - fields[2] = bytes32(_globalVariables.blockNumber); - fields[3] = bytes32(_globalVariables.slotNumber); - fields[4] = bytes32(_globalVariables.timestamp); - fields[5] = bytes32(uint256(uint160(_globalVariables.coinbase))); - fields[6] = bytes32(_globalVariables.feeRecipient); - fields[7] = bytes32(_globalVariables.gasFees.feePerDaGas); - fields[8] = bytes32(_globalVariables.gasFees.feePerL2Gas); - - // fail if the header structure has changed without updating this function - // TODO(Miranda): Temporarily using this method and below error while block-root proofs are verified - // When we verify root proofs, this method can be removed => no need for separate named error - require( - fields.length == Constants.GLOBAL_VARIABLES_LENGTH, - Errors.HeaderLib__InvalidHeaderSize(Constants.HEADER_LENGTH, fields.length) - ); - - return fields; - } } diff --git a/l1-contracts/src/core/libraries/TxsDecoder.sol b/l1-contracts/src/core/libraries/TxsDecoder.sol deleted file mode 100644 index 9bf8ef5329e..00000000000 --- a/l1-contracts/src/core/libraries/TxsDecoder.sol +++ /dev/null @@ -1,706 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright 2024 Aztec Labs. -pragma solidity >=0.8.27; - -import {Constants} from "@aztec/core/libraries/ConstantsGen.sol"; -import {Hash} from "@aztec/core/libraries/crypto/Hash.sol"; -import {Errors} from "@aztec/core/libraries/Errors.sol"; - -/** - * @title Txs Decoder Library - * @author Aztec Labs - * @notice Decoding a L2 block body and computing the TxsHash. - * Concerned with readability and velocity of development not giving a damn about gas costs. - * @dev Assumes the input trees to be padded. - * - * ------------------- - * L2 Body Data Specification - * ------------------- - * | byte start | num bytes | name - * | --- | --- | --- - * | 0x0 | 0x4 | len(numTxs) (denoted t) - * | | | TxEffect 0 { - * | 0x4 | 0x1 | revertCode - * | 0x5 | 0x20 | transactionFee - * | 0x25 | 0x1 | len(noteHashes) (denoted b) - * | 0x25 + 0x1 | b * 0x20 | noteHashes - * | 0x25 + 0x1 + b * 0x20 | 0x1 | len(nullifiers) (denoted c) - * | 0x25 + 0x1 + b * 0x20 + 0x1 | c * 0x20 | nullifiers - * | 0x25 + 0x1 + b * 0x20 + 0x1 + c * 0x20 | 0x1 | len(l2ToL1Msgs) (denoted d) - * | 0x25 + 0x1 + b * 0x20 + 0x1 + c * 0x20 + 0x1 | d * 0x20 | l2ToL1Msgs - * | 0x25 + 0x1 + b * 0x20 + 0x1 + c * 0x20 + 0x1 + d * 0x20 | 0x1 | len(publicDataUpdateRequests) (denoted e) - * | 0x25 + 0x1 + b * 0x20 + 0x1 + c * 0x20 + 0x1 + d * 0x20 + 0x01 | e * 0x40 | publicDataUpdateRequests - * | 0x25 + 0x1 + b * 0x20 + 0x1 + c * 0x20 + 0x1 + d * 0x20 + 0x01 + e * 0x40 | 0x04 | byteLen(noteEncryptedLogs) (denoted f) - * | 0x25 + 0x1 + b * 0x20 + 0x1 + c * 0x20 + 0x1 + d * 0x20 + 0x01 + e * 0x40 + 0x4 | f | noteEncryptedLogs - * | 0x25 + 0x1 + b * 0x20 + 0x1 + c * 0x20 + 0x1 + d * 0x20 + 0x01 + e * 0x40 + 0x4 + f | 0x04 | byteLen(encryptedLogs) (denoted g) - * | 0x25 + 0x1 + b * 0x20 + 0x1 + c * 0x20 + 0x1 + d * 0x20 + 0x01 + e * 0x40 + 0x4 + f + 0x4 | g | encryptedLogs - * | 0x25 + 0x1 + b * 0x20 + 0x1 + c * 0x20 + 0x1 + d * 0x20 + 0x01 + e * 0x40 + 0x4 + f + 0x4 + g | 0x04 | byteLen(unencryptedLogs) (denoted h) - * | 0x25 + 0x1 + b * 0x20 + 0x1 + c * 0x20 + 0x1 + d * 0x20 + 0x01 + e * 0x40 + 0x4 + f + 0x4 + g + 0x04| h | unencryptedLogs - * | | | }, - * | | | TxEffect 1 { - * | | | ... - * | | | }, - * | | | ... - * | | | TxEffect (t - 1) { - * | | | ... - * | | | }, - */ -library TxsDecoder { - struct ArrayOffsets { - uint256 revertCode; - uint256 transactionFee; - uint256 noteHash; - uint256 nullifier; - uint256 l2ToL1Msgs; - uint256 publicData; - uint256 noteEncryptedLogsLength; - uint256 encryptedLogsLength; - uint256 unencryptedLogsLength; - uint256 contractClassLogsLength; - } - - struct Counts { - uint256 noteHash; - uint256 nullifier; - uint256 l2ToL1Msgs; - uint256 publicData; - } - - // Note: Used in `computeConsumables` to get around stack too deep errors. - struct ConsumablesVars { - bytes32[] baseLeaves; - bytes baseLeaf; - uint256 kernelNoteEncryptedLogsLength; - uint256 kernelEncryptedLogsLength; - uint256 kernelUnencryptedLogsLength; - uint256 kernelContractClassLogsLength; - bytes32 noteEncryptedLogsHash; - bytes32 encryptedLogsHash; - bytes32 unencryptedLogsHash; - bytes32 contractClassLogsHash; - bytes32 txOutHash; - } - - /** - * @notice Computes txs effects hash - * @param _body - The L2 block body calldata. - * @return The txs effects hash. - */ - function decode(bytes calldata _body) external pure returns (bytes32) { - ArrayOffsets memory offsets; - Counts memory counts; - ConsumablesVars memory vars; - uint256 offset = 0; - - uint32 numTxEffects = uint32(read4(_body, offset)); - uint256 numTxEffectsToPad = computeNumTxEffectsToPad(numTxEffects); - - offset += 0x4; - vars.baseLeaves = new bytes32[](numTxEffects + numTxEffectsToPad); - - // Data starts after header. Look at L2 Block Data specification at the top of this file. - { - for (uint256 i = 0; i < numTxEffects; i++) { - /* - * Compute the leaf to insert. - * Leaf_i = ( - * revertCode, - * transactionFee, - * noteHashesKernel, - * nullifiersKernel, - * txOutHash, |=> Computed below from l2tol1msgs - * publicDataUpdateRequestsKernel, - * noteEncryptedLogsLength, - * encryptedLogsLength, - * unencryptedLogsLength, - * noteEncryptedLogsHash, | - * encryptedLogsHash, | - * unencryptedLogsHash, ____|=> Computed below from logs' preimages. - * ); - * Note that we always read data, the l2Block (atm) must therefore include dummy or zero-notes for - * Zero values. - */ - - // REVERT CODE - offsets.revertCode = offset; - offset += 0x1; - - // TX FEE - offsets.transactionFee = offset; - offset += 0x20; - - // NOTE HASHES - uint256 count = read1(_body, offset); - offset += 0x1; - counts.noteHash = count; - offsets.noteHash = offset; - offset += count * 0x20; // each note hash is 0x20 bytes long - - // NULLIFIERS - count = read1(_body, offset); - offset += 0x1; - counts.nullifier = count; - offsets.nullifier = offset; - offset += count * 0x20; // each nullifier is 0x20 bytes long - - // L2 TO L1 MESSAGES - count = read1(_body, offset); - offset += 0x1; - counts.l2ToL1Msgs = count; - offsets.l2ToL1Msgs = offset; - offset += count * 0x20; // each l2 to l1 message is 0x20 bytes long - - // PUBLIC DATA UPDATE REQUESTS - count = read1(_body, offset); - offset += 0x1; - counts.publicData = count; - offsets.publicData = offset; - offset += count * 0x40; // each public data update request is 0x40 bytes long - - // NOTE ENCRYPTED LOGS LENGTH - offsets.noteEncryptedLogsLength = offset; - offset += 0x20; - - // ENCRYPTED LOGS LENGTH - offsets.encryptedLogsLength = offset; - offset += 0x20; - - // UNENCRYPTED LOGS LENGTH - offsets.unencryptedLogsLength = offset; - offset += 0x20; - - // CONTRACT CLASS LOGS LENGTH - offsets.contractClassLogsLength = offset; - offset += 0x20; - - /** - * Compute note, encrypted, unencrypted, and contract class logs hashes corresponding to the current leaf. - * Note: will advance offsets by the number of bytes processed. - */ - // NOTE ENCRYPTED LOGS HASH - (vars.noteEncryptedLogsHash, offset, vars.kernelNoteEncryptedLogsLength) = - computeKernelNoteEncryptedLogsHash(offset, _body); - // ENCRYPTED LOGS HASH - (vars.encryptedLogsHash, offset, vars.kernelEncryptedLogsLength) = - computeKernelEncryptedLogsHash(offset, _body); - // UNENCRYPTED LOGS HASH - (vars.unencryptedLogsHash, offset, vars.kernelUnencryptedLogsLength) = - computeKernelUnencryptedLogsHash(offset, _body, false); - // CONTRACT CLASS LOGS HASH - // Note: the logic for unenc. and contract class logs hashing is the same: - (vars.contractClassLogsHash, offset, vars.kernelContractClassLogsLength) = - computeKernelUnencryptedLogsHash(offset, _body, true); - // TX LEVEL OUT HASH - (vars.txOutHash) = computeTxOutHash(offsets.l2ToL1Msgs, _body); - - // We throw to ensure that the byte len we charge for DA gas in the kernels matches the actual chargable log byte len - // Without this check, the user may provide the kernels with a lower log len than reality - require( - uint256(bytes32(slice(_body, offsets.noteEncryptedLogsLength, 0x20))) - == vars.kernelNoteEncryptedLogsLength, - Errors.TxsDecoder__InvalidLogsLength( - uint256(bytes32(slice(_body, offsets.noteEncryptedLogsLength, 0x20))), - vars.kernelNoteEncryptedLogsLength - ) - ); - require( - uint256(bytes32(slice(_body, offsets.encryptedLogsLength, 0x20))) - == vars.kernelEncryptedLogsLength, - Errors.TxsDecoder__InvalidLogsLength( - uint256(bytes32(slice(_body, offsets.encryptedLogsLength, 0x20))), - vars.kernelEncryptedLogsLength - ) - ); - require( - uint256(bytes32(slice(_body, offsets.unencryptedLogsLength, 0x20))) - == vars.kernelUnencryptedLogsLength, - Errors.TxsDecoder__InvalidLogsLength( - uint256(bytes32(slice(_body, offsets.unencryptedLogsLength, 0x20))), - vars.kernelUnencryptedLogsLength - ) - ); - require( - uint256(bytes32(slice(_body, offsets.contractClassLogsLength, 0x20))) - == vars.kernelContractClassLogsLength, - Errors.TxsDecoder__InvalidLogsLength( - uint256(bytes32(slice(_body, offsets.contractClassLogsLength, 0x20))), - vars.kernelContractClassLogsLength - ) - ); - - // Insertions are split into multiple `bytes.concat` to work around stack too deep. - vars.baseLeaf = bytes.concat( - // pad the revert code to 32 bytes to match the hash preimage - bytes.concat( - sliceAndPadLeft(_body, offsets.revertCode, 0x1, 0x20), - slice(_body, offsets.transactionFee, 0x20) - ), - bytes.concat( - sliceAndPadRight( - _body, - offsets.noteHash, - counts.noteHash * 0x20, - Constants.NOTE_HASHES_NUM_BYTES_PER_BASE_ROLLUP - ), - sliceAndPadRight( - _body, - offsets.nullifier, - counts.nullifier * 0x20, - Constants.NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP - ), - vars.txOutHash, - sliceAndPadRight( - _body, - offsets.publicData, - counts.publicData * 0x40, - Constants.PUBLIC_DATA_WRITES_NUM_BYTES_PER_BASE_ROLLUP - ) - ), - bytes.concat( - slice(_body, offsets.noteEncryptedLogsLength, 0x20), - slice(_body, offsets.encryptedLogsLength, 0x20) - ), - bytes.concat( - slice(_body, offsets.unencryptedLogsLength, 0x20), - slice(_body, offsets.contractClassLogsLength, 0x20) - ), - bytes.concat( - vars.noteEncryptedLogsHash, - vars.encryptedLogsHash, - vars.unencryptedLogsHash, - vars.contractClassLogsHash - ) - ); - - vars.baseLeaves[i] = Hash.sha256ToField(vars.baseLeaf); - } - - // We pad base leaves with hashes of empty tx effect. - for (uint256 i = numTxEffects; i < vars.baseLeaves.length; i++) { - // Value taken from tx_effect.test.ts "hash of empty tx effect matches snapshot" test case - vars.baseLeaves[i] = hex"00c2dece9c9f14c67b8aafabdcb80793f1cffe95a801e15d648fd214a0522ee8"; - } - } - - return computeUnbalancedRoot(vars.baseLeaves); - } - - /** - * @notice Computes logs hash as is done in the kernel and app circuits. - * @param _offsetInBlock - The offset of kernel's logs in a block. - * @param _body - The L2 block calldata. - * @return The hash of the logs and offset in a block after processing the logs. - * @dev We have logs preimages on the input and we need to perform the same hashing process as is done in the app - * circuit (hashing the logs) and in the kernel circuit (accumulating the logs hashes). The tail kernel - * circuit flat hashes all the app log hashes. - * - * E.g. for resulting logs hash of a kernel with 3 iterations would be computed as: - * - * kernelPublicInputsLogsHash = sha256((sha256(I1_LOGS), sha256(I2_LOGS)), sha256(I3_LOGS)) - * - * where I1_LOGS, I2_LOGS and I3_LOGS are logs emitted in the first, second and third function call. - * - * Note that `sha256(I1_LOGS)`, `sha256(I2_LOGS)` and `sha256(I3_LOGS)` are computed in the app circuit and not - * in the kernel circuit. The kernel circuit only accumulates the hashes. - * - * @dev For the example above, the logs are encoded in the following way: - * - * || K_LOGS_LEN | I1_LOGS_LEN | I1_LOGS | I2_LOGS_LEN | I2_LOGS | I3_LOGS_LEN | I3_LOGS || - * 4 bytes 4 bytes i bytes 4 bytes j bytes 4 bytes k bytes - * - * K_LOGS_LEN is the total length of the logs in the kernel. - * I1_LOGS_LEN (i) is the length of the logs in the first iteration. - * I1_LOGS are all the logs emitted in the first iteration. - * I2_LOGS_LEN (j) ... - * @dev The circuit outputs a total logs len based on the byte length that the user pays DA gas for. - * In terms of the encoding above, this is the raw log length (i, j, or k) + 4 for each log. - * For the example above, kernelLogsLength = (i + 4) + (j + 4) + (k + 4). Since we already track - * the total remainingLogsLength, we just remove the bytes holding function logs length. - * - * @dev Link to a relevant discussion: - * https://discourse.aztec.network/t/proposal-forcing-the-sequencer-to-actually-submit-data-to-l1/426/9 - */ - function computeKernelNoteEncryptedLogsHash(uint256 _offsetInBlock, bytes calldata _body) - internal - pure - returns (bytes32, uint256, uint256) - { - uint256 offset = _offsetInBlock; - uint256 remainingLogsLength = read4(_body, offset); - uint256 kernelLogsLength = remainingLogsLength; - offset += 0x4; - - bytes memory flattenedLogHashes; // The hash input - - // Iterate until all the logs were processed - while (remainingLogsLength > 0) { - // The length of the logs emitted by Aztec.nr from the function call corresponding to this kernel iteration - uint256 privateCircuitPublicInputLogsLength = read4(_body, offset); - offset += 0x4; - - // Decrease remaining logs length by this privateCircuitPublicInputsLogs's length (len(I?_LOGS)) and 4 bytes for I?_LOGS_LEN - remainingLogsLength -= (privateCircuitPublicInputLogsLength + 0x4); - - kernelLogsLength -= 0x4; - - while (privateCircuitPublicInputLogsLength > 0) { - uint256 singleCallLogsLength = read4(_body, offset); - offset += 0x4; - - bytes32 singleLogHash = Hash.sha256ToField(slice(_body, offset, singleCallLogsLength)); - offset += singleCallLogsLength; - - flattenedLogHashes = bytes.concat(flattenedLogHashes, singleLogHash); - - privateCircuitPublicInputLogsLength -= (singleCallLogsLength + 0x4); - } - } - - // Not having a 0 value hash for empty logs causes issues with empty txs used for padding. - if (flattenedLogHashes.length == 0) { - return (0, offset, 0); - } - - // padded to MAX_LOGS * 32 bytes - flattenedLogHashes = bytes.concat( - flattenedLogHashes, - new bytes(Constants.MAX_NOTE_ENCRYPTED_LOGS_PER_TX * 32 - flattenedLogHashes.length) - ); - - bytes32 kernelPublicInputsLogsHash = Hash.sha256ToField(flattenedLogHashes); - - return (kernelPublicInputsLogsHash, offset, kernelLogsLength); - } - - /** - * @notice Computes encrypted logs hash as is done in the kernel circuits. - * @param _offsetInBlock - The offset of kernel's logs in a block. - * @param _body - The L2 block calldata. - * @return The hash of the logs and offset in a block after processing the logs. - * @dev See above for full details. Non-note encrypted logs hashes are siloed with - * their (hidden) contract address: - * singleLogsHash = sha256ToField(encryptedBuffer) - * siloedLogsHash = sha256ToField(maskedContractAddress, singleLogsHash) - * where maskedContractAddress = pedersen(contract_address, randomness) is provided as part - * of the block bytes, prepended to each encrypted log. - * We don't currently count the maskedContractAddress as part of the - * chargable DA length of the log. - */ - function computeKernelEncryptedLogsHash(uint256 _offsetInBlock, bytes calldata _body) - internal - pure - returns (bytes32, uint256, uint256) - { - uint256 offset = _offsetInBlock; - uint256 remainingLogsLength = read4(_body, offset); - uint256 kernelLogsLength = remainingLogsLength; - offset += 0x4; - - bytes memory flattenedLogHashes; // The hash input - - // Iterate until all the logs were processed - while (remainingLogsLength > 0) { - // The length of the logs emitted by Aztec.nr from the function call corresponding to this kernel iteration - uint256 privateCircuitPublicInputLogsLength = read4(_body, offset); - offset += 0x4; - - // Decrease remaining logs length by this privateCircuitPublicInputsLogs's length (len(I?_LOGS)) and 4 bytes for I?_LOGS_LEN - remainingLogsLength -= (privateCircuitPublicInputLogsLength + 0x4); - - kernelLogsLength -= 0x4; - - while (privateCircuitPublicInputLogsLength > 0) { - uint256 singleCallLogsLengthWithMaskedAddress = read4(_body, offset); - offset += 0x4; - // The first 32 bytes of the provided encrypted log are its masked address (see EncryptedL2Log.toBuffer()) - bytes32 maskedContractAddress = bytes32(slice(_body, offset, 0x20)); - offset += 0x20; - // We don't currently include the masked contract address as part of the DA length - kernelLogsLength -= 0x20; - uint256 singleCallLogsLength = singleCallLogsLengthWithMaskedAddress - 0x20; - - bytes32 singleLogHash = Hash.sha256ToField(slice(_body, offset, singleCallLogsLength)); - - bytes32 siloedLogHash = - Hash.sha256ToField(bytes.concat(maskedContractAddress, singleLogHash)); - offset += singleCallLogsLength; - - flattenedLogHashes = bytes.concat(flattenedLogHashes, siloedLogHash); - - privateCircuitPublicInputLogsLength -= (singleCallLogsLengthWithMaskedAddress + 0x4); - } - } - - // Not having a 0 value hash for empty logs causes issues with empty txs used for padding. - if (flattenedLogHashes.length == 0) { - return (0, offset, 0); - } - - // padded to MAX_LOGS * 32 bytes - flattenedLogHashes = bytes.concat( - flattenedLogHashes, - new bytes(Constants.MAX_ENCRYPTED_LOGS_PER_TX * 32 - flattenedLogHashes.length) - ); - - bytes32 kernelPublicInputsLogsHash = Hash.sha256ToField(flattenedLogHashes); - - return (kernelPublicInputsLogsHash, offset, kernelLogsLength); - } - - /** - * @notice Computes unencrypted or contract class logs hash as is done in the kernel circuits. - * @param _offsetInBlock - The offset of kernel's logs in a block. - * @param _body - The L2 block calldata. - * @return The hash of the logs and offset in a block after processing the logs. - * @dev See above for details. The only difference here is that unencrypted and contract class logs are - * siloed with their contract address. - */ - function computeKernelUnencryptedLogsHash( - uint256 _offsetInBlock, - bytes calldata _body, - bool _contractClassLogs - ) internal pure returns (bytes32, uint256, uint256) { - uint256 offset = _offsetInBlock; - uint256 remainingLogsLength = read4(_body, offset); - uint256 kernelLogsLength = remainingLogsLength; - offset += 0x4; - - bytes memory flattenedLogHashes; // The hash input - - // Iterate until all the logs were processed - while (remainingLogsLength > 0) { - // The length of the logs emitted by Aztec.nr from the function call corresponding to this kernel iteration - uint256 privateCircuitPublicInputLogsLength = read4(_body, offset); - offset += 0x4; - - // Decrease remaining logs length by this privateCircuitPublicInputsLogs's length (len(I?_LOGS)) and 4 bytes for I?_LOGS_LEN - remainingLogsLength -= (privateCircuitPublicInputLogsLength + 0x4); - - kernelLogsLength -= 0x4; - - while (privateCircuitPublicInputLogsLength > 0) { - uint256 singleCallLogsLength = read4(_body, offset); - offset += 0x4; - - bytes32 singleLogHash = Hash.sha256ToField(slice(_body, offset, singleCallLogsLength)); - // The first 32 bytes of an unencrypted log buffer are its address (see UnencryptedL2Log.toBuffer()) - bytes32 siloedLogHash = - Hash.sha256ToField(bytes.concat(slice(_body, offset, 0x20), singleLogHash)); - offset += singleCallLogsLength; - - flattenedLogHashes = bytes.concat(flattenedLogHashes, siloedLogHash); - - privateCircuitPublicInputLogsLength -= (singleCallLogsLength + 0x4); - } - } - - // Not having a 0 value hash for empty logs causes issues with empty txs used for padding. - if (flattenedLogHashes.length == 0) { - return (0, offset, 0); - } - - // padded to MAX_LOGS * 32 bytes - if (_contractClassLogs) { - flattenedLogHashes = bytes.concat( - flattenedLogHashes, - new bytes(Constants.MAX_CONTRACT_CLASS_LOGS_PER_TX * 32 - flattenedLogHashes.length) - ); - } else { - flattenedLogHashes = bytes.concat( - flattenedLogHashes, - new bytes(Constants.MAX_UNENCRYPTED_LOGS_PER_TX * 32 - flattenedLogHashes.length) - ); - } - - bytes32 kernelPublicInputsLogsHash = Hash.sha256ToField(flattenedLogHashes); - - return (kernelPublicInputsLogsHash, offset, kernelLogsLength); - } - - /** - * @notice Computes the root for a binary Merkle-tree given the leafs. - * @dev Uses sha256. - * @param _leafs - The 32 bytes leafs to build the tree of. - * @return The root of the Merkle tree. - */ - function computeRoot(bytes32[] memory _leafs) internal pure returns (bytes32) { - // @todo Must pad the tree - uint256 treeDepth = 0; - while (2 ** treeDepth < _leafs.length) { - treeDepth++; - } - uint256 treeSize = 2 ** treeDepth; - assembly { - mstore(_leafs, treeSize) - } - - for (uint256 i = 0; i < treeDepth; i++) { - for (uint256 j = 0; j < treeSize; j += 2) { - _leafs[j / 2] = Hash.sha256ToField(bytes.concat(_leafs[j], _leafs[j + 1])); - } - treeSize /= 2; - } - - return _leafs[0]; - } - - /** - * @notice Computes the root for a binary unbalanced Merkle-tree given the leaves. - * @dev Filled in greedily with subtrees. Useful for txsEffectsHash and outHash tree. - * @param _leaves - The 32 bytes leafs to build the tree of. - * @return The root of the Merkle tree. - */ - function computeUnbalancedRoot(bytes32[] memory _leaves) internal pure returns (bytes32) { - // e.g. an unbalanced tree of 7 txs will contain subtrees of 4, 2, and 1 tx(s) = 111 - // e.g. an unbalanced tree of 9 txs will contain subtrees of 8 and 1 tx(s) = 1001 - // We collect the roots of each subtree - bytes32 root; - uint256 currentSubtreeSize = 1; - uint256 numTxs = _leaves.length; - // We must calculate the smaller rightmost subtrees first, hence starting at 1 - while (numTxs != 0) { - // If size & txs == 0, the subtree doesn't exist for this number of txs - if (currentSubtreeSize & numTxs == 0) { - currentSubtreeSize <<= 1; - continue; - } - bytes32[] memory leavesInSubtree = new bytes32[](currentSubtreeSize); - uint256 start = numTxs - currentSubtreeSize; - for (uint256 i = start; i < numTxs; i++) { - leavesInSubtree[i - start] = _leaves[i]; - } - bytes32 subtreeRoot = computeRoot(leavesInSubtree); - root = - numTxs == _leaves.length ? subtreeRoot : Hash.sha256ToField(bytes.concat(subtreeRoot, root)); - numTxs -= currentSubtreeSize; - currentSubtreeSize <<= 1; - } - return root; - } - - /** - * @notice Computes the root for the binary variable height Merkle-tree made of one tx's L2 to L1 msgs. - * @dev Mimics compute_kernel_out_hash in base_rollup. - * TODO(#7218): Revert to fixed height tree for outbox - * @param _data - The blob of data containing l2 to l1 msgs. - * @return The root of the Merkle tree. - */ - function computeTxOutHash(uint256 _start, bytes calldata _data) internal pure returns (bytes32) { - uint256 offset = _start; - // The stored offsets.l2ToL1Msgs does not include the single byte storing the num of msgs, hence -1 - uint32 numMsgs = uint32(read1(_data, _start - 1)); - uint256 numMsgsToPad = computeNumMsgsToPad(uint32(numMsgs)); - bytes32[] memory leavesInMsgTree = new bytes32[](numMsgs + numMsgsToPad); - for (uint256 i = 0; i < numMsgs; i++) { - leavesInMsgTree[i] = bytes32(slice(_data, offset, 0x20)); - offset += 0x20; - } - bytes32 outHash = computeRoot(leavesInMsgTree); - return outHash; - } - - /** - * @notice Wrapper around the slicing to avoid some stack too deep - * @param _data - The data to slice - * @param _start - The start of the slice - * @param _length - The length of the slice - * @return The slice - */ - function slice(bytes calldata _data, uint256 _start, uint256 _length) - internal - pure - returns (bytes memory) - { - return _data[_start:_start + _length]; - } - - /** - * @notice Wrapper around the slicing and padding to avoid some stack too deep - * @param _data - The data to slice - * @param _start - The start of the slice - * @param _length - The length of the slice - * @param _targetLength - The length of the padded array - * @return The slice - */ - function sliceAndPadLeft( - bytes calldata _data, - uint256 _start, - uint256 _length, - uint256 _targetLength - ) internal pure returns (bytes memory) { - return bytes.concat(new bytes(_targetLength - _length), _data[_start:_start + _length]); - } - - /** - * @notice Wrapper around the slicing and padding to avoid some stack too deep - * @param _data - The data to slice - * @param _start - The start of the slice - * @param _length - The length of the slice - * @param _targetLength - The length of the padded array - * @return The slice - */ - function sliceAndPadRight( - bytes calldata _data, - uint256 _start, - uint256 _length, - uint256 _targetLength - ) internal pure returns (bytes memory) { - return bytes.concat(_data[_start:_start + _length], new bytes(_targetLength - _length)); - } - - /** - * @notice Reads 1 bytes from the data - * @param _data - The data to read from - * @param _offset - The offset to read from - * @return The 1 byte as a uint256 - */ - function read1(bytes calldata _data, uint256 _offset) internal pure returns (uint256) { - return uint256(uint8(bytes1(slice(_data, _offset, 1)))); - } - - /** - * @notice Reads 4 bytes from the data - * @param _data - The data to read from - * @param _offset - The offset to read from - * @return The 4 bytes read as a uint256 - */ - function read4(bytes calldata _data, uint256 _offset) internal pure returns (uint256) { - return uint256(uint32(bytes4(slice(_data, _offset, 4)))); - } - - /** - * @notice Pads L2 to L1 messages to the next power of 2 - simple algo as we only have a max of 8 msgs - * @param _numL2toL1Msgs - num of msgs (currently between 0 and MAX_L2_TO_L1_MSGS_PER_TX = 8) - * @return Num msgs to pad - */ - function computeNumMsgsToPad(uint32 _numL2toL1Msgs) internal pure returns (uint32) { - // We handle the edge case of 0 msgs by padding by 1 - this ensures computeRoot() gives a result of 0 - if (_numL2toL1Msgs == 0 || _numL2toL1Msgs == 1) { - return 1; - } - - uint32 v = _numL2toL1Msgs; - - // the following rounds _numL2toL1Msgs up to the next power of 2 (works only for 4 bytes value!) - v--; - v |= v >> 1; - v |= v >> 2; - v |= v >> 4; - // We dont expect to have MAX_L2_TO_L1_MSGS_PER_TX greater than 8 bits, so commented out the below to save gas - // v |= v >> 8; - // v |= v >> 16; - v++; - - return v - _numL2toL1Msgs; - } - - function computeNumTxEffectsToPad(uint32 _numTxEffects) internal pure returns (uint32) { - // 2 is the minimum number of tx effects so we have to handle the following 2 cases separately - if (_numTxEffects == 0) { - return 2; - } else if (_numTxEffects == 1) { - return 1; - } - return 0; - } -} diff --git a/l1-contracts/src/core/libraries/crypto/MerkleLib.sol b/l1-contracts/src/core/libraries/crypto/MerkleLib.sol index 394c805044d..b363338e17c 100644 --- a/l1-contracts/src/core/libraries/crypto/MerkleLib.sol +++ b/l1-contracts/src/core/libraries/crypto/MerkleLib.sol @@ -112,4 +112,65 @@ library MerkleLib { } return height; } + + /** + * @notice Computes the root for a binary Merkle-tree given the leafs. + * @dev Uses sha256. + * @param _leafs - The 32 bytes leafs to build the tree of. + * @return The root of the Merkle tree. + */ + function computeRoot(bytes32[] memory _leafs) internal pure returns (bytes32) { + // @todo Must pad the tree + uint256 treeDepth = 0; + while (2 ** treeDepth < _leafs.length) { + treeDepth++; + } + uint256 treeSize = 2 ** treeDepth; + assembly { + mstore(_leafs, treeSize) + } + + for (uint256 i = 0; i < treeDepth; i++) { + for (uint256 j = 0; j < treeSize; j += 2) { + _leafs[j / 2] = Hash.sha256ToField(bytes.concat(_leafs[j], _leafs[j + 1])); + } + treeSize /= 2; + } + + return _leafs[0]; + } + + /** + * @notice Computes the root for a binary unbalanced Merkle-tree given the leaves. + * @dev Filled in greedily with subtrees. Useful for outHash tree. + * @param _leaves - The 32 bytes leafs to build the tree of. + * @return The root of the Merkle tree. + */ + function computeUnbalancedRoot(bytes32[] memory _leaves) internal pure returns (bytes32) { + // e.g. an unbalanced tree of 7 txs will contain subtrees of 4, 2, and 1 tx(s) = 111 + // e.g. an unbalanced tree of 9 txs will contain subtrees of 8 and 1 tx(s) = 1001 + // We collect the roots of each subtree + bytes32 root; + uint256 currentSubtreeSize = 1; + uint256 numTxs = _leaves.length; + // We must calculate the smaller rightmost subtrees first, hence starting at 1 + while (numTxs != 0) { + // If size & txs == 0, the subtree doesn't exist for this number of txs + if (currentSubtreeSize & numTxs == 0) { + currentSubtreeSize <<= 1; + continue; + } + bytes32[] memory leavesInSubtree = new bytes32[](currentSubtreeSize); + uint256 start = numTxs - currentSubtreeSize; + for (uint256 i = start; i < numTxs; i++) { + leavesInSubtree[i - start] = _leaves[i]; + } + bytes32 subtreeRoot = computeRoot(leavesInSubtree); + root = + numTxs == _leaves.length ? subtreeRoot : Hash.sha256ToField(bytes.concat(subtreeRoot, root)); + numTxs -= currentSubtreeSize; + currentSubtreeSize <<= 1; + } + return root; + } } diff --git a/l1-contracts/test/Rollup.t.sol b/l1-contracts/test/Rollup.t.sol index 740f361b6b1..b12c2ed2bc3 100644 --- a/l1-contracts/test/Rollup.t.sol +++ b/l1-contracts/test/Rollup.t.sol @@ -24,7 +24,6 @@ import {MerkleTestUtil} from "./merkle/TestUtil.sol"; import {TestERC20} from "@aztec/mock/TestERC20.sol"; import {TestConstants} from "./harnesses/TestConstants.sol"; import {RewardDistributor} from "@aztec/governance/RewardDistributor.sol"; -import {TxsDecoderHelper} from "./decoders/helpers/TxsDecoderHelper.sol"; import {IERC20Errors} from "@oz/interfaces/draft-IERC6093.sol"; import {ProposeArgs, ProposeLib} from "@aztec/core/libraries/ProposeLib.sol"; @@ -49,7 +48,6 @@ contract RollupTest is DecoderBase, TimeFns { Rollup internal rollup; Leonidas internal leo; MerkleTestUtil internal merkleTestUtil; - TxsDecoderHelper internal txsHelper; TestERC20 internal testERC20; FeeJuicePortal internal feeJuicePortal; IProofCommitmentEscrow internal proofCommitmentEscrow; @@ -102,7 +100,6 @@ contract RollupTest is DecoderBase, TimeFns { registry.upgrade(address(rollup)); merkleTestUtil = new MerkleTestUtil(); - txsHelper = new TxsDecoderHelper(); privateKey = 0x123456789abcdef123456789abcdef123456789abcdef123456789abcdef1234; signer = vm.addr(privateKey); @@ -129,6 +126,35 @@ contract RollupTest is DecoderBase, TimeFns { vm.warp(Timestamp.unwrap(rollup.getTimestampForSlot(Slot.wrap(_slot)))); } + function getBlobPublicInputs(bytes calldata _blobsInput) + public + pure + returns (bytes memory blobPublicInputs) + { + uint8 numBlobs = uint8(_blobsInput[0]); + blobPublicInputs = abi.encodePacked(numBlobs, blobPublicInputs); + for (uint256 i = 0; i < numBlobs; i++) { + // Add 1 for the numBlobs prefix + uint256 blobInputStart = i * 192 + 1; + // We want to extract the bytes we use for public inputs: + // * input[32:64] - z + // * input[64:96] - y + // * input[96:144] - commitment C + // Out of 192 bytes per blob. + blobPublicInputs = + abi.encodePacked(blobPublicInputs, _blobsInput[blobInputStart + 32:blobInputStart + 144]); + } + } + + function getBlobPublicInputsHash(bytes calldata _blobPublicInputs) + public + pure + returns (bytes32 publicInputsHash) + { + uint8 numBlobs = uint8(_blobPublicInputs[0]); + publicInputsHash = sha256(abi.encodePacked(_blobPublicInputs[1:1 + numBlobs * 112])); + } + function testClaimInTheFuture(uint256 _futureSlot) public setUpFor("mixed_block_1") { uint256 futureSlot = bound(_futureSlot, 1, 1e20); _testBlock("mixed_block_1", false, 1); @@ -251,18 +277,19 @@ contract RollupTest is DecoderBase, TimeFns { function testProofReleasesBond() public setUpFor("mixed_block_1") { DecoderBase.Data memory data = load("mixed_block_1").block; bytes memory header = data.header; - bytes32 archive = data.archive; - bytes32 blockHash = data.blockHash; bytes32 proverId = bytes32(uint256(42)); - bytes memory body = data.body; - bytes32[] memory txHashes = new bytes32[](0); // We jump to the time of the block. (unless it is in the past) vm.warp(max(block.timestamp, data.decodedHeader.globalVariables.timestamp)); - ProposeArgs memory args = - ProposeArgs({header: header, archive: archive, blockHash: blockHash, txHashes: txHashes}); - rollup.propose(args, signatures, body); + skipBlobCheck(address(rollup)); + ProposeArgs memory args = ProposeArgs({ + header: header, + archive: data.archive, + blockHash: data.blockHash, + txHashes: new bytes32[](0) + }); + rollup.propose(args, signatures, data.body, data.blobInputs); quote.epochToProve = Epoch.wrap(1); quote.validUntilSlot = toSlots(Epoch.wrap(2)); @@ -274,7 +301,16 @@ contract RollupTest is DecoderBase, TimeFns { proofCommitmentEscrow.deposits(quote.prover), quote.bondAmount * 9, "Invalid escrow balance" ); - _submitEpochProof(rollup, 1, preArchive, archive, preBlockHash, blockHash, proverId); + _submitEpochProof( + rollup, + 1, + preArchive, + data.archive, + preBlockHash, + data.blockHash, + proverId, + this.getBlobPublicInputs(data.blobInputs) + ); assertEq( proofCommitmentEscrow.deposits(quote.prover), quote.bondAmount * 10, "Invalid escrow balance" @@ -419,24 +455,43 @@ contract RollupTest is DecoderBase, TimeFns { function testRevertProveTwice() public setUpFor("mixed_block_1") { DecoderBase.Data memory data = load("mixed_block_1").block; bytes memory header = data.header; - bytes32 archive = data.archive; - bytes32 blockHash = data.blockHash; - bytes32 proverId = bytes32(uint256(42)); bytes memory body = data.body; - bytes32[] memory txHashes = new bytes32[](0); // We jump to the time of the block. (unless it is in the past) vm.warp(max(block.timestamp, data.decodedHeader.globalVariables.timestamp)); - ProposeArgs memory args = - ProposeArgs({header: header, archive: archive, blockHash: blockHash, txHashes: txHashes}); - rollup.propose(args, signatures, body); + skipBlobCheck(address(rollup)); + ProposeArgs memory args = ProposeArgs({ + header: header, + archive: data.archive, + blockHash: data.blockHash, + txHashes: new bytes32[](0) + }); + rollup.propose(args, signatures, body, data.blobInputs); (bytes32 preArchive, bytes32 preBlockHash,) = rollup.blocks(0); - _submitEpochProof(rollup, 1, preArchive, archive, preBlockHash, blockHash, proverId); + _submitEpochProof( + rollup, + 1, + preArchive, + data.archive, + preBlockHash, + data.blockHash, + bytes32(uint256(42)), + this.getBlobPublicInputs(data.blobInputs) + ); vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__InvalidBlockNumber.selector, 1, 2)); - _submitEpochProof(rollup, 1, preArchive, archive, preBlockHash, blockHash, proverId); + _submitEpochProof( + rollup, + 1, + preArchive, + data.archive, + preBlockHash, + data.blockHash, + bytes32(uint256(42)), + new bytes(112) + ); } function testTimestamp() public setUpFor("mixed_block_1") { @@ -452,6 +507,51 @@ contract RollupTest is DecoderBase, TimeFns { } } + function testInvalidBlobHash() public setUpFor("mixed_block_1") { + DecoderBase.Data memory data = load("mixed_block_1").block; + bytes memory header = data.header; + + // We set the blobHash to 1 + bytes32[] memory blobHashes = new bytes32[](1); + blobHashes[0] = bytes32(uint256(1)); + vm.blobhashes(blobHashes); + ProposeArgs memory args = ProposeArgs({ + header: header, + archive: data.archive, + blockHash: data.blockHash, + txHashes: new bytes32[](0) + }); + vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__InvalidBlobHash.selector, blobHashes[0])); + rollup.propose(args, signatures, data.body, data.blobInputs); + } + + function testInvalidBlobProof() public setUpFor("mixed_block_1") { + DecoderBase.Data memory data = load("mixed_block_1").block; + bytes memory header = data.header; + bytes memory blobInput = data.blobInputs; + + // We set the blobHash to the correct value + bytes32[] memory blobHashes = new bytes32[](1); + // The below is the blob hash == bytes [1:33] of _blobInput + bytes32 blobHash; + assembly { + blobHash := mload(add(blobInput, 0x21)) + } + blobHashes[0] = blobHash; + vm.blobhashes(blobHashes); + + // We mess with the blob input bytes + blobInput[100] = 0x01; + ProposeArgs memory args = ProposeArgs({ + header: header, + archive: data.archive, + blockHash: data.blockHash, + txHashes: new bytes32[](0) + }); + vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__InvalidBlobProof.selector, blobHashes[0])); + rollup.propose(args, signatures, data.body, blobInput); + } + function testRevertPrune() public setUpFor("mixed_block_1") { vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__NothingToPrune.selector)); rollup.prune(); @@ -561,6 +661,8 @@ contract RollupTest is DecoderBase, TimeFns { // We jump to the time of the block. (unless it is in the past) vm.warp(max(block.timestamp, data.decodedHeader.globalVariables.timestamp)); + skipBlobCheck(address(rollup)); + vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__NonZeroDaFee.selector)); ProposeArgs memory args = ProposeArgs({ header: header, @@ -568,7 +670,7 @@ contract RollupTest is DecoderBase, TimeFns { blockHash: data.blockHash, txHashes: txHashes }); - rollup.propose(args, signatures, data.body); + rollup.propose(args, signatures, data.body, data.blobInputs); } function testNonZeroL2Fee() public setUpFor("mixed_block_1") { @@ -585,6 +687,8 @@ contract RollupTest is DecoderBase, TimeFns { // We jump to the time of the block. (unless it is in the past) vm.warp(max(block.timestamp, data.decodedHeader.globalVariables.timestamp)); + skipBlobCheck(address(rollup)); + vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__NonZeroL2Fee.selector)); ProposeArgs memory args = ProposeArgs({ header: header, @@ -592,16 +696,14 @@ contract RollupTest is DecoderBase, TimeFns { blockHash: data.blockHash, txHashes: txHashes }); - rollup.propose(args, signatures, data.body); + rollup.propose(args, signatures, data.body, data.blobInputs); } function testBlockFee() public setUpFor("mixed_block_1") { uint256 feeAmount = 2e18; DecoderBase.Data memory data = load("mixed_block_1").block; - bytes32[] memory txHashes = new bytes32[](0); uint256 portalBalance = testERC20.balanceOf(address(feeJuicePortal)); - address coinbase = data.decodedHeader.globalVariables.coinbase; // Progress time as necessary vm.warp(max(block.timestamp, data.decodedHeader.globalVariables.timestamp)); @@ -617,18 +719,24 @@ contract RollupTest is DecoderBase, TimeFns { // We jump to the time of the block. (unless it is in the past) vm.warp(max(block.timestamp, data.decodedHeader.globalVariables.timestamp)); - uint256 coinbaseBalance = testERC20.balanceOf(coinbase); + uint256 coinbaseBalance = testERC20.balanceOf(data.decodedHeader.globalVariables.coinbase); assertEq(coinbaseBalance, 0, "invalid initial coinbase balance"); + skipBlobCheck(address(rollup)); + // Assert that balance have NOT been increased by proposing the block ProposeArgs memory args = ProposeArgs({ header: header, archive: data.archive, blockHash: data.blockHash, - txHashes: txHashes + txHashes: new bytes32[](0) }); - rollup.propose(args, signatures, data.body); - assertEq(testERC20.balanceOf(coinbase), 0, "invalid coinbase balance"); + rollup.propose(args, signatures, data.body, data.blobInputs); + assertEq( + testERC20.balanceOf(data.decodedHeader.globalVariables.coinbase), + 0, + "invalid coinbase balance" + ); } (bytes32 preArchive, bytes32 preBlockHash,) = rollup.blocks(0); @@ -641,6 +749,7 @@ contract RollupTest is DecoderBase, TimeFns { rollup.claimEpochProofRight(signedQuote); { + bytes memory blobPublicInputs = this.getBlobPublicInputs(data.blobInputs); vm.expectRevert( abi.encodeWithSelector( IERC20Errors.ERC20InsufficientBalance.selector, @@ -657,11 +766,16 @@ contract RollupTest is DecoderBase, TimeFns { preBlockHash, data.blockHash, bytes32(uint256(42)), - coinbase, + blobPublicInputs, + data.decodedHeader.globalVariables.coinbase, feeAmount ); } - assertEq(testERC20.balanceOf(coinbase), 0, "invalid coinbase balance"); + assertEq( + testERC20.balanceOf(data.decodedHeader.globalVariables.coinbase), + 0, + "invalid coinbase balance" + ); assertEq(testERC20.balanceOf(address(quote.prover)), 0, "invalid prover balance"); { @@ -676,7 +790,8 @@ contract RollupTest is DecoderBase, TimeFns { preBlockHash, data.blockHash, bytes32(uint256(42)), - coinbase, + this.getBlobPublicInputs(data.blobInputs), + data.decodedHeader.globalVariables.coinbase, feeAmount ); @@ -684,7 +799,11 @@ contract RollupTest is DecoderBase, TimeFns { uint256 expectedProverReward = Math.mulDiv(expectedReward, quote.basisPointFee, 10_000); uint256 expectedSequencerReward = expectedReward - expectedProverReward; - assertEq(testERC20.balanceOf(coinbase), expectedSequencerReward, "invalid coinbase balance"); + assertEq( + testERC20.balanceOf(data.decodedHeader.globalVariables.coinbase), + expectedSequencerReward, + "invalid coinbase balance" + ); assertEq(testERC20.balanceOf(quote.prover), expectedProverReward, "invalid prover balance"); } } @@ -714,7 +833,20 @@ contract RollupTest is DecoderBase, TimeFns { assertEq(rollup.getProvenBlockNumber(), 0, "Invalid initial proven block number"); (bytes32 preArchive, bytes32 preBlockHash,) = rollup.blocks(0); - _submitEpochProof(rollup, 2, preArchive, data.archive, preBlockHash, data.blockHash, bytes32(0)); + bytes memory blobPublicInputs = abi.encodePacked( + this.getBlobPublicInputs(load("mixed_block_1").block.blobInputs), + this.getBlobPublicInputs(data.blobInputs) + ); + _submitEpochProof( + rollup, + 2, + preArchive, + data.archive, + preBlockHash, + data.blockHash, + bytes32(0), + blobPublicInputs + ); assertEq(rollup.getPendingBlockNumber(), 2, "Invalid pending block number"); assertEq(rollup.getProvenBlockNumber(), 2, "Invalid proven block number"); @@ -728,23 +860,32 @@ contract RollupTest is DecoderBase, TimeFns { bytes32[] memory txHashes = new bytes32[](0); vm.warp(max(block.timestamp, data2.decodedHeader.globalVariables.timestamp)); + skipBlobCheck(address(rollup)); ProposeArgs memory args = ProposeArgs({ header: data2.header, archive: data2.archive, blockHash: data2.blockHash, txHashes: txHashes }); - rollup.propose(args, signatures, data2.body); + rollup.propose(args, signatures, data2.body, data2.blobInputs); // Skips proving of block 1 (bytes32 preArchive,,) = rollup.blocks(0); + bytes memory blobPublicInputs = this.getBlobPublicInputs(data1.blobInputs); vm.expectRevert( abi.encodeWithSelector( Errors.Rollup__InvalidPreviousArchive.selector, preArchive, data1.archive ) ); _submitEpochProof( - rollup, 1, data1.archive, data2.archive, data1.archive, data2.archive, bytes32(0) + rollup, + 1, + data1.archive, + data2.archive, + data1.archive, + data2.archive, + bytes32(0), + blobPublicInputs ); assertEq(rollup.getPendingBlockNumber(), 2, "Invalid pending block number"); @@ -777,11 +918,11 @@ contract RollupTest is DecoderBase, TimeFns { // TODO: Hardcoding offsets in the middle of tests is annoying to say the least. mstore(add(header, add(0x20, 0x0174)), 0x420) } - + skipBlobCheck(address(rollup)); vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__InvalidBlockNumber.selector, 1, 0x420)); ProposeArgs memory args = ProposeArgs({header: header, archive: archive, blockHash: data.blockHash, txHashes: txHashes}); - rollup.propose(args, signatures, body); + rollup.propose(args, signatures, body, data.blobInputs); } function testRevertInvalidChainId() public setUpFor("empty_block_1") { @@ -794,11 +935,11 @@ contract RollupTest is DecoderBase, TimeFns { assembly { mstore(add(header, add(0x20, 0x0134)), 0x420) } - + skipBlobCheck(address(rollup)); vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__InvalidChainId.selector, 31337, 0x420)); ProposeArgs memory args = ProposeArgs({header: header, archive: archive, blockHash: data.blockHash, txHashes: txHashes}); - rollup.propose(args, signatures, body); + rollup.propose(args, signatures, body, data.blobInputs); } function testRevertInvalidVersion() public setUpFor("empty_block_1") { @@ -811,11 +952,11 @@ contract RollupTest is DecoderBase, TimeFns { assembly { mstore(add(header, add(0x20, 0x0154)), 0x420) } - + skipBlobCheck(address(rollup)); vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__InvalidVersion.selector, 1, 0x420)); ProposeArgs memory args = ProposeArgs({header: header, archive: archive, blockHash: data.blockHash, txHashes: txHashes}); - rollup.propose(args, signatures, body); + rollup.propose(args, signatures, body, data.blobInputs); } function testRevertInvalidTimestamp() public setUpFor("empty_block_1") { @@ -833,11 +974,11 @@ contract RollupTest is DecoderBase, TimeFns { assembly { mstore(add(header, add(0x20, 0x01b4)), badTs) } - + skipBlobCheck(address(rollup)); vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__InvalidTimestamp.selector, realTs, badTs)); ProposeArgs memory args = ProposeArgs({header: header, archive: archive, blockHash: data.blockHash, txHashes: txHashes}); - rollup.propose(args, signatures, body); + rollup.propose(args, signatures, body, new bytes(144)); } function testBlocksWithAssumeProven() public setUpFor("mixed_block_1") { @@ -873,7 +1014,9 @@ contract RollupTest is DecoderBase, TimeFns { vm.expectRevert( abi.encodeWithSelector(Errors.Rollup__InvalidPreviousArchive.selector, preArchive, wrong) ); - _submitEpochProof(rollup, 1, wrong, data.archive, preBlockHash, data.blockHash, bytes32(0)); + _submitEpochProof( + rollup, 1, wrong, data.archive, preBlockHash, data.blockHash, bytes32(0), new bytes(112) + ); // TODO: Reenable when we setup proper initial block hash // vm.expectRevert( @@ -892,7 +1035,9 @@ contract RollupTest is DecoderBase, TimeFns { vm.expectRevert( abi.encodeWithSelector(Errors.Rollup__InvalidArchive.selector, data.archive, 0xdeadbeef) ); - _submitEpochProof(rollup, 1, preArchive, wrongArchive, preBlockHash, data.blockHash, bytes32(0)); + _submitEpochProof( + rollup, 1, preArchive, wrongArchive, preBlockHash, data.blockHash, bytes32(0), new bytes(112) + ); } function testSubmitProofInvalidBlockHash() public setUpFor("empty_block_1") { @@ -907,7 +1052,40 @@ contract RollupTest is DecoderBase, TimeFns { Errors.Rollup__InvalidBlockHash.selector, data.blockHash, wrongBlockHash ) ); - _submitEpochProof(rollup, 1, preArchive, data.archive, preBlockHash, wrongBlockHash, bytes32(0)); + _submitEpochProof( + rollup, 1, preArchive, data.archive, preBlockHash, wrongBlockHash, bytes32(0), new bytes(112) + ); + } + + function testSubmitProofInvalidBlobPublicInput() public setUpFor("empty_block_1") { + _testBlock("empty_block_1", false); + + DecoderBase.Data memory data = load("empty_block_1").block; + bytes memory blobPublicInputs = this.getBlobPublicInputs(data.blobInputs); + // mess with the data + blobPublicInputs[100] = 0x01; + + (bytes32 preArchive, bytes32 preBlockHash,) = rollup.blocks(0); + bytes32 actualBlobPublicInputsHash = + rollup.blobPublicInputsHashes(data.decodedHeader.globalVariables.blockNumber); + bytes32 wrongBlobPublicInputsHash = this.getBlobPublicInputsHash(blobPublicInputs); + vm.expectRevert( + abi.encodeWithSelector( + Errors.Rollup__InvalidBlobPublicInputsHash.selector, + actualBlobPublicInputsHash, + wrongBlobPublicInputsHash + ) + ); + _submitEpochProof( + rollup, + 1, + preArchive, + data.archive, + preBlockHash, + data.blockHash, + bytes32(0), + blobPublicInputs + ); } function _testBlock(string memory name, bool _submitProof) public { @@ -917,8 +1095,7 @@ contract RollupTest is DecoderBase, TimeFns { function _testBlock(string memory name, bool _submitProof, uint256 _slotNumber) public { DecoderBase.Full memory full = load(name); bytes memory header = full.block.header; - uint32 numTxs = full.block.numTxs; - bytes32[] memory txHashes = new bytes32[](0); + bytes memory blobInputs = full.block.blobInputs; Slot slotNumber = Slot.wrap(_slotNumber); @@ -939,20 +1116,37 @@ contract RollupTest is DecoderBase, TimeFns { _populateInbox(full.populate.sender, full.populate.recipient, full.populate.l1ToL2Content); + { + bytes32[] memory blobHashes = new bytes32[](1); + // The below is the blob hash == bytes [1:33] of _blobInput + bytes32 blobHash; + assembly { + blobHash := mload(add(blobInputs, 0x21)) + } + blobHashes[0] = blobHash; + vm.blobhashes(blobHashes); + } ProposeArgs memory args = ProposeArgs({ header: header, archive: full.block.archive, blockHash: full.block.blockHash, - txHashes: txHashes + txHashes: new bytes32[](0) }); - rollup.propose(args, signatures, full.block.body); + rollup.propose(args, signatures, full.block.body, blobInputs); if (_submitProof) { uint256 pre = rollup.getProvenBlockNumber(); (bytes32 preArchive, bytes32 preBlockHash,) = rollup.blocks(pre); _submitEpochProof( - rollup, 1, preArchive, args.archive, preBlockHash, full.block.blockHash, bytes32(0) + rollup, + 1, + preArchive, + args.archive, + preBlockHash, + full.block.blockHash, + bytes32(0), + this.getBlobPublicInputs(blobInputs) ); assertEq(pre + 1, rollup.getProvenBlockNumber(), "Block not proven"); } @@ -966,6 +1160,7 @@ contract RollupTest is DecoderBase, TimeFns { // The below is a little janky - we know that this test deals with full txs with equal numbers // of msgs or txs with no messages, so the division works // TODO edit full.messages to include information about msgs per tx? + uint32 numTxs = full.block.numTxs; uint256 subTreeHeight = full.messages.l2ToL1Messages.length == 0 ? 0 : merkleTestUtil.calculateTreeHeightFromSize(full.messages.l2ToL1Messages.length / numTxs); @@ -1013,7 +1208,8 @@ contract RollupTest is DecoderBase, TimeFns { bytes32 _endArchive, bytes32 _previousBlockHash, bytes32 _endBlockHash, - bytes32 _proverId + bytes32 _proverId, + bytes memory _blobPublicInputs ) internal { _submitEpochProofWithFee( _rollup, @@ -1023,6 +1219,7 @@ contract RollupTest is DecoderBase, TimeFns { _previousBlockHash, _endBlockHash, _proverId, + _blobPublicInputs, address(0), uint256(0) ); @@ -1036,6 +1233,7 @@ contract RollupTest is DecoderBase, TimeFns { bytes32 _previousBlockHash, bytes32 _endBlockHash, bytes32 _proverId, + bytes memory _blobPublicInputs, address _feeRecipient, uint256 _feeAmount ) internal { @@ -1054,10 +1252,17 @@ contract RollupTest is DecoderBase, TimeFns { fees[0] = bytes32(uint256(uint160(_feeRecipient))); fees[1] = bytes32(_feeAmount); + DataStructures.SubmitProofArgs memory submitArgs = DataStructures.SubmitProofArgs({ + epochSize: _epochSize, + args: args, + fees: fees, + blobPublicInputs: _blobPublicInputs + }); + bytes memory aggregationObject = ""; bytes memory proof = ""; - _rollup.submitEpochRootProof(_epochSize, args, fees, aggregationObject, proof); + _rollup.submitEpochRootProof(submitArgs, aggregationObject, proof); } function _quoteToSignedQuote(EpochProofQuoteLib.EpochProofQuote memory _quote) diff --git a/l1-contracts/test/base/Base.sol b/l1-contracts/test/base/Base.sol index b23e785cd90..a157869a57d 100644 --- a/l1-contracts/test/base/Base.sol +++ b/l1-contracts/test/base/Base.sol @@ -219,4 +219,12 @@ contract TestBase is Test { assertEq(a, b); } } + + // Blobs + + function skipBlobCheck(address rollup) internal { + // 20 is the slot of checkBlob. We force it to be false (=0): + // Slot number can be checked by running forge inspect src/core/Rollup.sol:Rollup storage + vm.store(rollup, bytes32(uint256(20)), 0); + } } diff --git a/l1-contracts/test/decoders/Base.sol b/l1-contracts/test/decoders/Base.sol index d91a3e7f884..ec24916a163 100644 --- a/l1-contracts/test/decoders/Base.sol +++ b/l1-contracts/test/decoders/Base.sol @@ -35,6 +35,7 @@ contract DecoderBase is TestBase { struct Data { bytes32 archive; + bytes blobInputs; bytes32 blockHash; bytes body; DecodedHeader decodedHeader; @@ -43,7 +44,6 @@ contract DecoderBase is TestBase { // decoder changes uint32 numTxs; bytes32 publicInputsHash; - bytes32 txsEffectsHash; } struct DecodedHeader { @@ -75,10 +75,10 @@ contract DecoderBase is TestBase { } struct ContentCommitment { + bytes32 blobsHash; bytes32 inHash; uint256 numTxs; bytes32 outHash; - bytes32 txsEffectsHash; } struct PartialStateReference { diff --git a/l1-contracts/test/decoders/Decoders.t.sol b/l1-contracts/test/decoders/Decoders.t.sol index 9087a5734ed..5580040084d 100644 --- a/l1-contracts/test/decoders/Decoders.t.sol +++ b/l1-contracts/test/decoders/Decoders.t.sol @@ -4,12 +4,8 @@ pragma solidity >=0.8.27; import {DecoderBase} from "./Base.sol"; -import {Hash} from "@aztec/core/libraries/crypto/Hash.sol"; - import {HeaderLibHelper} from "./helpers/HeaderLibHelper.sol"; -import {TxsDecoderHelper} from "./helpers/TxsDecoderHelper.sol"; import {HeaderLib} from "@aztec/core/libraries/HeaderLib.sol"; -import {Constants} from "@aztec/core/libraries/ConstantsGen.sol"; /** * Blocks are generated using the `integration_l1_publisher.test.ts` tests. @@ -19,11 +15,9 @@ import {Constants} from "@aztec/core/libraries/ConstantsGen.sol"; */ contract DecodersTest is DecoderBase { HeaderLibHelper internal headerHelper; - TxsDecoderHelper internal txsHelper; function setUp() public virtual { headerHelper = new HeaderLibHelper(); - txsHelper = new TxsDecoderHelper(); } function testDecodeBlocks() public { @@ -77,9 +71,7 @@ contract DecodersTest is DecoderBase { assertEq(header.contentCommitment.numTxs, contentCommitment.numTxs, "Invalid txTreeSize"); assertEq( - header.contentCommitment.txsEffectsHash, - contentCommitment.txsEffectsHash, - "Invalid txsEffectsHash" + header.contentCommitment.blobsHash, contentCommitment.blobsHash, "Invalid blobHash" ); assertEq(header.contentCommitment.inHash, contentCommitment.inHash, "Invalid inHash"); assertEq(header.contentCommitment.outHash, contentCommitment.outHash, "Invalid outHash"); @@ -153,241 +145,6 @@ contract DecodersTest is DecoderBase { header.lastArchive.root, referenceHeader.lastArchive.root, "Invalid lastArchive.root" ); } - - // Txs - { - bytes32 txsEffectsHash = txsHelper.decode(data.block.body); - assertEq(txsEffectsHash, data.block.txsEffectsHash, "Invalid txs effects hash"); - assertEq( - txsEffectsHash, - data.block.decodedHeader.contentCommitment.txsEffectsHash, - "Invalid txs effects hash" - ); - } - // The public inputs are computed based of these values, but not directly part of the decoding per say. } - - function testComputeKernelLogsIterationWithoutLogs() public { - bytes memory kernelLogsLength = hex"00000004"; // 4 bytes containing value 4 - bytes memory iterationLogsLength = hex"00000000"; // 4 empty bytes indicating that length of this iteration's logs is 0 - bytes memory encodedLogs = abi.encodePacked(kernelLogsLength, iterationLogsLength); - - (bytes32 logsHash, uint256 bytesAdvanced, uint256 logsLength) = - txsHelper.computeKernelLogsHash(encodedLogs); - - assertEq(bytesAdvanced, encodedLogs.length, "Advanced by an incorrect number of bytes"); - assertEq(logsLength, 0, "Incorrect logs length"); - assertEq(logsHash, bytes32(0), "Incorrect logs hash"); - } - - function testComputeKernelLogs1Iteration() public { - // || K_LOGS_LEN | I1_LOGS_LEN | I1_LOGS || - // K_LOGS_LEN = 4 + 8 = 12 (hex"0000000c") - // I1_LOGS_LEN = 8 (hex"00000008") - // I1_LOGS = 8 bytes (hex"0000000493e78a70") - bytes memory firstFunctionCallLogs = hex"93e78a70"; - // First, prefix logs with a masked address to mimic siloing - bytes32 maskedAddress = hex"11"; - // Prefix logs with length of kernel logs (12) and length of iteration 1 logs (8) - // Note: 00000004 is the length of 1 log within function logs - // Note: 00000024 is the length of 1 log plus its masked address - bytes memory encodedLogs = - abi.encodePacked(hex"0000002c00000028", hex"00000024", maskedAddress, firstFunctionCallLogs); - (bytes32 logsHash, uint256 bytesAdvanced, uint256 logsLength) = - txsHelper.computeKernelLogsHash(encodedLogs); - - bytes32 privateCircuitPublicInputsLogsHashFirstCall = Hash.sha256ToField(firstFunctionCallLogs); - bytes32 privateCircuitPublicInputsLogsHashFirstCallSiloed = - Hash.sha256ToField(bytes.concat(maskedAddress, privateCircuitPublicInputsLogsHashFirstCall)); - - bytes32 referenceLogsHash = Hash.sha256ToField( - abi.encodePacked( - privateCircuitPublicInputsLogsHashFirstCallSiloed, - new bytes(Constants.MAX_ENCRYPTED_LOGS_PER_TX * 32 - 32) - ) - ); - - assertEq(bytesAdvanced, encodedLogs.length, "Advanced by an incorrect number of bytes"); - // We take 40 as the user does not pay for the gas of the overall len or masked address - assertEq(logsLength, encodedLogs.length - 40, "Incorrect logs length"); - assertEq(logsHash, referenceLogsHash, "Incorrect logs hash"); - } - - function testComputeKernelLogs2Iterations() public { - // || K_LOGS_LEN | I1_LOGS_LEN | I1_LOGS | I2_LOGS_LEN | I2_LOGS || - // K_LOGS_LEN = 4 + 8 + 4 + 20 = 36 (hex"00000024") - // I1_LOGS_LEN = 8 (hex"00000008") - // I1_LOGS = 8 random bytes (hex"0000000493e78a70") - // I2_LOGS_LEN = 20 (hex"00000014") - // I2_LOGS = 20 bytes (hex"0000001006a86173c86c6d3f108eefc36e7fb014") - bytes memory firstFunctionCallLogs = hex"93e78a70"; - // First, prefix logs with a masked address to mimic siloing - bytes32 firstCallMaskedAddress = hex"11"; - bytes memory secondFunctionCallLogs = hex"06a86173c86c6d3f108eefc36e7fb014"; - bytes32 secondCallMaskedAddress = hex"12"; - bytes memory encodedLogs = abi.encodePacked( - hex"0000006400000028", - hex"00000024", - firstCallMaskedAddress, - firstFunctionCallLogs, - hex"00000034", - hex"00000030", - secondCallMaskedAddress, - secondFunctionCallLogs - ); - (bytes32 logsHash, uint256 bytesAdvanced, uint256 logsLength) = - txsHelper.computeKernelLogsHash(encodedLogs); - - bytes32 referenceLogsHashFromIteration1 = Hash.sha256ToField(firstFunctionCallLogs); - bytes32 referenceLogsHashFromIteration1Siloed = - Hash.sha256ToField(bytes.concat(firstCallMaskedAddress, referenceLogsHashFromIteration1)); - - bytes32 privateCircuitPublicInputsLogsHashSecondCall = - Hash.sha256ToField(secondFunctionCallLogs); - bytes32 privateCircuitPublicInputsLogsHashSecondCallSiloed = Hash.sha256ToField( - bytes.concat(secondCallMaskedAddress, privateCircuitPublicInputsLogsHashSecondCall) - ); - - bytes32 referenceLogsHashFromIteration2 = Hash.sha256ToField( - abi.encodePacked( - referenceLogsHashFromIteration1Siloed, - privateCircuitPublicInputsLogsHashSecondCallSiloed, - new bytes(Constants.MAX_ENCRYPTED_LOGS_PER_TX * 32 - 64) - ) - ); - - assertEq(bytesAdvanced, encodedLogs.length, "Advanced by an incorrect number of bytes"); - // We take 76 as the user does not pay for the gas of the parent len bytes or masked addresses - assertEq(logsLength, encodedLogs.length - 76, "Incorrect logs length"); - assertEq(logsHash, referenceLogsHashFromIteration2, "Incorrect logs hash"); - } - - function testComputeKernelLogsMiddleIterationWithoutLogs() public { - // || K_LOGS_LEN | I1_LOGS_LEN | I1_LOGS | I2_LOGS_LEN | I2_LOGS | I3_LOGS_LEN | I3_LOGS || - // K_LOGS_LEN = 4 + 8 + 4 + 0 + 4 + 20 = 40 (hex"00000028") - // I1_LOGS_LEN = 8 (hex"00000008") - // I1_LOGS = 8 random bytes (hex"0000000493e78a70") - // I2_LOGS_LEN = 0 (hex"00000000") - // I2_LOGS = 0 bytes (hex"") - // I3_LOGS_LEN = 20 (hex"00000014") - // I3_LOGS = 20 random bytes (hex"0000001006a86173c86c6d3f108eefc36e7fb014") - bytes memory firstFunctionCallLogs = hex"93e78a70"; - // First, prefix logs with a masked address to mimic siloing - bytes32 firstCallMaskedAddress = hex"11"; - bytes memory secondFunctionCallLogs = hex""; - bytes memory thirdFunctionCallLogs = hex"06a86173c86c6d3f108eefc36e7fb014"; - bytes32 thirdCallMaskedAddress = hex"12"; - bytes memory encodedLogs = abi.encodePacked( - hex"0000006800000028", - hex"00000024", - firstCallMaskedAddress, - firstFunctionCallLogs, - hex"00000000", - secondFunctionCallLogs, - hex"00000034", - hex"00000030", - thirdCallMaskedAddress, - thirdFunctionCallLogs - ); - (bytes32 logsHash, uint256 bytesAdvanced, uint256 logsLength) = - txsHelper.computeKernelLogsHash(encodedLogs); - - bytes32 referenceLogsHashFromIteration1 = Hash.sha256ToField(firstFunctionCallLogs); - bytes32 referenceLogsHashFromIteration1Siloed = - Hash.sha256ToField(bytes.concat(firstCallMaskedAddress, referenceLogsHashFromIteration1)); - - // Note: as of resolving #5017, we now hash logs inside the circuits - // Following the YP, we skip any zero length logs, hence no use of secondFunctionCallLogs here - - bytes32 privateCircuitPublicInputsLogsHashThirdCall = Hash.sha256ToField(thirdFunctionCallLogs); - bytes32 privateCircuitPublicInputsLogsHashThirdCallSiloed = Hash.sha256ToField( - bytes.concat(thirdCallMaskedAddress, privateCircuitPublicInputsLogsHashThirdCall) - ); - - bytes32 referenceLogsHashFromIteration3 = Hash.sha256ToField( - abi.encodePacked( - referenceLogsHashFromIteration1Siloed, - privateCircuitPublicInputsLogsHashThirdCallSiloed, - new bytes(Constants.MAX_ENCRYPTED_LOGS_PER_TX * 32 - 64) - ) - ); - - assertEq(bytesAdvanced, encodedLogs.length, "Advanced by an incorrect number of bytes"); - // We take 80 as the user does not pay for the gas of the parent len bytes or masked addresses - assertEq(logsLength, encodedLogs.length - 80, "Incorrect logs length"); - assertEq(logsHash, referenceLogsHashFromIteration3, "Incorrect logs hash"); - } - - function testComputeTxOutHash() public { - // A tx with no msgs should give an out hash of 0 - bytes memory encodedMsgs = abi.encodePacked(hex"00"); - bytes32 outHash = txsHelper.computeTxOutHash(encodedMsgs); - assertEq(outHash, 0, "Incorrect tx empty out hash"); - // Mimics test_3_elems test in .nr, with msg hashes of value 10, 11, and 12 - bytes32[3] memory msgs = [bytes32(hex"0a"), bytes32(hex"0b"), bytes32(hex"0c")]; - encodedMsgs = abi.encodePacked(hex"03", msgs); - outHash = txsHelper.computeTxOutHash(encodedMsgs); - bytes32 firstNode = Hash.sha256ToField(bytes.concat(msgs[0], msgs[1])); - bytes32 secondNode = Hash.sha256ToField(bytes.concat(msgs[2], bytes32(0))); - bytes32 expectedOutHash = Hash.sha256ToField(bytes.concat(firstNode, secondNode)); - assertEq(outHash, expectedOutHash, "Incorrect tx out hash"); - } - - function testTxsDecoderCorrectlyComputesNumTxEffectsToPad() public { - // Minimum num txs is 2 so when there are no real txs we need to pad to 2 - uint32 numTxEffects = 0; - uint32 paddedNumTxEffects = txsHelper.computeNumTxEffectsToPad(numTxEffects); - assertEq(paddedNumTxEffects, 2, "Incorrect number of tx effects to pad"); - - numTxEffects = 1; - paddedNumTxEffects = txsHelper.computeNumTxEffectsToPad(numTxEffects); - assertEq(paddedNumTxEffects, 2 ** 1 - numTxEffects, "Incorrect number of tx effects to pad"); - - numTxEffects = 3; - paddedNumTxEffects = txsHelper.computeNumTxEffectsToPad(numTxEffects); - assertEq(paddedNumTxEffects, 0, "Incorrect number of tx effects to pad"); - - numTxEffects = 17; - paddedNumTxEffects = txsHelper.computeNumTxEffectsToPad(numTxEffects); - assertEq(paddedNumTxEffects, 0, "Incorrect number of tx effects to pad"); - } - - function testTxsDecoderCorrectlyComputesNumMsgsToPad() public { - uint32 numMsgs = 0; - uint32 numMsgsToPad = txsHelper.computeNumMsgsToPad(numMsgs); - assertEq(numMsgsToPad, 1, "Incorrect number of msgs to pad"); - - numMsgs = 1; - numMsgsToPad = txsHelper.computeNumMsgsToPad(numMsgs); - assertEq(numMsgsToPad, 2 ** 1 - numMsgs, "Incorrect number of msgs to pad"); - - numMsgs = 2; - numMsgsToPad = txsHelper.computeNumMsgsToPad(numMsgs); - assertEq(numMsgsToPad, 0, "Incorrect number of msgs to pad"); - - numMsgs = 3; - numMsgsToPad = txsHelper.computeNumMsgsToPad(numMsgs); - assertEq(numMsgsToPad, 2 ** 2 - numMsgs, "Incorrect number of msgs to pad"); - - numMsgs = 4; - numMsgsToPad = txsHelper.computeNumMsgsToPad(numMsgs); - assertEq(numMsgsToPad, 0, "Incorrect number of msgs to pad"); - - numMsgs = 5; - numMsgsToPad = txsHelper.computeNumMsgsToPad(numMsgs); - assertEq(numMsgsToPad, 2 ** 3 - numMsgs, "Incorrect number of msgs to pad"); - - numMsgs = 6; - numMsgsToPad = txsHelper.computeNumMsgsToPad(numMsgs); - assertEq(numMsgsToPad, 2 ** 3 - numMsgs, "Incorrect number of msgs to pad"); - - numMsgs = 7; - numMsgsToPad = txsHelper.computeNumMsgsToPad(numMsgs); - assertEq(numMsgsToPad, 2 ** 3 - numMsgs, "Incorrect number of msgs to pad"); - - numMsgs = 7; - numMsgsToPad = txsHelper.computeNumMsgsToPad(numMsgs); - assertEq(numMsgsToPad, 2 ** 3 - numMsgs, "Incorrect number of msgs to pad"); - } } diff --git a/l1-contracts/test/decoders/helpers/TxsDecoderHelper.sol b/l1-contracts/test/decoders/helpers/TxsDecoderHelper.sol deleted file mode 100644 index 6e35c77504f..00000000000 --- a/l1-contracts/test/decoders/helpers/TxsDecoderHelper.sol +++ /dev/null @@ -1,41 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// Copyright 2024 Aztec Labs. -pragma solidity >=0.8.27; - -import {TxsDecoder} from "@aztec/core/libraries/TxsDecoder.sol"; -import {MerkleLib} from "@aztec/core/libraries/crypto/MerkleLib.sol"; - -contract TxsDecoderHelper { - // A wrapper used such that we get "calldata" and not memory - function decode(bytes calldata _body) public pure returns (bytes32 txsHash) { - return TxsDecoder.decode(_body); - } - - function computeKernelLogsHash(bytes calldata _kernelLogs) - external - pure - returns (bytes32, uint256, uint256) - { - return TxsDecoder.computeKernelEncryptedLogsHash(0, _kernelLogs); - } - - function computeTxOutHash(bytes calldata _kernelMsgs) external pure returns (bytes32) { - return TxsDecoder.computeTxOutHash(1, _kernelMsgs); - } - - function computeNumTxEffectsToPad(uint32 _numTxEffects) external pure returns (uint32) { - return TxsDecoder.computeNumTxEffectsToPad(_numTxEffects); - } - - function computeNumMsgsToPad(uint32 _numL2toL1Msgs) external pure returns (uint32) { - return TxsDecoder.computeNumMsgsToPad(_numL2toL1Msgs); - } - - function computeUnbalancedRoot(bytes32[] memory _leaves) external pure returns (bytes32) { - return TxsDecoder.computeUnbalancedRoot(_leaves); - } - - function computeMinMaxPathLength(uint32 _numTxEffects) external pure returns (uint256, uint256) { - return MerkleLib.computeMinMaxPathLength(_numTxEffects); - } -} diff --git a/l1-contracts/test/fixtures/empty_block_1.json b/l1-contracts/test/fixtures/empty_block_1.json index 0070d3ebdd8..820bd6e58be 100644 --- a/l1-contracts/test/fixtures/empty_block_1.json +++ b/l1-contracts/test/fixtures/empty_block_1.json @@ -8,25 +8,24 @@ "l2ToL1Messages": [] }, "block": { - "archive": "0x1f80d0f24457c066a8b752a2c424ee0c8bd61143db120fa0841d0f4233f7e21d", - "blockHash": "0x267f79fe7e757b20e924fac9f78264a0d1c8c4b481fea21d0bbe74650d87a1f1", + "archive": "0x192b47a3a12bb20ef6b467f094b0c0f546d81736d60cef42402dea60c8c0d525", + "blockHash": "0x13f42a72624ae6b4bf3ae1fdb26f3e2d06d3417b60af4f365df13706fd4783a4", "body": "0x00000000", - "txsEffectsHash": "0x002dcd61493c9a7f3ce4605573ee657e6ced4a3dd10bfb216f44a796b3d585c9", "decodedHeader": { "contentCommitment": { + "blobsHash": "0x001cedbd7ea5309ef9d1d159209835409bf41b6b1802597a52fa70cc82e934d9", "inHash": "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c", "outHash": "0x00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb", - "numTxs": 2, - "txsEffectsHash": "0x002dcd61493c9a7f3ce4605573ee657e6ced4a3dd10bfb216f44a796b3d585c9" + "numTxs": 2 }, "globalVariables": { "blockNumber": 1, "slotNumber": "0x0000000000000000000000000000000000000000000000000000000000000012", "chainId": 31337, - "timestamp": 1731434785, + "timestamp": 1732285514, "version": 1, - "coinbase": "0x4f6cd865d580ac0011a4776d8dc51db519c2318a", - "feeRecipient": "0x1ae8b5e1d9882013ea5271b1e71b307bc48c191549588587a227c8a118834864", + "coinbase": "0xf7cb80e18216bac01baa25aaa61decd9784c4d73", + "feeRecipient": "0x2861cd68fd33e3acc2f56271a629d5b2a61c027b2a4cbd2a98f44c8a56d25453", "gasFees": { "feePerDaGas": 0, "feePerL2Gas": 0 @@ -51,14 +50,15 @@ "root": "0x0c499b373a1f0fe1b510a63563546d2d39e206895056a5af0143c5f30d639073" }, "publicDataTree": { - "nextAvailableLeafIndex": 256, + "nextAvailableLeafIndex": 128, "root": "0x23c08a6b1297210c5e24c76b9a936250a1ce2721576c26ea797c7ec35f9e46a9" } } } }, - "header": "0x2a05cb8aeefe9b9797f90650eae072f5ab7437807e62f9724ce1900467779860000000010000000000000000000000000000000000000000000000000000000000000002002dcd61493c9a7f3ce4605573ee657e6ced4a3dd10bfb216f44a796b3d585c900089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6000000101fd848aa69e1633722fe249a5b7f53b094f1c9cef9f5c694b073fd1cc5850dfb000000800c499b373a1f0fe1b510a63563546d2d39e206895056a5af0143c5f30d6390730000010023c08a6b1297210c5e24c76b9a936250a1ce2721576c26ea797c7ec35f9e46a9000001000000000000000000000000000000000000000000000000000000000000007a6900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000673399214f6cd865d580ac0011a4776d8dc51db519c2318a1ae8b5e1d9882013ea5271b1e71b307bc48c191549588587a227c8a118834864000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "publicInputsHash": "0x00f45c9ec73df38136aa1fed90362a5df796817e37a36d02df4700f80bc356b2", + "header": "0x2a05cb8aeefe9b9797f90650eae072f5ab7437807e62f9724ce1900467779860000000010000000000000000000000000000000000000000000000000000000000000002001cedbd7ea5309ef9d1d159209835409bf41b6b1802597a52fa70cc82e934d900089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6000000101fd848aa69e1633722fe249a5b7f53b094f1c9cef9f5c694b073fd1cc5850dfb000000800c499b373a1f0fe1b510a63563546d2d39e206895056a5af0143c5f30d6390730000010023c08a6b1297210c5e24c76b9a936250a1ce2721576c26ea797c7ec35f9e46a9000000800000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000006740944af7cb80e18216bac01baa25aaa61decd9784c4d732861cd68fd33e3acc2f56271a629d5b2a61c027b2a4cbd2a98f44c8a56d25453000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "publicInputsHash": "0x00e98d4e431913fb9e1054e86564a761cfd983765b07a557b7b3201b8ddaecba", + "blobInputs": "0x01010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c4440140ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb0000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "numTxs": 0 } } \ No newline at end of file diff --git a/l1-contracts/test/fixtures/empty_block_2.json b/l1-contracts/test/fixtures/empty_block_2.json index 447934f005b..d94db0c6edb 100644 --- a/l1-contracts/test/fixtures/empty_block_2.json +++ b/l1-contracts/test/fixtures/empty_block_2.json @@ -8,25 +8,24 @@ "l2ToL1Messages": [] }, "block": { - "archive": "0x1120ec22c3dd3dd6904b9520f086189726776a41c75c53f8f4cea4a53bc45844", - "blockHash": "0x2d48eea4aa6c13eea47df326e22cd76e74ecc24ee272d6b4207eb5f494f891d3", + "archive": "0x1584dbcbe9d5e96b07bd5a2d9477b1f76d1670528644f240c86cafda613ce22c", + "blockHash": "0x303a5cd1113d57baebccadd3496491821599e7f1458bdbb0675ce9d71e7404d1", "body": "0x00000000", - "txsEffectsHash": "0x002dcd61493c9a7f3ce4605573ee657e6ced4a3dd10bfb216f44a796b3d585c9", "decodedHeader": { "contentCommitment": { + "blobsHash": "0x001cedbd7ea5309ef9d1d159209835409bf41b6b1802597a52fa70cc82e934d9", "inHash": "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c", "outHash": "0x00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb", - "numTxs": 2, - "txsEffectsHash": "0x002dcd61493c9a7f3ce4605573ee657e6ced4a3dd10bfb216f44a796b3d585c9" + "numTxs": 2 }, "globalVariables": { "blockNumber": 2, "slotNumber": "0x0000000000000000000000000000000000000000000000000000000000000013", "chainId": 31337, - "timestamp": 1731434809, + "timestamp": 1732285538, "version": 1, - "coinbase": "0x4f6cd865d580ac0011a4776d8dc51db519c2318a", - "feeRecipient": "0x1ae8b5e1d9882013ea5271b1e71b307bc48c191549588587a227c8a118834864", + "coinbase": "0xf7cb80e18216bac01baa25aaa61decd9784c4d73", + "feeRecipient": "0x2861cd68fd33e3acc2f56271a629d5b2a61c027b2a4cbd2a98f44c8a56d25453", "gasFees": { "feePerDaGas": 0, "feePerL2Gas": 0 @@ -34,7 +33,7 @@ }, "lastArchive": { "nextAvailableLeafIndex": 2, - "root": "0x1f80d0f24457c066a8b752a2c424ee0c8bd61143db120fa0841d0f4233f7e21d" + "root": "0x192b47a3a12bb20ef6b467f094b0c0f546d81736d60cef42402dea60c8c0d525" }, "stateReference": { "l1ToL2MessageTree": { @@ -51,14 +50,15 @@ "root": "0x0c499b373a1f0fe1b510a63563546d2d39e206895056a5af0143c5f30d639073" }, "publicDataTree": { - "nextAvailableLeafIndex": 384, + "nextAvailableLeafIndex": 128, "root": "0x23c08a6b1297210c5e24c76b9a936250a1ce2721576c26ea797c7ec35f9e46a9" } } } }, - "header": "0x1f80d0f24457c066a8b752a2c424ee0c8bd61143db120fa0841d0f4233f7e21d000000020000000000000000000000000000000000000000000000000000000000000002002dcd61493c9a7f3ce4605573ee657e6ced4a3dd10bfb216f44a796b3d585c900089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6000000201fd848aa69e1633722fe249a5b7f53b094f1c9cef9f5c694b073fd1cc5850dfb000001000c499b373a1f0fe1b510a63563546d2d39e206895056a5af0143c5f30d6390730000018023c08a6b1297210c5e24c76b9a936250a1ce2721576c26ea797c7ec35f9e46a9000001800000000000000000000000000000000000000000000000000000000000007a6900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001300000000000000000000000000000000000000000000000000000000673399394f6cd865d580ac0011a4776d8dc51db519c2318a1ae8b5e1d9882013ea5271b1e71b307bc48c191549588587a227c8a118834864000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "publicInputsHash": "0x0050ad1c615efe79df6f8ed137584b719b7043725a87ff1b1e2a29f22f0827c8", + "header": "0x192b47a3a12bb20ef6b467f094b0c0f546d81736d60cef42402dea60c8c0d525000000020000000000000000000000000000000000000000000000000000000000000002001cedbd7ea5309ef9d1d159209835409bf41b6b1802597a52fa70cc82e934d900089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6000000201fd848aa69e1633722fe249a5b7f53b094f1c9cef9f5c694b073fd1cc5850dfb000001000c499b373a1f0fe1b510a63563546d2d39e206895056a5af0143c5f30d6390730000018023c08a6b1297210c5e24c76b9a936250a1ce2721576c26ea797c7ec35f9e46a9000000800000000000000000000000000000000000000000000000000000000000007a690000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000130000000000000000000000000000000000000000000000000000000067409462f7cb80e18216bac01baa25aaa61decd9784c4d732861cd68fd33e3acc2f56271a629d5b2a61c027b2a4cbd2a98f44c8a56d25453000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "publicInputsHash": "0x008280aabced37627bae259d76bd9a83189c8523f77f4f712cfd024fad4935b0", + "blobInputs": "0x01010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c4440140ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb0000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "numTxs": 0 } } \ No newline at end of file diff --git a/l1-contracts/test/fixtures/mixed_block_1.json b/l1-contracts/test/fixtures/mixed_block_1.json index e3a5c4cceb9..79428509390 100644 --- a/l1-contracts/test/fixtures/mixed_block_1.json +++ b/l1-contracts/test/fixtures/mixed_block_1.json @@ -58,25 +58,24 @@ ] }, "block": { - "archive": "0x13232b1c92fcfba5f94aee813d7e454764f93d6292215552b8c973ef42c8e396", - "blockHash": "0x024c7ee2217388b1e45747c7233b2f3993bfc88a8a944ee89a11d9c66c24907d", + "archive": "0x0e53899e5997e6e78a98a4092b9627f8618a34f7e6585286acff725d1ae5e32d", + "blockHash": "0x1bee21e407ecf91479782653071dd9688dad0b2c6351ea12a8b468ada828dcd1", "body": "0x00000004000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000041000000000000000000000000000000000000000000000000000000000000004100100000000000000000000000000000000000000000000000000000000000410020000000000000000000000000000000000000000000000000000000000041003000000000000000000000000000000000000000000000000000000000004100400000000000000000000000000000000000000000000000000000000000410050000000000000000000000000000000000000000000000000000000000041006000000000000000000000000000000000000000000000000000000000004100700000000000000000000000000000000000000000000000000000000000410080000000000000000000000000000000000000000000000000000000000041009000000000000000000000000000000000000000000000000000000000004100a000000000000000000000000000000000000000000000000000000000004100b000000000000000000000000000000000000000000000000000000000004100c000000000000000000000000000000000000000000000000000000000004100d000000000000000000000000000000000000000000000000000000000004100e000000000000000000000000000000000000000000000000000000000004100f0000000000000000000000000000000000000000000000000000000000041010000000000000000000000000000000000000000000000000000000000004101100000000000000000000000000000000000000000000000000000000000410120000000000000000000000000000000000000000000000000000000000041013000000000000000000000000000000000000000000000000000000000004101400000000000000000000000000000000000000000000000000000000000410150000000000000000000000000000000000000000000000000000000000041016000000000000000000000000000000000000000000000000000000000004101700000000000000000000000000000000000000000000000000000000000410180000000000000000000000000000000000000000000000000000000000041019000000000000000000000000000000000000000000000000000000000004101a000000000000000000000000000000000000000000000000000000000004101b000000000000000000000000000000000000000000000000000000000004101c000000000000000000000000000000000000000000000000000000000004101d000000000000000000000000000000000000000000000000000000000004101e000000000000000000000000000000000000000000000000000000000004101f0000000000000000000000000000000000000000000000000000000000041020000000000000000000000000000000000000000000000000000000000004102100000000000000000000000000000000000000000000000000000000000410220000000000000000000000000000000000000000000000000000000000041023000000000000000000000000000000000000000000000000000000000004102400000000000000000000000000000000000000000000000000000000000410250000000000000000000000000000000000000000000000000000000000041026000000000000000000000000000000000000000000000000000000000004102700000000000000000000000000000000000000000000000000000000000410280000000000000000000000000000000000000000000000000000000000041029000000000000000000000000000000000000000000000000000000000004102a000000000000000000000000000000000000000000000000000000000004102b000000000000000000000000000000000000000000000000000000000004102c000000000000000000000000000000000000000000000000000000000004102d000000000000000000000000000000000000000000000000000000000004102e000000000000000000000000000000000000000000000000000000000004102f0000000000000000000000000000000000000000000000000000000000041030000000000000000000000000000000000000000000000000000000000004103100000000000000000000000000000000000000000000000000000000000410320000000000000000000000000000000000000000000000000000000000041033000000000000000000000000000000000000000000000000000000000004103400000000000000000000000000000000000000000000000000000000000410350000000000000000000000000000000000000000000000000000000000041036000000000000000000000000000000000000000000000000000000000004103700000000000000000000000000000000000000000000000000000000000410380000000000000000000000000000000000000000000000000000000000041039000000000000000000000000000000000000000000000000000000000004103a000000000000000000000000000000000000000000000000000000000004103b000000000000000000000000000000000000000000000000000000000004103c000000000000000000000000000000000000000000000000000000000004103d000000000000000000000000000000000000000000000000000000000004103e000000000000000000000000000000000000000000000000000000000004103f3f0000000000000000000000000000000000000000000000000000000000041100000000000000000000000000000000000000000000000000000000000004110100000000000000000000000000000000000000000000000000000000000411020000000000000000000000000000000000000000000000000000000000041103000000000000000000000000000000000000000000000000000000000004110400000000000000000000000000000000000000000000000000000000000411050000000000000000000000000000000000000000000000000000000000041106000000000000000000000000000000000000000000000000000000000004110700000000000000000000000000000000000000000000000000000000000411080000000000000000000000000000000000000000000000000000000000041109000000000000000000000000000000000000000000000000000000000004110a000000000000000000000000000000000000000000000000000000000004110b000000000000000000000000000000000000000000000000000000000004110c000000000000000000000000000000000000000000000000000000000004110d000000000000000000000000000000000000000000000000000000000004110e000000000000000000000000000000000000000000000000000000000004110f0000000000000000000000000000000000000000000000000000000000041110000000000000000000000000000000000000000000000000000000000004111100000000000000000000000000000000000000000000000000000000000411120000000000000000000000000000000000000000000000000000000000041113000000000000000000000000000000000000000000000000000000000004111400000000000000000000000000000000000000000000000000000000000411150000000000000000000000000000000000000000000000000000000000041116000000000000000000000000000000000000000000000000000000000004111700000000000000000000000000000000000000000000000000000000000411180000000000000000000000000000000000000000000000000000000000041119000000000000000000000000000000000000000000000000000000000004111a000000000000000000000000000000000000000000000000000000000004111b000000000000000000000000000000000000000000000000000000000004111c000000000000000000000000000000000000000000000000000000000004111d000000000000000000000000000000000000000000000000000000000004111e000000000000000000000000000000000000000000000000000000000004111f0000000000000000000000000000000000000000000000000000000000041120000000000000000000000000000000000000000000000000000000000004112100000000000000000000000000000000000000000000000000000000000411220000000000000000000000000000000000000000000000000000000000041123000000000000000000000000000000000000000000000000000000000004112400000000000000000000000000000000000000000000000000000000000411250000000000000000000000000000000000000000000000000000000000041126000000000000000000000000000000000000000000000000000000000004112700000000000000000000000000000000000000000000000000000000000411280000000000000000000000000000000000000000000000000000000000041129000000000000000000000000000000000000000000000000000000000004112a000000000000000000000000000000000000000000000000000000000004112b000000000000000000000000000000000000000000000000000000000004112c000000000000000000000000000000000000000000000000000000000004112d000000000000000000000000000000000000000000000000000000000004112e000000000000000000000000000000000000000000000000000000000004112f0000000000000000000000000000000000000000000000000000000000041130000000000000000000000000000000000000000000000000000000000004113100000000000000000000000000000000000000000000000000000000000411320000000000000000000000000000000000000000000000000000000000041133000000000000000000000000000000000000000000000000000000000004113400000000000000000000000000000000000000000000000000000000000411350000000000000000000000000000000000000000000000000000000000041136000000000000000000000000000000000000000000000000000000000004113700000000000000000000000000000000000000000000000000000000000411380000000000000000000000000000000000000000000000000000000000041139000000000000000000000000000000000000000000000000000000000004113a000000000000000000000000000000000000000000000000000000000004113b000000000000000000000000000000000000000000000000000000000004113c000000000000000000000000000000000000000000000000000000000004113d000000000000000000000000000000000000000000000000000000000004113e080097a6ec570e9b8e257647c9c74c5ad3edc57ca5ef6ae44d80b3c30d1d99b9b300ce48ec41d1edde0066fab553a456ae2f380d14fa8f956af1fb0217513a598900619ff12eaf97f63aa2a2311de3b6571a7b880a5247cb33b6a74787bf3f9bd5007854a2fad4e1801c6404394bf3d37ab08c135ea38a1974242e39a21273685f000f55796e72957a819e68a22e8602d73c3ba3718a5a4bd92b80b0aa444b182a00788b6e9874fb040ee679a7fae257190099a605229b948334e54a57739535d4004f1658ee3c1a91627e5d72f5a731f0796299df82ab41e72c88eee0c82fa85e003ee802add96628c693ed71afa9908138ba5a6fbf0a5f29a9c74e4e42aba6713f0000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000000000000004200a0000000000000000000000000000000000000000000000000000000000042001000000000000000000000000000000000000000000000000000000000004200b0000000000000000000000000000000000000000000000000000000000042002000000000000000000000000000000000000000000000000000000000004200c0000000000000000000000000000000000000000000000000000000000042003000000000000000000000000000000000000000000000000000000000004200d0000000000000000000000000000000000000000000000000000000000042004000000000000000000000000000000000000000000000000000000000004200e0000000000000000000000000000000000000000000000000000000000042005000000000000000000000000000000000000000000000000000000000004200f00000000000000000000000000000000000000000000000000000000000420060000000000000000000000000000000000000000000000000000000000042010000000000000000000000000000000000000000000000000000000000004200700000000000000000000000000000000000000000000000000000000000420110000000000000000000000000000000000000000000000000000000000042008000000000000000000000000000000000000000000000000000000000004201200000000000000000000000000000000000000000000000000000000000420090000000000000000000000000000000000000000000000000000000000042013000000000000000000000000000000000000000000000000000000000004200a0000000000000000000000000000000000000000000000000000000000042014000000000000000000000000000000000000000000000000000000000004200b0000000000000000000000000000000000000000000000000000000000042015000000000000000000000000000000000000000000000000000000000004200c0000000000000000000000000000000000000000000000000000000000042016000000000000000000000000000000000000000000000000000000000004200d0000000000000000000000000000000000000000000000000000000000042017000000000000000000000000000000000000000000000000000000000004200e0000000000000000000000000000000000000000000000000000000000042018000000000000000000000000000000000000000000000000000000000004200f00000000000000000000000000000000000000000000000000000000000420190000000000000000000000000000000000000000000000000000000000042010000000000000000000000000000000000000000000000000000000000004201a0000000000000000000000000000000000000000000000000000000000042011000000000000000000000000000000000000000000000000000000000004201b0000000000000000000000000000000000000000000000000000000000042012000000000000000000000000000000000000000000000000000000000004201c0000000000000000000000000000000000000000000000000000000000042013000000000000000000000000000000000000000000000000000000000004201d0000000000000000000000000000000000000000000000000000000000042014000000000000000000000000000000000000000000000000000000000004201e0000000000000000000000000000000000000000000000000000000000042015000000000000000000000000000000000000000000000000000000000004201f00000000000000000000000000000000000000000000000000000000000420160000000000000000000000000000000000000000000000000000000000042020000000000000000000000000000000000000000000000000000000000004201700000000000000000000000000000000000000000000000000000000000420210000000000000000000000000000000000000000000000000000000000042018000000000000000000000000000000000000000000000000000000000004202200000000000000000000000000000000000000000000000000000000000420190000000000000000000000000000000000000000000000000000000000042023000000000000000000000000000000000000000000000000000000000004201a0000000000000000000000000000000000000000000000000000000000042024000000000000000000000000000000000000000000000000000000000004201b0000000000000000000000000000000000000000000000000000000000042025000000000000000000000000000000000000000000000000000000000004201c0000000000000000000000000000000000000000000000000000000000042026000000000000000000000000000000000000000000000000000000000004201d0000000000000000000000000000000000000000000000000000000000042027000000000000000000000000000000000000000000000000000000000004201e0000000000000000000000000000000000000000000000000000000000042028000000000000000000000000000000000000000000000000000000000004201f00000000000000000000000000000000000000000000000000000000000420290000000000000000000000000000000000000000000000000000000000042020000000000000000000000000000000000000000000000000000000000004202a0000000000000000000000000000000000000000000000000000000000042021000000000000000000000000000000000000000000000000000000000004202b0000000000000000000000000000000000000000000000000000000000042022000000000000000000000000000000000000000000000000000000000004202c0000000000000000000000000000000000000000000000000000000000042023000000000000000000000000000000000000000000000000000000000004202d0000000000000000000000000000000000000000000000000000000000042024000000000000000000000000000000000000000000000000000000000004202e0000000000000000000000000000000000000000000000000000000000042025000000000000000000000000000000000000000000000000000000000004202f00000000000000000000000000000000000000000000000000000000000420260000000000000000000000000000000000000000000000000000000000042030000000000000000000000000000000000000000000000000000000000004202700000000000000000000000000000000000000000000000000000000000420310000000000000000000000000000000000000000000000000000000000042028000000000000000000000000000000000000000000000000000000000004203200000000000000000000000000000000000000000000000000000000000420290000000000000000000000000000000000000000000000000000000000042033000000000000000000000000000000000000000000000000000000000004202a0000000000000000000000000000000000000000000000000000000000042034000000000000000000000000000000000000000000000000000000000004202b0000000000000000000000000000000000000000000000000000000000042035000000000000000000000000000000000000000000000000000000000004202c0000000000000000000000000000000000000000000000000000000000042036000000000000000000000000000000000000000000000000000000000004202d0000000000000000000000000000000000000000000000000000000000042037000000000000000000000000000000000000000000000000000000000004202e0000000000000000000000000000000000000000000000000000000000042038000000000000000000000000000000000000000000000000000000000004202f00000000000000000000000000000000000000000000000000000000000420390000000000000000000000000000000000000000000000000000000000042030000000000000000000000000000000000000000000000000000000000004203a0000000000000000000000000000000000000000000000000000000000042031000000000000000000000000000000000000000000000000000000000004203b0000000000000000000000000000000000000000000000000000000000042032000000000000000000000000000000000000000000000000000000000004203c0000000000000000000000000000000000000000000000000000000000042033000000000000000000000000000000000000000000000000000000000004203d0000000000000000000000000000000000000000000000000000000000042034000000000000000000000000000000000000000000000000000000000004203e0000000000000000000000000000000000000000000000000000000000042035000000000000000000000000000000000000000000000000000000000004203f00000000000000000000000000000000000000000000000000000000000420360000000000000000000000000000000000000000000000000000000000042040000000000000000000000000000000000000000000000000000000000004203700000000000000000000000000000000000000000000000000000000000420410000000000000000000000000000000000000000000000000000000000042038000000000000000000000000000000000000000000000000000000000004204200000000000000000000000000000000000000000000000000000000000420390000000000000000000000000000000000000000000000000000000000042043000000000000000000000000000000000000000000000000000000000004203a0000000000000000000000000000000000000000000000000000000000042044000000000000000000000000000000000000000000000000000000000004203b0000000000000000000000000000000000000000000000000000000000042045000000000000000000000000000000000000000000000000000000000004203c0000000000000000000000000000000000000000000000000000000000042046000000000000000000000000000000000000000000000000000000000004203d0000000000000000000000000000000000000000000000000000000000042047000000000000000000000000000000000000000000000000000000000004203e0000000000000000000000000000000000000000000000000000000000042048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000081000000000000000000000000000000000000000000000000000000000000008100100000000000000000000000000000000000000000000000000000000000810020000000000000000000000000000000000000000000000000000000000081003000000000000000000000000000000000000000000000000000000000008100400000000000000000000000000000000000000000000000000000000000810050000000000000000000000000000000000000000000000000000000000081006000000000000000000000000000000000000000000000000000000000008100700000000000000000000000000000000000000000000000000000000000810080000000000000000000000000000000000000000000000000000000000081009000000000000000000000000000000000000000000000000000000000008100a000000000000000000000000000000000000000000000000000000000008100b000000000000000000000000000000000000000000000000000000000008100c000000000000000000000000000000000000000000000000000000000008100d000000000000000000000000000000000000000000000000000000000008100e000000000000000000000000000000000000000000000000000000000008100f0000000000000000000000000000000000000000000000000000000000081010000000000000000000000000000000000000000000000000000000000008101100000000000000000000000000000000000000000000000000000000000810120000000000000000000000000000000000000000000000000000000000081013000000000000000000000000000000000000000000000000000000000008101400000000000000000000000000000000000000000000000000000000000810150000000000000000000000000000000000000000000000000000000000081016000000000000000000000000000000000000000000000000000000000008101700000000000000000000000000000000000000000000000000000000000810180000000000000000000000000000000000000000000000000000000000081019000000000000000000000000000000000000000000000000000000000008101a000000000000000000000000000000000000000000000000000000000008101b000000000000000000000000000000000000000000000000000000000008101c000000000000000000000000000000000000000000000000000000000008101d000000000000000000000000000000000000000000000000000000000008101e000000000000000000000000000000000000000000000000000000000008101f0000000000000000000000000000000000000000000000000000000000081020000000000000000000000000000000000000000000000000000000000008102100000000000000000000000000000000000000000000000000000000000810220000000000000000000000000000000000000000000000000000000000081023000000000000000000000000000000000000000000000000000000000008102400000000000000000000000000000000000000000000000000000000000810250000000000000000000000000000000000000000000000000000000000081026000000000000000000000000000000000000000000000000000000000008102700000000000000000000000000000000000000000000000000000000000810280000000000000000000000000000000000000000000000000000000000081029000000000000000000000000000000000000000000000000000000000008102a000000000000000000000000000000000000000000000000000000000008102b000000000000000000000000000000000000000000000000000000000008102c000000000000000000000000000000000000000000000000000000000008102d000000000000000000000000000000000000000000000000000000000008102e000000000000000000000000000000000000000000000000000000000008102f0000000000000000000000000000000000000000000000000000000000081030000000000000000000000000000000000000000000000000000000000008103100000000000000000000000000000000000000000000000000000000000810320000000000000000000000000000000000000000000000000000000000081033000000000000000000000000000000000000000000000000000000000008103400000000000000000000000000000000000000000000000000000000000810350000000000000000000000000000000000000000000000000000000000081036000000000000000000000000000000000000000000000000000000000008103700000000000000000000000000000000000000000000000000000000000810380000000000000000000000000000000000000000000000000000000000081039000000000000000000000000000000000000000000000000000000000008103a000000000000000000000000000000000000000000000000000000000008103b000000000000000000000000000000000000000000000000000000000008103c000000000000000000000000000000000000000000000000000000000008103d000000000000000000000000000000000000000000000000000000000008103e000000000000000000000000000000000000000000000000000000000008103f3f0000000000000000000000000000000000000000000000000000000000081100000000000000000000000000000000000000000000000000000000000008110100000000000000000000000000000000000000000000000000000000000811020000000000000000000000000000000000000000000000000000000000081103000000000000000000000000000000000000000000000000000000000008110400000000000000000000000000000000000000000000000000000000000811050000000000000000000000000000000000000000000000000000000000081106000000000000000000000000000000000000000000000000000000000008110700000000000000000000000000000000000000000000000000000000000811080000000000000000000000000000000000000000000000000000000000081109000000000000000000000000000000000000000000000000000000000008110a000000000000000000000000000000000000000000000000000000000008110b000000000000000000000000000000000000000000000000000000000008110c000000000000000000000000000000000000000000000000000000000008110d000000000000000000000000000000000000000000000000000000000008110e000000000000000000000000000000000000000000000000000000000008110f0000000000000000000000000000000000000000000000000000000000081110000000000000000000000000000000000000000000000000000000000008111100000000000000000000000000000000000000000000000000000000000811120000000000000000000000000000000000000000000000000000000000081113000000000000000000000000000000000000000000000000000000000008111400000000000000000000000000000000000000000000000000000000000811150000000000000000000000000000000000000000000000000000000000081116000000000000000000000000000000000000000000000000000000000008111700000000000000000000000000000000000000000000000000000000000811180000000000000000000000000000000000000000000000000000000000081119000000000000000000000000000000000000000000000000000000000008111a000000000000000000000000000000000000000000000000000000000008111b000000000000000000000000000000000000000000000000000000000008111c000000000000000000000000000000000000000000000000000000000008111d000000000000000000000000000000000000000000000000000000000008111e000000000000000000000000000000000000000000000000000000000008111f0000000000000000000000000000000000000000000000000000000000081120000000000000000000000000000000000000000000000000000000000008112100000000000000000000000000000000000000000000000000000000000811220000000000000000000000000000000000000000000000000000000000081123000000000000000000000000000000000000000000000000000000000008112400000000000000000000000000000000000000000000000000000000000811250000000000000000000000000000000000000000000000000000000000081126000000000000000000000000000000000000000000000000000000000008112700000000000000000000000000000000000000000000000000000000000811280000000000000000000000000000000000000000000000000000000000081129000000000000000000000000000000000000000000000000000000000008112a000000000000000000000000000000000000000000000000000000000008112b000000000000000000000000000000000000000000000000000000000008112c000000000000000000000000000000000000000000000000000000000008112d000000000000000000000000000000000000000000000000000000000008112e000000000000000000000000000000000000000000000000000000000008112f0000000000000000000000000000000000000000000000000000000000081130000000000000000000000000000000000000000000000000000000000008113100000000000000000000000000000000000000000000000000000000000811320000000000000000000000000000000000000000000000000000000000081133000000000000000000000000000000000000000000000000000000000008113400000000000000000000000000000000000000000000000000000000000811350000000000000000000000000000000000000000000000000000000000081136000000000000000000000000000000000000000000000000000000000008113700000000000000000000000000000000000000000000000000000000000811380000000000000000000000000000000000000000000000000000000000081139000000000000000000000000000000000000000000000000000000000008113a000000000000000000000000000000000000000000000000000000000008113b000000000000000000000000000000000000000000000000000000000008113c000000000000000000000000000000000000000000000000000000000008113d000000000000000000000000000000000000000000000000000000000008113e08003c0472260790b0bdfb8ae4dc4d437e7686b73643f2198970d84e1059a5f13500bfd46275a318e438726ff2765ae154b63ab8a0daebcbed668a5f58a0e63dc1007906b9418dc758c6b4f8454c69baa48b7889b6b511d707abe8e2cb8f7c397300aeb60c4d65a44f122e58bf9565dfe2024b3ae654d5cf2e47ecb035d53c927000bf82e8cda20345f37bbb1de3932172324b57f0b98be483392697b168e3bba8000fb4bbad884ef30edf68e45a6cf2733fcf50310c69d7c1432b29af2c0aa8040023e1622d27fee3b4a40ab975ae0eb2e31619ef3dc76eb858f7fddb6a056131004689cd7007daf98dd3218b839b8e6a29f957154347b391fdb376bd0b344be23f0000000000000000000000000000000000000000000000000000000000082000000000000000000000000000000000000000000000000000000000000008200a0000000000000000000000000000000000000000000000000000000000082001000000000000000000000000000000000000000000000000000000000008200b0000000000000000000000000000000000000000000000000000000000082002000000000000000000000000000000000000000000000000000000000008200c0000000000000000000000000000000000000000000000000000000000082003000000000000000000000000000000000000000000000000000000000008200d0000000000000000000000000000000000000000000000000000000000082004000000000000000000000000000000000000000000000000000000000008200e0000000000000000000000000000000000000000000000000000000000082005000000000000000000000000000000000000000000000000000000000008200f00000000000000000000000000000000000000000000000000000000000820060000000000000000000000000000000000000000000000000000000000082010000000000000000000000000000000000000000000000000000000000008200700000000000000000000000000000000000000000000000000000000000820110000000000000000000000000000000000000000000000000000000000082008000000000000000000000000000000000000000000000000000000000008201200000000000000000000000000000000000000000000000000000000000820090000000000000000000000000000000000000000000000000000000000082013000000000000000000000000000000000000000000000000000000000008200a0000000000000000000000000000000000000000000000000000000000082014000000000000000000000000000000000000000000000000000000000008200b0000000000000000000000000000000000000000000000000000000000082015000000000000000000000000000000000000000000000000000000000008200c0000000000000000000000000000000000000000000000000000000000082016000000000000000000000000000000000000000000000000000000000008200d0000000000000000000000000000000000000000000000000000000000082017000000000000000000000000000000000000000000000000000000000008200e0000000000000000000000000000000000000000000000000000000000082018000000000000000000000000000000000000000000000000000000000008200f00000000000000000000000000000000000000000000000000000000000820190000000000000000000000000000000000000000000000000000000000082010000000000000000000000000000000000000000000000000000000000008201a0000000000000000000000000000000000000000000000000000000000082011000000000000000000000000000000000000000000000000000000000008201b0000000000000000000000000000000000000000000000000000000000082012000000000000000000000000000000000000000000000000000000000008201c0000000000000000000000000000000000000000000000000000000000082013000000000000000000000000000000000000000000000000000000000008201d0000000000000000000000000000000000000000000000000000000000082014000000000000000000000000000000000000000000000000000000000008201e0000000000000000000000000000000000000000000000000000000000082015000000000000000000000000000000000000000000000000000000000008201f00000000000000000000000000000000000000000000000000000000000820160000000000000000000000000000000000000000000000000000000000082020000000000000000000000000000000000000000000000000000000000008201700000000000000000000000000000000000000000000000000000000000820210000000000000000000000000000000000000000000000000000000000082018000000000000000000000000000000000000000000000000000000000008202200000000000000000000000000000000000000000000000000000000000820190000000000000000000000000000000000000000000000000000000000082023000000000000000000000000000000000000000000000000000000000008201a0000000000000000000000000000000000000000000000000000000000082024000000000000000000000000000000000000000000000000000000000008201b0000000000000000000000000000000000000000000000000000000000082025000000000000000000000000000000000000000000000000000000000008201c0000000000000000000000000000000000000000000000000000000000082026000000000000000000000000000000000000000000000000000000000008201d0000000000000000000000000000000000000000000000000000000000082027000000000000000000000000000000000000000000000000000000000008201e0000000000000000000000000000000000000000000000000000000000082028000000000000000000000000000000000000000000000000000000000008201f00000000000000000000000000000000000000000000000000000000000820290000000000000000000000000000000000000000000000000000000000082020000000000000000000000000000000000000000000000000000000000008202a0000000000000000000000000000000000000000000000000000000000082021000000000000000000000000000000000000000000000000000000000008202b0000000000000000000000000000000000000000000000000000000000082022000000000000000000000000000000000000000000000000000000000008202c0000000000000000000000000000000000000000000000000000000000082023000000000000000000000000000000000000000000000000000000000008202d0000000000000000000000000000000000000000000000000000000000082024000000000000000000000000000000000000000000000000000000000008202e0000000000000000000000000000000000000000000000000000000000082025000000000000000000000000000000000000000000000000000000000008202f00000000000000000000000000000000000000000000000000000000000820260000000000000000000000000000000000000000000000000000000000082030000000000000000000000000000000000000000000000000000000000008202700000000000000000000000000000000000000000000000000000000000820310000000000000000000000000000000000000000000000000000000000082028000000000000000000000000000000000000000000000000000000000008203200000000000000000000000000000000000000000000000000000000000820290000000000000000000000000000000000000000000000000000000000082033000000000000000000000000000000000000000000000000000000000008202a0000000000000000000000000000000000000000000000000000000000082034000000000000000000000000000000000000000000000000000000000008202b0000000000000000000000000000000000000000000000000000000000082035000000000000000000000000000000000000000000000000000000000008202c0000000000000000000000000000000000000000000000000000000000082036000000000000000000000000000000000000000000000000000000000008202d0000000000000000000000000000000000000000000000000000000000082037000000000000000000000000000000000000000000000000000000000008202e0000000000000000000000000000000000000000000000000000000000082038000000000000000000000000000000000000000000000000000000000008202f00000000000000000000000000000000000000000000000000000000000820390000000000000000000000000000000000000000000000000000000000082030000000000000000000000000000000000000000000000000000000000008203a0000000000000000000000000000000000000000000000000000000000082031000000000000000000000000000000000000000000000000000000000008203b0000000000000000000000000000000000000000000000000000000000082032000000000000000000000000000000000000000000000000000000000008203c0000000000000000000000000000000000000000000000000000000000082033000000000000000000000000000000000000000000000000000000000008203d0000000000000000000000000000000000000000000000000000000000082034000000000000000000000000000000000000000000000000000000000008203e0000000000000000000000000000000000000000000000000000000000082035000000000000000000000000000000000000000000000000000000000008203f00000000000000000000000000000000000000000000000000000000000820360000000000000000000000000000000000000000000000000000000000082040000000000000000000000000000000000000000000000000000000000008203700000000000000000000000000000000000000000000000000000000000820410000000000000000000000000000000000000000000000000000000000082038000000000000000000000000000000000000000000000000000000000008204200000000000000000000000000000000000000000000000000000000000820390000000000000000000000000000000000000000000000000000000000082043000000000000000000000000000000000000000000000000000000000008203a0000000000000000000000000000000000000000000000000000000000082044000000000000000000000000000000000000000000000000000000000008203b0000000000000000000000000000000000000000000000000000000000082045000000000000000000000000000000000000000000000000000000000008203c0000000000000000000000000000000000000000000000000000000000082046000000000000000000000000000000000000000000000000000000000008203d0000000000000000000000000000000000000000000000000000000000082047000000000000000000000000000000000000000000000000000000000008203e00000000000000000000000000000000000000000000000000000000000820480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000c100000000000000000000000000000000000000000000000000000000000000c100100000000000000000000000000000000000000000000000000000000000c100200000000000000000000000000000000000000000000000000000000000c100300000000000000000000000000000000000000000000000000000000000c100400000000000000000000000000000000000000000000000000000000000c100500000000000000000000000000000000000000000000000000000000000c100600000000000000000000000000000000000000000000000000000000000c100700000000000000000000000000000000000000000000000000000000000c100800000000000000000000000000000000000000000000000000000000000c100900000000000000000000000000000000000000000000000000000000000c100a00000000000000000000000000000000000000000000000000000000000c100b00000000000000000000000000000000000000000000000000000000000c100c00000000000000000000000000000000000000000000000000000000000c100d00000000000000000000000000000000000000000000000000000000000c100e00000000000000000000000000000000000000000000000000000000000c100f00000000000000000000000000000000000000000000000000000000000c101000000000000000000000000000000000000000000000000000000000000c101100000000000000000000000000000000000000000000000000000000000c101200000000000000000000000000000000000000000000000000000000000c101300000000000000000000000000000000000000000000000000000000000c101400000000000000000000000000000000000000000000000000000000000c101500000000000000000000000000000000000000000000000000000000000c101600000000000000000000000000000000000000000000000000000000000c101700000000000000000000000000000000000000000000000000000000000c101800000000000000000000000000000000000000000000000000000000000c101900000000000000000000000000000000000000000000000000000000000c101a00000000000000000000000000000000000000000000000000000000000c101b00000000000000000000000000000000000000000000000000000000000c101c00000000000000000000000000000000000000000000000000000000000c101d00000000000000000000000000000000000000000000000000000000000c101e00000000000000000000000000000000000000000000000000000000000c101f00000000000000000000000000000000000000000000000000000000000c102000000000000000000000000000000000000000000000000000000000000c102100000000000000000000000000000000000000000000000000000000000c102200000000000000000000000000000000000000000000000000000000000c102300000000000000000000000000000000000000000000000000000000000c102400000000000000000000000000000000000000000000000000000000000c102500000000000000000000000000000000000000000000000000000000000c102600000000000000000000000000000000000000000000000000000000000c102700000000000000000000000000000000000000000000000000000000000c102800000000000000000000000000000000000000000000000000000000000c102900000000000000000000000000000000000000000000000000000000000c102a00000000000000000000000000000000000000000000000000000000000c102b00000000000000000000000000000000000000000000000000000000000c102c00000000000000000000000000000000000000000000000000000000000c102d00000000000000000000000000000000000000000000000000000000000c102e00000000000000000000000000000000000000000000000000000000000c102f00000000000000000000000000000000000000000000000000000000000c103000000000000000000000000000000000000000000000000000000000000c103100000000000000000000000000000000000000000000000000000000000c103200000000000000000000000000000000000000000000000000000000000c103300000000000000000000000000000000000000000000000000000000000c103400000000000000000000000000000000000000000000000000000000000c103500000000000000000000000000000000000000000000000000000000000c103600000000000000000000000000000000000000000000000000000000000c103700000000000000000000000000000000000000000000000000000000000c103800000000000000000000000000000000000000000000000000000000000c103900000000000000000000000000000000000000000000000000000000000c103a00000000000000000000000000000000000000000000000000000000000c103b00000000000000000000000000000000000000000000000000000000000c103c00000000000000000000000000000000000000000000000000000000000c103d00000000000000000000000000000000000000000000000000000000000c103e00000000000000000000000000000000000000000000000000000000000c103f3f00000000000000000000000000000000000000000000000000000000000c110000000000000000000000000000000000000000000000000000000000000c110100000000000000000000000000000000000000000000000000000000000c110200000000000000000000000000000000000000000000000000000000000c110300000000000000000000000000000000000000000000000000000000000c110400000000000000000000000000000000000000000000000000000000000c110500000000000000000000000000000000000000000000000000000000000c110600000000000000000000000000000000000000000000000000000000000c110700000000000000000000000000000000000000000000000000000000000c110800000000000000000000000000000000000000000000000000000000000c110900000000000000000000000000000000000000000000000000000000000c110a00000000000000000000000000000000000000000000000000000000000c110b00000000000000000000000000000000000000000000000000000000000c110c00000000000000000000000000000000000000000000000000000000000c110d00000000000000000000000000000000000000000000000000000000000c110e00000000000000000000000000000000000000000000000000000000000c110f00000000000000000000000000000000000000000000000000000000000c111000000000000000000000000000000000000000000000000000000000000c111100000000000000000000000000000000000000000000000000000000000c111200000000000000000000000000000000000000000000000000000000000c111300000000000000000000000000000000000000000000000000000000000c111400000000000000000000000000000000000000000000000000000000000c111500000000000000000000000000000000000000000000000000000000000c111600000000000000000000000000000000000000000000000000000000000c111700000000000000000000000000000000000000000000000000000000000c111800000000000000000000000000000000000000000000000000000000000c111900000000000000000000000000000000000000000000000000000000000c111a00000000000000000000000000000000000000000000000000000000000c111b00000000000000000000000000000000000000000000000000000000000c111c00000000000000000000000000000000000000000000000000000000000c111d00000000000000000000000000000000000000000000000000000000000c111e00000000000000000000000000000000000000000000000000000000000c111f00000000000000000000000000000000000000000000000000000000000c112000000000000000000000000000000000000000000000000000000000000c112100000000000000000000000000000000000000000000000000000000000c112200000000000000000000000000000000000000000000000000000000000c112300000000000000000000000000000000000000000000000000000000000c112400000000000000000000000000000000000000000000000000000000000c112500000000000000000000000000000000000000000000000000000000000c112600000000000000000000000000000000000000000000000000000000000c112700000000000000000000000000000000000000000000000000000000000c112800000000000000000000000000000000000000000000000000000000000c112900000000000000000000000000000000000000000000000000000000000c112a00000000000000000000000000000000000000000000000000000000000c112b00000000000000000000000000000000000000000000000000000000000c112c00000000000000000000000000000000000000000000000000000000000c112d00000000000000000000000000000000000000000000000000000000000c112e00000000000000000000000000000000000000000000000000000000000c112f00000000000000000000000000000000000000000000000000000000000c113000000000000000000000000000000000000000000000000000000000000c113100000000000000000000000000000000000000000000000000000000000c113200000000000000000000000000000000000000000000000000000000000c113300000000000000000000000000000000000000000000000000000000000c113400000000000000000000000000000000000000000000000000000000000c113500000000000000000000000000000000000000000000000000000000000c113600000000000000000000000000000000000000000000000000000000000c113700000000000000000000000000000000000000000000000000000000000c113800000000000000000000000000000000000000000000000000000000000c113900000000000000000000000000000000000000000000000000000000000c113a00000000000000000000000000000000000000000000000000000000000c113b00000000000000000000000000000000000000000000000000000000000c113c00000000000000000000000000000000000000000000000000000000000c113d00000000000000000000000000000000000000000000000000000000000c113e0800f8029be42ec3f25204907ca981fb71e5b357093eb5db10fc01ca98a4e4154c0030e13d351a5bf1d5a040e82a163ca57017f39162693f85c571e441e36d702d00a550ae0f39f977d9473d6de1be3232fc68ed0c4a601d53542148695102cfc9005580bc65e4bff9c8fffa64db02c0fa6af14d9d26fd962f4c5904cbd3ddec2500758c4a0d43dfec788b2f580877c4f473adec8f168ea24424f2600e4eb4916f00342602bf90d10f8ca8e582a894dcc4c02bb89fe458532e0c632b53bae54b4d00ca43ab78ab834337e9964d84a0674c9adabdca140539c5a6bc96e0ba9a51f6004ffbfd91be292a7c6a0e255e50caa156ac2d628b40ad2128c4ab63a92d8a1c3f00000000000000000000000000000000000000000000000000000000000c200000000000000000000000000000000000000000000000000000000000000c200a00000000000000000000000000000000000000000000000000000000000c200100000000000000000000000000000000000000000000000000000000000c200b00000000000000000000000000000000000000000000000000000000000c200200000000000000000000000000000000000000000000000000000000000c200c00000000000000000000000000000000000000000000000000000000000c200300000000000000000000000000000000000000000000000000000000000c200d00000000000000000000000000000000000000000000000000000000000c200400000000000000000000000000000000000000000000000000000000000c200e00000000000000000000000000000000000000000000000000000000000c200500000000000000000000000000000000000000000000000000000000000c200f00000000000000000000000000000000000000000000000000000000000c200600000000000000000000000000000000000000000000000000000000000c201000000000000000000000000000000000000000000000000000000000000c200700000000000000000000000000000000000000000000000000000000000c201100000000000000000000000000000000000000000000000000000000000c200800000000000000000000000000000000000000000000000000000000000c201200000000000000000000000000000000000000000000000000000000000c200900000000000000000000000000000000000000000000000000000000000c201300000000000000000000000000000000000000000000000000000000000c200a00000000000000000000000000000000000000000000000000000000000c201400000000000000000000000000000000000000000000000000000000000c200b00000000000000000000000000000000000000000000000000000000000c201500000000000000000000000000000000000000000000000000000000000c200c00000000000000000000000000000000000000000000000000000000000c201600000000000000000000000000000000000000000000000000000000000c200d00000000000000000000000000000000000000000000000000000000000c201700000000000000000000000000000000000000000000000000000000000c200e00000000000000000000000000000000000000000000000000000000000c201800000000000000000000000000000000000000000000000000000000000c200f00000000000000000000000000000000000000000000000000000000000c201900000000000000000000000000000000000000000000000000000000000c201000000000000000000000000000000000000000000000000000000000000c201a00000000000000000000000000000000000000000000000000000000000c201100000000000000000000000000000000000000000000000000000000000c201b00000000000000000000000000000000000000000000000000000000000c201200000000000000000000000000000000000000000000000000000000000c201c00000000000000000000000000000000000000000000000000000000000c201300000000000000000000000000000000000000000000000000000000000c201d00000000000000000000000000000000000000000000000000000000000c201400000000000000000000000000000000000000000000000000000000000c201e00000000000000000000000000000000000000000000000000000000000c201500000000000000000000000000000000000000000000000000000000000c201f00000000000000000000000000000000000000000000000000000000000c201600000000000000000000000000000000000000000000000000000000000c202000000000000000000000000000000000000000000000000000000000000c201700000000000000000000000000000000000000000000000000000000000c202100000000000000000000000000000000000000000000000000000000000c201800000000000000000000000000000000000000000000000000000000000c202200000000000000000000000000000000000000000000000000000000000c201900000000000000000000000000000000000000000000000000000000000c202300000000000000000000000000000000000000000000000000000000000c201a00000000000000000000000000000000000000000000000000000000000c202400000000000000000000000000000000000000000000000000000000000c201b00000000000000000000000000000000000000000000000000000000000c202500000000000000000000000000000000000000000000000000000000000c201c00000000000000000000000000000000000000000000000000000000000c202600000000000000000000000000000000000000000000000000000000000c201d00000000000000000000000000000000000000000000000000000000000c202700000000000000000000000000000000000000000000000000000000000c201e00000000000000000000000000000000000000000000000000000000000c202800000000000000000000000000000000000000000000000000000000000c201f00000000000000000000000000000000000000000000000000000000000c202900000000000000000000000000000000000000000000000000000000000c202000000000000000000000000000000000000000000000000000000000000c202a00000000000000000000000000000000000000000000000000000000000c202100000000000000000000000000000000000000000000000000000000000c202b00000000000000000000000000000000000000000000000000000000000c202200000000000000000000000000000000000000000000000000000000000c202c00000000000000000000000000000000000000000000000000000000000c202300000000000000000000000000000000000000000000000000000000000c202d00000000000000000000000000000000000000000000000000000000000c202400000000000000000000000000000000000000000000000000000000000c202e00000000000000000000000000000000000000000000000000000000000c202500000000000000000000000000000000000000000000000000000000000c202f00000000000000000000000000000000000000000000000000000000000c202600000000000000000000000000000000000000000000000000000000000c203000000000000000000000000000000000000000000000000000000000000c202700000000000000000000000000000000000000000000000000000000000c203100000000000000000000000000000000000000000000000000000000000c202800000000000000000000000000000000000000000000000000000000000c203200000000000000000000000000000000000000000000000000000000000c202900000000000000000000000000000000000000000000000000000000000c203300000000000000000000000000000000000000000000000000000000000c202a00000000000000000000000000000000000000000000000000000000000c203400000000000000000000000000000000000000000000000000000000000c202b00000000000000000000000000000000000000000000000000000000000c203500000000000000000000000000000000000000000000000000000000000c202c00000000000000000000000000000000000000000000000000000000000c203600000000000000000000000000000000000000000000000000000000000c202d00000000000000000000000000000000000000000000000000000000000c203700000000000000000000000000000000000000000000000000000000000c202e00000000000000000000000000000000000000000000000000000000000c203800000000000000000000000000000000000000000000000000000000000c202f00000000000000000000000000000000000000000000000000000000000c203900000000000000000000000000000000000000000000000000000000000c203000000000000000000000000000000000000000000000000000000000000c203a00000000000000000000000000000000000000000000000000000000000c203100000000000000000000000000000000000000000000000000000000000c203b00000000000000000000000000000000000000000000000000000000000c203200000000000000000000000000000000000000000000000000000000000c203c00000000000000000000000000000000000000000000000000000000000c203300000000000000000000000000000000000000000000000000000000000c203d00000000000000000000000000000000000000000000000000000000000c203400000000000000000000000000000000000000000000000000000000000c203e00000000000000000000000000000000000000000000000000000000000c203500000000000000000000000000000000000000000000000000000000000c203f00000000000000000000000000000000000000000000000000000000000c203600000000000000000000000000000000000000000000000000000000000c204000000000000000000000000000000000000000000000000000000000000c203700000000000000000000000000000000000000000000000000000000000c204100000000000000000000000000000000000000000000000000000000000c203800000000000000000000000000000000000000000000000000000000000c204200000000000000000000000000000000000000000000000000000000000c203900000000000000000000000000000000000000000000000000000000000c204300000000000000000000000000000000000000000000000000000000000c203a00000000000000000000000000000000000000000000000000000000000c204400000000000000000000000000000000000000000000000000000000000c203b00000000000000000000000000000000000000000000000000000000000c204500000000000000000000000000000000000000000000000000000000000c203c00000000000000000000000000000000000000000000000000000000000c204600000000000000000000000000000000000000000000000000000000000c203d00000000000000000000000000000000000000000000000000000000000c204700000000000000000000000000000000000000000000000000000000000c203e00000000000000000000000000000000000000000000000000000000000c2048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000101000000000000000000000000000000000000000000000000000000000000010100100000000000000000000000000000000000000000000000000000000001010020000000000000000000000000000000000000000000000000000000000101003000000000000000000000000000000000000000000000000000000000010100400000000000000000000000000000000000000000000000000000000001010050000000000000000000000000000000000000000000000000000000000101006000000000000000000000000000000000000000000000000000000000010100700000000000000000000000000000000000000000000000000000000001010080000000000000000000000000000000000000000000000000000000000101009000000000000000000000000000000000000000000000000000000000010100a000000000000000000000000000000000000000000000000000000000010100b000000000000000000000000000000000000000000000000000000000010100c000000000000000000000000000000000000000000000000000000000010100d000000000000000000000000000000000000000000000000000000000010100e000000000000000000000000000000000000000000000000000000000010100f0000000000000000000000000000000000000000000000000000000000101010000000000000000000000000000000000000000000000000000000000010101100000000000000000000000000000000000000000000000000000000001010120000000000000000000000000000000000000000000000000000000000101013000000000000000000000000000000000000000000000000000000000010101400000000000000000000000000000000000000000000000000000000001010150000000000000000000000000000000000000000000000000000000000101016000000000000000000000000000000000000000000000000000000000010101700000000000000000000000000000000000000000000000000000000001010180000000000000000000000000000000000000000000000000000000000101019000000000000000000000000000000000000000000000000000000000010101a000000000000000000000000000000000000000000000000000000000010101b000000000000000000000000000000000000000000000000000000000010101c000000000000000000000000000000000000000000000000000000000010101d000000000000000000000000000000000000000000000000000000000010101e000000000000000000000000000000000000000000000000000000000010101f0000000000000000000000000000000000000000000000000000000000101020000000000000000000000000000000000000000000000000000000000010102100000000000000000000000000000000000000000000000000000000001010220000000000000000000000000000000000000000000000000000000000101023000000000000000000000000000000000000000000000000000000000010102400000000000000000000000000000000000000000000000000000000001010250000000000000000000000000000000000000000000000000000000000101026000000000000000000000000000000000000000000000000000000000010102700000000000000000000000000000000000000000000000000000000001010280000000000000000000000000000000000000000000000000000000000101029000000000000000000000000000000000000000000000000000000000010102a000000000000000000000000000000000000000000000000000000000010102b000000000000000000000000000000000000000000000000000000000010102c000000000000000000000000000000000000000000000000000000000010102d000000000000000000000000000000000000000000000000000000000010102e000000000000000000000000000000000000000000000000000000000010102f0000000000000000000000000000000000000000000000000000000000101030000000000000000000000000000000000000000000000000000000000010103100000000000000000000000000000000000000000000000000000000001010320000000000000000000000000000000000000000000000000000000000101033000000000000000000000000000000000000000000000000000000000010103400000000000000000000000000000000000000000000000000000000001010350000000000000000000000000000000000000000000000000000000000101036000000000000000000000000000000000000000000000000000000000010103700000000000000000000000000000000000000000000000000000000001010380000000000000000000000000000000000000000000000000000000000101039000000000000000000000000000000000000000000000000000000000010103a000000000000000000000000000000000000000000000000000000000010103b000000000000000000000000000000000000000000000000000000000010103c000000000000000000000000000000000000000000000000000000000010103d000000000000000000000000000000000000000000000000000000000010103e000000000000000000000000000000000000000000000000000000000010103f3f0000000000000000000000000000000000000000000000000000000000101100000000000000000000000000000000000000000000000000000000000010110100000000000000000000000000000000000000000000000000000000001011020000000000000000000000000000000000000000000000000000000000101103000000000000000000000000000000000000000000000000000000000010110400000000000000000000000000000000000000000000000000000000001011050000000000000000000000000000000000000000000000000000000000101106000000000000000000000000000000000000000000000000000000000010110700000000000000000000000000000000000000000000000000000000001011080000000000000000000000000000000000000000000000000000000000101109000000000000000000000000000000000000000000000000000000000010110a000000000000000000000000000000000000000000000000000000000010110b000000000000000000000000000000000000000000000000000000000010110c000000000000000000000000000000000000000000000000000000000010110d000000000000000000000000000000000000000000000000000000000010110e000000000000000000000000000000000000000000000000000000000010110f0000000000000000000000000000000000000000000000000000000000101110000000000000000000000000000000000000000000000000000000000010111100000000000000000000000000000000000000000000000000000000001011120000000000000000000000000000000000000000000000000000000000101113000000000000000000000000000000000000000000000000000000000010111400000000000000000000000000000000000000000000000000000000001011150000000000000000000000000000000000000000000000000000000000101116000000000000000000000000000000000000000000000000000000000010111700000000000000000000000000000000000000000000000000000000001011180000000000000000000000000000000000000000000000000000000000101119000000000000000000000000000000000000000000000000000000000010111a000000000000000000000000000000000000000000000000000000000010111b000000000000000000000000000000000000000000000000000000000010111c000000000000000000000000000000000000000000000000000000000010111d000000000000000000000000000000000000000000000000000000000010111e000000000000000000000000000000000000000000000000000000000010111f0000000000000000000000000000000000000000000000000000000000101120000000000000000000000000000000000000000000000000000000000010112100000000000000000000000000000000000000000000000000000000001011220000000000000000000000000000000000000000000000000000000000101123000000000000000000000000000000000000000000000000000000000010112400000000000000000000000000000000000000000000000000000000001011250000000000000000000000000000000000000000000000000000000000101126000000000000000000000000000000000000000000000000000000000010112700000000000000000000000000000000000000000000000000000000001011280000000000000000000000000000000000000000000000000000000000101129000000000000000000000000000000000000000000000000000000000010112a000000000000000000000000000000000000000000000000000000000010112b000000000000000000000000000000000000000000000000000000000010112c000000000000000000000000000000000000000000000000000000000010112d000000000000000000000000000000000000000000000000000000000010112e000000000000000000000000000000000000000000000000000000000010112f0000000000000000000000000000000000000000000000000000000000101130000000000000000000000000000000000000000000000000000000000010113100000000000000000000000000000000000000000000000000000000001011320000000000000000000000000000000000000000000000000000000000101133000000000000000000000000000000000000000000000000000000000010113400000000000000000000000000000000000000000000000000000000001011350000000000000000000000000000000000000000000000000000000000101136000000000000000000000000000000000000000000000000000000000010113700000000000000000000000000000000000000000000000000000000001011380000000000000000000000000000000000000000000000000000000000101139000000000000000000000000000000000000000000000000000000000010113a000000000000000000000000000000000000000000000000000000000010113b000000000000000000000000000000000000000000000000000000000010113c000000000000000000000000000000000000000000000000000000000010113d000000000000000000000000000000000000000000000000000000000010113e080099145b6c0d32753835121f8b271186d01236948a4622ce78a98347fcfc98390085277a27c6acbd5ffc4c19cd65fc30056999e9bec36998f753132db0ff8e2300f3cf77a7261759ebd5f4149f6ad56746f4499cfcd4adf27a1d373f77da64d5009bc6e0e994a23cde8c95b90c1acc1b4a480c6599d1df2c3f9f6e76f3d1aff200d7a1c4a2700dacaaf07f1f0ff33837bdbabcf0b9ace17efabe0761708c4bb900dbeb8e96d14f21e57d5786b6d6ae7e5ddb1bb35935c0fb246d4bdbca62e02c00fbf12b5e0df6223b801088798e4e04d2a92ffe9a11639b7f0ce314e3412a8000d796e0724de03b796ba77069fcd6cf921e566f3aed15eb3e77258add74e9ff3f0000000000000000000000000000000000000000000000000000000000102000000000000000000000000000000000000000000000000000000000000010200a0000000000000000000000000000000000000000000000000000000000102001000000000000000000000000000000000000000000000000000000000010200b0000000000000000000000000000000000000000000000000000000000102002000000000000000000000000000000000000000000000000000000000010200c0000000000000000000000000000000000000000000000000000000000102003000000000000000000000000000000000000000000000000000000000010200d0000000000000000000000000000000000000000000000000000000000102004000000000000000000000000000000000000000000000000000000000010200e0000000000000000000000000000000000000000000000000000000000102005000000000000000000000000000000000000000000000000000000000010200f00000000000000000000000000000000000000000000000000000000001020060000000000000000000000000000000000000000000000000000000000102010000000000000000000000000000000000000000000000000000000000010200700000000000000000000000000000000000000000000000000000000001020110000000000000000000000000000000000000000000000000000000000102008000000000000000000000000000000000000000000000000000000000010201200000000000000000000000000000000000000000000000000000000001020090000000000000000000000000000000000000000000000000000000000102013000000000000000000000000000000000000000000000000000000000010200a0000000000000000000000000000000000000000000000000000000000102014000000000000000000000000000000000000000000000000000000000010200b0000000000000000000000000000000000000000000000000000000000102015000000000000000000000000000000000000000000000000000000000010200c0000000000000000000000000000000000000000000000000000000000102016000000000000000000000000000000000000000000000000000000000010200d0000000000000000000000000000000000000000000000000000000000102017000000000000000000000000000000000000000000000000000000000010200e0000000000000000000000000000000000000000000000000000000000102018000000000000000000000000000000000000000000000000000000000010200f00000000000000000000000000000000000000000000000000000000001020190000000000000000000000000000000000000000000000000000000000102010000000000000000000000000000000000000000000000000000000000010201a0000000000000000000000000000000000000000000000000000000000102011000000000000000000000000000000000000000000000000000000000010201b0000000000000000000000000000000000000000000000000000000000102012000000000000000000000000000000000000000000000000000000000010201c0000000000000000000000000000000000000000000000000000000000102013000000000000000000000000000000000000000000000000000000000010201d0000000000000000000000000000000000000000000000000000000000102014000000000000000000000000000000000000000000000000000000000010201e0000000000000000000000000000000000000000000000000000000000102015000000000000000000000000000000000000000000000000000000000010201f00000000000000000000000000000000000000000000000000000000001020160000000000000000000000000000000000000000000000000000000000102020000000000000000000000000000000000000000000000000000000000010201700000000000000000000000000000000000000000000000000000000001020210000000000000000000000000000000000000000000000000000000000102018000000000000000000000000000000000000000000000000000000000010202200000000000000000000000000000000000000000000000000000000001020190000000000000000000000000000000000000000000000000000000000102023000000000000000000000000000000000000000000000000000000000010201a0000000000000000000000000000000000000000000000000000000000102024000000000000000000000000000000000000000000000000000000000010201b0000000000000000000000000000000000000000000000000000000000102025000000000000000000000000000000000000000000000000000000000010201c0000000000000000000000000000000000000000000000000000000000102026000000000000000000000000000000000000000000000000000000000010201d0000000000000000000000000000000000000000000000000000000000102027000000000000000000000000000000000000000000000000000000000010201e0000000000000000000000000000000000000000000000000000000000102028000000000000000000000000000000000000000000000000000000000010201f00000000000000000000000000000000000000000000000000000000001020290000000000000000000000000000000000000000000000000000000000102020000000000000000000000000000000000000000000000000000000000010202a0000000000000000000000000000000000000000000000000000000000102021000000000000000000000000000000000000000000000000000000000010202b0000000000000000000000000000000000000000000000000000000000102022000000000000000000000000000000000000000000000000000000000010202c0000000000000000000000000000000000000000000000000000000000102023000000000000000000000000000000000000000000000000000000000010202d0000000000000000000000000000000000000000000000000000000000102024000000000000000000000000000000000000000000000000000000000010202e0000000000000000000000000000000000000000000000000000000000102025000000000000000000000000000000000000000000000000000000000010202f00000000000000000000000000000000000000000000000000000000001020260000000000000000000000000000000000000000000000000000000000102030000000000000000000000000000000000000000000000000000000000010202700000000000000000000000000000000000000000000000000000000001020310000000000000000000000000000000000000000000000000000000000102028000000000000000000000000000000000000000000000000000000000010203200000000000000000000000000000000000000000000000000000000001020290000000000000000000000000000000000000000000000000000000000102033000000000000000000000000000000000000000000000000000000000010202a0000000000000000000000000000000000000000000000000000000000102034000000000000000000000000000000000000000000000000000000000010202b0000000000000000000000000000000000000000000000000000000000102035000000000000000000000000000000000000000000000000000000000010202c0000000000000000000000000000000000000000000000000000000000102036000000000000000000000000000000000000000000000000000000000010202d0000000000000000000000000000000000000000000000000000000000102037000000000000000000000000000000000000000000000000000000000010202e0000000000000000000000000000000000000000000000000000000000102038000000000000000000000000000000000000000000000000000000000010202f00000000000000000000000000000000000000000000000000000000001020390000000000000000000000000000000000000000000000000000000000102030000000000000000000000000000000000000000000000000000000000010203a0000000000000000000000000000000000000000000000000000000000102031000000000000000000000000000000000000000000000000000000000010203b0000000000000000000000000000000000000000000000000000000000102032000000000000000000000000000000000000000000000000000000000010203c0000000000000000000000000000000000000000000000000000000000102033000000000000000000000000000000000000000000000000000000000010203d0000000000000000000000000000000000000000000000000000000000102034000000000000000000000000000000000000000000000000000000000010203e0000000000000000000000000000000000000000000000000000000000102035000000000000000000000000000000000000000000000000000000000010203f00000000000000000000000000000000000000000000000000000000001020360000000000000000000000000000000000000000000000000000000000102040000000000000000000000000000000000000000000000000000000000010203700000000000000000000000000000000000000000000000000000000001020410000000000000000000000000000000000000000000000000000000000102038000000000000000000000000000000000000000000000000000000000010204200000000000000000000000000000000000000000000000000000000001020390000000000000000000000000000000000000000000000000000000000102043000000000000000000000000000000000000000000000000000000000010203a0000000000000000000000000000000000000000000000000000000000102044000000000000000000000000000000000000000000000000000000000010203b0000000000000000000000000000000000000000000000000000000000102045000000000000000000000000000000000000000000000000000000000010203c0000000000000000000000000000000000000000000000000000000000102046000000000000000000000000000000000000000000000000000000000010203d0000000000000000000000000000000000000000000000000000000000102047000000000000000000000000000000000000000000000000000000000010203e0000000000000000000000000000000000000000000000000000000000102048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "txsEffectsHash": "0x00db66b36b24ebccb7543a74620018056cad2f0b08eaf251ad00362551f0a2d0", "decodedHeader": { "contentCommitment": { + "blobsHash": "0x00476e8bde67f5103417638177f69bafaab0a230f87b856043fe8fc0c8643f5f", "inHash": "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c", "outHash": "0x000ca4a4610ad22c97c9161cedcf01faa3619f1b85457f1627d09627b71903a6", - "numTxs": 4, - "txsEffectsHash": "0x00db66b36b24ebccb7543a74620018056cad2f0b08eaf251ad00362551f0a2d0" + "numTxs": 4 }, "globalVariables": { "blockNumber": 1, "slotNumber": "0x000000000000000000000000000000000000000000000000000000000000001a", "chainId": 31337, - "timestamp": 1731434005, + "timestamp": 1732284734, "version": 1, - "coinbase": "0xa8f1a4313bc15dcd3681ed2b6fdd042f1ee1f823", - "feeRecipient": "0x2abdc96d2ec8465dfd2bb7401f90dd3af0db16c3cece57bd5de2b63a3d25140b", + "coinbase": "0x1d18b0d58a782ce94f30cb2b122b9cbb4c523365", + "feeRecipient": "0x17058b928f637c62f9cb7a481168406410f91b54458bd6d2768fb3fb17080a16", "gasFees": { "feePerDaGas": 0, "feePerL2Gas": 0 @@ -101,14 +100,15 @@ "root": "0x1d52eeaaacb445d9193d29e0df8f0ad4bf69bc457fe955b8e05b48ae3fdc3b3f" }, "publicDataTree": { - "nextAvailableLeafIndex": 384, - "root": "0x160cf8d0dbcc7b6a69aede9d89adb66554ba8054d9944b6ab5475e155e8f73d4" + "nextAvailableLeafIndex": 380, + "root": "0x20a27b2839a892ce7ac7c3a76b625388d4efdd4d736f29f86d41bb32d4bc73cf" } } } }, - "header": "0x2a05cb8aeefe9b9797f90650eae072f5ab7437807e62f9724ce190046777986000000001000000000000000000000000000000000000000000000000000000000000000400db66b36b24ebccb7543a74620018056cad2f0b08eaf251ad00362551f0a2d000089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c000ca4a4610ad22c97c9161cedcf01faa3619f1b85457f1627d09627b71903a62e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d60000001000553ea03210e12bf95ed15f0105108f39db784d318cfe9b52cba413618711ce000001001d52eeaaacb445d9193d29e0df8f0ad4bf69bc457fe955b8e05b48ae3fdc3b3f00000180160cf8d0dbcc7b6a69aede9d89adb66554ba8054d9944b6ab5475e155e8f73d4000001800000000000000000000000000000000000000000000000000000000000007a6900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000067339615a8f1a4313bc15dcd3681ed2b6fdd042f1ee1f8232abdc96d2ec8465dfd2bb7401f90dd3af0db16c3cece57bd5de2b63a3d25140b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "publicInputsHash": "0x0058fc697c9471ef94446a35f46a068633d057596164ddf20e6152f6fac19f81", + "header": "0x2a05cb8aeefe9b9797f90650eae072f5ab7437807e62f9724ce190046777986000000001000000000000000000000000000000000000000000000000000000000000000400476e8bde67f5103417638177f69bafaab0a230f87b856043fe8fc0c8643f5f00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c000ca4a4610ad22c97c9161cedcf01faa3619f1b85457f1627d09627b71903a62e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d60000001000553ea03210e12bf95ed15f0105108f39db784d318cfe9b52cba413618711ce000001001d52eeaaacb445d9193d29e0df8f0ad4bf69bc457fe955b8e05b48ae3fdc3b3f0000018020a27b2839a892ce7ac7c3a76b625388d4efdd4d736f29f86d41bb32d4bc73cf0000017c0000000000000000000000000000000000000000000000000000000000007a6900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000006740913e1d18b0d58a782ce94f30cb2b122b9cbb4c52336517058b928f637c62f9cb7a481168406410f91b54458bd6d2768fb3fb17080a16000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "publicInputsHash": "0x008b912cc84dbd5a433a4f60ca5832d49bc32eaf86e7fc880072cc068b5c4d1a", + "blobInputs": "0x0101cb2643c794ffd2835b698dffc25f63cfff60717970cd3e7f7c0fb91f8303b80e8146e9a02fbb7bd2ff2df8550f8f2bf1c36eda19989d2153fd161a3bf214b35de7f666c8edd3cf3471753892f8f732973d009e684843388c18516476687d91b4f3cb75876a86c8edde736e313975c9cf1486d38d2c4ff8dad0667a878b196d41db63ab7d6d1893f0f432f6ea73c736b6393353efca34a3dcdc7db71ae0fd0a4443ef02bf48f1bf68b38a370de4886ec6a846a3ba62ff186072d2b25992bcd1", "numTxs": 4 } } \ No newline at end of file diff --git a/l1-contracts/test/fixtures/mixed_block_2.json b/l1-contracts/test/fixtures/mixed_block_2.json index 1a84a75aa31..a88093047ff 100644 --- a/l1-contracts/test/fixtures/mixed_block_2.json +++ b/l1-contracts/test/fixtures/mixed_block_2.json @@ -23,38 +23,6 @@ }, "messages": { "l2ToL1Messages": [ - "0x0097a6ec570e9b8e257647c9c74c5ad3edc57ca5ef6ae44d80b3c30d1d99b9b3", - "0x00ce48ec41d1edde0066fab553a456ae2f380d14fa8f956af1fb0217513a5989", - "0x00619ff12eaf97f63aa2a2311de3b6571a7b880a5247cb33b6a74787bf3f9bd5", - "0x007854a2fad4e1801c6404394bf3d37ab08c135ea38a1974242e39a21273685f", - "0x000f55796e72957a819e68a22e8602d73c3ba3718a5a4bd92b80b0aa444b182a", - "0x00788b6e9874fb040ee679a7fae257190099a605229b948334e54a57739535d4", - "0x004f1658ee3c1a91627e5d72f5a731f0796299df82ab41e72c88eee0c82fa85e", - "0x003ee802add96628c693ed71afa9908138ba5a6fbf0a5f29a9c74e4e42aba671", - "0x003c0472260790b0bdfb8ae4dc4d437e7686b73643f2198970d84e1059a5f135", - "0x00bfd46275a318e438726ff2765ae154b63ab8a0daebcbed668a5f58a0e63dc1", - "0x007906b9418dc758c6b4f8454c69baa48b7889b6b511d707abe8e2cb8f7c3973", - "0x00aeb60c4d65a44f122e58bf9565dfe2024b3ae654d5cf2e47ecb035d53c9270", - "0x00bf82e8cda20345f37bbb1de3932172324b57f0b98be483392697b168e3bba8", - "0x000fb4bbad884ef30edf68e45a6cf2733fcf50310c69d7c1432b29af2c0aa804", - "0x0023e1622d27fee3b4a40ab975ae0eb2e31619ef3dc76eb858f7fddb6a056131", - "0x004689cd7007daf98dd3218b839b8e6a29f957154347b391fdb376bd0b344be2", - "0x00f8029be42ec3f25204907ca981fb71e5b357093eb5db10fc01ca98a4e4154c", - "0x0030e13d351a5bf1d5a040e82a163ca57017f39162693f85c571e441e36d702d", - "0x00a550ae0f39f977d9473d6de1be3232fc68ed0c4a601d53542148695102cfc9", - "0x005580bc65e4bff9c8fffa64db02c0fa6af14d9d26fd962f4c5904cbd3ddec25", - "0x00758c4a0d43dfec788b2f580877c4f473adec8f168ea24424f2600e4eb4916f", - "0x00342602bf90d10f8ca8e582a894dcc4c02bb89fe458532e0c632b53bae54b4d", - "0x00ca43ab78ab834337e9964d84a0674c9adabdca140539c5a6bc96e0ba9a51f6", - "0x004ffbfd91be292a7c6a0e255e50caa156ac2d628b40ad2128c4ab63a92d8a1c", - "0x0099145b6c0d32753835121f8b271186d01236948a4622ce78a98347fcfc9839", - "0x0085277a27c6acbd5ffc4c19cd65fc30056999e9bec36998f753132db0ff8e23", - "0x00f3cf77a7261759ebd5f4149f6ad56746f4499cfcd4adf27a1d373f77da64d5", - "0x009bc6e0e994a23cde8c95b90c1acc1b4a480c6599d1df2c3f9f6e76f3d1aff2", - "0x00d7a1c4a2700dacaaf07f1f0ff33837bdbabcf0b9ace17efabe0761708c4bb9", - "0x00dbeb8e96d14f21e57d5786b6d6ae7e5ddb1bb35935c0fb246d4bdbca62e02c", - "0x00fbf12b5e0df6223b801088798e4e04d2a92ffe9a11639b7f0ce314e3412a80", - "0x00d796e0724de03b796ba77069fcd6cf921e566f3aed15eb3e77258add74e9ff", "0x005c015113cb57d67dd6c0febd596819ac0298b6a23fc80aba17d445d540059a", "0x00f20b7d1308051fe7b68031a7c336b0b4b56738928b6510133aff1b818d5a9a", "0x0063eec1883a4f95f4933f9275e850d84b3d035f5061ed986c437a07331fd30e", @@ -90,25 +58,24 @@ ] }, "block": { - "archive": "0x18d695c543b39ed4aebf51260b01cd023d27c36e90e2756413803fe06d376c70", - "blockHash": "0x1794217194decb456524466a01a7356e8b08b751ef0bc596431405c749627782", - "body": "0x00000008000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000041000000000000000000000000000000000000000000000000000000000000004100100000000000000000000000000000000000000000000000000000000000410020000000000000000000000000000000000000000000000000000000000041003000000000000000000000000000000000000000000000000000000000004100400000000000000000000000000000000000000000000000000000000000410050000000000000000000000000000000000000000000000000000000000041006000000000000000000000000000000000000000000000000000000000004100700000000000000000000000000000000000000000000000000000000000410080000000000000000000000000000000000000000000000000000000000041009000000000000000000000000000000000000000000000000000000000004100a000000000000000000000000000000000000000000000000000000000004100b000000000000000000000000000000000000000000000000000000000004100c000000000000000000000000000000000000000000000000000000000004100d000000000000000000000000000000000000000000000000000000000004100e000000000000000000000000000000000000000000000000000000000004100f0000000000000000000000000000000000000000000000000000000000041010000000000000000000000000000000000000000000000000000000000004101100000000000000000000000000000000000000000000000000000000000410120000000000000000000000000000000000000000000000000000000000041013000000000000000000000000000000000000000000000000000000000004101400000000000000000000000000000000000000000000000000000000000410150000000000000000000000000000000000000000000000000000000000041016000000000000000000000000000000000000000000000000000000000004101700000000000000000000000000000000000000000000000000000000000410180000000000000000000000000000000000000000000000000000000000041019000000000000000000000000000000000000000000000000000000000004101a000000000000000000000000000000000000000000000000000000000004101b000000000000000000000000000000000000000000000000000000000004101c000000000000000000000000000000000000000000000000000000000004101d000000000000000000000000000000000000000000000000000000000004101e000000000000000000000000000000000000000000000000000000000004101f0000000000000000000000000000000000000000000000000000000000041020000000000000000000000000000000000000000000000000000000000004102100000000000000000000000000000000000000000000000000000000000410220000000000000000000000000000000000000000000000000000000000041023000000000000000000000000000000000000000000000000000000000004102400000000000000000000000000000000000000000000000000000000000410250000000000000000000000000000000000000000000000000000000000041026000000000000000000000000000000000000000000000000000000000004102700000000000000000000000000000000000000000000000000000000000410280000000000000000000000000000000000000000000000000000000000041029000000000000000000000000000000000000000000000000000000000004102a000000000000000000000000000000000000000000000000000000000004102b000000000000000000000000000000000000000000000000000000000004102c000000000000000000000000000000000000000000000000000000000004102d000000000000000000000000000000000000000000000000000000000004102e000000000000000000000000000000000000000000000000000000000004102f0000000000000000000000000000000000000000000000000000000000041030000000000000000000000000000000000000000000000000000000000004103100000000000000000000000000000000000000000000000000000000000410320000000000000000000000000000000000000000000000000000000000041033000000000000000000000000000000000000000000000000000000000004103400000000000000000000000000000000000000000000000000000000000410350000000000000000000000000000000000000000000000000000000000041036000000000000000000000000000000000000000000000000000000000004103700000000000000000000000000000000000000000000000000000000000410380000000000000000000000000000000000000000000000000000000000041039000000000000000000000000000000000000000000000000000000000004103a000000000000000000000000000000000000000000000000000000000004103b000000000000000000000000000000000000000000000000000000000004103c000000000000000000000000000000000000000000000000000000000004103d000000000000000000000000000000000000000000000000000000000004103e000000000000000000000000000000000000000000000000000000000004103f3f0000000000000000000000000000000000000000000000000000000000041100000000000000000000000000000000000000000000000000000000000004110100000000000000000000000000000000000000000000000000000000000411020000000000000000000000000000000000000000000000000000000000041103000000000000000000000000000000000000000000000000000000000004110400000000000000000000000000000000000000000000000000000000000411050000000000000000000000000000000000000000000000000000000000041106000000000000000000000000000000000000000000000000000000000004110700000000000000000000000000000000000000000000000000000000000411080000000000000000000000000000000000000000000000000000000000041109000000000000000000000000000000000000000000000000000000000004110a000000000000000000000000000000000000000000000000000000000004110b000000000000000000000000000000000000000000000000000000000004110c000000000000000000000000000000000000000000000000000000000004110d000000000000000000000000000000000000000000000000000000000004110e000000000000000000000000000000000000000000000000000000000004110f0000000000000000000000000000000000000000000000000000000000041110000000000000000000000000000000000000000000000000000000000004111100000000000000000000000000000000000000000000000000000000000411120000000000000000000000000000000000000000000000000000000000041113000000000000000000000000000000000000000000000000000000000004111400000000000000000000000000000000000000000000000000000000000411150000000000000000000000000000000000000000000000000000000000041116000000000000000000000000000000000000000000000000000000000004111700000000000000000000000000000000000000000000000000000000000411180000000000000000000000000000000000000000000000000000000000041119000000000000000000000000000000000000000000000000000000000004111a000000000000000000000000000000000000000000000000000000000004111b000000000000000000000000000000000000000000000000000000000004111c000000000000000000000000000000000000000000000000000000000004111d000000000000000000000000000000000000000000000000000000000004111e000000000000000000000000000000000000000000000000000000000004111f0000000000000000000000000000000000000000000000000000000000041120000000000000000000000000000000000000000000000000000000000004112100000000000000000000000000000000000000000000000000000000000411220000000000000000000000000000000000000000000000000000000000041123000000000000000000000000000000000000000000000000000000000004112400000000000000000000000000000000000000000000000000000000000411250000000000000000000000000000000000000000000000000000000000041126000000000000000000000000000000000000000000000000000000000004112700000000000000000000000000000000000000000000000000000000000411280000000000000000000000000000000000000000000000000000000000041129000000000000000000000000000000000000000000000000000000000004112a000000000000000000000000000000000000000000000000000000000004112b000000000000000000000000000000000000000000000000000000000004112c000000000000000000000000000000000000000000000000000000000004112d000000000000000000000000000000000000000000000000000000000004112e000000000000000000000000000000000000000000000000000000000004112f0000000000000000000000000000000000000000000000000000000000041130000000000000000000000000000000000000000000000000000000000004113100000000000000000000000000000000000000000000000000000000000411320000000000000000000000000000000000000000000000000000000000041133000000000000000000000000000000000000000000000000000000000004113400000000000000000000000000000000000000000000000000000000000411350000000000000000000000000000000000000000000000000000000000041136000000000000000000000000000000000000000000000000000000000004113700000000000000000000000000000000000000000000000000000000000411380000000000000000000000000000000000000000000000000000000000041139000000000000000000000000000000000000000000000000000000000004113a000000000000000000000000000000000000000000000000000000000004113b000000000000000000000000000000000000000000000000000000000004113c000000000000000000000000000000000000000000000000000000000004113d000000000000000000000000000000000000000000000000000000000004113e080097a6ec570e9b8e257647c9c74c5ad3edc57ca5ef6ae44d80b3c30d1d99b9b300ce48ec41d1edde0066fab553a456ae2f380d14fa8f956af1fb0217513a598900619ff12eaf97f63aa2a2311de3b6571a7b880a5247cb33b6a74787bf3f9bd5007854a2fad4e1801c6404394bf3d37ab08c135ea38a1974242e39a21273685f000f55796e72957a819e68a22e8602d73c3ba3718a5a4bd92b80b0aa444b182a00788b6e9874fb040ee679a7fae257190099a605229b948334e54a57739535d4004f1658ee3c1a91627e5d72f5a731f0796299df82ab41e72c88eee0c82fa85e003ee802add96628c693ed71afa9908138ba5a6fbf0a5f29a9c74e4e42aba6713f0000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000000000000004200a0000000000000000000000000000000000000000000000000000000000042001000000000000000000000000000000000000000000000000000000000004200b0000000000000000000000000000000000000000000000000000000000042002000000000000000000000000000000000000000000000000000000000004200c0000000000000000000000000000000000000000000000000000000000042003000000000000000000000000000000000000000000000000000000000004200d0000000000000000000000000000000000000000000000000000000000042004000000000000000000000000000000000000000000000000000000000004200e0000000000000000000000000000000000000000000000000000000000042005000000000000000000000000000000000000000000000000000000000004200f00000000000000000000000000000000000000000000000000000000000420060000000000000000000000000000000000000000000000000000000000042010000000000000000000000000000000000000000000000000000000000004200700000000000000000000000000000000000000000000000000000000000420110000000000000000000000000000000000000000000000000000000000042008000000000000000000000000000000000000000000000000000000000004201200000000000000000000000000000000000000000000000000000000000420090000000000000000000000000000000000000000000000000000000000042013000000000000000000000000000000000000000000000000000000000004200a0000000000000000000000000000000000000000000000000000000000042014000000000000000000000000000000000000000000000000000000000004200b0000000000000000000000000000000000000000000000000000000000042015000000000000000000000000000000000000000000000000000000000004200c0000000000000000000000000000000000000000000000000000000000042016000000000000000000000000000000000000000000000000000000000004200d0000000000000000000000000000000000000000000000000000000000042017000000000000000000000000000000000000000000000000000000000004200e0000000000000000000000000000000000000000000000000000000000042018000000000000000000000000000000000000000000000000000000000004200f00000000000000000000000000000000000000000000000000000000000420190000000000000000000000000000000000000000000000000000000000042010000000000000000000000000000000000000000000000000000000000004201a0000000000000000000000000000000000000000000000000000000000042011000000000000000000000000000000000000000000000000000000000004201b0000000000000000000000000000000000000000000000000000000000042012000000000000000000000000000000000000000000000000000000000004201c0000000000000000000000000000000000000000000000000000000000042013000000000000000000000000000000000000000000000000000000000004201d0000000000000000000000000000000000000000000000000000000000042014000000000000000000000000000000000000000000000000000000000004201e0000000000000000000000000000000000000000000000000000000000042015000000000000000000000000000000000000000000000000000000000004201f00000000000000000000000000000000000000000000000000000000000420160000000000000000000000000000000000000000000000000000000000042020000000000000000000000000000000000000000000000000000000000004201700000000000000000000000000000000000000000000000000000000000420210000000000000000000000000000000000000000000000000000000000042018000000000000000000000000000000000000000000000000000000000004202200000000000000000000000000000000000000000000000000000000000420190000000000000000000000000000000000000000000000000000000000042023000000000000000000000000000000000000000000000000000000000004201a0000000000000000000000000000000000000000000000000000000000042024000000000000000000000000000000000000000000000000000000000004201b0000000000000000000000000000000000000000000000000000000000042025000000000000000000000000000000000000000000000000000000000004201c0000000000000000000000000000000000000000000000000000000000042026000000000000000000000000000000000000000000000000000000000004201d0000000000000000000000000000000000000000000000000000000000042027000000000000000000000000000000000000000000000000000000000004201e0000000000000000000000000000000000000000000000000000000000042028000000000000000000000000000000000000000000000000000000000004201f00000000000000000000000000000000000000000000000000000000000420290000000000000000000000000000000000000000000000000000000000042020000000000000000000000000000000000000000000000000000000000004202a0000000000000000000000000000000000000000000000000000000000042021000000000000000000000000000000000000000000000000000000000004202b0000000000000000000000000000000000000000000000000000000000042022000000000000000000000000000000000000000000000000000000000004202c0000000000000000000000000000000000000000000000000000000000042023000000000000000000000000000000000000000000000000000000000004202d0000000000000000000000000000000000000000000000000000000000042024000000000000000000000000000000000000000000000000000000000004202e0000000000000000000000000000000000000000000000000000000000042025000000000000000000000000000000000000000000000000000000000004202f00000000000000000000000000000000000000000000000000000000000420260000000000000000000000000000000000000000000000000000000000042030000000000000000000000000000000000000000000000000000000000004202700000000000000000000000000000000000000000000000000000000000420310000000000000000000000000000000000000000000000000000000000042028000000000000000000000000000000000000000000000000000000000004203200000000000000000000000000000000000000000000000000000000000420290000000000000000000000000000000000000000000000000000000000042033000000000000000000000000000000000000000000000000000000000004202a0000000000000000000000000000000000000000000000000000000000042034000000000000000000000000000000000000000000000000000000000004202b0000000000000000000000000000000000000000000000000000000000042035000000000000000000000000000000000000000000000000000000000004202c0000000000000000000000000000000000000000000000000000000000042036000000000000000000000000000000000000000000000000000000000004202d0000000000000000000000000000000000000000000000000000000000042037000000000000000000000000000000000000000000000000000000000004202e0000000000000000000000000000000000000000000000000000000000042038000000000000000000000000000000000000000000000000000000000004202f00000000000000000000000000000000000000000000000000000000000420390000000000000000000000000000000000000000000000000000000000042030000000000000000000000000000000000000000000000000000000000004203a0000000000000000000000000000000000000000000000000000000000042031000000000000000000000000000000000000000000000000000000000004203b0000000000000000000000000000000000000000000000000000000000042032000000000000000000000000000000000000000000000000000000000004203c0000000000000000000000000000000000000000000000000000000000042033000000000000000000000000000000000000000000000000000000000004203d0000000000000000000000000000000000000000000000000000000000042034000000000000000000000000000000000000000000000000000000000004203e0000000000000000000000000000000000000000000000000000000000042035000000000000000000000000000000000000000000000000000000000004203f00000000000000000000000000000000000000000000000000000000000420360000000000000000000000000000000000000000000000000000000000042040000000000000000000000000000000000000000000000000000000000004203700000000000000000000000000000000000000000000000000000000000420410000000000000000000000000000000000000000000000000000000000042038000000000000000000000000000000000000000000000000000000000004204200000000000000000000000000000000000000000000000000000000000420390000000000000000000000000000000000000000000000000000000000042043000000000000000000000000000000000000000000000000000000000004203a0000000000000000000000000000000000000000000000000000000000042044000000000000000000000000000000000000000000000000000000000004203b0000000000000000000000000000000000000000000000000000000000042045000000000000000000000000000000000000000000000000000000000004203c0000000000000000000000000000000000000000000000000000000000042046000000000000000000000000000000000000000000000000000000000004203d0000000000000000000000000000000000000000000000000000000000042047000000000000000000000000000000000000000000000000000000000004203e0000000000000000000000000000000000000000000000000000000000042048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000081000000000000000000000000000000000000000000000000000000000000008100100000000000000000000000000000000000000000000000000000000000810020000000000000000000000000000000000000000000000000000000000081003000000000000000000000000000000000000000000000000000000000008100400000000000000000000000000000000000000000000000000000000000810050000000000000000000000000000000000000000000000000000000000081006000000000000000000000000000000000000000000000000000000000008100700000000000000000000000000000000000000000000000000000000000810080000000000000000000000000000000000000000000000000000000000081009000000000000000000000000000000000000000000000000000000000008100a000000000000000000000000000000000000000000000000000000000008100b000000000000000000000000000000000000000000000000000000000008100c000000000000000000000000000000000000000000000000000000000008100d000000000000000000000000000000000000000000000000000000000008100e000000000000000000000000000000000000000000000000000000000008100f0000000000000000000000000000000000000000000000000000000000081010000000000000000000000000000000000000000000000000000000000008101100000000000000000000000000000000000000000000000000000000000810120000000000000000000000000000000000000000000000000000000000081013000000000000000000000000000000000000000000000000000000000008101400000000000000000000000000000000000000000000000000000000000810150000000000000000000000000000000000000000000000000000000000081016000000000000000000000000000000000000000000000000000000000008101700000000000000000000000000000000000000000000000000000000000810180000000000000000000000000000000000000000000000000000000000081019000000000000000000000000000000000000000000000000000000000008101a000000000000000000000000000000000000000000000000000000000008101b000000000000000000000000000000000000000000000000000000000008101c000000000000000000000000000000000000000000000000000000000008101d000000000000000000000000000000000000000000000000000000000008101e000000000000000000000000000000000000000000000000000000000008101f0000000000000000000000000000000000000000000000000000000000081020000000000000000000000000000000000000000000000000000000000008102100000000000000000000000000000000000000000000000000000000000810220000000000000000000000000000000000000000000000000000000000081023000000000000000000000000000000000000000000000000000000000008102400000000000000000000000000000000000000000000000000000000000810250000000000000000000000000000000000000000000000000000000000081026000000000000000000000000000000000000000000000000000000000008102700000000000000000000000000000000000000000000000000000000000810280000000000000000000000000000000000000000000000000000000000081029000000000000000000000000000000000000000000000000000000000008102a000000000000000000000000000000000000000000000000000000000008102b000000000000000000000000000000000000000000000000000000000008102c000000000000000000000000000000000000000000000000000000000008102d000000000000000000000000000000000000000000000000000000000008102e000000000000000000000000000000000000000000000000000000000008102f0000000000000000000000000000000000000000000000000000000000081030000000000000000000000000000000000000000000000000000000000008103100000000000000000000000000000000000000000000000000000000000810320000000000000000000000000000000000000000000000000000000000081033000000000000000000000000000000000000000000000000000000000008103400000000000000000000000000000000000000000000000000000000000810350000000000000000000000000000000000000000000000000000000000081036000000000000000000000000000000000000000000000000000000000008103700000000000000000000000000000000000000000000000000000000000810380000000000000000000000000000000000000000000000000000000000081039000000000000000000000000000000000000000000000000000000000008103a000000000000000000000000000000000000000000000000000000000008103b000000000000000000000000000000000000000000000000000000000008103c000000000000000000000000000000000000000000000000000000000008103d000000000000000000000000000000000000000000000000000000000008103e000000000000000000000000000000000000000000000000000000000008103f3f0000000000000000000000000000000000000000000000000000000000081100000000000000000000000000000000000000000000000000000000000008110100000000000000000000000000000000000000000000000000000000000811020000000000000000000000000000000000000000000000000000000000081103000000000000000000000000000000000000000000000000000000000008110400000000000000000000000000000000000000000000000000000000000811050000000000000000000000000000000000000000000000000000000000081106000000000000000000000000000000000000000000000000000000000008110700000000000000000000000000000000000000000000000000000000000811080000000000000000000000000000000000000000000000000000000000081109000000000000000000000000000000000000000000000000000000000008110a000000000000000000000000000000000000000000000000000000000008110b000000000000000000000000000000000000000000000000000000000008110c000000000000000000000000000000000000000000000000000000000008110d000000000000000000000000000000000000000000000000000000000008110e000000000000000000000000000000000000000000000000000000000008110f0000000000000000000000000000000000000000000000000000000000081110000000000000000000000000000000000000000000000000000000000008111100000000000000000000000000000000000000000000000000000000000811120000000000000000000000000000000000000000000000000000000000081113000000000000000000000000000000000000000000000000000000000008111400000000000000000000000000000000000000000000000000000000000811150000000000000000000000000000000000000000000000000000000000081116000000000000000000000000000000000000000000000000000000000008111700000000000000000000000000000000000000000000000000000000000811180000000000000000000000000000000000000000000000000000000000081119000000000000000000000000000000000000000000000000000000000008111a000000000000000000000000000000000000000000000000000000000008111b000000000000000000000000000000000000000000000000000000000008111c000000000000000000000000000000000000000000000000000000000008111d000000000000000000000000000000000000000000000000000000000008111e000000000000000000000000000000000000000000000000000000000008111f0000000000000000000000000000000000000000000000000000000000081120000000000000000000000000000000000000000000000000000000000008112100000000000000000000000000000000000000000000000000000000000811220000000000000000000000000000000000000000000000000000000000081123000000000000000000000000000000000000000000000000000000000008112400000000000000000000000000000000000000000000000000000000000811250000000000000000000000000000000000000000000000000000000000081126000000000000000000000000000000000000000000000000000000000008112700000000000000000000000000000000000000000000000000000000000811280000000000000000000000000000000000000000000000000000000000081129000000000000000000000000000000000000000000000000000000000008112a000000000000000000000000000000000000000000000000000000000008112b000000000000000000000000000000000000000000000000000000000008112c000000000000000000000000000000000000000000000000000000000008112d000000000000000000000000000000000000000000000000000000000008112e000000000000000000000000000000000000000000000000000000000008112f0000000000000000000000000000000000000000000000000000000000081130000000000000000000000000000000000000000000000000000000000008113100000000000000000000000000000000000000000000000000000000000811320000000000000000000000000000000000000000000000000000000000081133000000000000000000000000000000000000000000000000000000000008113400000000000000000000000000000000000000000000000000000000000811350000000000000000000000000000000000000000000000000000000000081136000000000000000000000000000000000000000000000000000000000008113700000000000000000000000000000000000000000000000000000000000811380000000000000000000000000000000000000000000000000000000000081139000000000000000000000000000000000000000000000000000000000008113a000000000000000000000000000000000000000000000000000000000008113b000000000000000000000000000000000000000000000000000000000008113c000000000000000000000000000000000000000000000000000000000008113d000000000000000000000000000000000000000000000000000000000008113e08003c0472260790b0bdfb8ae4dc4d437e7686b73643f2198970d84e1059a5f13500bfd46275a318e438726ff2765ae154b63ab8a0daebcbed668a5f58a0e63dc1007906b9418dc758c6b4f8454c69baa48b7889b6b511d707abe8e2cb8f7c397300aeb60c4d65a44f122e58bf9565dfe2024b3ae654d5cf2e47ecb035d53c927000bf82e8cda20345f37bbb1de3932172324b57f0b98be483392697b168e3bba8000fb4bbad884ef30edf68e45a6cf2733fcf50310c69d7c1432b29af2c0aa8040023e1622d27fee3b4a40ab975ae0eb2e31619ef3dc76eb858f7fddb6a056131004689cd7007daf98dd3218b839b8e6a29f957154347b391fdb376bd0b344be23f0000000000000000000000000000000000000000000000000000000000082000000000000000000000000000000000000000000000000000000000000008200a0000000000000000000000000000000000000000000000000000000000082001000000000000000000000000000000000000000000000000000000000008200b0000000000000000000000000000000000000000000000000000000000082002000000000000000000000000000000000000000000000000000000000008200c0000000000000000000000000000000000000000000000000000000000082003000000000000000000000000000000000000000000000000000000000008200d0000000000000000000000000000000000000000000000000000000000082004000000000000000000000000000000000000000000000000000000000008200e0000000000000000000000000000000000000000000000000000000000082005000000000000000000000000000000000000000000000000000000000008200f00000000000000000000000000000000000000000000000000000000000820060000000000000000000000000000000000000000000000000000000000082010000000000000000000000000000000000000000000000000000000000008200700000000000000000000000000000000000000000000000000000000000820110000000000000000000000000000000000000000000000000000000000082008000000000000000000000000000000000000000000000000000000000008201200000000000000000000000000000000000000000000000000000000000820090000000000000000000000000000000000000000000000000000000000082013000000000000000000000000000000000000000000000000000000000008200a0000000000000000000000000000000000000000000000000000000000082014000000000000000000000000000000000000000000000000000000000008200b0000000000000000000000000000000000000000000000000000000000082015000000000000000000000000000000000000000000000000000000000008200c0000000000000000000000000000000000000000000000000000000000082016000000000000000000000000000000000000000000000000000000000008200d0000000000000000000000000000000000000000000000000000000000082017000000000000000000000000000000000000000000000000000000000008200e0000000000000000000000000000000000000000000000000000000000082018000000000000000000000000000000000000000000000000000000000008200f00000000000000000000000000000000000000000000000000000000000820190000000000000000000000000000000000000000000000000000000000082010000000000000000000000000000000000000000000000000000000000008201a0000000000000000000000000000000000000000000000000000000000082011000000000000000000000000000000000000000000000000000000000008201b0000000000000000000000000000000000000000000000000000000000082012000000000000000000000000000000000000000000000000000000000008201c0000000000000000000000000000000000000000000000000000000000082013000000000000000000000000000000000000000000000000000000000008201d0000000000000000000000000000000000000000000000000000000000082014000000000000000000000000000000000000000000000000000000000008201e0000000000000000000000000000000000000000000000000000000000082015000000000000000000000000000000000000000000000000000000000008201f00000000000000000000000000000000000000000000000000000000000820160000000000000000000000000000000000000000000000000000000000082020000000000000000000000000000000000000000000000000000000000008201700000000000000000000000000000000000000000000000000000000000820210000000000000000000000000000000000000000000000000000000000082018000000000000000000000000000000000000000000000000000000000008202200000000000000000000000000000000000000000000000000000000000820190000000000000000000000000000000000000000000000000000000000082023000000000000000000000000000000000000000000000000000000000008201a0000000000000000000000000000000000000000000000000000000000082024000000000000000000000000000000000000000000000000000000000008201b0000000000000000000000000000000000000000000000000000000000082025000000000000000000000000000000000000000000000000000000000008201c0000000000000000000000000000000000000000000000000000000000082026000000000000000000000000000000000000000000000000000000000008201d0000000000000000000000000000000000000000000000000000000000082027000000000000000000000000000000000000000000000000000000000008201e0000000000000000000000000000000000000000000000000000000000082028000000000000000000000000000000000000000000000000000000000008201f00000000000000000000000000000000000000000000000000000000000820290000000000000000000000000000000000000000000000000000000000082020000000000000000000000000000000000000000000000000000000000008202a0000000000000000000000000000000000000000000000000000000000082021000000000000000000000000000000000000000000000000000000000008202b0000000000000000000000000000000000000000000000000000000000082022000000000000000000000000000000000000000000000000000000000008202c0000000000000000000000000000000000000000000000000000000000082023000000000000000000000000000000000000000000000000000000000008202d0000000000000000000000000000000000000000000000000000000000082024000000000000000000000000000000000000000000000000000000000008202e0000000000000000000000000000000000000000000000000000000000082025000000000000000000000000000000000000000000000000000000000008202f00000000000000000000000000000000000000000000000000000000000820260000000000000000000000000000000000000000000000000000000000082030000000000000000000000000000000000000000000000000000000000008202700000000000000000000000000000000000000000000000000000000000820310000000000000000000000000000000000000000000000000000000000082028000000000000000000000000000000000000000000000000000000000008203200000000000000000000000000000000000000000000000000000000000820290000000000000000000000000000000000000000000000000000000000082033000000000000000000000000000000000000000000000000000000000008202a0000000000000000000000000000000000000000000000000000000000082034000000000000000000000000000000000000000000000000000000000008202b0000000000000000000000000000000000000000000000000000000000082035000000000000000000000000000000000000000000000000000000000008202c0000000000000000000000000000000000000000000000000000000000082036000000000000000000000000000000000000000000000000000000000008202d0000000000000000000000000000000000000000000000000000000000082037000000000000000000000000000000000000000000000000000000000008202e0000000000000000000000000000000000000000000000000000000000082038000000000000000000000000000000000000000000000000000000000008202f00000000000000000000000000000000000000000000000000000000000820390000000000000000000000000000000000000000000000000000000000082030000000000000000000000000000000000000000000000000000000000008203a0000000000000000000000000000000000000000000000000000000000082031000000000000000000000000000000000000000000000000000000000008203b0000000000000000000000000000000000000000000000000000000000082032000000000000000000000000000000000000000000000000000000000008203c0000000000000000000000000000000000000000000000000000000000082033000000000000000000000000000000000000000000000000000000000008203d0000000000000000000000000000000000000000000000000000000000082034000000000000000000000000000000000000000000000000000000000008203e0000000000000000000000000000000000000000000000000000000000082035000000000000000000000000000000000000000000000000000000000008203f00000000000000000000000000000000000000000000000000000000000820360000000000000000000000000000000000000000000000000000000000082040000000000000000000000000000000000000000000000000000000000008203700000000000000000000000000000000000000000000000000000000000820410000000000000000000000000000000000000000000000000000000000082038000000000000000000000000000000000000000000000000000000000008204200000000000000000000000000000000000000000000000000000000000820390000000000000000000000000000000000000000000000000000000000082043000000000000000000000000000000000000000000000000000000000008203a0000000000000000000000000000000000000000000000000000000000082044000000000000000000000000000000000000000000000000000000000008203b0000000000000000000000000000000000000000000000000000000000082045000000000000000000000000000000000000000000000000000000000008203c0000000000000000000000000000000000000000000000000000000000082046000000000000000000000000000000000000000000000000000000000008203d0000000000000000000000000000000000000000000000000000000000082047000000000000000000000000000000000000000000000000000000000008203e00000000000000000000000000000000000000000000000000000000000820480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000c100000000000000000000000000000000000000000000000000000000000000c100100000000000000000000000000000000000000000000000000000000000c100200000000000000000000000000000000000000000000000000000000000c100300000000000000000000000000000000000000000000000000000000000c100400000000000000000000000000000000000000000000000000000000000c100500000000000000000000000000000000000000000000000000000000000c100600000000000000000000000000000000000000000000000000000000000c100700000000000000000000000000000000000000000000000000000000000c100800000000000000000000000000000000000000000000000000000000000c100900000000000000000000000000000000000000000000000000000000000c100a00000000000000000000000000000000000000000000000000000000000c100b00000000000000000000000000000000000000000000000000000000000c100c00000000000000000000000000000000000000000000000000000000000c100d00000000000000000000000000000000000000000000000000000000000c100e00000000000000000000000000000000000000000000000000000000000c100f00000000000000000000000000000000000000000000000000000000000c101000000000000000000000000000000000000000000000000000000000000c101100000000000000000000000000000000000000000000000000000000000c101200000000000000000000000000000000000000000000000000000000000c101300000000000000000000000000000000000000000000000000000000000c101400000000000000000000000000000000000000000000000000000000000c101500000000000000000000000000000000000000000000000000000000000c101600000000000000000000000000000000000000000000000000000000000c101700000000000000000000000000000000000000000000000000000000000c101800000000000000000000000000000000000000000000000000000000000c101900000000000000000000000000000000000000000000000000000000000c101a00000000000000000000000000000000000000000000000000000000000c101b00000000000000000000000000000000000000000000000000000000000c101c00000000000000000000000000000000000000000000000000000000000c101d00000000000000000000000000000000000000000000000000000000000c101e00000000000000000000000000000000000000000000000000000000000c101f00000000000000000000000000000000000000000000000000000000000c102000000000000000000000000000000000000000000000000000000000000c102100000000000000000000000000000000000000000000000000000000000c102200000000000000000000000000000000000000000000000000000000000c102300000000000000000000000000000000000000000000000000000000000c102400000000000000000000000000000000000000000000000000000000000c102500000000000000000000000000000000000000000000000000000000000c102600000000000000000000000000000000000000000000000000000000000c102700000000000000000000000000000000000000000000000000000000000c102800000000000000000000000000000000000000000000000000000000000c102900000000000000000000000000000000000000000000000000000000000c102a00000000000000000000000000000000000000000000000000000000000c102b00000000000000000000000000000000000000000000000000000000000c102c00000000000000000000000000000000000000000000000000000000000c102d00000000000000000000000000000000000000000000000000000000000c102e00000000000000000000000000000000000000000000000000000000000c102f00000000000000000000000000000000000000000000000000000000000c103000000000000000000000000000000000000000000000000000000000000c103100000000000000000000000000000000000000000000000000000000000c103200000000000000000000000000000000000000000000000000000000000c103300000000000000000000000000000000000000000000000000000000000c103400000000000000000000000000000000000000000000000000000000000c103500000000000000000000000000000000000000000000000000000000000c103600000000000000000000000000000000000000000000000000000000000c103700000000000000000000000000000000000000000000000000000000000c103800000000000000000000000000000000000000000000000000000000000c103900000000000000000000000000000000000000000000000000000000000c103a00000000000000000000000000000000000000000000000000000000000c103b00000000000000000000000000000000000000000000000000000000000c103c00000000000000000000000000000000000000000000000000000000000c103d00000000000000000000000000000000000000000000000000000000000c103e00000000000000000000000000000000000000000000000000000000000c103f3f00000000000000000000000000000000000000000000000000000000000c110000000000000000000000000000000000000000000000000000000000000c110100000000000000000000000000000000000000000000000000000000000c110200000000000000000000000000000000000000000000000000000000000c110300000000000000000000000000000000000000000000000000000000000c110400000000000000000000000000000000000000000000000000000000000c110500000000000000000000000000000000000000000000000000000000000c110600000000000000000000000000000000000000000000000000000000000c110700000000000000000000000000000000000000000000000000000000000c110800000000000000000000000000000000000000000000000000000000000c110900000000000000000000000000000000000000000000000000000000000c110a00000000000000000000000000000000000000000000000000000000000c110b00000000000000000000000000000000000000000000000000000000000c110c00000000000000000000000000000000000000000000000000000000000c110d00000000000000000000000000000000000000000000000000000000000c110e00000000000000000000000000000000000000000000000000000000000c110f00000000000000000000000000000000000000000000000000000000000c111000000000000000000000000000000000000000000000000000000000000c111100000000000000000000000000000000000000000000000000000000000c111200000000000000000000000000000000000000000000000000000000000c111300000000000000000000000000000000000000000000000000000000000c111400000000000000000000000000000000000000000000000000000000000c111500000000000000000000000000000000000000000000000000000000000c111600000000000000000000000000000000000000000000000000000000000c111700000000000000000000000000000000000000000000000000000000000c111800000000000000000000000000000000000000000000000000000000000c111900000000000000000000000000000000000000000000000000000000000c111a00000000000000000000000000000000000000000000000000000000000c111b00000000000000000000000000000000000000000000000000000000000c111c00000000000000000000000000000000000000000000000000000000000c111d00000000000000000000000000000000000000000000000000000000000c111e00000000000000000000000000000000000000000000000000000000000c111f00000000000000000000000000000000000000000000000000000000000c112000000000000000000000000000000000000000000000000000000000000c112100000000000000000000000000000000000000000000000000000000000c112200000000000000000000000000000000000000000000000000000000000c112300000000000000000000000000000000000000000000000000000000000c112400000000000000000000000000000000000000000000000000000000000c112500000000000000000000000000000000000000000000000000000000000c112600000000000000000000000000000000000000000000000000000000000c112700000000000000000000000000000000000000000000000000000000000c112800000000000000000000000000000000000000000000000000000000000c112900000000000000000000000000000000000000000000000000000000000c112a00000000000000000000000000000000000000000000000000000000000c112b00000000000000000000000000000000000000000000000000000000000c112c00000000000000000000000000000000000000000000000000000000000c112d00000000000000000000000000000000000000000000000000000000000c112e00000000000000000000000000000000000000000000000000000000000c112f00000000000000000000000000000000000000000000000000000000000c113000000000000000000000000000000000000000000000000000000000000c113100000000000000000000000000000000000000000000000000000000000c113200000000000000000000000000000000000000000000000000000000000c113300000000000000000000000000000000000000000000000000000000000c113400000000000000000000000000000000000000000000000000000000000c113500000000000000000000000000000000000000000000000000000000000c113600000000000000000000000000000000000000000000000000000000000c113700000000000000000000000000000000000000000000000000000000000c113800000000000000000000000000000000000000000000000000000000000c113900000000000000000000000000000000000000000000000000000000000c113a00000000000000000000000000000000000000000000000000000000000c113b00000000000000000000000000000000000000000000000000000000000c113c00000000000000000000000000000000000000000000000000000000000c113d00000000000000000000000000000000000000000000000000000000000c113e0800f8029be42ec3f25204907ca981fb71e5b357093eb5db10fc01ca98a4e4154c0030e13d351a5bf1d5a040e82a163ca57017f39162693f85c571e441e36d702d00a550ae0f39f977d9473d6de1be3232fc68ed0c4a601d53542148695102cfc9005580bc65e4bff9c8fffa64db02c0fa6af14d9d26fd962f4c5904cbd3ddec2500758c4a0d43dfec788b2f580877c4f473adec8f168ea24424f2600e4eb4916f00342602bf90d10f8ca8e582a894dcc4c02bb89fe458532e0c632b53bae54b4d00ca43ab78ab834337e9964d84a0674c9adabdca140539c5a6bc96e0ba9a51f6004ffbfd91be292a7c6a0e255e50caa156ac2d628b40ad2128c4ab63a92d8a1c3f00000000000000000000000000000000000000000000000000000000000c200000000000000000000000000000000000000000000000000000000000000c200a00000000000000000000000000000000000000000000000000000000000c200100000000000000000000000000000000000000000000000000000000000c200b00000000000000000000000000000000000000000000000000000000000c200200000000000000000000000000000000000000000000000000000000000c200c00000000000000000000000000000000000000000000000000000000000c200300000000000000000000000000000000000000000000000000000000000c200d00000000000000000000000000000000000000000000000000000000000c200400000000000000000000000000000000000000000000000000000000000c200e00000000000000000000000000000000000000000000000000000000000c200500000000000000000000000000000000000000000000000000000000000c200f00000000000000000000000000000000000000000000000000000000000c200600000000000000000000000000000000000000000000000000000000000c201000000000000000000000000000000000000000000000000000000000000c200700000000000000000000000000000000000000000000000000000000000c201100000000000000000000000000000000000000000000000000000000000c200800000000000000000000000000000000000000000000000000000000000c201200000000000000000000000000000000000000000000000000000000000c200900000000000000000000000000000000000000000000000000000000000c201300000000000000000000000000000000000000000000000000000000000c200a00000000000000000000000000000000000000000000000000000000000c201400000000000000000000000000000000000000000000000000000000000c200b00000000000000000000000000000000000000000000000000000000000c201500000000000000000000000000000000000000000000000000000000000c200c00000000000000000000000000000000000000000000000000000000000c201600000000000000000000000000000000000000000000000000000000000c200d00000000000000000000000000000000000000000000000000000000000c201700000000000000000000000000000000000000000000000000000000000c200e00000000000000000000000000000000000000000000000000000000000c201800000000000000000000000000000000000000000000000000000000000c200f00000000000000000000000000000000000000000000000000000000000c201900000000000000000000000000000000000000000000000000000000000c201000000000000000000000000000000000000000000000000000000000000c201a00000000000000000000000000000000000000000000000000000000000c201100000000000000000000000000000000000000000000000000000000000c201b00000000000000000000000000000000000000000000000000000000000c201200000000000000000000000000000000000000000000000000000000000c201c00000000000000000000000000000000000000000000000000000000000c201300000000000000000000000000000000000000000000000000000000000c201d00000000000000000000000000000000000000000000000000000000000c201400000000000000000000000000000000000000000000000000000000000c201e00000000000000000000000000000000000000000000000000000000000c201500000000000000000000000000000000000000000000000000000000000c201f00000000000000000000000000000000000000000000000000000000000c201600000000000000000000000000000000000000000000000000000000000c202000000000000000000000000000000000000000000000000000000000000c201700000000000000000000000000000000000000000000000000000000000c202100000000000000000000000000000000000000000000000000000000000c201800000000000000000000000000000000000000000000000000000000000c202200000000000000000000000000000000000000000000000000000000000c201900000000000000000000000000000000000000000000000000000000000c202300000000000000000000000000000000000000000000000000000000000c201a00000000000000000000000000000000000000000000000000000000000c202400000000000000000000000000000000000000000000000000000000000c201b00000000000000000000000000000000000000000000000000000000000c202500000000000000000000000000000000000000000000000000000000000c201c00000000000000000000000000000000000000000000000000000000000c202600000000000000000000000000000000000000000000000000000000000c201d00000000000000000000000000000000000000000000000000000000000c202700000000000000000000000000000000000000000000000000000000000c201e00000000000000000000000000000000000000000000000000000000000c202800000000000000000000000000000000000000000000000000000000000c201f00000000000000000000000000000000000000000000000000000000000c202900000000000000000000000000000000000000000000000000000000000c202000000000000000000000000000000000000000000000000000000000000c202a00000000000000000000000000000000000000000000000000000000000c202100000000000000000000000000000000000000000000000000000000000c202b00000000000000000000000000000000000000000000000000000000000c202200000000000000000000000000000000000000000000000000000000000c202c00000000000000000000000000000000000000000000000000000000000c202300000000000000000000000000000000000000000000000000000000000c202d00000000000000000000000000000000000000000000000000000000000c202400000000000000000000000000000000000000000000000000000000000c202e00000000000000000000000000000000000000000000000000000000000c202500000000000000000000000000000000000000000000000000000000000c202f00000000000000000000000000000000000000000000000000000000000c202600000000000000000000000000000000000000000000000000000000000c203000000000000000000000000000000000000000000000000000000000000c202700000000000000000000000000000000000000000000000000000000000c203100000000000000000000000000000000000000000000000000000000000c202800000000000000000000000000000000000000000000000000000000000c203200000000000000000000000000000000000000000000000000000000000c202900000000000000000000000000000000000000000000000000000000000c203300000000000000000000000000000000000000000000000000000000000c202a00000000000000000000000000000000000000000000000000000000000c203400000000000000000000000000000000000000000000000000000000000c202b00000000000000000000000000000000000000000000000000000000000c203500000000000000000000000000000000000000000000000000000000000c202c00000000000000000000000000000000000000000000000000000000000c203600000000000000000000000000000000000000000000000000000000000c202d00000000000000000000000000000000000000000000000000000000000c203700000000000000000000000000000000000000000000000000000000000c202e00000000000000000000000000000000000000000000000000000000000c203800000000000000000000000000000000000000000000000000000000000c202f00000000000000000000000000000000000000000000000000000000000c203900000000000000000000000000000000000000000000000000000000000c203000000000000000000000000000000000000000000000000000000000000c203a00000000000000000000000000000000000000000000000000000000000c203100000000000000000000000000000000000000000000000000000000000c203b00000000000000000000000000000000000000000000000000000000000c203200000000000000000000000000000000000000000000000000000000000c203c00000000000000000000000000000000000000000000000000000000000c203300000000000000000000000000000000000000000000000000000000000c203d00000000000000000000000000000000000000000000000000000000000c203400000000000000000000000000000000000000000000000000000000000c203e00000000000000000000000000000000000000000000000000000000000c203500000000000000000000000000000000000000000000000000000000000c203f00000000000000000000000000000000000000000000000000000000000c203600000000000000000000000000000000000000000000000000000000000c204000000000000000000000000000000000000000000000000000000000000c203700000000000000000000000000000000000000000000000000000000000c204100000000000000000000000000000000000000000000000000000000000c203800000000000000000000000000000000000000000000000000000000000c204200000000000000000000000000000000000000000000000000000000000c203900000000000000000000000000000000000000000000000000000000000c204300000000000000000000000000000000000000000000000000000000000c203a00000000000000000000000000000000000000000000000000000000000c204400000000000000000000000000000000000000000000000000000000000c203b00000000000000000000000000000000000000000000000000000000000c204500000000000000000000000000000000000000000000000000000000000c203c00000000000000000000000000000000000000000000000000000000000c204600000000000000000000000000000000000000000000000000000000000c203d00000000000000000000000000000000000000000000000000000000000c204700000000000000000000000000000000000000000000000000000000000c203e00000000000000000000000000000000000000000000000000000000000c2048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000101000000000000000000000000000000000000000000000000000000000000010100100000000000000000000000000000000000000000000000000000000001010020000000000000000000000000000000000000000000000000000000000101003000000000000000000000000000000000000000000000000000000000010100400000000000000000000000000000000000000000000000000000000001010050000000000000000000000000000000000000000000000000000000000101006000000000000000000000000000000000000000000000000000000000010100700000000000000000000000000000000000000000000000000000000001010080000000000000000000000000000000000000000000000000000000000101009000000000000000000000000000000000000000000000000000000000010100a000000000000000000000000000000000000000000000000000000000010100b000000000000000000000000000000000000000000000000000000000010100c000000000000000000000000000000000000000000000000000000000010100d000000000000000000000000000000000000000000000000000000000010100e000000000000000000000000000000000000000000000000000000000010100f0000000000000000000000000000000000000000000000000000000000101010000000000000000000000000000000000000000000000000000000000010101100000000000000000000000000000000000000000000000000000000001010120000000000000000000000000000000000000000000000000000000000101013000000000000000000000000000000000000000000000000000000000010101400000000000000000000000000000000000000000000000000000000001010150000000000000000000000000000000000000000000000000000000000101016000000000000000000000000000000000000000000000000000000000010101700000000000000000000000000000000000000000000000000000000001010180000000000000000000000000000000000000000000000000000000000101019000000000000000000000000000000000000000000000000000000000010101a000000000000000000000000000000000000000000000000000000000010101b000000000000000000000000000000000000000000000000000000000010101c000000000000000000000000000000000000000000000000000000000010101d000000000000000000000000000000000000000000000000000000000010101e000000000000000000000000000000000000000000000000000000000010101f0000000000000000000000000000000000000000000000000000000000101020000000000000000000000000000000000000000000000000000000000010102100000000000000000000000000000000000000000000000000000000001010220000000000000000000000000000000000000000000000000000000000101023000000000000000000000000000000000000000000000000000000000010102400000000000000000000000000000000000000000000000000000000001010250000000000000000000000000000000000000000000000000000000000101026000000000000000000000000000000000000000000000000000000000010102700000000000000000000000000000000000000000000000000000000001010280000000000000000000000000000000000000000000000000000000000101029000000000000000000000000000000000000000000000000000000000010102a000000000000000000000000000000000000000000000000000000000010102b000000000000000000000000000000000000000000000000000000000010102c000000000000000000000000000000000000000000000000000000000010102d000000000000000000000000000000000000000000000000000000000010102e000000000000000000000000000000000000000000000000000000000010102f0000000000000000000000000000000000000000000000000000000000101030000000000000000000000000000000000000000000000000000000000010103100000000000000000000000000000000000000000000000000000000001010320000000000000000000000000000000000000000000000000000000000101033000000000000000000000000000000000000000000000000000000000010103400000000000000000000000000000000000000000000000000000000001010350000000000000000000000000000000000000000000000000000000000101036000000000000000000000000000000000000000000000000000000000010103700000000000000000000000000000000000000000000000000000000001010380000000000000000000000000000000000000000000000000000000000101039000000000000000000000000000000000000000000000000000000000010103a000000000000000000000000000000000000000000000000000000000010103b000000000000000000000000000000000000000000000000000000000010103c000000000000000000000000000000000000000000000000000000000010103d000000000000000000000000000000000000000000000000000000000010103e000000000000000000000000000000000000000000000000000000000010103f3f0000000000000000000000000000000000000000000000000000000000101100000000000000000000000000000000000000000000000000000000000010110100000000000000000000000000000000000000000000000000000000001011020000000000000000000000000000000000000000000000000000000000101103000000000000000000000000000000000000000000000000000000000010110400000000000000000000000000000000000000000000000000000000001011050000000000000000000000000000000000000000000000000000000000101106000000000000000000000000000000000000000000000000000000000010110700000000000000000000000000000000000000000000000000000000001011080000000000000000000000000000000000000000000000000000000000101109000000000000000000000000000000000000000000000000000000000010110a000000000000000000000000000000000000000000000000000000000010110b000000000000000000000000000000000000000000000000000000000010110c000000000000000000000000000000000000000000000000000000000010110d000000000000000000000000000000000000000000000000000000000010110e000000000000000000000000000000000000000000000000000000000010110f0000000000000000000000000000000000000000000000000000000000101110000000000000000000000000000000000000000000000000000000000010111100000000000000000000000000000000000000000000000000000000001011120000000000000000000000000000000000000000000000000000000000101113000000000000000000000000000000000000000000000000000000000010111400000000000000000000000000000000000000000000000000000000001011150000000000000000000000000000000000000000000000000000000000101116000000000000000000000000000000000000000000000000000000000010111700000000000000000000000000000000000000000000000000000000001011180000000000000000000000000000000000000000000000000000000000101119000000000000000000000000000000000000000000000000000000000010111a000000000000000000000000000000000000000000000000000000000010111b000000000000000000000000000000000000000000000000000000000010111c000000000000000000000000000000000000000000000000000000000010111d000000000000000000000000000000000000000000000000000000000010111e000000000000000000000000000000000000000000000000000000000010111f0000000000000000000000000000000000000000000000000000000000101120000000000000000000000000000000000000000000000000000000000010112100000000000000000000000000000000000000000000000000000000001011220000000000000000000000000000000000000000000000000000000000101123000000000000000000000000000000000000000000000000000000000010112400000000000000000000000000000000000000000000000000000000001011250000000000000000000000000000000000000000000000000000000000101126000000000000000000000000000000000000000000000000000000000010112700000000000000000000000000000000000000000000000000000000001011280000000000000000000000000000000000000000000000000000000000101129000000000000000000000000000000000000000000000000000000000010112a000000000000000000000000000000000000000000000000000000000010112b000000000000000000000000000000000000000000000000000000000010112c000000000000000000000000000000000000000000000000000000000010112d000000000000000000000000000000000000000000000000000000000010112e000000000000000000000000000000000000000000000000000000000010112f0000000000000000000000000000000000000000000000000000000000101130000000000000000000000000000000000000000000000000000000000010113100000000000000000000000000000000000000000000000000000000001011320000000000000000000000000000000000000000000000000000000000101133000000000000000000000000000000000000000000000000000000000010113400000000000000000000000000000000000000000000000000000000001011350000000000000000000000000000000000000000000000000000000000101136000000000000000000000000000000000000000000000000000000000010113700000000000000000000000000000000000000000000000000000000001011380000000000000000000000000000000000000000000000000000000000101139000000000000000000000000000000000000000000000000000000000010113a000000000000000000000000000000000000000000000000000000000010113b000000000000000000000000000000000000000000000000000000000010113c000000000000000000000000000000000000000000000000000000000010113d000000000000000000000000000000000000000000000000000000000010113e080099145b6c0d32753835121f8b271186d01236948a4622ce78a98347fcfc98390085277a27c6acbd5ffc4c19cd65fc30056999e9bec36998f753132db0ff8e2300f3cf77a7261759ebd5f4149f6ad56746f4499cfcd4adf27a1d373f77da64d5009bc6e0e994a23cde8c95b90c1acc1b4a480c6599d1df2c3f9f6e76f3d1aff200d7a1c4a2700dacaaf07f1f0ff33837bdbabcf0b9ace17efabe0761708c4bb900dbeb8e96d14f21e57d5786b6d6ae7e5ddb1bb35935c0fb246d4bdbca62e02c00fbf12b5e0df6223b801088798e4e04d2a92ffe9a11639b7f0ce314e3412a8000d796e0724de03b796ba77069fcd6cf921e566f3aed15eb3e77258add74e9ff3f0000000000000000000000000000000000000000000000000000000000102000000000000000000000000000000000000000000000000000000000000010200a0000000000000000000000000000000000000000000000000000000000102001000000000000000000000000000000000000000000000000000000000010200b0000000000000000000000000000000000000000000000000000000000102002000000000000000000000000000000000000000000000000000000000010200c0000000000000000000000000000000000000000000000000000000000102003000000000000000000000000000000000000000000000000000000000010200d0000000000000000000000000000000000000000000000000000000000102004000000000000000000000000000000000000000000000000000000000010200e0000000000000000000000000000000000000000000000000000000000102005000000000000000000000000000000000000000000000000000000000010200f00000000000000000000000000000000000000000000000000000000001020060000000000000000000000000000000000000000000000000000000000102010000000000000000000000000000000000000000000000000000000000010200700000000000000000000000000000000000000000000000000000000001020110000000000000000000000000000000000000000000000000000000000102008000000000000000000000000000000000000000000000000000000000010201200000000000000000000000000000000000000000000000000000000001020090000000000000000000000000000000000000000000000000000000000102013000000000000000000000000000000000000000000000000000000000010200a0000000000000000000000000000000000000000000000000000000000102014000000000000000000000000000000000000000000000000000000000010200b0000000000000000000000000000000000000000000000000000000000102015000000000000000000000000000000000000000000000000000000000010200c0000000000000000000000000000000000000000000000000000000000102016000000000000000000000000000000000000000000000000000000000010200d0000000000000000000000000000000000000000000000000000000000102017000000000000000000000000000000000000000000000000000000000010200e0000000000000000000000000000000000000000000000000000000000102018000000000000000000000000000000000000000000000000000000000010200f00000000000000000000000000000000000000000000000000000000001020190000000000000000000000000000000000000000000000000000000000102010000000000000000000000000000000000000000000000000000000000010201a0000000000000000000000000000000000000000000000000000000000102011000000000000000000000000000000000000000000000000000000000010201b0000000000000000000000000000000000000000000000000000000000102012000000000000000000000000000000000000000000000000000000000010201c0000000000000000000000000000000000000000000000000000000000102013000000000000000000000000000000000000000000000000000000000010201d0000000000000000000000000000000000000000000000000000000000102014000000000000000000000000000000000000000000000000000000000010201e0000000000000000000000000000000000000000000000000000000000102015000000000000000000000000000000000000000000000000000000000010201f00000000000000000000000000000000000000000000000000000000001020160000000000000000000000000000000000000000000000000000000000102020000000000000000000000000000000000000000000000000000000000010201700000000000000000000000000000000000000000000000000000000001020210000000000000000000000000000000000000000000000000000000000102018000000000000000000000000000000000000000000000000000000000010202200000000000000000000000000000000000000000000000000000000001020190000000000000000000000000000000000000000000000000000000000102023000000000000000000000000000000000000000000000000000000000010201a0000000000000000000000000000000000000000000000000000000000102024000000000000000000000000000000000000000000000000000000000010201b0000000000000000000000000000000000000000000000000000000000102025000000000000000000000000000000000000000000000000000000000010201c0000000000000000000000000000000000000000000000000000000000102026000000000000000000000000000000000000000000000000000000000010201d0000000000000000000000000000000000000000000000000000000000102027000000000000000000000000000000000000000000000000000000000010201e0000000000000000000000000000000000000000000000000000000000102028000000000000000000000000000000000000000000000000000000000010201f00000000000000000000000000000000000000000000000000000000001020290000000000000000000000000000000000000000000000000000000000102020000000000000000000000000000000000000000000000000000000000010202a0000000000000000000000000000000000000000000000000000000000102021000000000000000000000000000000000000000000000000000000000010202b0000000000000000000000000000000000000000000000000000000000102022000000000000000000000000000000000000000000000000000000000010202c0000000000000000000000000000000000000000000000000000000000102023000000000000000000000000000000000000000000000000000000000010202d0000000000000000000000000000000000000000000000000000000000102024000000000000000000000000000000000000000000000000000000000010202e0000000000000000000000000000000000000000000000000000000000102025000000000000000000000000000000000000000000000000000000000010202f00000000000000000000000000000000000000000000000000000000001020260000000000000000000000000000000000000000000000000000000000102030000000000000000000000000000000000000000000000000000000000010202700000000000000000000000000000000000000000000000000000000001020310000000000000000000000000000000000000000000000000000000000102028000000000000000000000000000000000000000000000000000000000010203200000000000000000000000000000000000000000000000000000000001020290000000000000000000000000000000000000000000000000000000000102033000000000000000000000000000000000000000000000000000000000010202a0000000000000000000000000000000000000000000000000000000000102034000000000000000000000000000000000000000000000000000000000010202b0000000000000000000000000000000000000000000000000000000000102035000000000000000000000000000000000000000000000000000000000010202c0000000000000000000000000000000000000000000000000000000000102036000000000000000000000000000000000000000000000000000000000010202d0000000000000000000000000000000000000000000000000000000000102037000000000000000000000000000000000000000000000000000000000010202e0000000000000000000000000000000000000000000000000000000000102038000000000000000000000000000000000000000000000000000000000010202f00000000000000000000000000000000000000000000000000000000001020390000000000000000000000000000000000000000000000000000000000102030000000000000000000000000000000000000000000000000000000000010203a0000000000000000000000000000000000000000000000000000000000102031000000000000000000000000000000000000000000000000000000000010203b0000000000000000000000000000000000000000000000000000000000102032000000000000000000000000000000000000000000000000000000000010203c0000000000000000000000000000000000000000000000000000000000102033000000000000000000000000000000000000000000000000000000000010203d0000000000000000000000000000000000000000000000000000000000102034000000000000000000000000000000000000000000000000000000000010203e0000000000000000000000000000000000000000000000000000000000102035000000000000000000000000000000000000000000000000000000000010203f00000000000000000000000000000000000000000000000000000000001020360000000000000000000000000000000000000000000000000000000000102040000000000000000000000000000000000000000000000000000000000010203700000000000000000000000000000000000000000000000000000000001020410000000000000000000000000000000000000000000000000000000000102038000000000000000000000000000000000000000000000000000000000010204200000000000000000000000000000000000000000000000000000000001020390000000000000000000000000000000000000000000000000000000000102043000000000000000000000000000000000000000000000000000000000010203a0000000000000000000000000000000000000000000000000000000000102044000000000000000000000000000000000000000000000000000000000010203b0000000000000000000000000000000000000000000000000000000000102045000000000000000000000000000000000000000000000000000000000010203c0000000000000000000000000000000000000000000000000000000000102046000000000000000000000000000000000000000000000000000000000010203d0000000000000000000000000000000000000000000000000000000000102047000000000000000000000000000000000000000000000000000000000010203e0000000000000000000000000000000000000000000000000000000000102048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000141000000000000000000000000000000000000000000000000000000000000014100100000000000000000000000000000000000000000000000000000000001410020000000000000000000000000000000000000000000000000000000000141003000000000000000000000000000000000000000000000000000000000014100400000000000000000000000000000000000000000000000000000000001410050000000000000000000000000000000000000000000000000000000000141006000000000000000000000000000000000000000000000000000000000014100700000000000000000000000000000000000000000000000000000000001410080000000000000000000000000000000000000000000000000000000000141009000000000000000000000000000000000000000000000000000000000014100a000000000000000000000000000000000000000000000000000000000014100b000000000000000000000000000000000000000000000000000000000014100c000000000000000000000000000000000000000000000000000000000014100d000000000000000000000000000000000000000000000000000000000014100e000000000000000000000000000000000000000000000000000000000014100f0000000000000000000000000000000000000000000000000000000000141010000000000000000000000000000000000000000000000000000000000014101100000000000000000000000000000000000000000000000000000000001410120000000000000000000000000000000000000000000000000000000000141013000000000000000000000000000000000000000000000000000000000014101400000000000000000000000000000000000000000000000000000000001410150000000000000000000000000000000000000000000000000000000000141016000000000000000000000000000000000000000000000000000000000014101700000000000000000000000000000000000000000000000000000000001410180000000000000000000000000000000000000000000000000000000000141019000000000000000000000000000000000000000000000000000000000014101a000000000000000000000000000000000000000000000000000000000014101b000000000000000000000000000000000000000000000000000000000014101c000000000000000000000000000000000000000000000000000000000014101d000000000000000000000000000000000000000000000000000000000014101e000000000000000000000000000000000000000000000000000000000014101f0000000000000000000000000000000000000000000000000000000000141020000000000000000000000000000000000000000000000000000000000014102100000000000000000000000000000000000000000000000000000000001410220000000000000000000000000000000000000000000000000000000000141023000000000000000000000000000000000000000000000000000000000014102400000000000000000000000000000000000000000000000000000000001410250000000000000000000000000000000000000000000000000000000000141026000000000000000000000000000000000000000000000000000000000014102700000000000000000000000000000000000000000000000000000000001410280000000000000000000000000000000000000000000000000000000000141029000000000000000000000000000000000000000000000000000000000014102a000000000000000000000000000000000000000000000000000000000014102b000000000000000000000000000000000000000000000000000000000014102c000000000000000000000000000000000000000000000000000000000014102d000000000000000000000000000000000000000000000000000000000014102e000000000000000000000000000000000000000000000000000000000014102f0000000000000000000000000000000000000000000000000000000000141030000000000000000000000000000000000000000000000000000000000014103100000000000000000000000000000000000000000000000000000000001410320000000000000000000000000000000000000000000000000000000000141033000000000000000000000000000000000000000000000000000000000014103400000000000000000000000000000000000000000000000000000000001410350000000000000000000000000000000000000000000000000000000000141036000000000000000000000000000000000000000000000000000000000014103700000000000000000000000000000000000000000000000000000000001410380000000000000000000000000000000000000000000000000000000000141039000000000000000000000000000000000000000000000000000000000014103a000000000000000000000000000000000000000000000000000000000014103b000000000000000000000000000000000000000000000000000000000014103c000000000000000000000000000000000000000000000000000000000014103d000000000000000000000000000000000000000000000000000000000014103e000000000000000000000000000000000000000000000000000000000014103f3f0000000000000000000000000000000000000000000000000000000000141100000000000000000000000000000000000000000000000000000000000014110100000000000000000000000000000000000000000000000000000000001411020000000000000000000000000000000000000000000000000000000000141103000000000000000000000000000000000000000000000000000000000014110400000000000000000000000000000000000000000000000000000000001411050000000000000000000000000000000000000000000000000000000000141106000000000000000000000000000000000000000000000000000000000014110700000000000000000000000000000000000000000000000000000000001411080000000000000000000000000000000000000000000000000000000000141109000000000000000000000000000000000000000000000000000000000014110a000000000000000000000000000000000000000000000000000000000014110b000000000000000000000000000000000000000000000000000000000014110c000000000000000000000000000000000000000000000000000000000014110d000000000000000000000000000000000000000000000000000000000014110e000000000000000000000000000000000000000000000000000000000014110f0000000000000000000000000000000000000000000000000000000000141110000000000000000000000000000000000000000000000000000000000014111100000000000000000000000000000000000000000000000000000000001411120000000000000000000000000000000000000000000000000000000000141113000000000000000000000000000000000000000000000000000000000014111400000000000000000000000000000000000000000000000000000000001411150000000000000000000000000000000000000000000000000000000000141116000000000000000000000000000000000000000000000000000000000014111700000000000000000000000000000000000000000000000000000000001411180000000000000000000000000000000000000000000000000000000000141119000000000000000000000000000000000000000000000000000000000014111a000000000000000000000000000000000000000000000000000000000014111b000000000000000000000000000000000000000000000000000000000014111c000000000000000000000000000000000000000000000000000000000014111d000000000000000000000000000000000000000000000000000000000014111e000000000000000000000000000000000000000000000000000000000014111f0000000000000000000000000000000000000000000000000000000000141120000000000000000000000000000000000000000000000000000000000014112100000000000000000000000000000000000000000000000000000000001411220000000000000000000000000000000000000000000000000000000000141123000000000000000000000000000000000000000000000000000000000014112400000000000000000000000000000000000000000000000000000000001411250000000000000000000000000000000000000000000000000000000000141126000000000000000000000000000000000000000000000000000000000014112700000000000000000000000000000000000000000000000000000000001411280000000000000000000000000000000000000000000000000000000000141129000000000000000000000000000000000000000000000000000000000014112a000000000000000000000000000000000000000000000000000000000014112b000000000000000000000000000000000000000000000000000000000014112c000000000000000000000000000000000000000000000000000000000014112d000000000000000000000000000000000000000000000000000000000014112e000000000000000000000000000000000000000000000000000000000014112f0000000000000000000000000000000000000000000000000000000000141130000000000000000000000000000000000000000000000000000000000014113100000000000000000000000000000000000000000000000000000000001411320000000000000000000000000000000000000000000000000000000000141133000000000000000000000000000000000000000000000000000000000014113400000000000000000000000000000000000000000000000000000000001411350000000000000000000000000000000000000000000000000000000000141136000000000000000000000000000000000000000000000000000000000014113700000000000000000000000000000000000000000000000000000000001411380000000000000000000000000000000000000000000000000000000000141139000000000000000000000000000000000000000000000000000000000014113a000000000000000000000000000000000000000000000000000000000014113b000000000000000000000000000000000000000000000000000000000014113c000000000000000000000000000000000000000000000000000000000014113d000000000000000000000000000000000000000000000000000000000014113e08005c015113cb57d67dd6c0febd596819ac0298b6a23fc80aba17d445d540059a00f20b7d1308051fe7b68031a7c336b0b4b56738928b6510133aff1b818d5a9a0063eec1883a4f95f4933f9275e850d84b3d035f5061ed986c437a07331fd30e00d3a32d6bbc4fd843686fd0c5e118a73b847529977dca5b9e0e81f6604f22ca00c2f4f5133d9194d41e853e5e951e16690babce8461f25342c0bad20f2aa1e3000a6bf4739e7eb387913d955dc2e8f14f8cce27696b9d2e128b6acefafb80ee005763f7e0648f958b559677622a648f318fc79ebc0cb539170d49c26456e69200302e2b8a92cda941e9af8761b89899a58a587656d9710594e1d865b16522993f0000000000000000000000000000000000000000000000000000000000142000000000000000000000000000000000000000000000000000000000000014200a0000000000000000000000000000000000000000000000000000000000142001000000000000000000000000000000000000000000000000000000000014200b0000000000000000000000000000000000000000000000000000000000142002000000000000000000000000000000000000000000000000000000000014200c0000000000000000000000000000000000000000000000000000000000142003000000000000000000000000000000000000000000000000000000000014200d0000000000000000000000000000000000000000000000000000000000142004000000000000000000000000000000000000000000000000000000000014200e0000000000000000000000000000000000000000000000000000000000142005000000000000000000000000000000000000000000000000000000000014200f00000000000000000000000000000000000000000000000000000000001420060000000000000000000000000000000000000000000000000000000000142010000000000000000000000000000000000000000000000000000000000014200700000000000000000000000000000000000000000000000000000000001420110000000000000000000000000000000000000000000000000000000000142008000000000000000000000000000000000000000000000000000000000014201200000000000000000000000000000000000000000000000000000000001420090000000000000000000000000000000000000000000000000000000000142013000000000000000000000000000000000000000000000000000000000014200a0000000000000000000000000000000000000000000000000000000000142014000000000000000000000000000000000000000000000000000000000014200b0000000000000000000000000000000000000000000000000000000000142015000000000000000000000000000000000000000000000000000000000014200c0000000000000000000000000000000000000000000000000000000000142016000000000000000000000000000000000000000000000000000000000014200d0000000000000000000000000000000000000000000000000000000000142017000000000000000000000000000000000000000000000000000000000014200e0000000000000000000000000000000000000000000000000000000000142018000000000000000000000000000000000000000000000000000000000014200f00000000000000000000000000000000000000000000000000000000001420190000000000000000000000000000000000000000000000000000000000142010000000000000000000000000000000000000000000000000000000000014201a0000000000000000000000000000000000000000000000000000000000142011000000000000000000000000000000000000000000000000000000000014201b0000000000000000000000000000000000000000000000000000000000142012000000000000000000000000000000000000000000000000000000000014201c0000000000000000000000000000000000000000000000000000000000142013000000000000000000000000000000000000000000000000000000000014201d0000000000000000000000000000000000000000000000000000000000142014000000000000000000000000000000000000000000000000000000000014201e0000000000000000000000000000000000000000000000000000000000142015000000000000000000000000000000000000000000000000000000000014201f00000000000000000000000000000000000000000000000000000000001420160000000000000000000000000000000000000000000000000000000000142020000000000000000000000000000000000000000000000000000000000014201700000000000000000000000000000000000000000000000000000000001420210000000000000000000000000000000000000000000000000000000000142018000000000000000000000000000000000000000000000000000000000014202200000000000000000000000000000000000000000000000000000000001420190000000000000000000000000000000000000000000000000000000000142023000000000000000000000000000000000000000000000000000000000014201a0000000000000000000000000000000000000000000000000000000000142024000000000000000000000000000000000000000000000000000000000014201b0000000000000000000000000000000000000000000000000000000000142025000000000000000000000000000000000000000000000000000000000014201c0000000000000000000000000000000000000000000000000000000000142026000000000000000000000000000000000000000000000000000000000014201d0000000000000000000000000000000000000000000000000000000000142027000000000000000000000000000000000000000000000000000000000014201e0000000000000000000000000000000000000000000000000000000000142028000000000000000000000000000000000000000000000000000000000014201f00000000000000000000000000000000000000000000000000000000001420290000000000000000000000000000000000000000000000000000000000142020000000000000000000000000000000000000000000000000000000000014202a0000000000000000000000000000000000000000000000000000000000142021000000000000000000000000000000000000000000000000000000000014202b0000000000000000000000000000000000000000000000000000000000142022000000000000000000000000000000000000000000000000000000000014202c0000000000000000000000000000000000000000000000000000000000142023000000000000000000000000000000000000000000000000000000000014202d0000000000000000000000000000000000000000000000000000000000142024000000000000000000000000000000000000000000000000000000000014202e0000000000000000000000000000000000000000000000000000000000142025000000000000000000000000000000000000000000000000000000000014202f00000000000000000000000000000000000000000000000000000000001420260000000000000000000000000000000000000000000000000000000000142030000000000000000000000000000000000000000000000000000000000014202700000000000000000000000000000000000000000000000000000000001420310000000000000000000000000000000000000000000000000000000000142028000000000000000000000000000000000000000000000000000000000014203200000000000000000000000000000000000000000000000000000000001420290000000000000000000000000000000000000000000000000000000000142033000000000000000000000000000000000000000000000000000000000014202a0000000000000000000000000000000000000000000000000000000000142034000000000000000000000000000000000000000000000000000000000014202b0000000000000000000000000000000000000000000000000000000000142035000000000000000000000000000000000000000000000000000000000014202c0000000000000000000000000000000000000000000000000000000000142036000000000000000000000000000000000000000000000000000000000014202d0000000000000000000000000000000000000000000000000000000000142037000000000000000000000000000000000000000000000000000000000014202e0000000000000000000000000000000000000000000000000000000000142038000000000000000000000000000000000000000000000000000000000014202f00000000000000000000000000000000000000000000000000000000001420390000000000000000000000000000000000000000000000000000000000142030000000000000000000000000000000000000000000000000000000000014203a0000000000000000000000000000000000000000000000000000000000142031000000000000000000000000000000000000000000000000000000000014203b0000000000000000000000000000000000000000000000000000000000142032000000000000000000000000000000000000000000000000000000000014203c0000000000000000000000000000000000000000000000000000000000142033000000000000000000000000000000000000000000000000000000000014203d0000000000000000000000000000000000000000000000000000000000142034000000000000000000000000000000000000000000000000000000000014203e0000000000000000000000000000000000000000000000000000000000142035000000000000000000000000000000000000000000000000000000000014203f00000000000000000000000000000000000000000000000000000000001420360000000000000000000000000000000000000000000000000000000000142040000000000000000000000000000000000000000000000000000000000014203700000000000000000000000000000000000000000000000000000000001420410000000000000000000000000000000000000000000000000000000000142038000000000000000000000000000000000000000000000000000000000014204200000000000000000000000000000000000000000000000000000000001420390000000000000000000000000000000000000000000000000000000000142043000000000000000000000000000000000000000000000000000000000014203a0000000000000000000000000000000000000000000000000000000000142044000000000000000000000000000000000000000000000000000000000014203b0000000000000000000000000000000000000000000000000000000000142045000000000000000000000000000000000000000000000000000000000014203c0000000000000000000000000000000000000000000000000000000000142046000000000000000000000000000000000000000000000000000000000014203d0000000000000000000000000000000000000000000000000000000000142047000000000000000000000000000000000000000000000000000000000014203e0000000000000000000000000000000000000000000000000000000000142048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000181000000000000000000000000000000000000000000000000000000000000018100100000000000000000000000000000000000000000000000000000000001810020000000000000000000000000000000000000000000000000000000000181003000000000000000000000000000000000000000000000000000000000018100400000000000000000000000000000000000000000000000000000000001810050000000000000000000000000000000000000000000000000000000000181006000000000000000000000000000000000000000000000000000000000018100700000000000000000000000000000000000000000000000000000000001810080000000000000000000000000000000000000000000000000000000000181009000000000000000000000000000000000000000000000000000000000018100a000000000000000000000000000000000000000000000000000000000018100b000000000000000000000000000000000000000000000000000000000018100c000000000000000000000000000000000000000000000000000000000018100d000000000000000000000000000000000000000000000000000000000018100e000000000000000000000000000000000000000000000000000000000018100f0000000000000000000000000000000000000000000000000000000000181010000000000000000000000000000000000000000000000000000000000018101100000000000000000000000000000000000000000000000000000000001810120000000000000000000000000000000000000000000000000000000000181013000000000000000000000000000000000000000000000000000000000018101400000000000000000000000000000000000000000000000000000000001810150000000000000000000000000000000000000000000000000000000000181016000000000000000000000000000000000000000000000000000000000018101700000000000000000000000000000000000000000000000000000000001810180000000000000000000000000000000000000000000000000000000000181019000000000000000000000000000000000000000000000000000000000018101a000000000000000000000000000000000000000000000000000000000018101b000000000000000000000000000000000000000000000000000000000018101c000000000000000000000000000000000000000000000000000000000018101d000000000000000000000000000000000000000000000000000000000018101e000000000000000000000000000000000000000000000000000000000018101f0000000000000000000000000000000000000000000000000000000000181020000000000000000000000000000000000000000000000000000000000018102100000000000000000000000000000000000000000000000000000000001810220000000000000000000000000000000000000000000000000000000000181023000000000000000000000000000000000000000000000000000000000018102400000000000000000000000000000000000000000000000000000000001810250000000000000000000000000000000000000000000000000000000000181026000000000000000000000000000000000000000000000000000000000018102700000000000000000000000000000000000000000000000000000000001810280000000000000000000000000000000000000000000000000000000000181029000000000000000000000000000000000000000000000000000000000018102a000000000000000000000000000000000000000000000000000000000018102b000000000000000000000000000000000000000000000000000000000018102c000000000000000000000000000000000000000000000000000000000018102d000000000000000000000000000000000000000000000000000000000018102e000000000000000000000000000000000000000000000000000000000018102f0000000000000000000000000000000000000000000000000000000000181030000000000000000000000000000000000000000000000000000000000018103100000000000000000000000000000000000000000000000000000000001810320000000000000000000000000000000000000000000000000000000000181033000000000000000000000000000000000000000000000000000000000018103400000000000000000000000000000000000000000000000000000000001810350000000000000000000000000000000000000000000000000000000000181036000000000000000000000000000000000000000000000000000000000018103700000000000000000000000000000000000000000000000000000000001810380000000000000000000000000000000000000000000000000000000000181039000000000000000000000000000000000000000000000000000000000018103a000000000000000000000000000000000000000000000000000000000018103b000000000000000000000000000000000000000000000000000000000018103c000000000000000000000000000000000000000000000000000000000018103d000000000000000000000000000000000000000000000000000000000018103e000000000000000000000000000000000000000000000000000000000018103f3f0000000000000000000000000000000000000000000000000000000000181100000000000000000000000000000000000000000000000000000000000018110100000000000000000000000000000000000000000000000000000000001811020000000000000000000000000000000000000000000000000000000000181103000000000000000000000000000000000000000000000000000000000018110400000000000000000000000000000000000000000000000000000000001811050000000000000000000000000000000000000000000000000000000000181106000000000000000000000000000000000000000000000000000000000018110700000000000000000000000000000000000000000000000000000000001811080000000000000000000000000000000000000000000000000000000000181109000000000000000000000000000000000000000000000000000000000018110a000000000000000000000000000000000000000000000000000000000018110b000000000000000000000000000000000000000000000000000000000018110c000000000000000000000000000000000000000000000000000000000018110d000000000000000000000000000000000000000000000000000000000018110e000000000000000000000000000000000000000000000000000000000018110f0000000000000000000000000000000000000000000000000000000000181110000000000000000000000000000000000000000000000000000000000018111100000000000000000000000000000000000000000000000000000000001811120000000000000000000000000000000000000000000000000000000000181113000000000000000000000000000000000000000000000000000000000018111400000000000000000000000000000000000000000000000000000000001811150000000000000000000000000000000000000000000000000000000000181116000000000000000000000000000000000000000000000000000000000018111700000000000000000000000000000000000000000000000000000000001811180000000000000000000000000000000000000000000000000000000000181119000000000000000000000000000000000000000000000000000000000018111a000000000000000000000000000000000000000000000000000000000018111b000000000000000000000000000000000000000000000000000000000018111c000000000000000000000000000000000000000000000000000000000018111d000000000000000000000000000000000000000000000000000000000018111e000000000000000000000000000000000000000000000000000000000018111f0000000000000000000000000000000000000000000000000000000000181120000000000000000000000000000000000000000000000000000000000018112100000000000000000000000000000000000000000000000000000000001811220000000000000000000000000000000000000000000000000000000000181123000000000000000000000000000000000000000000000000000000000018112400000000000000000000000000000000000000000000000000000000001811250000000000000000000000000000000000000000000000000000000000181126000000000000000000000000000000000000000000000000000000000018112700000000000000000000000000000000000000000000000000000000001811280000000000000000000000000000000000000000000000000000000000181129000000000000000000000000000000000000000000000000000000000018112a000000000000000000000000000000000000000000000000000000000018112b000000000000000000000000000000000000000000000000000000000018112c000000000000000000000000000000000000000000000000000000000018112d000000000000000000000000000000000000000000000000000000000018112e000000000000000000000000000000000000000000000000000000000018112f0000000000000000000000000000000000000000000000000000000000181130000000000000000000000000000000000000000000000000000000000018113100000000000000000000000000000000000000000000000000000000001811320000000000000000000000000000000000000000000000000000000000181133000000000000000000000000000000000000000000000000000000000018113400000000000000000000000000000000000000000000000000000000001811350000000000000000000000000000000000000000000000000000000000181136000000000000000000000000000000000000000000000000000000000018113700000000000000000000000000000000000000000000000000000000001811380000000000000000000000000000000000000000000000000000000000181139000000000000000000000000000000000000000000000000000000000018113a000000000000000000000000000000000000000000000000000000000018113b000000000000000000000000000000000000000000000000000000000018113c000000000000000000000000000000000000000000000000000000000018113d000000000000000000000000000000000000000000000000000000000018113e0800f872eb9653f03af10f331da1361fa1524d3cd958cb72dacea1d424f19df3af00ffc548a17cd6ba1f2d228f30e4ddb19ecc46ad3b609977d52bb0f49e1206410032f8058bd779c520eabae2743b02ec4f71670428506fcceb2d4b69f26fb11800c0283e15fbf74ffa4eafb984030394f3c2ea6733cc0eacb0431a9475eff28f00b7f55314bfd9d441c1c624e241908228fe4da3d3a0a7fbd56814e1c8cd5d3e00f430f33a786675271736fd728c7bf7428b8c24ac948d7faf76ddb8783a496c0048fc235ead8d4b9d44929662a6384074fc4e5076bec5b7deb34f612393684300fd9b61cb1ad9b4b28f58399906e73933e3cccee8fc98a393f0eedb95b13ee63f0000000000000000000000000000000000000000000000000000000000182000000000000000000000000000000000000000000000000000000000000018200a0000000000000000000000000000000000000000000000000000000000182001000000000000000000000000000000000000000000000000000000000018200b0000000000000000000000000000000000000000000000000000000000182002000000000000000000000000000000000000000000000000000000000018200c0000000000000000000000000000000000000000000000000000000000182003000000000000000000000000000000000000000000000000000000000018200d0000000000000000000000000000000000000000000000000000000000182004000000000000000000000000000000000000000000000000000000000018200e0000000000000000000000000000000000000000000000000000000000182005000000000000000000000000000000000000000000000000000000000018200f00000000000000000000000000000000000000000000000000000000001820060000000000000000000000000000000000000000000000000000000000182010000000000000000000000000000000000000000000000000000000000018200700000000000000000000000000000000000000000000000000000000001820110000000000000000000000000000000000000000000000000000000000182008000000000000000000000000000000000000000000000000000000000018201200000000000000000000000000000000000000000000000000000000001820090000000000000000000000000000000000000000000000000000000000182013000000000000000000000000000000000000000000000000000000000018200a0000000000000000000000000000000000000000000000000000000000182014000000000000000000000000000000000000000000000000000000000018200b0000000000000000000000000000000000000000000000000000000000182015000000000000000000000000000000000000000000000000000000000018200c0000000000000000000000000000000000000000000000000000000000182016000000000000000000000000000000000000000000000000000000000018200d0000000000000000000000000000000000000000000000000000000000182017000000000000000000000000000000000000000000000000000000000018200e0000000000000000000000000000000000000000000000000000000000182018000000000000000000000000000000000000000000000000000000000018200f00000000000000000000000000000000000000000000000000000000001820190000000000000000000000000000000000000000000000000000000000182010000000000000000000000000000000000000000000000000000000000018201a0000000000000000000000000000000000000000000000000000000000182011000000000000000000000000000000000000000000000000000000000018201b0000000000000000000000000000000000000000000000000000000000182012000000000000000000000000000000000000000000000000000000000018201c0000000000000000000000000000000000000000000000000000000000182013000000000000000000000000000000000000000000000000000000000018201d0000000000000000000000000000000000000000000000000000000000182014000000000000000000000000000000000000000000000000000000000018201e0000000000000000000000000000000000000000000000000000000000182015000000000000000000000000000000000000000000000000000000000018201f00000000000000000000000000000000000000000000000000000000001820160000000000000000000000000000000000000000000000000000000000182020000000000000000000000000000000000000000000000000000000000018201700000000000000000000000000000000000000000000000000000000001820210000000000000000000000000000000000000000000000000000000000182018000000000000000000000000000000000000000000000000000000000018202200000000000000000000000000000000000000000000000000000000001820190000000000000000000000000000000000000000000000000000000000182023000000000000000000000000000000000000000000000000000000000018201a0000000000000000000000000000000000000000000000000000000000182024000000000000000000000000000000000000000000000000000000000018201b0000000000000000000000000000000000000000000000000000000000182025000000000000000000000000000000000000000000000000000000000018201c0000000000000000000000000000000000000000000000000000000000182026000000000000000000000000000000000000000000000000000000000018201d0000000000000000000000000000000000000000000000000000000000182027000000000000000000000000000000000000000000000000000000000018201e0000000000000000000000000000000000000000000000000000000000182028000000000000000000000000000000000000000000000000000000000018201f00000000000000000000000000000000000000000000000000000000001820290000000000000000000000000000000000000000000000000000000000182020000000000000000000000000000000000000000000000000000000000018202a0000000000000000000000000000000000000000000000000000000000182021000000000000000000000000000000000000000000000000000000000018202b0000000000000000000000000000000000000000000000000000000000182022000000000000000000000000000000000000000000000000000000000018202c0000000000000000000000000000000000000000000000000000000000182023000000000000000000000000000000000000000000000000000000000018202d0000000000000000000000000000000000000000000000000000000000182024000000000000000000000000000000000000000000000000000000000018202e0000000000000000000000000000000000000000000000000000000000182025000000000000000000000000000000000000000000000000000000000018202f00000000000000000000000000000000000000000000000000000000001820260000000000000000000000000000000000000000000000000000000000182030000000000000000000000000000000000000000000000000000000000018202700000000000000000000000000000000000000000000000000000000001820310000000000000000000000000000000000000000000000000000000000182028000000000000000000000000000000000000000000000000000000000018203200000000000000000000000000000000000000000000000000000000001820290000000000000000000000000000000000000000000000000000000000182033000000000000000000000000000000000000000000000000000000000018202a0000000000000000000000000000000000000000000000000000000000182034000000000000000000000000000000000000000000000000000000000018202b0000000000000000000000000000000000000000000000000000000000182035000000000000000000000000000000000000000000000000000000000018202c0000000000000000000000000000000000000000000000000000000000182036000000000000000000000000000000000000000000000000000000000018202d0000000000000000000000000000000000000000000000000000000000182037000000000000000000000000000000000000000000000000000000000018202e0000000000000000000000000000000000000000000000000000000000182038000000000000000000000000000000000000000000000000000000000018202f00000000000000000000000000000000000000000000000000000000001820390000000000000000000000000000000000000000000000000000000000182030000000000000000000000000000000000000000000000000000000000018203a0000000000000000000000000000000000000000000000000000000000182031000000000000000000000000000000000000000000000000000000000018203b0000000000000000000000000000000000000000000000000000000000182032000000000000000000000000000000000000000000000000000000000018203c0000000000000000000000000000000000000000000000000000000000182033000000000000000000000000000000000000000000000000000000000018203d0000000000000000000000000000000000000000000000000000000000182034000000000000000000000000000000000000000000000000000000000018203e0000000000000000000000000000000000000000000000000000000000182035000000000000000000000000000000000000000000000000000000000018203f00000000000000000000000000000000000000000000000000000000001820360000000000000000000000000000000000000000000000000000000000182040000000000000000000000000000000000000000000000000000000000018203700000000000000000000000000000000000000000000000000000000001820410000000000000000000000000000000000000000000000000000000000182038000000000000000000000000000000000000000000000000000000000018204200000000000000000000000000000000000000000000000000000000001820390000000000000000000000000000000000000000000000000000000000182043000000000000000000000000000000000000000000000000000000000018203a0000000000000000000000000000000000000000000000000000000000182044000000000000000000000000000000000000000000000000000000000018203b0000000000000000000000000000000000000000000000000000000000182045000000000000000000000000000000000000000000000000000000000018203c0000000000000000000000000000000000000000000000000000000000182046000000000000000000000000000000000000000000000000000000000018203d0000000000000000000000000000000000000000000000000000000000182047000000000000000000000000000000000000000000000000000000000018203e00000000000000000000000000000000000000000000000000000000001820480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000001c100000000000000000000000000000000000000000000000000000000000001c100100000000000000000000000000000000000000000000000000000000001c100200000000000000000000000000000000000000000000000000000000001c100300000000000000000000000000000000000000000000000000000000001c100400000000000000000000000000000000000000000000000000000000001c100500000000000000000000000000000000000000000000000000000000001c100600000000000000000000000000000000000000000000000000000000001c100700000000000000000000000000000000000000000000000000000000001c100800000000000000000000000000000000000000000000000000000000001c100900000000000000000000000000000000000000000000000000000000001c100a00000000000000000000000000000000000000000000000000000000001c100b00000000000000000000000000000000000000000000000000000000001c100c00000000000000000000000000000000000000000000000000000000001c100d00000000000000000000000000000000000000000000000000000000001c100e00000000000000000000000000000000000000000000000000000000001c100f00000000000000000000000000000000000000000000000000000000001c101000000000000000000000000000000000000000000000000000000000001c101100000000000000000000000000000000000000000000000000000000001c101200000000000000000000000000000000000000000000000000000000001c101300000000000000000000000000000000000000000000000000000000001c101400000000000000000000000000000000000000000000000000000000001c101500000000000000000000000000000000000000000000000000000000001c101600000000000000000000000000000000000000000000000000000000001c101700000000000000000000000000000000000000000000000000000000001c101800000000000000000000000000000000000000000000000000000000001c101900000000000000000000000000000000000000000000000000000000001c101a00000000000000000000000000000000000000000000000000000000001c101b00000000000000000000000000000000000000000000000000000000001c101c00000000000000000000000000000000000000000000000000000000001c101d00000000000000000000000000000000000000000000000000000000001c101e00000000000000000000000000000000000000000000000000000000001c101f00000000000000000000000000000000000000000000000000000000001c102000000000000000000000000000000000000000000000000000000000001c102100000000000000000000000000000000000000000000000000000000001c102200000000000000000000000000000000000000000000000000000000001c102300000000000000000000000000000000000000000000000000000000001c102400000000000000000000000000000000000000000000000000000000001c102500000000000000000000000000000000000000000000000000000000001c102600000000000000000000000000000000000000000000000000000000001c102700000000000000000000000000000000000000000000000000000000001c102800000000000000000000000000000000000000000000000000000000001c102900000000000000000000000000000000000000000000000000000000001c102a00000000000000000000000000000000000000000000000000000000001c102b00000000000000000000000000000000000000000000000000000000001c102c00000000000000000000000000000000000000000000000000000000001c102d00000000000000000000000000000000000000000000000000000000001c102e00000000000000000000000000000000000000000000000000000000001c102f00000000000000000000000000000000000000000000000000000000001c103000000000000000000000000000000000000000000000000000000000001c103100000000000000000000000000000000000000000000000000000000001c103200000000000000000000000000000000000000000000000000000000001c103300000000000000000000000000000000000000000000000000000000001c103400000000000000000000000000000000000000000000000000000000001c103500000000000000000000000000000000000000000000000000000000001c103600000000000000000000000000000000000000000000000000000000001c103700000000000000000000000000000000000000000000000000000000001c103800000000000000000000000000000000000000000000000000000000001c103900000000000000000000000000000000000000000000000000000000001c103a00000000000000000000000000000000000000000000000000000000001c103b00000000000000000000000000000000000000000000000000000000001c103c00000000000000000000000000000000000000000000000000000000001c103d00000000000000000000000000000000000000000000000000000000001c103e00000000000000000000000000000000000000000000000000000000001c103f3f00000000000000000000000000000000000000000000000000000000001c110000000000000000000000000000000000000000000000000000000000001c110100000000000000000000000000000000000000000000000000000000001c110200000000000000000000000000000000000000000000000000000000001c110300000000000000000000000000000000000000000000000000000000001c110400000000000000000000000000000000000000000000000000000000001c110500000000000000000000000000000000000000000000000000000000001c110600000000000000000000000000000000000000000000000000000000001c110700000000000000000000000000000000000000000000000000000000001c110800000000000000000000000000000000000000000000000000000000001c110900000000000000000000000000000000000000000000000000000000001c110a00000000000000000000000000000000000000000000000000000000001c110b00000000000000000000000000000000000000000000000000000000001c110c00000000000000000000000000000000000000000000000000000000001c110d00000000000000000000000000000000000000000000000000000000001c110e00000000000000000000000000000000000000000000000000000000001c110f00000000000000000000000000000000000000000000000000000000001c111000000000000000000000000000000000000000000000000000000000001c111100000000000000000000000000000000000000000000000000000000001c111200000000000000000000000000000000000000000000000000000000001c111300000000000000000000000000000000000000000000000000000000001c111400000000000000000000000000000000000000000000000000000000001c111500000000000000000000000000000000000000000000000000000000001c111600000000000000000000000000000000000000000000000000000000001c111700000000000000000000000000000000000000000000000000000000001c111800000000000000000000000000000000000000000000000000000000001c111900000000000000000000000000000000000000000000000000000000001c111a00000000000000000000000000000000000000000000000000000000001c111b00000000000000000000000000000000000000000000000000000000001c111c00000000000000000000000000000000000000000000000000000000001c111d00000000000000000000000000000000000000000000000000000000001c111e00000000000000000000000000000000000000000000000000000000001c111f00000000000000000000000000000000000000000000000000000000001c112000000000000000000000000000000000000000000000000000000000001c112100000000000000000000000000000000000000000000000000000000001c112200000000000000000000000000000000000000000000000000000000001c112300000000000000000000000000000000000000000000000000000000001c112400000000000000000000000000000000000000000000000000000000001c112500000000000000000000000000000000000000000000000000000000001c112600000000000000000000000000000000000000000000000000000000001c112700000000000000000000000000000000000000000000000000000000001c112800000000000000000000000000000000000000000000000000000000001c112900000000000000000000000000000000000000000000000000000000001c112a00000000000000000000000000000000000000000000000000000000001c112b00000000000000000000000000000000000000000000000000000000001c112c00000000000000000000000000000000000000000000000000000000001c112d00000000000000000000000000000000000000000000000000000000001c112e00000000000000000000000000000000000000000000000000000000001c112f00000000000000000000000000000000000000000000000000000000001c113000000000000000000000000000000000000000000000000000000000001c113100000000000000000000000000000000000000000000000000000000001c113200000000000000000000000000000000000000000000000000000000001c113300000000000000000000000000000000000000000000000000000000001c113400000000000000000000000000000000000000000000000000000000001c113500000000000000000000000000000000000000000000000000000000001c113600000000000000000000000000000000000000000000000000000000001c113700000000000000000000000000000000000000000000000000000000001c113800000000000000000000000000000000000000000000000000000000001c113900000000000000000000000000000000000000000000000000000000001c113a00000000000000000000000000000000000000000000000000000000001c113b00000000000000000000000000000000000000000000000000000000001c113c00000000000000000000000000000000000000000000000000000000001c113d00000000000000000000000000000000000000000000000000000000001c113e08006838aa99533bea0d4204cad17cb3c147e99c2f9089e54a4289d54733eeada2002ab314bd11ace2494a3fb0970d276da39f0fe7da19c9a2438b9c7c334d32470071703d79d8425a7eca52006df6a8f9728508a83639e3e1c2ebae2b853a087c00c9501ac04a78ac5413c9131b08708064ed2c2515b8893f12c2d1cda15a44f100a0955f93e109778d26f9e5b0d46e45c539e59b0941517bfa888eb2d7d2d8a6005adc3be9406cc5f102c6adb44746e8529a256e2396353a8659344cc3e914c4007a5fe572cf6af804f472dabf095c5eb6b30efc5fd627ad3245a8ef0f3f578c003dcaa91dfc9fdad7ba8da68a48fc662dfc0a995cbb0c1bc62099c8257d240d3f00000000000000000000000000000000000000000000000000000000001c200000000000000000000000000000000000000000000000000000000000001c200a00000000000000000000000000000000000000000000000000000000001c200100000000000000000000000000000000000000000000000000000000001c200b00000000000000000000000000000000000000000000000000000000001c200200000000000000000000000000000000000000000000000000000000001c200c00000000000000000000000000000000000000000000000000000000001c200300000000000000000000000000000000000000000000000000000000001c200d00000000000000000000000000000000000000000000000000000000001c200400000000000000000000000000000000000000000000000000000000001c200e00000000000000000000000000000000000000000000000000000000001c200500000000000000000000000000000000000000000000000000000000001c200f00000000000000000000000000000000000000000000000000000000001c200600000000000000000000000000000000000000000000000000000000001c201000000000000000000000000000000000000000000000000000000000001c200700000000000000000000000000000000000000000000000000000000001c201100000000000000000000000000000000000000000000000000000000001c200800000000000000000000000000000000000000000000000000000000001c201200000000000000000000000000000000000000000000000000000000001c200900000000000000000000000000000000000000000000000000000000001c201300000000000000000000000000000000000000000000000000000000001c200a00000000000000000000000000000000000000000000000000000000001c201400000000000000000000000000000000000000000000000000000000001c200b00000000000000000000000000000000000000000000000000000000001c201500000000000000000000000000000000000000000000000000000000001c200c00000000000000000000000000000000000000000000000000000000001c201600000000000000000000000000000000000000000000000000000000001c200d00000000000000000000000000000000000000000000000000000000001c201700000000000000000000000000000000000000000000000000000000001c200e00000000000000000000000000000000000000000000000000000000001c201800000000000000000000000000000000000000000000000000000000001c200f00000000000000000000000000000000000000000000000000000000001c201900000000000000000000000000000000000000000000000000000000001c201000000000000000000000000000000000000000000000000000000000001c201a00000000000000000000000000000000000000000000000000000000001c201100000000000000000000000000000000000000000000000000000000001c201b00000000000000000000000000000000000000000000000000000000001c201200000000000000000000000000000000000000000000000000000000001c201c00000000000000000000000000000000000000000000000000000000001c201300000000000000000000000000000000000000000000000000000000001c201d00000000000000000000000000000000000000000000000000000000001c201400000000000000000000000000000000000000000000000000000000001c201e00000000000000000000000000000000000000000000000000000000001c201500000000000000000000000000000000000000000000000000000000001c201f00000000000000000000000000000000000000000000000000000000001c201600000000000000000000000000000000000000000000000000000000001c202000000000000000000000000000000000000000000000000000000000001c201700000000000000000000000000000000000000000000000000000000001c202100000000000000000000000000000000000000000000000000000000001c201800000000000000000000000000000000000000000000000000000000001c202200000000000000000000000000000000000000000000000000000000001c201900000000000000000000000000000000000000000000000000000000001c202300000000000000000000000000000000000000000000000000000000001c201a00000000000000000000000000000000000000000000000000000000001c202400000000000000000000000000000000000000000000000000000000001c201b00000000000000000000000000000000000000000000000000000000001c202500000000000000000000000000000000000000000000000000000000001c201c00000000000000000000000000000000000000000000000000000000001c202600000000000000000000000000000000000000000000000000000000001c201d00000000000000000000000000000000000000000000000000000000001c202700000000000000000000000000000000000000000000000000000000001c201e00000000000000000000000000000000000000000000000000000000001c202800000000000000000000000000000000000000000000000000000000001c201f00000000000000000000000000000000000000000000000000000000001c202900000000000000000000000000000000000000000000000000000000001c202000000000000000000000000000000000000000000000000000000000001c202a00000000000000000000000000000000000000000000000000000000001c202100000000000000000000000000000000000000000000000000000000001c202b00000000000000000000000000000000000000000000000000000000001c202200000000000000000000000000000000000000000000000000000000001c202c00000000000000000000000000000000000000000000000000000000001c202300000000000000000000000000000000000000000000000000000000001c202d00000000000000000000000000000000000000000000000000000000001c202400000000000000000000000000000000000000000000000000000000001c202e00000000000000000000000000000000000000000000000000000000001c202500000000000000000000000000000000000000000000000000000000001c202f00000000000000000000000000000000000000000000000000000000001c202600000000000000000000000000000000000000000000000000000000001c203000000000000000000000000000000000000000000000000000000000001c202700000000000000000000000000000000000000000000000000000000001c203100000000000000000000000000000000000000000000000000000000001c202800000000000000000000000000000000000000000000000000000000001c203200000000000000000000000000000000000000000000000000000000001c202900000000000000000000000000000000000000000000000000000000001c203300000000000000000000000000000000000000000000000000000000001c202a00000000000000000000000000000000000000000000000000000000001c203400000000000000000000000000000000000000000000000000000000001c202b00000000000000000000000000000000000000000000000000000000001c203500000000000000000000000000000000000000000000000000000000001c202c00000000000000000000000000000000000000000000000000000000001c203600000000000000000000000000000000000000000000000000000000001c202d00000000000000000000000000000000000000000000000000000000001c203700000000000000000000000000000000000000000000000000000000001c202e00000000000000000000000000000000000000000000000000000000001c203800000000000000000000000000000000000000000000000000000000001c202f00000000000000000000000000000000000000000000000000000000001c203900000000000000000000000000000000000000000000000000000000001c203000000000000000000000000000000000000000000000000000000000001c203a00000000000000000000000000000000000000000000000000000000001c203100000000000000000000000000000000000000000000000000000000001c203b00000000000000000000000000000000000000000000000000000000001c203200000000000000000000000000000000000000000000000000000000001c203c00000000000000000000000000000000000000000000000000000000001c203300000000000000000000000000000000000000000000000000000000001c203d00000000000000000000000000000000000000000000000000000000001c203400000000000000000000000000000000000000000000000000000000001c203e00000000000000000000000000000000000000000000000000000000001c203500000000000000000000000000000000000000000000000000000000001c203f00000000000000000000000000000000000000000000000000000000001c203600000000000000000000000000000000000000000000000000000000001c204000000000000000000000000000000000000000000000000000000000001c203700000000000000000000000000000000000000000000000000000000001c204100000000000000000000000000000000000000000000000000000000001c203800000000000000000000000000000000000000000000000000000000001c204200000000000000000000000000000000000000000000000000000000001c203900000000000000000000000000000000000000000000000000000000001c204300000000000000000000000000000000000000000000000000000000001c203a00000000000000000000000000000000000000000000000000000000001c204400000000000000000000000000000000000000000000000000000000001c203b00000000000000000000000000000000000000000000000000000000001c204500000000000000000000000000000000000000000000000000000000001c203c00000000000000000000000000000000000000000000000000000000001c204600000000000000000000000000000000000000000000000000000000001c203d00000000000000000000000000000000000000000000000000000000001c204700000000000000000000000000000000000000000000000000000000001c203e00000000000000000000000000000000000000000000000000000000001c2048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000201000000000000000000000000000000000000000000000000000000000000020100100000000000000000000000000000000000000000000000000000000002010020000000000000000000000000000000000000000000000000000000000201003000000000000000000000000000000000000000000000000000000000020100400000000000000000000000000000000000000000000000000000000002010050000000000000000000000000000000000000000000000000000000000201006000000000000000000000000000000000000000000000000000000000020100700000000000000000000000000000000000000000000000000000000002010080000000000000000000000000000000000000000000000000000000000201009000000000000000000000000000000000000000000000000000000000020100a000000000000000000000000000000000000000000000000000000000020100b000000000000000000000000000000000000000000000000000000000020100c000000000000000000000000000000000000000000000000000000000020100d000000000000000000000000000000000000000000000000000000000020100e000000000000000000000000000000000000000000000000000000000020100f0000000000000000000000000000000000000000000000000000000000201010000000000000000000000000000000000000000000000000000000000020101100000000000000000000000000000000000000000000000000000000002010120000000000000000000000000000000000000000000000000000000000201013000000000000000000000000000000000000000000000000000000000020101400000000000000000000000000000000000000000000000000000000002010150000000000000000000000000000000000000000000000000000000000201016000000000000000000000000000000000000000000000000000000000020101700000000000000000000000000000000000000000000000000000000002010180000000000000000000000000000000000000000000000000000000000201019000000000000000000000000000000000000000000000000000000000020101a000000000000000000000000000000000000000000000000000000000020101b000000000000000000000000000000000000000000000000000000000020101c000000000000000000000000000000000000000000000000000000000020101d000000000000000000000000000000000000000000000000000000000020101e000000000000000000000000000000000000000000000000000000000020101f0000000000000000000000000000000000000000000000000000000000201020000000000000000000000000000000000000000000000000000000000020102100000000000000000000000000000000000000000000000000000000002010220000000000000000000000000000000000000000000000000000000000201023000000000000000000000000000000000000000000000000000000000020102400000000000000000000000000000000000000000000000000000000002010250000000000000000000000000000000000000000000000000000000000201026000000000000000000000000000000000000000000000000000000000020102700000000000000000000000000000000000000000000000000000000002010280000000000000000000000000000000000000000000000000000000000201029000000000000000000000000000000000000000000000000000000000020102a000000000000000000000000000000000000000000000000000000000020102b000000000000000000000000000000000000000000000000000000000020102c000000000000000000000000000000000000000000000000000000000020102d000000000000000000000000000000000000000000000000000000000020102e000000000000000000000000000000000000000000000000000000000020102f0000000000000000000000000000000000000000000000000000000000201030000000000000000000000000000000000000000000000000000000000020103100000000000000000000000000000000000000000000000000000000002010320000000000000000000000000000000000000000000000000000000000201033000000000000000000000000000000000000000000000000000000000020103400000000000000000000000000000000000000000000000000000000002010350000000000000000000000000000000000000000000000000000000000201036000000000000000000000000000000000000000000000000000000000020103700000000000000000000000000000000000000000000000000000000002010380000000000000000000000000000000000000000000000000000000000201039000000000000000000000000000000000000000000000000000000000020103a000000000000000000000000000000000000000000000000000000000020103b000000000000000000000000000000000000000000000000000000000020103c000000000000000000000000000000000000000000000000000000000020103d000000000000000000000000000000000000000000000000000000000020103e000000000000000000000000000000000000000000000000000000000020103f3f0000000000000000000000000000000000000000000000000000000000201100000000000000000000000000000000000000000000000000000000000020110100000000000000000000000000000000000000000000000000000000002011020000000000000000000000000000000000000000000000000000000000201103000000000000000000000000000000000000000000000000000000000020110400000000000000000000000000000000000000000000000000000000002011050000000000000000000000000000000000000000000000000000000000201106000000000000000000000000000000000000000000000000000000000020110700000000000000000000000000000000000000000000000000000000002011080000000000000000000000000000000000000000000000000000000000201109000000000000000000000000000000000000000000000000000000000020110a000000000000000000000000000000000000000000000000000000000020110b000000000000000000000000000000000000000000000000000000000020110c000000000000000000000000000000000000000000000000000000000020110d000000000000000000000000000000000000000000000000000000000020110e000000000000000000000000000000000000000000000000000000000020110f0000000000000000000000000000000000000000000000000000000000201110000000000000000000000000000000000000000000000000000000000020111100000000000000000000000000000000000000000000000000000000002011120000000000000000000000000000000000000000000000000000000000201113000000000000000000000000000000000000000000000000000000000020111400000000000000000000000000000000000000000000000000000000002011150000000000000000000000000000000000000000000000000000000000201116000000000000000000000000000000000000000000000000000000000020111700000000000000000000000000000000000000000000000000000000002011180000000000000000000000000000000000000000000000000000000000201119000000000000000000000000000000000000000000000000000000000020111a000000000000000000000000000000000000000000000000000000000020111b000000000000000000000000000000000000000000000000000000000020111c000000000000000000000000000000000000000000000000000000000020111d000000000000000000000000000000000000000000000000000000000020111e000000000000000000000000000000000000000000000000000000000020111f0000000000000000000000000000000000000000000000000000000000201120000000000000000000000000000000000000000000000000000000000020112100000000000000000000000000000000000000000000000000000000002011220000000000000000000000000000000000000000000000000000000000201123000000000000000000000000000000000000000000000000000000000020112400000000000000000000000000000000000000000000000000000000002011250000000000000000000000000000000000000000000000000000000000201126000000000000000000000000000000000000000000000000000000000020112700000000000000000000000000000000000000000000000000000000002011280000000000000000000000000000000000000000000000000000000000201129000000000000000000000000000000000000000000000000000000000020112a000000000000000000000000000000000000000000000000000000000020112b000000000000000000000000000000000000000000000000000000000020112c000000000000000000000000000000000000000000000000000000000020112d000000000000000000000000000000000000000000000000000000000020112e000000000000000000000000000000000000000000000000000000000020112f0000000000000000000000000000000000000000000000000000000000201130000000000000000000000000000000000000000000000000000000000020113100000000000000000000000000000000000000000000000000000000002011320000000000000000000000000000000000000000000000000000000000201133000000000000000000000000000000000000000000000000000000000020113400000000000000000000000000000000000000000000000000000000002011350000000000000000000000000000000000000000000000000000000000201136000000000000000000000000000000000000000000000000000000000020113700000000000000000000000000000000000000000000000000000000002011380000000000000000000000000000000000000000000000000000000000201139000000000000000000000000000000000000000000000000000000000020113a000000000000000000000000000000000000000000000000000000000020113b000000000000000000000000000000000000000000000000000000000020113c000000000000000000000000000000000000000000000000000000000020113d000000000000000000000000000000000000000000000000000000000020113e0800e9805e8a4faa87fc419af08a6d956f18976c46ea694bbd4cf6946e6d02033200e0925a6b172b4b01bb76eb1d3f7dd2ced118bca70d223a6d61afa1b75915ae00383590492d2f99a0283d1de57015b4b6b0759a8023af2c68fb4929dee2f303007ed57100dd77e2b6405f780503ef61b7b53e13f344b6e6a6eff3e3c13de0d0001ab1b0c348c46184dbc86ff79f248e7da1b09d3f9c6a986e98fe45389f060d0023d134bc68d7efa25e255001069827dc0bee766c08c988d6300071ed27fe6c0031cbb780b07f632cbaf767dc80608cc0a8e1d1df3ecd6f5d8bc0ca6703e4f4002c7dc9e731fc5f6456b2a70b4e636ac17d5e0cd36d3a591116a9e124f735863f0000000000000000000000000000000000000000000000000000000000202000000000000000000000000000000000000000000000000000000000000020200a0000000000000000000000000000000000000000000000000000000000202001000000000000000000000000000000000000000000000000000000000020200b0000000000000000000000000000000000000000000000000000000000202002000000000000000000000000000000000000000000000000000000000020200c0000000000000000000000000000000000000000000000000000000000202003000000000000000000000000000000000000000000000000000000000020200d0000000000000000000000000000000000000000000000000000000000202004000000000000000000000000000000000000000000000000000000000020200e0000000000000000000000000000000000000000000000000000000000202005000000000000000000000000000000000000000000000000000000000020200f00000000000000000000000000000000000000000000000000000000002020060000000000000000000000000000000000000000000000000000000000202010000000000000000000000000000000000000000000000000000000000020200700000000000000000000000000000000000000000000000000000000002020110000000000000000000000000000000000000000000000000000000000202008000000000000000000000000000000000000000000000000000000000020201200000000000000000000000000000000000000000000000000000000002020090000000000000000000000000000000000000000000000000000000000202013000000000000000000000000000000000000000000000000000000000020200a0000000000000000000000000000000000000000000000000000000000202014000000000000000000000000000000000000000000000000000000000020200b0000000000000000000000000000000000000000000000000000000000202015000000000000000000000000000000000000000000000000000000000020200c0000000000000000000000000000000000000000000000000000000000202016000000000000000000000000000000000000000000000000000000000020200d0000000000000000000000000000000000000000000000000000000000202017000000000000000000000000000000000000000000000000000000000020200e0000000000000000000000000000000000000000000000000000000000202018000000000000000000000000000000000000000000000000000000000020200f00000000000000000000000000000000000000000000000000000000002020190000000000000000000000000000000000000000000000000000000000202010000000000000000000000000000000000000000000000000000000000020201a0000000000000000000000000000000000000000000000000000000000202011000000000000000000000000000000000000000000000000000000000020201b0000000000000000000000000000000000000000000000000000000000202012000000000000000000000000000000000000000000000000000000000020201c0000000000000000000000000000000000000000000000000000000000202013000000000000000000000000000000000000000000000000000000000020201d0000000000000000000000000000000000000000000000000000000000202014000000000000000000000000000000000000000000000000000000000020201e0000000000000000000000000000000000000000000000000000000000202015000000000000000000000000000000000000000000000000000000000020201f00000000000000000000000000000000000000000000000000000000002020160000000000000000000000000000000000000000000000000000000000202020000000000000000000000000000000000000000000000000000000000020201700000000000000000000000000000000000000000000000000000000002020210000000000000000000000000000000000000000000000000000000000202018000000000000000000000000000000000000000000000000000000000020202200000000000000000000000000000000000000000000000000000000002020190000000000000000000000000000000000000000000000000000000000202023000000000000000000000000000000000000000000000000000000000020201a0000000000000000000000000000000000000000000000000000000000202024000000000000000000000000000000000000000000000000000000000020201b0000000000000000000000000000000000000000000000000000000000202025000000000000000000000000000000000000000000000000000000000020201c0000000000000000000000000000000000000000000000000000000000202026000000000000000000000000000000000000000000000000000000000020201d0000000000000000000000000000000000000000000000000000000000202027000000000000000000000000000000000000000000000000000000000020201e0000000000000000000000000000000000000000000000000000000000202028000000000000000000000000000000000000000000000000000000000020201f00000000000000000000000000000000000000000000000000000000002020290000000000000000000000000000000000000000000000000000000000202020000000000000000000000000000000000000000000000000000000000020202a0000000000000000000000000000000000000000000000000000000000202021000000000000000000000000000000000000000000000000000000000020202b0000000000000000000000000000000000000000000000000000000000202022000000000000000000000000000000000000000000000000000000000020202c0000000000000000000000000000000000000000000000000000000000202023000000000000000000000000000000000000000000000000000000000020202d0000000000000000000000000000000000000000000000000000000000202024000000000000000000000000000000000000000000000000000000000020202e0000000000000000000000000000000000000000000000000000000000202025000000000000000000000000000000000000000000000000000000000020202f00000000000000000000000000000000000000000000000000000000002020260000000000000000000000000000000000000000000000000000000000202030000000000000000000000000000000000000000000000000000000000020202700000000000000000000000000000000000000000000000000000000002020310000000000000000000000000000000000000000000000000000000000202028000000000000000000000000000000000000000000000000000000000020203200000000000000000000000000000000000000000000000000000000002020290000000000000000000000000000000000000000000000000000000000202033000000000000000000000000000000000000000000000000000000000020202a0000000000000000000000000000000000000000000000000000000000202034000000000000000000000000000000000000000000000000000000000020202b0000000000000000000000000000000000000000000000000000000000202035000000000000000000000000000000000000000000000000000000000020202c0000000000000000000000000000000000000000000000000000000000202036000000000000000000000000000000000000000000000000000000000020202d0000000000000000000000000000000000000000000000000000000000202037000000000000000000000000000000000000000000000000000000000020202e0000000000000000000000000000000000000000000000000000000000202038000000000000000000000000000000000000000000000000000000000020202f00000000000000000000000000000000000000000000000000000000002020390000000000000000000000000000000000000000000000000000000000202030000000000000000000000000000000000000000000000000000000000020203a0000000000000000000000000000000000000000000000000000000000202031000000000000000000000000000000000000000000000000000000000020203b0000000000000000000000000000000000000000000000000000000000202032000000000000000000000000000000000000000000000000000000000020203c0000000000000000000000000000000000000000000000000000000000202033000000000000000000000000000000000000000000000000000000000020203d0000000000000000000000000000000000000000000000000000000000202034000000000000000000000000000000000000000000000000000000000020203e0000000000000000000000000000000000000000000000000000000000202035000000000000000000000000000000000000000000000000000000000020203f00000000000000000000000000000000000000000000000000000000002020360000000000000000000000000000000000000000000000000000000000202040000000000000000000000000000000000000000000000000000000000020203700000000000000000000000000000000000000000000000000000000002020410000000000000000000000000000000000000000000000000000000000202038000000000000000000000000000000000000000000000000000000000020204200000000000000000000000000000000000000000000000000000000002020390000000000000000000000000000000000000000000000000000000000202043000000000000000000000000000000000000000000000000000000000020203a0000000000000000000000000000000000000000000000000000000000202044000000000000000000000000000000000000000000000000000000000020203b0000000000000000000000000000000000000000000000000000000000202045000000000000000000000000000000000000000000000000000000000020203c0000000000000000000000000000000000000000000000000000000000202046000000000000000000000000000000000000000000000000000000000020203d0000000000000000000000000000000000000000000000000000000000202047000000000000000000000000000000000000000000000000000000000020203e0000000000000000000000000000000000000000000000000000000000202048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "txsEffectsHash": "0x00d2d12b4d0c6202124a7625c585097078920e09dd2c650401a91b564234a6b4", + "archive": "0x0e0f11309acd34a0d37d7c714c1d8fe5fc74fb2322b8ee137b4471cbf61dd7c3", + "blockHash": "0x0ad98a1ccdc542d10f3fde78b9d31058fc4d6f1bbffe11333c0b4b8dd0ecce0c", + "body": "0x00000004000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000141000000000000000000000000000000000000000000000000000000000000014100100000000000000000000000000000000000000000000000000000000001410020000000000000000000000000000000000000000000000000000000000141003000000000000000000000000000000000000000000000000000000000014100400000000000000000000000000000000000000000000000000000000001410050000000000000000000000000000000000000000000000000000000000141006000000000000000000000000000000000000000000000000000000000014100700000000000000000000000000000000000000000000000000000000001410080000000000000000000000000000000000000000000000000000000000141009000000000000000000000000000000000000000000000000000000000014100a000000000000000000000000000000000000000000000000000000000014100b000000000000000000000000000000000000000000000000000000000014100c000000000000000000000000000000000000000000000000000000000014100d000000000000000000000000000000000000000000000000000000000014100e000000000000000000000000000000000000000000000000000000000014100f0000000000000000000000000000000000000000000000000000000000141010000000000000000000000000000000000000000000000000000000000014101100000000000000000000000000000000000000000000000000000000001410120000000000000000000000000000000000000000000000000000000000141013000000000000000000000000000000000000000000000000000000000014101400000000000000000000000000000000000000000000000000000000001410150000000000000000000000000000000000000000000000000000000000141016000000000000000000000000000000000000000000000000000000000014101700000000000000000000000000000000000000000000000000000000001410180000000000000000000000000000000000000000000000000000000000141019000000000000000000000000000000000000000000000000000000000014101a000000000000000000000000000000000000000000000000000000000014101b000000000000000000000000000000000000000000000000000000000014101c000000000000000000000000000000000000000000000000000000000014101d000000000000000000000000000000000000000000000000000000000014101e000000000000000000000000000000000000000000000000000000000014101f0000000000000000000000000000000000000000000000000000000000141020000000000000000000000000000000000000000000000000000000000014102100000000000000000000000000000000000000000000000000000000001410220000000000000000000000000000000000000000000000000000000000141023000000000000000000000000000000000000000000000000000000000014102400000000000000000000000000000000000000000000000000000000001410250000000000000000000000000000000000000000000000000000000000141026000000000000000000000000000000000000000000000000000000000014102700000000000000000000000000000000000000000000000000000000001410280000000000000000000000000000000000000000000000000000000000141029000000000000000000000000000000000000000000000000000000000014102a000000000000000000000000000000000000000000000000000000000014102b000000000000000000000000000000000000000000000000000000000014102c000000000000000000000000000000000000000000000000000000000014102d000000000000000000000000000000000000000000000000000000000014102e000000000000000000000000000000000000000000000000000000000014102f0000000000000000000000000000000000000000000000000000000000141030000000000000000000000000000000000000000000000000000000000014103100000000000000000000000000000000000000000000000000000000001410320000000000000000000000000000000000000000000000000000000000141033000000000000000000000000000000000000000000000000000000000014103400000000000000000000000000000000000000000000000000000000001410350000000000000000000000000000000000000000000000000000000000141036000000000000000000000000000000000000000000000000000000000014103700000000000000000000000000000000000000000000000000000000001410380000000000000000000000000000000000000000000000000000000000141039000000000000000000000000000000000000000000000000000000000014103a000000000000000000000000000000000000000000000000000000000014103b000000000000000000000000000000000000000000000000000000000014103c000000000000000000000000000000000000000000000000000000000014103d000000000000000000000000000000000000000000000000000000000014103e000000000000000000000000000000000000000000000000000000000014103f3f0000000000000000000000000000000000000000000000000000000000141100000000000000000000000000000000000000000000000000000000000014110100000000000000000000000000000000000000000000000000000000001411020000000000000000000000000000000000000000000000000000000000141103000000000000000000000000000000000000000000000000000000000014110400000000000000000000000000000000000000000000000000000000001411050000000000000000000000000000000000000000000000000000000000141106000000000000000000000000000000000000000000000000000000000014110700000000000000000000000000000000000000000000000000000000001411080000000000000000000000000000000000000000000000000000000000141109000000000000000000000000000000000000000000000000000000000014110a000000000000000000000000000000000000000000000000000000000014110b000000000000000000000000000000000000000000000000000000000014110c000000000000000000000000000000000000000000000000000000000014110d000000000000000000000000000000000000000000000000000000000014110e000000000000000000000000000000000000000000000000000000000014110f0000000000000000000000000000000000000000000000000000000000141110000000000000000000000000000000000000000000000000000000000014111100000000000000000000000000000000000000000000000000000000001411120000000000000000000000000000000000000000000000000000000000141113000000000000000000000000000000000000000000000000000000000014111400000000000000000000000000000000000000000000000000000000001411150000000000000000000000000000000000000000000000000000000000141116000000000000000000000000000000000000000000000000000000000014111700000000000000000000000000000000000000000000000000000000001411180000000000000000000000000000000000000000000000000000000000141119000000000000000000000000000000000000000000000000000000000014111a000000000000000000000000000000000000000000000000000000000014111b000000000000000000000000000000000000000000000000000000000014111c000000000000000000000000000000000000000000000000000000000014111d000000000000000000000000000000000000000000000000000000000014111e000000000000000000000000000000000000000000000000000000000014111f0000000000000000000000000000000000000000000000000000000000141120000000000000000000000000000000000000000000000000000000000014112100000000000000000000000000000000000000000000000000000000001411220000000000000000000000000000000000000000000000000000000000141123000000000000000000000000000000000000000000000000000000000014112400000000000000000000000000000000000000000000000000000000001411250000000000000000000000000000000000000000000000000000000000141126000000000000000000000000000000000000000000000000000000000014112700000000000000000000000000000000000000000000000000000000001411280000000000000000000000000000000000000000000000000000000000141129000000000000000000000000000000000000000000000000000000000014112a000000000000000000000000000000000000000000000000000000000014112b000000000000000000000000000000000000000000000000000000000014112c000000000000000000000000000000000000000000000000000000000014112d000000000000000000000000000000000000000000000000000000000014112e000000000000000000000000000000000000000000000000000000000014112f0000000000000000000000000000000000000000000000000000000000141130000000000000000000000000000000000000000000000000000000000014113100000000000000000000000000000000000000000000000000000000001411320000000000000000000000000000000000000000000000000000000000141133000000000000000000000000000000000000000000000000000000000014113400000000000000000000000000000000000000000000000000000000001411350000000000000000000000000000000000000000000000000000000000141136000000000000000000000000000000000000000000000000000000000014113700000000000000000000000000000000000000000000000000000000001411380000000000000000000000000000000000000000000000000000000000141139000000000000000000000000000000000000000000000000000000000014113a000000000000000000000000000000000000000000000000000000000014113b000000000000000000000000000000000000000000000000000000000014113c000000000000000000000000000000000000000000000000000000000014113d000000000000000000000000000000000000000000000000000000000014113e08005c015113cb57d67dd6c0febd596819ac0298b6a23fc80aba17d445d540059a00f20b7d1308051fe7b68031a7c336b0b4b56738928b6510133aff1b818d5a9a0063eec1883a4f95f4933f9275e850d84b3d035f5061ed986c437a07331fd30e00d3a32d6bbc4fd843686fd0c5e118a73b847529977dca5b9e0e81f6604f22ca00c2f4f5133d9194d41e853e5e951e16690babce8461f25342c0bad20f2aa1e3000a6bf4739e7eb387913d955dc2e8f14f8cce27696b9d2e128b6acefafb80ee005763f7e0648f958b559677622a648f318fc79ebc0cb539170d49c26456e69200302e2b8a92cda941e9af8761b89899a58a587656d9710594e1d865b16522993f0000000000000000000000000000000000000000000000000000000000142000000000000000000000000000000000000000000000000000000000000014200a0000000000000000000000000000000000000000000000000000000000142001000000000000000000000000000000000000000000000000000000000014200b0000000000000000000000000000000000000000000000000000000000142002000000000000000000000000000000000000000000000000000000000014200c0000000000000000000000000000000000000000000000000000000000142003000000000000000000000000000000000000000000000000000000000014200d0000000000000000000000000000000000000000000000000000000000142004000000000000000000000000000000000000000000000000000000000014200e0000000000000000000000000000000000000000000000000000000000142005000000000000000000000000000000000000000000000000000000000014200f00000000000000000000000000000000000000000000000000000000001420060000000000000000000000000000000000000000000000000000000000142010000000000000000000000000000000000000000000000000000000000014200700000000000000000000000000000000000000000000000000000000001420110000000000000000000000000000000000000000000000000000000000142008000000000000000000000000000000000000000000000000000000000014201200000000000000000000000000000000000000000000000000000000001420090000000000000000000000000000000000000000000000000000000000142013000000000000000000000000000000000000000000000000000000000014200a0000000000000000000000000000000000000000000000000000000000142014000000000000000000000000000000000000000000000000000000000014200b0000000000000000000000000000000000000000000000000000000000142015000000000000000000000000000000000000000000000000000000000014200c0000000000000000000000000000000000000000000000000000000000142016000000000000000000000000000000000000000000000000000000000014200d0000000000000000000000000000000000000000000000000000000000142017000000000000000000000000000000000000000000000000000000000014200e0000000000000000000000000000000000000000000000000000000000142018000000000000000000000000000000000000000000000000000000000014200f00000000000000000000000000000000000000000000000000000000001420190000000000000000000000000000000000000000000000000000000000142010000000000000000000000000000000000000000000000000000000000014201a0000000000000000000000000000000000000000000000000000000000142011000000000000000000000000000000000000000000000000000000000014201b0000000000000000000000000000000000000000000000000000000000142012000000000000000000000000000000000000000000000000000000000014201c0000000000000000000000000000000000000000000000000000000000142013000000000000000000000000000000000000000000000000000000000014201d0000000000000000000000000000000000000000000000000000000000142014000000000000000000000000000000000000000000000000000000000014201e0000000000000000000000000000000000000000000000000000000000142015000000000000000000000000000000000000000000000000000000000014201f00000000000000000000000000000000000000000000000000000000001420160000000000000000000000000000000000000000000000000000000000142020000000000000000000000000000000000000000000000000000000000014201700000000000000000000000000000000000000000000000000000000001420210000000000000000000000000000000000000000000000000000000000142018000000000000000000000000000000000000000000000000000000000014202200000000000000000000000000000000000000000000000000000000001420190000000000000000000000000000000000000000000000000000000000142023000000000000000000000000000000000000000000000000000000000014201a0000000000000000000000000000000000000000000000000000000000142024000000000000000000000000000000000000000000000000000000000014201b0000000000000000000000000000000000000000000000000000000000142025000000000000000000000000000000000000000000000000000000000014201c0000000000000000000000000000000000000000000000000000000000142026000000000000000000000000000000000000000000000000000000000014201d0000000000000000000000000000000000000000000000000000000000142027000000000000000000000000000000000000000000000000000000000014201e0000000000000000000000000000000000000000000000000000000000142028000000000000000000000000000000000000000000000000000000000014201f00000000000000000000000000000000000000000000000000000000001420290000000000000000000000000000000000000000000000000000000000142020000000000000000000000000000000000000000000000000000000000014202a0000000000000000000000000000000000000000000000000000000000142021000000000000000000000000000000000000000000000000000000000014202b0000000000000000000000000000000000000000000000000000000000142022000000000000000000000000000000000000000000000000000000000014202c0000000000000000000000000000000000000000000000000000000000142023000000000000000000000000000000000000000000000000000000000014202d0000000000000000000000000000000000000000000000000000000000142024000000000000000000000000000000000000000000000000000000000014202e0000000000000000000000000000000000000000000000000000000000142025000000000000000000000000000000000000000000000000000000000014202f00000000000000000000000000000000000000000000000000000000001420260000000000000000000000000000000000000000000000000000000000142030000000000000000000000000000000000000000000000000000000000014202700000000000000000000000000000000000000000000000000000000001420310000000000000000000000000000000000000000000000000000000000142028000000000000000000000000000000000000000000000000000000000014203200000000000000000000000000000000000000000000000000000000001420290000000000000000000000000000000000000000000000000000000000142033000000000000000000000000000000000000000000000000000000000014202a0000000000000000000000000000000000000000000000000000000000142034000000000000000000000000000000000000000000000000000000000014202b0000000000000000000000000000000000000000000000000000000000142035000000000000000000000000000000000000000000000000000000000014202c0000000000000000000000000000000000000000000000000000000000142036000000000000000000000000000000000000000000000000000000000014202d0000000000000000000000000000000000000000000000000000000000142037000000000000000000000000000000000000000000000000000000000014202e0000000000000000000000000000000000000000000000000000000000142038000000000000000000000000000000000000000000000000000000000014202f00000000000000000000000000000000000000000000000000000000001420390000000000000000000000000000000000000000000000000000000000142030000000000000000000000000000000000000000000000000000000000014203a0000000000000000000000000000000000000000000000000000000000142031000000000000000000000000000000000000000000000000000000000014203b0000000000000000000000000000000000000000000000000000000000142032000000000000000000000000000000000000000000000000000000000014203c0000000000000000000000000000000000000000000000000000000000142033000000000000000000000000000000000000000000000000000000000014203d0000000000000000000000000000000000000000000000000000000000142034000000000000000000000000000000000000000000000000000000000014203e0000000000000000000000000000000000000000000000000000000000142035000000000000000000000000000000000000000000000000000000000014203f00000000000000000000000000000000000000000000000000000000001420360000000000000000000000000000000000000000000000000000000000142040000000000000000000000000000000000000000000000000000000000014203700000000000000000000000000000000000000000000000000000000001420410000000000000000000000000000000000000000000000000000000000142038000000000000000000000000000000000000000000000000000000000014204200000000000000000000000000000000000000000000000000000000001420390000000000000000000000000000000000000000000000000000000000142043000000000000000000000000000000000000000000000000000000000014203a0000000000000000000000000000000000000000000000000000000000142044000000000000000000000000000000000000000000000000000000000014203b0000000000000000000000000000000000000000000000000000000000142045000000000000000000000000000000000000000000000000000000000014203c0000000000000000000000000000000000000000000000000000000000142046000000000000000000000000000000000000000000000000000000000014203d0000000000000000000000000000000000000000000000000000000000142047000000000000000000000000000000000000000000000000000000000014203e0000000000000000000000000000000000000000000000000000000000142048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000181000000000000000000000000000000000000000000000000000000000000018100100000000000000000000000000000000000000000000000000000000001810020000000000000000000000000000000000000000000000000000000000181003000000000000000000000000000000000000000000000000000000000018100400000000000000000000000000000000000000000000000000000000001810050000000000000000000000000000000000000000000000000000000000181006000000000000000000000000000000000000000000000000000000000018100700000000000000000000000000000000000000000000000000000000001810080000000000000000000000000000000000000000000000000000000000181009000000000000000000000000000000000000000000000000000000000018100a000000000000000000000000000000000000000000000000000000000018100b000000000000000000000000000000000000000000000000000000000018100c000000000000000000000000000000000000000000000000000000000018100d000000000000000000000000000000000000000000000000000000000018100e000000000000000000000000000000000000000000000000000000000018100f0000000000000000000000000000000000000000000000000000000000181010000000000000000000000000000000000000000000000000000000000018101100000000000000000000000000000000000000000000000000000000001810120000000000000000000000000000000000000000000000000000000000181013000000000000000000000000000000000000000000000000000000000018101400000000000000000000000000000000000000000000000000000000001810150000000000000000000000000000000000000000000000000000000000181016000000000000000000000000000000000000000000000000000000000018101700000000000000000000000000000000000000000000000000000000001810180000000000000000000000000000000000000000000000000000000000181019000000000000000000000000000000000000000000000000000000000018101a000000000000000000000000000000000000000000000000000000000018101b000000000000000000000000000000000000000000000000000000000018101c000000000000000000000000000000000000000000000000000000000018101d000000000000000000000000000000000000000000000000000000000018101e000000000000000000000000000000000000000000000000000000000018101f0000000000000000000000000000000000000000000000000000000000181020000000000000000000000000000000000000000000000000000000000018102100000000000000000000000000000000000000000000000000000000001810220000000000000000000000000000000000000000000000000000000000181023000000000000000000000000000000000000000000000000000000000018102400000000000000000000000000000000000000000000000000000000001810250000000000000000000000000000000000000000000000000000000000181026000000000000000000000000000000000000000000000000000000000018102700000000000000000000000000000000000000000000000000000000001810280000000000000000000000000000000000000000000000000000000000181029000000000000000000000000000000000000000000000000000000000018102a000000000000000000000000000000000000000000000000000000000018102b000000000000000000000000000000000000000000000000000000000018102c000000000000000000000000000000000000000000000000000000000018102d000000000000000000000000000000000000000000000000000000000018102e000000000000000000000000000000000000000000000000000000000018102f0000000000000000000000000000000000000000000000000000000000181030000000000000000000000000000000000000000000000000000000000018103100000000000000000000000000000000000000000000000000000000001810320000000000000000000000000000000000000000000000000000000000181033000000000000000000000000000000000000000000000000000000000018103400000000000000000000000000000000000000000000000000000000001810350000000000000000000000000000000000000000000000000000000000181036000000000000000000000000000000000000000000000000000000000018103700000000000000000000000000000000000000000000000000000000001810380000000000000000000000000000000000000000000000000000000000181039000000000000000000000000000000000000000000000000000000000018103a000000000000000000000000000000000000000000000000000000000018103b000000000000000000000000000000000000000000000000000000000018103c000000000000000000000000000000000000000000000000000000000018103d000000000000000000000000000000000000000000000000000000000018103e000000000000000000000000000000000000000000000000000000000018103f3f0000000000000000000000000000000000000000000000000000000000181100000000000000000000000000000000000000000000000000000000000018110100000000000000000000000000000000000000000000000000000000001811020000000000000000000000000000000000000000000000000000000000181103000000000000000000000000000000000000000000000000000000000018110400000000000000000000000000000000000000000000000000000000001811050000000000000000000000000000000000000000000000000000000000181106000000000000000000000000000000000000000000000000000000000018110700000000000000000000000000000000000000000000000000000000001811080000000000000000000000000000000000000000000000000000000000181109000000000000000000000000000000000000000000000000000000000018110a000000000000000000000000000000000000000000000000000000000018110b000000000000000000000000000000000000000000000000000000000018110c000000000000000000000000000000000000000000000000000000000018110d000000000000000000000000000000000000000000000000000000000018110e000000000000000000000000000000000000000000000000000000000018110f0000000000000000000000000000000000000000000000000000000000181110000000000000000000000000000000000000000000000000000000000018111100000000000000000000000000000000000000000000000000000000001811120000000000000000000000000000000000000000000000000000000000181113000000000000000000000000000000000000000000000000000000000018111400000000000000000000000000000000000000000000000000000000001811150000000000000000000000000000000000000000000000000000000000181116000000000000000000000000000000000000000000000000000000000018111700000000000000000000000000000000000000000000000000000000001811180000000000000000000000000000000000000000000000000000000000181119000000000000000000000000000000000000000000000000000000000018111a000000000000000000000000000000000000000000000000000000000018111b000000000000000000000000000000000000000000000000000000000018111c000000000000000000000000000000000000000000000000000000000018111d000000000000000000000000000000000000000000000000000000000018111e000000000000000000000000000000000000000000000000000000000018111f0000000000000000000000000000000000000000000000000000000000181120000000000000000000000000000000000000000000000000000000000018112100000000000000000000000000000000000000000000000000000000001811220000000000000000000000000000000000000000000000000000000000181123000000000000000000000000000000000000000000000000000000000018112400000000000000000000000000000000000000000000000000000000001811250000000000000000000000000000000000000000000000000000000000181126000000000000000000000000000000000000000000000000000000000018112700000000000000000000000000000000000000000000000000000000001811280000000000000000000000000000000000000000000000000000000000181129000000000000000000000000000000000000000000000000000000000018112a000000000000000000000000000000000000000000000000000000000018112b000000000000000000000000000000000000000000000000000000000018112c000000000000000000000000000000000000000000000000000000000018112d000000000000000000000000000000000000000000000000000000000018112e000000000000000000000000000000000000000000000000000000000018112f0000000000000000000000000000000000000000000000000000000000181130000000000000000000000000000000000000000000000000000000000018113100000000000000000000000000000000000000000000000000000000001811320000000000000000000000000000000000000000000000000000000000181133000000000000000000000000000000000000000000000000000000000018113400000000000000000000000000000000000000000000000000000000001811350000000000000000000000000000000000000000000000000000000000181136000000000000000000000000000000000000000000000000000000000018113700000000000000000000000000000000000000000000000000000000001811380000000000000000000000000000000000000000000000000000000000181139000000000000000000000000000000000000000000000000000000000018113a000000000000000000000000000000000000000000000000000000000018113b000000000000000000000000000000000000000000000000000000000018113c000000000000000000000000000000000000000000000000000000000018113d000000000000000000000000000000000000000000000000000000000018113e0800f872eb9653f03af10f331da1361fa1524d3cd958cb72dacea1d424f19df3af00ffc548a17cd6ba1f2d228f30e4ddb19ecc46ad3b609977d52bb0f49e1206410032f8058bd779c520eabae2743b02ec4f71670428506fcceb2d4b69f26fb11800c0283e15fbf74ffa4eafb984030394f3c2ea6733cc0eacb0431a9475eff28f00b7f55314bfd9d441c1c624e241908228fe4da3d3a0a7fbd56814e1c8cd5d3e00f430f33a786675271736fd728c7bf7428b8c24ac948d7faf76ddb8783a496c0048fc235ead8d4b9d44929662a6384074fc4e5076bec5b7deb34f612393684300fd9b61cb1ad9b4b28f58399906e73933e3cccee8fc98a393f0eedb95b13ee63f0000000000000000000000000000000000000000000000000000000000182000000000000000000000000000000000000000000000000000000000000018200a0000000000000000000000000000000000000000000000000000000000182001000000000000000000000000000000000000000000000000000000000018200b0000000000000000000000000000000000000000000000000000000000182002000000000000000000000000000000000000000000000000000000000018200c0000000000000000000000000000000000000000000000000000000000182003000000000000000000000000000000000000000000000000000000000018200d0000000000000000000000000000000000000000000000000000000000182004000000000000000000000000000000000000000000000000000000000018200e0000000000000000000000000000000000000000000000000000000000182005000000000000000000000000000000000000000000000000000000000018200f00000000000000000000000000000000000000000000000000000000001820060000000000000000000000000000000000000000000000000000000000182010000000000000000000000000000000000000000000000000000000000018200700000000000000000000000000000000000000000000000000000000001820110000000000000000000000000000000000000000000000000000000000182008000000000000000000000000000000000000000000000000000000000018201200000000000000000000000000000000000000000000000000000000001820090000000000000000000000000000000000000000000000000000000000182013000000000000000000000000000000000000000000000000000000000018200a0000000000000000000000000000000000000000000000000000000000182014000000000000000000000000000000000000000000000000000000000018200b0000000000000000000000000000000000000000000000000000000000182015000000000000000000000000000000000000000000000000000000000018200c0000000000000000000000000000000000000000000000000000000000182016000000000000000000000000000000000000000000000000000000000018200d0000000000000000000000000000000000000000000000000000000000182017000000000000000000000000000000000000000000000000000000000018200e0000000000000000000000000000000000000000000000000000000000182018000000000000000000000000000000000000000000000000000000000018200f00000000000000000000000000000000000000000000000000000000001820190000000000000000000000000000000000000000000000000000000000182010000000000000000000000000000000000000000000000000000000000018201a0000000000000000000000000000000000000000000000000000000000182011000000000000000000000000000000000000000000000000000000000018201b0000000000000000000000000000000000000000000000000000000000182012000000000000000000000000000000000000000000000000000000000018201c0000000000000000000000000000000000000000000000000000000000182013000000000000000000000000000000000000000000000000000000000018201d0000000000000000000000000000000000000000000000000000000000182014000000000000000000000000000000000000000000000000000000000018201e0000000000000000000000000000000000000000000000000000000000182015000000000000000000000000000000000000000000000000000000000018201f00000000000000000000000000000000000000000000000000000000001820160000000000000000000000000000000000000000000000000000000000182020000000000000000000000000000000000000000000000000000000000018201700000000000000000000000000000000000000000000000000000000001820210000000000000000000000000000000000000000000000000000000000182018000000000000000000000000000000000000000000000000000000000018202200000000000000000000000000000000000000000000000000000000001820190000000000000000000000000000000000000000000000000000000000182023000000000000000000000000000000000000000000000000000000000018201a0000000000000000000000000000000000000000000000000000000000182024000000000000000000000000000000000000000000000000000000000018201b0000000000000000000000000000000000000000000000000000000000182025000000000000000000000000000000000000000000000000000000000018201c0000000000000000000000000000000000000000000000000000000000182026000000000000000000000000000000000000000000000000000000000018201d0000000000000000000000000000000000000000000000000000000000182027000000000000000000000000000000000000000000000000000000000018201e0000000000000000000000000000000000000000000000000000000000182028000000000000000000000000000000000000000000000000000000000018201f00000000000000000000000000000000000000000000000000000000001820290000000000000000000000000000000000000000000000000000000000182020000000000000000000000000000000000000000000000000000000000018202a0000000000000000000000000000000000000000000000000000000000182021000000000000000000000000000000000000000000000000000000000018202b0000000000000000000000000000000000000000000000000000000000182022000000000000000000000000000000000000000000000000000000000018202c0000000000000000000000000000000000000000000000000000000000182023000000000000000000000000000000000000000000000000000000000018202d0000000000000000000000000000000000000000000000000000000000182024000000000000000000000000000000000000000000000000000000000018202e0000000000000000000000000000000000000000000000000000000000182025000000000000000000000000000000000000000000000000000000000018202f00000000000000000000000000000000000000000000000000000000001820260000000000000000000000000000000000000000000000000000000000182030000000000000000000000000000000000000000000000000000000000018202700000000000000000000000000000000000000000000000000000000001820310000000000000000000000000000000000000000000000000000000000182028000000000000000000000000000000000000000000000000000000000018203200000000000000000000000000000000000000000000000000000000001820290000000000000000000000000000000000000000000000000000000000182033000000000000000000000000000000000000000000000000000000000018202a0000000000000000000000000000000000000000000000000000000000182034000000000000000000000000000000000000000000000000000000000018202b0000000000000000000000000000000000000000000000000000000000182035000000000000000000000000000000000000000000000000000000000018202c0000000000000000000000000000000000000000000000000000000000182036000000000000000000000000000000000000000000000000000000000018202d0000000000000000000000000000000000000000000000000000000000182037000000000000000000000000000000000000000000000000000000000018202e0000000000000000000000000000000000000000000000000000000000182038000000000000000000000000000000000000000000000000000000000018202f00000000000000000000000000000000000000000000000000000000001820390000000000000000000000000000000000000000000000000000000000182030000000000000000000000000000000000000000000000000000000000018203a0000000000000000000000000000000000000000000000000000000000182031000000000000000000000000000000000000000000000000000000000018203b0000000000000000000000000000000000000000000000000000000000182032000000000000000000000000000000000000000000000000000000000018203c0000000000000000000000000000000000000000000000000000000000182033000000000000000000000000000000000000000000000000000000000018203d0000000000000000000000000000000000000000000000000000000000182034000000000000000000000000000000000000000000000000000000000018203e0000000000000000000000000000000000000000000000000000000000182035000000000000000000000000000000000000000000000000000000000018203f00000000000000000000000000000000000000000000000000000000001820360000000000000000000000000000000000000000000000000000000000182040000000000000000000000000000000000000000000000000000000000018203700000000000000000000000000000000000000000000000000000000001820410000000000000000000000000000000000000000000000000000000000182038000000000000000000000000000000000000000000000000000000000018204200000000000000000000000000000000000000000000000000000000001820390000000000000000000000000000000000000000000000000000000000182043000000000000000000000000000000000000000000000000000000000018203a0000000000000000000000000000000000000000000000000000000000182044000000000000000000000000000000000000000000000000000000000018203b0000000000000000000000000000000000000000000000000000000000182045000000000000000000000000000000000000000000000000000000000018203c0000000000000000000000000000000000000000000000000000000000182046000000000000000000000000000000000000000000000000000000000018203d0000000000000000000000000000000000000000000000000000000000182047000000000000000000000000000000000000000000000000000000000018203e00000000000000000000000000000000000000000000000000000000001820480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000001c100000000000000000000000000000000000000000000000000000000000001c100100000000000000000000000000000000000000000000000000000000001c100200000000000000000000000000000000000000000000000000000000001c100300000000000000000000000000000000000000000000000000000000001c100400000000000000000000000000000000000000000000000000000000001c100500000000000000000000000000000000000000000000000000000000001c100600000000000000000000000000000000000000000000000000000000001c100700000000000000000000000000000000000000000000000000000000001c100800000000000000000000000000000000000000000000000000000000001c100900000000000000000000000000000000000000000000000000000000001c100a00000000000000000000000000000000000000000000000000000000001c100b00000000000000000000000000000000000000000000000000000000001c100c00000000000000000000000000000000000000000000000000000000001c100d00000000000000000000000000000000000000000000000000000000001c100e00000000000000000000000000000000000000000000000000000000001c100f00000000000000000000000000000000000000000000000000000000001c101000000000000000000000000000000000000000000000000000000000001c101100000000000000000000000000000000000000000000000000000000001c101200000000000000000000000000000000000000000000000000000000001c101300000000000000000000000000000000000000000000000000000000001c101400000000000000000000000000000000000000000000000000000000001c101500000000000000000000000000000000000000000000000000000000001c101600000000000000000000000000000000000000000000000000000000001c101700000000000000000000000000000000000000000000000000000000001c101800000000000000000000000000000000000000000000000000000000001c101900000000000000000000000000000000000000000000000000000000001c101a00000000000000000000000000000000000000000000000000000000001c101b00000000000000000000000000000000000000000000000000000000001c101c00000000000000000000000000000000000000000000000000000000001c101d00000000000000000000000000000000000000000000000000000000001c101e00000000000000000000000000000000000000000000000000000000001c101f00000000000000000000000000000000000000000000000000000000001c102000000000000000000000000000000000000000000000000000000000001c102100000000000000000000000000000000000000000000000000000000001c102200000000000000000000000000000000000000000000000000000000001c102300000000000000000000000000000000000000000000000000000000001c102400000000000000000000000000000000000000000000000000000000001c102500000000000000000000000000000000000000000000000000000000001c102600000000000000000000000000000000000000000000000000000000001c102700000000000000000000000000000000000000000000000000000000001c102800000000000000000000000000000000000000000000000000000000001c102900000000000000000000000000000000000000000000000000000000001c102a00000000000000000000000000000000000000000000000000000000001c102b00000000000000000000000000000000000000000000000000000000001c102c00000000000000000000000000000000000000000000000000000000001c102d00000000000000000000000000000000000000000000000000000000001c102e00000000000000000000000000000000000000000000000000000000001c102f00000000000000000000000000000000000000000000000000000000001c103000000000000000000000000000000000000000000000000000000000001c103100000000000000000000000000000000000000000000000000000000001c103200000000000000000000000000000000000000000000000000000000001c103300000000000000000000000000000000000000000000000000000000001c103400000000000000000000000000000000000000000000000000000000001c103500000000000000000000000000000000000000000000000000000000001c103600000000000000000000000000000000000000000000000000000000001c103700000000000000000000000000000000000000000000000000000000001c103800000000000000000000000000000000000000000000000000000000001c103900000000000000000000000000000000000000000000000000000000001c103a00000000000000000000000000000000000000000000000000000000001c103b00000000000000000000000000000000000000000000000000000000001c103c00000000000000000000000000000000000000000000000000000000001c103d00000000000000000000000000000000000000000000000000000000001c103e00000000000000000000000000000000000000000000000000000000001c103f3f00000000000000000000000000000000000000000000000000000000001c110000000000000000000000000000000000000000000000000000000000001c110100000000000000000000000000000000000000000000000000000000001c110200000000000000000000000000000000000000000000000000000000001c110300000000000000000000000000000000000000000000000000000000001c110400000000000000000000000000000000000000000000000000000000001c110500000000000000000000000000000000000000000000000000000000001c110600000000000000000000000000000000000000000000000000000000001c110700000000000000000000000000000000000000000000000000000000001c110800000000000000000000000000000000000000000000000000000000001c110900000000000000000000000000000000000000000000000000000000001c110a00000000000000000000000000000000000000000000000000000000001c110b00000000000000000000000000000000000000000000000000000000001c110c00000000000000000000000000000000000000000000000000000000001c110d00000000000000000000000000000000000000000000000000000000001c110e00000000000000000000000000000000000000000000000000000000001c110f00000000000000000000000000000000000000000000000000000000001c111000000000000000000000000000000000000000000000000000000000001c111100000000000000000000000000000000000000000000000000000000001c111200000000000000000000000000000000000000000000000000000000001c111300000000000000000000000000000000000000000000000000000000001c111400000000000000000000000000000000000000000000000000000000001c111500000000000000000000000000000000000000000000000000000000001c111600000000000000000000000000000000000000000000000000000000001c111700000000000000000000000000000000000000000000000000000000001c111800000000000000000000000000000000000000000000000000000000001c111900000000000000000000000000000000000000000000000000000000001c111a00000000000000000000000000000000000000000000000000000000001c111b00000000000000000000000000000000000000000000000000000000001c111c00000000000000000000000000000000000000000000000000000000001c111d00000000000000000000000000000000000000000000000000000000001c111e00000000000000000000000000000000000000000000000000000000001c111f00000000000000000000000000000000000000000000000000000000001c112000000000000000000000000000000000000000000000000000000000001c112100000000000000000000000000000000000000000000000000000000001c112200000000000000000000000000000000000000000000000000000000001c112300000000000000000000000000000000000000000000000000000000001c112400000000000000000000000000000000000000000000000000000000001c112500000000000000000000000000000000000000000000000000000000001c112600000000000000000000000000000000000000000000000000000000001c112700000000000000000000000000000000000000000000000000000000001c112800000000000000000000000000000000000000000000000000000000001c112900000000000000000000000000000000000000000000000000000000001c112a00000000000000000000000000000000000000000000000000000000001c112b00000000000000000000000000000000000000000000000000000000001c112c00000000000000000000000000000000000000000000000000000000001c112d00000000000000000000000000000000000000000000000000000000001c112e00000000000000000000000000000000000000000000000000000000001c112f00000000000000000000000000000000000000000000000000000000001c113000000000000000000000000000000000000000000000000000000000001c113100000000000000000000000000000000000000000000000000000000001c113200000000000000000000000000000000000000000000000000000000001c113300000000000000000000000000000000000000000000000000000000001c113400000000000000000000000000000000000000000000000000000000001c113500000000000000000000000000000000000000000000000000000000001c113600000000000000000000000000000000000000000000000000000000001c113700000000000000000000000000000000000000000000000000000000001c113800000000000000000000000000000000000000000000000000000000001c113900000000000000000000000000000000000000000000000000000000001c113a00000000000000000000000000000000000000000000000000000000001c113b00000000000000000000000000000000000000000000000000000000001c113c00000000000000000000000000000000000000000000000000000000001c113d00000000000000000000000000000000000000000000000000000000001c113e08006838aa99533bea0d4204cad17cb3c147e99c2f9089e54a4289d54733eeada2002ab314bd11ace2494a3fb0970d276da39f0fe7da19c9a2438b9c7c334d32470071703d79d8425a7eca52006df6a8f9728508a83639e3e1c2ebae2b853a087c00c9501ac04a78ac5413c9131b08708064ed2c2515b8893f12c2d1cda15a44f100a0955f93e109778d26f9e5b0d46e45c539e59b0941517bfa888eb2d7d2d8a6005adc3be9406cc5f102c6adb44746e8529a256e2396353a8659344cc3e914c4007a5fe572cf6af804f472dabf095c5eb6b30efc5fd627ad3245a8ef0f3f578c003dcaa91dfc9fdad7ba8da68a48fc662dfc0a995cbb0c1bc62099c8257d240d3f00000000000000000000000000000000000000000000000000000000001c200000000000000000000000000000000000000000000000000000000000001c200a00000000000000000000000000000000000000000000000000000000001c200100000000000000000000000000000000000000000000000000000000001c200b00000000000000000000000000000000000000000000000000000000001c200200000000000000000000000000000000000000000000000000000000001c200c00000000000000000000000000000000000000000000000000000000001c200300000000000000000000000000000000000000000000000000000000001c200d00000000000000000000000000000000000000000000000000000000001c200400000000000000000000000000000000000000000000000000000000001c200e00000000000000000000000000000000000000000000000000000000001c200500000000000000000000000000000000000000000000000000000000001c200f00000000000000000000000000000000000000000000000000000000001c200600000000000000000000000000000000000000000000000000000000001c201000000000000000000000000000000000000000000000000000000000001c200700000000000000000000000000000000000000000000000000000000001c201100000000000000000000000000000000000000000000000000000000001c200800000000000000000000000000000000000000000000000000000000001c201200000000000000000000000000000000000000000000000000000000001c200900000000000000000000000000000000000000000000000000000000001c201300000000000000000000000000000000000000000000000000000000001c200a00000000000000000000000000000000000000000000000000000000001c201400000000000000000000000000000000000000000000000000000000001c200b00000000000000000000000000000000000000000000000000000000001c201500000000000000000000000000000000000000000000000000000000001c200c00000000000000000000000000000000000000000000000000000000001c201600000000000000000000000000000000000000000000000000000000001c200d00000000000000000000000000000000000000000000000000000000001c201700000000000000000000000000000000000000000000000000000000001c200e00000000000000000000000000000000000000000000000000000000001c201800000000000000000000000000000000000000000000000000000000001c200f00000000000000000000000000000000000000000000000000000000001c201900000000000000000000000000000000000000000000000000000000001c201000000000000000000000000000000000000000000000000000000000001c201a00000000000000000000000000000000000000000000000000000000001c201100000000000000000000000000000000000000000000000000000000001c201b00000000000000000000000000000000000000000000000000000000001c201200000000000000000000000000000000000000000000000000000000001c201c00000000000000000000000000000000000000000000000000000000001c201300000000000000000000000000000000000000000000000000000000001c201d00000000000000000000000000000000000000000000000000000000001c201400000000000000000000000000000000000000000000000000000000001c201e00000000000000000000000000000000000000000000000000000000001c201500000000000000000000000000000000000000000000000000000000001c201f00000000000000000000000000000000000000000000000000000000001c201600000000000000000000000000000000000000000000000000000000001c202000000000000000000000000000000000000000000000000000000000001c201700000000000000000000000000000000000000000000000000000000001c202100000000000000000000000000000000000000000000000000000000001c201800000000000000000000000000000000000000000000000000000000001c202200000000000000000000000000000000000000000000000000000000001c201900000000000000000000000000000000000000000000000000000000001c202300000000000000000000000000000000000000000000000000000000001c201a00000000000000000000000000000000000000000000000000000000001c202400000000000000000000000000000000000000000000000000000000001c201b00000000000000000000000000000000000000000000000000000000001c202500000000000000000000000000000000000000000000000000000000001c201c00000000000000000000000000000000000000000000000000000000001c202600000000000000000000000000000000000000000000000000000000001c201d00000000000000000000000000000000000000000000000000000000001c202700000000000000000000000000000000000000000000000000000000001c201e00000000000000000000000000000000000000000000000000000000001c202800000000000000000000000000000000000000000000000000000000001c201f00000000000000000000000000000000000000000000000000000000001c202900000000000000000000000000000000000000000000000000000000001c202000000000000000000000000000000000000000000000000000000000001c202a00000000000000000000000000000000000000000000000000000000001c202100000000000000000000000000000000000000000000000000000000001c202b00000000000000000000000000000000000000000000000000000000001c202200000000000000000000000000000000000000000000000000000000001c202c00000000000000000000000000000000000000000000000000000000001c202300000000000000000000000000000000000000000000000000000000001c202d00000000000000000000000000000000000000000000000000000000001c202400000000000000000000000000000000000000000000000000000000001c202e00000000000000000000000000000000000000000000000000000000001c202500000000000000000000000000000000000000000000000000000000001c202f00000000000000000000000000000000000000000000000000000000001c202600000000000000000000000000000000000000000000000000000000001c203000000000000000000000000000000000000000000000000000000000001c202700000000000000000000000000000000000000000000000000000000001c203100000000000000000000000000000000000000000000000000000000001c202800000000000000000000000000000000000000000000000000000000001c203200000000000000000000000000000000000000000000000000000000001c202900000000000000000000000000000000000000000000000000000000001c203300000000000000000000000000000000000000000000000000000000001c202a00000000000000000000000000000000000000000000000000000000001c203400000000000000000000000000000000000000000000000000000000001c202b00000000000000000000000000000000000000000000000000000000001c203500000000000000000000000000000000000000000000000000000000001c202c00000000000000000000000000000000000000000000000000000000001c203600000000000000000000000000000000000000000000000000000000001c202d00000000000000000000000000000000000000000000000000000000001c203700000000000000000000000000000000000000000000000000000000001c202e00000000000000000000000000000000000000000000000000000000001c203800000000000000000000000000000000000000000000000000000000001c202f00000000000000000000000000000000000000000000000000000000001c203900000000000000000000000000000000000000000000000000000000001c203000000000000000000000000000000000000000000000000000000000001c203a00000000000000000000000000000000000000000000000000000000001c203100000000000000000000000000000000000000000000000000000000001c203b00000000000000000000000000000000000000000000000000000000001c203200000000000000000000000000000000000000000000000000000000001c203c00000000000000000000000000000000000000000000000000000000001c203300000000000000000000000000000000000000000000000000000000001c203d00000000000000000000000000000000000000000000000000000000001c203400000000000000000000000000000000000000000000000000000000001c203e00000000000000000000000000000000000000000000000000000000001c203500000000000000000000000000000000000000000000000000000000001c203f00000000000000000000000000000000000000000000000000000000001c203600000000000000000000000000000000000000000000000000000000001c204000000000000000000000000000000000000000000000000000000000001c203700000000000000000000000000000000000000000000000000000000001c204100000000000000000000000000000000000000000000000000000000001c203800000000000000000000000000000000000000000000000000000000001c204200000000000000000000000000000000000000000000000000000000001c203900000000000000000000000000000000000000000000000000000000001c204300000000000000000000000000000000000000000000000000000000001c203a00000000000000000000000000000000000000000000000000000000001c204400000000000000000000000000000000000000000000000000000000001c203b00000000000000000000000000000000000000000000000000000000001c204500000000000000000000000000000000000000000000000000000000001c203c00000000000000000000000000000000000000000000000000000000001c204600000000000000000000000000000000000000000000000000000000001c203d00000000000000000000000000000000000000000000000000000000001c204700000000000000000000000000000000000000000000000000000000001c203e00000000000000000000000000000000000000000000000000000000001c2048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000201000000000000000000000000000000000000000000000000000000000000020100100000000000000000000000000000000000000000000000000000000002010020000000000000000000000000000000000000000000000000000000000201003000000000000000000000000000000000000000000000000000000000020100400000000000000000000000000000000000000000000000000000000002010050000000000000000000000000000000000000000000000000000000000201006000000000000000000000000000000000000000000000000000000000020100700000000000000000000000000000000000000000000000000000000002010080000000000000000000000000000000000000000000000000000000000201009000000000000000000000000000000000000000000000000000000000020100a000000000000000000000000000000000000000000000000000000000020100b000000000000000000000000000000000000000000000000000000000020100c000000000000000000000000000000000000000000000000000000000020100d000000000000000000000000000000000000000000000000000000000020100e000000000000000000000000000000000000000000000000000000000020100f0000000000000000000000000000000000000000000000000000000000201010000000000000000000000000000000000000000000000000000000000020101100000000000000000000000000000000000000000000000000000000002010120000000000000000000000000000000000000000000000000000000000201013000000000000000000000000000000000000000000000000000000000020101400000000000000000000000000000000000000000000000000000000002010150000000000000000000000000000000000000000000000000000000000201016000000000000000000000000000000000000000000000000000000000020101700000000000000000000000000000000000000000000000000000000002010180000000000000000000000000000000000000000000000000000000000201019000000000000000000000000000000000000000000000000000000000020101a000000000000000000000000000000000000000000000000000000000020101b000000000000000000000000000000000000000000000000000000000020101c000000000000000000000000000000000000000000000000000000000020101d000000000000000000000000000000000000000000000000000000000020101e000000000000000000000000000000000000000000000000000000000020101f0000000000000000000000000000000000000000000000000000000000201020000000000000000000000000000000000000000000000000000000000020102100000000000000000000000000000000000000000000000000000000002010220000000000000000000000000000000000000000000000000000000000201023000000000000000000000000000000000000000000000000000000000020102400000000000000000000000000000000000000000000000000000000002010250000000000000000000000000000000000000000000000000000000000201026000000000000000000000000000000000000000000000000000000000020102700000000000000000000000000000000000000000000000000000000002010280000000000000000000000000000000000000000000000000000000000201029000000000000000000000000000000000000000000000000000000000020102a000000000000000000000000000000000000000000000000000000000020102b000000000000000000000000000000000000000000000000000000000020102c000000000000000000000000000000000000000000000000000000000020102d000000000000000000000000000000000000000000000000000000000020102e000000000000000000000000000000000000000000000000000000000020102f0000000000000000000000000000000000000000000000000000000000201030000000000000000000000000000000000000000000000000000000000020103100000000000000000000000000000000000000000000000000000000002010320000000000000000000000000000000000000000000000000000000000201033000000000000000000000000000000000000000000000000000000000020103400000000000000000000000000000000000000000000000000000000002010350000000000000000000000000000000000000000000000000000000000201036000000000000000000000000000000000000000000000000000000000020103700000000000000000000000000000000000000000000000000000000002010380000000000000000000000000000000000000000000000000000000000201039000000000000000000000000000000000000000000000000000000000020103a000000000000000000000000000000000000000000000000000000000020103b000000000000000000000000000000000000000000000000000000000020103c000000000000000000000000000000000000000000000000000000000020103d000000000000000000000000000000000000000000000000000000000020103e000000000000000000000000000000000000000000000000000000000020103f3f0000000000000000000000000000000000000000000000000000000000201100000000000000000000000000000000000000000000000000000000000020110100000000000000000000000000000000000000000000000000000000002011020000000000000000000000000000000000000000000000000000000000201103000000000000000000000000000000000000000000000000000000000020110400000000000000000000000000000000000000000000000000000000002011050000000000000000000000000000000000000000000000000000000000201106000000000000000000000000000000000000000000000000000000000020110700000000000000000000000000000000000000000000000000000000002011080000000000000000000000000000000000000000000000000000000000201109000000000000000000000000000000000000000000000000000000000020110a000000000000000000000000000000000000000000000000000000000020110b000000000000000000000000000000000000000000000000000000000020110c000000000000000000000000000000000000000000000000000000000020110d000000000000000000000000000000000000000000000000000000000020110e000000000000000000000000000000000000000000000000000000000020110f0000000000000000000000000000000000000000000000000000000000201110000000000000000000000000000000000000000000000000000000000020111100000000000000000000000000000000000000000000000000000000002011120000000000000000000000000000000000000000000000000000000000201113000000000000000000000000000000000000000000000000000000000020111400000000000000000000000000000000000000000000000000000000002011150000000000000000000000000000000000000000000000000000000000201116000000000000000000000000000000000000000000000000000000000020111700000000000000000000000000000000000000000000000000000000002011180000000000000000000000000000000000000000000000000000000000201119000000000000000000000000000000000000000000000000000000000020111a000000000000000000000000000000000000000000000000000000000020111b000000000000000000000000000000000000000000000000000000000020111c000000000000000000000000000000000000000000000000000000000020111d000000000000000000000000000000000000000000000000000000000020111e000000000000000000000000000000000000000000000000000000000020111f0000000000000000000000000000000000000000000000000000000000201120000000000000000000000000000000000000000000000000000000000020112100000000000000000000000000000000000000000000000000000000002011220000000000000000000000000000000000000000000000000000000000201123000000000000000000000000000000000000000000000000000000000020112400000000000000000000000000000000000000000000000000000000002011250000000000000000000000000000000000000000000000000000000000201126000000000000000000000000000000000000000000000000000000000020112700000000000000000000000000000000000000000000000000000000002011280000000000000000000000000000000000000000000000000000000000201129000000000000000000000000000000000000000000000000000000000020112a000000000000000000000000000000000000000000000000000000000020112b000000000000000000000000000000000000000000000000000000000020112c000000000000000000000000000000000000000000000000000000000020112d000000000000000000000000000000000000000000000000000000000020112e000000000000000000000000000000000000000000000000000000000020112f0000000000000000000000000000000000000000000000000000000000201130000000000000000000000000000000000000000000000000000000000020113100000000000000000000000000000000000000000000000000000000002011320000000000000000000000000000000000000000000000000000000000201133000000000000000000000000000000000000000000000000000000000020113400000000000000000000000000000000000000000000000000000000002011350000000000000000000000000000000000000000000000000000000000201136000000000000000000000000000000000000000000000000000000000020113700000000000000000000000000000000000000000000000000000000002011380000000000000000000000000000000000000000000000000000000000201139000000000000000000000000000000000000000000000000000000000020113a000000000000000000000000000000000000000000000000000000000020113b000000000000000000000000000000000000000000000000000000000020113c000000000000000000000000000000000000000000000000000000000020113d000000000000000000000000000000000000000000000000000000000020113e0800e9805e8a4faa87fc419af08a6d956f18976c46ea694bbd4cf6946e6d02033200e0925a6b172b4b01bb76eb1d3f7dd2ced118bca70d223a6d61afa1b75915ae00383590492d2f99a0283d1de57015b4b6b0759a8023af2c68fb4929dee2f303007ed57100dd77e2b6405f780503ef61b7b53e13f344b6e6a6eff3e3c13de0d0001ab1b0c348c46184dbc86ff79f248e7da1b09d3f9c6a986e98fe45389f060d0023d134bc68d7efa25e255001069827dc0bee766c08c988d6300071ed27fe6c0031cbb780b07f632cbaf767dc80608cc0a8e1d1df3ecd6f5d8bc0ca6703e4f4002c7dc9e731fc5f6456b2a70b4e636ac17d5e0cd36d3a591116a9e124f735863f0000000000000000000000000000000000000000000000000000000000202000000000000000000000000000000000000000000000000000000000000020200a0000000000000000000000000000000000000000000000000000000000202001000000000000000000000000000000000000000000000000000000000020200b0000000000000000000000000000000000000000000000000000000000202002000000000000000000000000000000000000000000000000000000000020200c0000000000000000000000000000000000000000000000000000000000202003000000000000000000000000000000000000000000000000000000000020200d0000000000000000000000000000000000000000000000000000000000202004000000000000000000000000000000000000000000000000000000000020200e0000000000000000000000000000000000000000000000000000000000202005000000000000000000000000000000000000000000000000000000000020200f00000000000000000000000000000000000000000000000000000000002020060000000000000000000000000000000000000000000000000000000000202010000000000000000000000000000000000000000000000000000000000020200700000000000000000000000000000000000000000000000000000000002020110000000000000000000000000000000000000000000000000000000000202008000000000000000000000000000000000000000000000000000000000020201200000000000000000000000000000000000000000000000000000000002020090000000000000000000000000000000000000000000000000000000000202013000000000000000000000000000000000000000000000000000000000020200a0000000000000000000000000000000000000000000000000000000000202014000000000000000000000000000000000000000000000000000000000020200b0000000000000000000000000000000000000000000000000000000000202015000000000000000000000000000000000000000000000000000000000020200c0000000000000000000000000000000000000000000000000000000000202016000000000000000000000000000000000000000000000000000000000020200d0000000000000000000000000000000000000000000000000000000000202017000000000000000000000000000000000000000000000000000000000020200e0000000000000000000000000000000000000000000000000000000000202018000000000000000000000000000000000000000000000000000000000020200f00000000000000000000000000000000000000000000000000000000002020190000000000000000000000000000000000000000000000000000000000202010000000000000000000000000000000000000000000000000000000000020201a0000000000000000000000000000000000000000000000000000000000202011000000000000000000000000000000000000000000000000000000000020201b0000000000000000000000000000000000000000000000000000000000202012000000000000000000000000000000000000000000000000000000000020201c0000000000000000000000000000000000000000000000000000000000202013000000000000000000000000000000000000000000000000000000000020201d0000000000000000000000000000000000000000000000000000000000202014000000000000000000000000000000000000000000000000000000000020201e0000000000000000000000000000000000000000000000000000000000202015000000000000000000000000000000000000000000000000000000000020201f00000000000000000000000000000000000000000000000000000000002020160000000000000000000000000000000000000000000000000000000000202020000000000000000000000000000000000000000000000000000000000020201700000000000000000000000000000000000000000000000000000000002020210000000000000000000000000000000000000000000000000000000000202018000000000000000000000000000000000000000000000000000000000020202200000000000000000000000000000000000000000000000000000000002020190000000000000000000000000000000000000000000000000000000000202023000000000000000000000000000000000000000000000000000000000020201a0000000000000000000000000000000000000000000000000000000000202024000000000000000000000000000000000000000000000000000000000020201b0000000000000000000000000000000000000000000000000000000000202025000000000000000000000000000000000000000000000000000000000020201c0000000000000000000000000000000000000000000000000000000000202026000000000000000000000000000000000000000000000000000000000020201d0000000000000000000000000000000000000000000000000000000000202027000000000000000000000000000000000000000000000000000000000020201e0000000000000000000000000000000000000000000000000000000000202028000000000000000000000000000000000000000000000000000000000020201f00000000000000000000000000000000000000000000000000000000002020290000000000000000000000000000000000000000000000000000000000202020000000000000000000000000000000000000000000000000000000000020202a0000000000000000000000000000000000000000000000000000000000202021000000000000000000000000000000000000000000000000000000000020202b0000000000000000000000000000000000000000000000000000000000202022000000000000000000000000000000000000000000000000000000000020202c0000000000000000000000000000000000000000000000000000000000202023000000000000000000000000000000000000000000000000000000000020202d0000000000000000000000000000000000000000000000000000000000202024000000000000000000000000000000000000000000000000000000000020202e0000000000000000000000000000000000000000000000000000000000202025000000000000000000000000000000000000000000000000000000000020202f00000000000000000000000000000000000000000000000000000000002020260000000000000000000000000000000000000000000000000000000000202030000000000000000000000000000000000000000000000000000000000020202700000000000000000000000000000000000000000000000000000000002020310000000000000000000000000000000000000000000000000000000000202028000000000000000000000000000000000000000000000000000000000020203200000000000000000000000000000000000000000000000000000000002020290000000000000000000000000000000000000000000000000000000000202033000000000000000000000000000000000000000000000000000000000020202a0000000000000000000000000000000000000000000000000000000000202034000000000000000000000000000000000000000000000000000000000020202b0000000000000000000000000000000000000000000000000000000000202035000000000000000000000000000000000000000000000000000000000020202c0000000000000000000000000000000000000000000000000000000000202036000000000000000000000000000000000000000000000000000000000020202d0000000000000000000000000000000000000000000000000000000000202037000000000000000000000000000000000000000000000000000000000020202e0000000000000000000000000000000000000000000000000000000000202038000000000000000000000000000000000000000000000000000000000020202f00000000000000000000000000000000000000000000000000000000002020390000000000000000000000000000000000000000000000000000000000202030000000000000000000000000000000000000000000000000000000000020203a0000000000000000000000000000000000000000000000000000000000202031000000000000000000000000000000000000000000000000000000000020203b0000000000000000000000000000000000000000000000000000000000202032000000000000000000000000000000000000000000000000000000000020203c0000000000000000000000000000000000000000000000000000000000202033000000000000000000000000000000000000000000000000000000000020203d0000000000000000000000000000000000000000000000000000000000202034000000000000000000000000000000000000000000000000000000000020203e0000000000000000000000000000000000000000000000000000000000202035000000000000000000000000000000000000000000000000000000000020203f00000000000000000000000000000000000000000000000000000000002020360000000000000000000000000000000000000000000000000000000000202040000000000000000000000000000000000000000000000000000000000020203700000000000000000000000000000000000000000000000000000000002020410000000000000000000000000000000000000000000000000000000000202038000000000000000000000000000000000000000000000000000000000020204200000000000000000000000000000000000000000000000000000000002020390000000000000000000000000000000000000000000000000000000000202043000000000000000000000000000000000000000000000000000000000020203a0000000000000000000000000000000000000000000000000000000000202044000000000000000000000000000000000000000000000000000000000020203b0000000000000000000000000000000000000000000000000000000000202045000000000000000000000000000000000000000000000000000000000020203c0000000000000000000000000000000000000000000000000000000000202046000000000000000000000000000000000000000000000000000000000020203d0000000000000000000000000000000000000000000000000000000000202047000000000000000000000000000000000000000000000000000000000020203e0000000000000000000000000000000000000000000000000000000000202048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "decodedHeader": { "contentCommitment": { + "blobsHash": "0x00a249a9f834ecee6d0bd91c841e5a02a0629a89754c2844593b74bb50002697", "inHash": "0x00e1371045bd7d2c3e1f19cba5f536f0e82042ba4bc257d4ba19c146215e8242", - "outHash": "0x009514581058b2b6aae79574cc9129a801904407c6d869a5f168b02cebffecfe", - "numTxs": 8, - "txsEffectsHash": "0x00d2d12b4d0c6202124a7625c585097078920e09dd2c650401a91b564234a6b4" + "outHash": "0x00a5c37986316b1f5f2df53fa9ddf4965f539e872f5e1374f28d225540faca26", + "numTxs": 4 }, "globalVariables": { "blockNumber": 2, "slotNumber": "0x0000000000000000000000000000000000000000000000000000000000000023", "chainId": 31337, - "timestamp": 1731434221, + "timestamp": 1732284950, "version": 1, - "coinbase": "0xa8f1a4313bc15dcd3681ed2b6fdd042f1ee1f823", - "feeRecipient": "0x2abdc96d2ec8465dfd2bb7401f90dd3af0db16c3cece57bd5de2b63a3d25140b", + "coinbase": "0x1d18b0d58a782ce94f30cb2b122b9cbb4c523365", + "feeRecipient": "0x17058b928f637c62f9cb7a481168406410f91b54458bd6d2768fb3fb17080a16", "gasFees": { "feePerDaGas": 0, "feePerL2Gas": 0 @@ -116,7 +83,7 @@ }, "lastArchive": { "nextAvailableLeafIndex": 2, - "root": "0x13232b1c92fcfba5f94aee813d7e454764f93d6292215552b8c973ef42c8e396" + "root": "0x0e53899e5997e6e78a98a4092b9627f8618a34f7e6585286acff725d1ae5e32d" }, "stateReference": { "l1ToL2MessageTree": { @@ -133,14 +100,15 @@ "root": "0x2ed5c359f01d6a1cacfa324bc48b7fcc6fe75a95ad66bdb1a6e32d6907550957" }, "publicDataTree": { - "nextAvailableLeafIndex": 640, - "root": "0x23a39db7c42fa47a6df2b9deea545155c39f6066cbbc2701a12c60af95b6cdf9" + "nextAvailableLeafIndex": 632, + "root": "0x0c5783f9fe3a18bb5abd12daca67d280f6b5dfef250b7433dc059ce0d868b319" } } } }, - "header": "0x13232b1c92fcfba5f94aee813d7e454764f93d6292215552b8c973ef42c8e39600000002000000000000000000000000000000000000000000000000000000000000000800d2d12b4d0c6202124a7625c585097078920e09dd2c650401a91b564234a6b400e1371045bd7d2c3e1f19cba5f536f0e82042ba4bc257d4ba19c146215e8242009514581058b2b6aae79574cc9129a801904407c6d869a5f168b02cebffecfe026efb6c2a517de2448119d0f1255757265dbec7cdd2952df929ede666e10944000000202494d2575971bca59a28ddc774d19136f4a294951ab67258c7e9c2d8f9805924000002002ed5c359f01d6a1cacfa324bc48b7fcc6fe75a95ad66bdb1a6e32d69075509570000028023a39db7c42fa47a6df2b9deea545155c39f6066cbbc2701a12c60af95b6cdf9000002800000000000000000000000000000000000000000000000000000000000007a6900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000002300000000000000000000000000000000000000000000000000000000673396eda8f1a4313bc15dcd3681ed2b6fdd042f1ee1f8232abdc96d2ec8465dfd2bb7401f90dd3af0db16c3cece57bd5de2b63a3d25140b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "publicInputsHash": "0x0010b7371af5e28ae8d1d0385e2ad3e28322dc403bfab0a6196947e5bb95143b", - "numTxs": 8 + "header": "0x0e53899e5997e6e78a98a4092b9627f8618a34f7e6585286acff725d1ae5e32d00000002000000000000000000000000000000000000000000000000000000000000000400a249a9f834ecee6d0bd91c841e5a02a0629a89754c2844593b74bb5000269700e1371045bd7d2c3e1f19cba5f536f0e82042ba4bc257d4ba19c146215e824200a5c37986316b1f5f2df53fa9ddf4965f539e872f5e1374f28d225540faca26026efb6c2a517de2448119d0f1255757265dbec7cdd2952df929ede666e10944000000202494d2575971bca59a28ddc774d19136f4a294951ab67258c7e9c2d8f9805924000002002ed5c359f01d6a1cacfa324bc48b7fcc6fe75a95ad66bdb1a6e32d6907550957000002800c5783f9fe3a18bb5abd12daca67d280f6b5dfef250b7433dc059ce0d868b319000002780000000000000000000000000000000000000000000000000000000000007a6900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000002300000000000000000000000000000000000000000000000000000000674092161d18b0d58a782ce94f30cb2b122b9cbb4c52336517058b928f637c62f9cb7a481168406410f91b54458bd6d2768fb3fb17080a16000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "publicInputsHash": "0x0026ba02696b157262d5ff35f9e3e4e7e88464e5cc60cd74aa3d9efd6ed93343", + "blobInputs": "0x01019459274d8bf8edc690446032c9e349e4bed693db5fbc7e05d0d38e780445042b05f8c7ed84b2d229b760cecee7a7eec6cff16285f647eeadd63601b9fa240110881755773868744fbb3cd4a392b3ec27e859107d782b2e039791d03e16ce44a1e7643408f2a24771eb694ee4d50298d6122a3459cd4a5257829a3c4cc13b13247b7dd371eae4c94e7d9aff21f04137971b54bb0a05a7cc8338c36bec0149c0f9afaffba3f7836abe8e2ac6cab4955c20ef2e8d2e002384bcfdeade0fe3f915", + "numTxs": 4 } } \ No newline at end of file diff --git a/l1-contracts/test/merkle/UnbalancedMerkle.t.sol b/l1-contracts/test/merkle/UnbalancedMerkle.t.sol index e248f878b5a..e034a0e7247 100644 --- a/l1-contracts/test/merkle/UnbalancedMerkle.t.sol +++ b/l1-contracts/test/merkle/UnbalancedMerkle.t.sol @@ -5,11 +5,10 @@ pragma solidity >=0.8.27; import {Test} from "forge-std/Test.sol"; import {Hash} from "@aztec/core/libraries/crypto/Hash.sol"; -import {TxsDecoderHelper} from "../decoders/helpers/TxsDecoderHelper.sol"; +import {MerkleLibHelper} from "./helpers/MerkleLibHelper.sol"; /** * Tests the tree construction for unbalanced rollups. - * Used for calculating txsEffectsHash over non balanced rollups - each leaf is one baseLeaf - * calculated in TxsDecoder.sol. + * Used for calculating outHash over non balanced rollups. */ contract UnbalancedMerkleTest is Test { @@ -18,41 +17,41 @@ contract UnbalancedMerkleTest is Test { * powers of 2. * We list them in reverse order as we compute subtree roots from R to L */ - TxsDecoderHelper internal txsHelper; + MerkleLibHelper internal merkleLibHelper; function setUp() public { - txsHelper = new TxsDecoderHelper(); + merkleLibHelper = new MerkleLibHelper(); } - function testDecomp() public { + function testDecomp() public view { // Worst case - max num txs uint32 numTxs = 65535; - (uint256 min, uint256 max) = txsHelper.computeMinMaxPathLength(numTxs); + (uint256 min, uint256 max) = merkleLibHelper.computeMinMaxPathLength(numTxs); assertEq(min, 15); assertEq(max, 16); // Single tree of 2**15 numTxs = 32768; - (min, max) = txsHelper.computeMinMaxPathLength(numTxs); + (min, max) = merkleLibHelper.computeMinMaxPathLength(numTxs); assertEq(min, 15); assertEq(max, 15); // Single tree of 2**13 numTxs = 8192; - (min, max) = txsHelper.computeMinMaxPathLength(numTxs); + (min, max) = merkleLibHelper.computeMinMaxPathLength(numTxs); assertEq(min, 13); assertEq(max, 13); // Trees of 2**12, 2**11, ... 2**0 numTxs = 8191; - (min, max) = txsHelper.computeMinMaxPathLength(numTxs); + (min, max) = merkleLibHelper.computeMinMaxPathLength(numTxs); assertEq(min, 12); assertEq(max, 13); // Single tree of 2**8 numTxs = 256; - (min, max) = txsHelper.computeMinMaxPathLength(numTxs); + (min, max) = merkleLibHelper.computeMinMaxPathLength(numTxs); assertEq(min, 8); assertEq(max, 8); // Left subtree of 2**8, right subtree of single leaf numTxs = 257; - (min, max) = txsHelper.computeMinMaxPathLength(numTxs); + (min, max) = merkleLibHelper.computeMinMaxPathLength(numTxs); assertEq(min, 1); assertEq(max, 9); } @@ -62,18 +61,18 @@ contract UnbalancedMerkleTest is Test { // root // / \ // base base - function testComputeTxsEffectsHash2() public { + function testComputeTxsEffectsHash2() public view { // Generate some base leaves bytes32[] memory baseLeaves = new bytes32[](2); for (uint256 i = 0; i < 2; i++) { baseLeaves[i] = Hash.sha256ToField(abi.encodePacked(i)); } // We have just one 'balanced' branch, so depth is 0 with 2 elements - (uint256 min, uint256 max) = txsHelper.computeMinMaxPathLength(2); + (uint256 min, uint256 max) = merkleLibHelper.computeMinMaxPathLength(2); assertEq(min, 1); assertEq(max, 1); bytes32 rootTxsEffectsHash = Hash.sha256ToField(bytes.concat(baseLeaves[0], baseLeaves[1])); - bytes32 calculatedTxsEffectsHash = txsHelper.computeUnbalancedRoot(baseLeaves); + bytes32 calculatedTxsEffectsHash = merkleLibHelper.computeUnbalancedRoot(baseLeaves); assertEq(calculatedTxsEffectsHash, rootTxsEffectsHash); } // Example - 3 txs: @@ -84,19 +83,19 @@ contract UnbalancedMerkleTest is Test { // / \ // base base - function testComputeTxsEffectsHash3() public { + function testComputeTxsEffectsHash3() public view { // Generate some base leaves bytes32[] memory baseLeaves = new bytes32[](3); for (uint256 i = 0; i < 3; i++) { baseLeaves[i] = Hash.sha256ToField(abi.encodePacked(i)); } - (uint256 min, uint256 max) = txsHelper.computeMinMaxPathLength(3); + (uint256 min, uint256 max) = merkleLibHelper.computeMinMaxPathLength(3); assertEq(min, 1); assertEq(max, 2); bytes32 mergeTxsEffectsHash = Hash.sha256ToField(bytes.concat(baseLeaves[0], baseLeaves[1])); bytes32 rootTxsEffectsHash = Hash.sha256ToField(bytes.concat(mergeTxsEffectsHash, baseLeaves[2])); - bytes32 calculatedTxsEffectsHash = txsHelper.computeUnbalancedRoot(baseLeaves); + bytes32 calculatedTxsEffectsHash = merkleLibHelper.computeUnbalancedRoot(baseLeaves); assertEq(calculatedTxsEffectsHash, rootTxsEffectsHash); } @@ -109,13 +108,13 @@ contract UnbalancedMerkleTest is Test { // merge merge // / \ / \ // base base base base - function testComputeTxsEffectsHash5() public { + function testComputeTxsEffectsHash5() public view { // Generate some base leaves bytes32[] memory baseLeaves = new bytes32[](5); for (uint256 i = 0; i < 5; i++) { baseLeaves[i] = Hash.sha256ToField(abi.encodePacked(i)); } - (uint256 min, uint256 max) = txsHelper.computeMinMaxPathLength(5); + (uint256 min, uint256 max) = merkleLibHelper.computeMinMaxPathLength(5); assertEq(min, 1); assertEq(max, 3); bytes32 firstMergeTxsEffectsHash = @@ -126,7 +125,7 @@ contract UnbalancedMerkleTest is Test { Hash.sha256ToField(bytes.concat(firstMergeTxsEffectsHash, secondMergeTxsEffectsHash)); bytes32 rootTxsEffectsHash = Hash.sha256ToField(bytes.concat(thirdMergeTxsEffectsHash, baseLeaves[4])); - bytes32 calculatedTxsEffectsHash = txsHelper.computeUnbalancedRoot(baseLeaves); + bytes32 calculatedTxsEffectsHash = merkleLibHelper.computeUnbalancedRoot(baseLeaves); assertEq(calculatedTxsEffectsHash, rootTxsEffectsHash); } @@ -139,13 +138,13 @@ contract UnbalancedMerkleTest is Test { // merge1 merge2 base base // / \ / \ // base base base base - function testComputeTxsEffectsHash6() public { + function testComputeTxsEffectsHash6() public view { // Generate some base leaves bytes32[] memory baseLeaves = new bytes32[](6); for (uint256 i = 0; i < 6; i++) { baseLeaves[i] = Hash.sha256ToField(abi.encodePacked(i)); } - (uint256 min, uint256 max) = txsHelper.computeMinMaxPathLength(6); + (uint256 min, uint256 max) = merkleLibHelper.computeMinMaxPathLength(6); assertEq(min, 2); assertEq(max, 3); bytes32 firstMergeTxsEffectsHash = @@ -158,7 +157,7 @@ contract UnbalancedMerkleTest is Test { Hash.sha256ToField(bytes.concat(firstMergeTxsEffectsHash, secondMergeTxsEffectsHash)); bytes32 rootTxsEffectsHash = Hash.sha256ToField(bytes.concat(fourthMergeTxsEffectsHash, thirdMergeTxsEffectsHash)); - bytes32 calculatedTxsEffectsHash = txsHelper.computeUnbalancedRoot(baseLeaves); + bytes32 calculatedTxsEffectsHash = merkleLibHelper.computeUnbalancedRoot(baseLeaves); assertEq(calculatedTxsEffectsHash, rootTxsEffectsHash); } @@ -171,13 +170,13 @@ contract UnbalancedMerkleTest is Test { // merge1 merge2 merge4 base // / \ / \ / \ // base base base base base base - function testComputeTxsEffectsHash7() public { + function testComputeTxsEffectsHash7() public view { // Generate some base leaves bytes32[] memory baseLeaves = new bytes32[](7); for (uint256 i = 0; i < 6; i++) { baseLeaves[i] = Hash.sha256ToField(abi.encodePacked(i)); } - (uint256 min, uint256 max) = txsHelper.computeMinMaxPathLength(7); + (uint256 min, uint256 max) = merkleLibHelper.computeMinMaxPathLength(7); assertEq(min, 2); assertEq(max, 3); bytes32 firstMergeTxsEffectsHash = @@ -193,7 +192,7 @@ contract UnbalancedMerkleTest is Test { bytes32 rootTxsEffectsHash = Hash.sha256ToField(bytes.concat(thirdMergeTxsEffectsHash, fifthMergeTxsEffectsHash)); - bytes32 calculatedTxsEffectsHash = txsHelper.computeUnbalancedRoot(baseLeaves); + bytes32 calculatedTxsEffectsHash = merkleLibHelper.computeUnbalancedRoot(baseLeaves); assertEq(calculatedTxsEffectsHash, rootTxsEffectsHash); } } diff --git a/l1-contracts/test/merkle/helpers/MerkleLibHelper.sol b/l1-contracts/test/merkle/helpers/MerkleLibHelper.sol index a897896666b..02386122ae3 100644 --- a/l1-contracts/test/merkle/helpers/MerkleLibHelper.sol +++ b/l1-contracts/test/merkle/helpers/MerkleLibHelper.sol @@ -14,4 +14,12 @@ contract MerkleLibHelper { ) external pure { MerkleLib.verifyMembership(_path, _leaf, _index, _expectedRoot); } + + function computeMinMaxPathLength(uint256 _numTxs) external pure returns (uint256, uint256) { + return MerkleLib.computeMinMaxPathLength(_numTxs); + } + + function computeUnbalancedRoot(bytes32[] memory _leaves) external pure returns (bytes32) { + return MerkleLib.computeUnbalancedRoot(_leaves); + } } diff --git a/l1-contracts/test/sparta/Sparta.t.sol b/l1-contracts/test/sparta/Sparta.t.sol index 1d5642e60fa..989237e856a 100644 --- a/l1-contracts/test/sparta/Sparta.t.sol +++ b/l1-contracts/test/sparta/Sparta.t.sol @@ -17,7 +17,6 @@ import {Leonidas} from "../harnesses/Leonidas.sol"; import {NaiveMerkle} from "../merkle/Naive.sol"; import {MerkleTestUtil} from "../merkle/TestUtil.sol"; import {TestERC20} from "@aztec/mock/TestERC20.sol"; -import {TxsDecoderHelper} from "../decoders/helpers/TxsDecoderHelper.sol"; import {MessageHashUtils} from "@oz/utils/cryptography/MessageHashUtils.sol"; import {MockFeeJuicePortal} from "@aztec/mock/MockFeeJuicePortal.sol"; import {ProposeArgs, ProposeLib} from "@aztec/core/libraries/ProposeLib.sol"; @@ -45,7 +44,6 @@ contract SpartaTest is DecoderBase { Outbox internal outbox; Rollup internal rollup; MerkleTestUtil internal merkleTestUtil; - TxsDecoderHelper internal txsHelper; TestERC20 internal testERC20; RewardDistributor internal rewardDistributor; SignatureLib.Signature internal emptySignature; @@ -90,7 +88,6 @@ contract SpartaTest is DecoderBase { outbox = Outbox(address(rollup.OUTBOX())); merkleTestUtil = new MerkleTestUtil(); - txsHelper = new TxsDecoderHelper(); _; } @@ -166,7 +163,6 @@ contract SpartaTest is DecoderBase { bool _invalidaProposer ) internal { DecoderBase.Full memory full = load(_name); - bytes memory header = full.block.header; StructToAvoidDeepStacks memory ree; @@ -183,7 +179,7 @@ contract SpartaTest is DecoderBase { bytes32[] memory txHashes = new bytes32[](0); ProposeArgs memory args = ProposeArgs({ - header: header, + header: full.block.header, archive: full.block.archive, blockHash: bytes32(0), txHashes: txHashes @@ -215,6 +211,7 @@ contract SpartaTest is DecoderBase { // @todo Handle Leonidas__InsufficientAttestations case } + skipBlobCheck(address(rollup)); if (_expectRevert && _invalidaProposer) { address realProposer = ree.proposer; ree.proposer = address(uint160(uint256(keccak256(abi.encode("invalid", ree.proposer))))); @@ -225,16 +222,15 @@ contract SpartaTest is DecoderBase { ); ree.shouldRevert = true; } - vm.prank(ree.proposer); - rollup.propose(args, signatures, full.block.body); + rollup.propose(args, signatures, full.block.body, full.block.blobInputs); if (ree.shouldRevert) { return; } } else { SignatureLib.Signature[] memory signatures = new SignatureLib.Signature[](0); - rollup.propose(args, signatures, full.block.body); + rollup.propose(args, signatures, full.block.body, full.block.blobInputs); } assertEq(_expectRevert, ree.shouldRevert, "Does not match revert expectation"); diff --git a/noir-projects/noir-protocol-circuits/Nargo.template.toml b/noir-projects/noir-protocol-circuits/Nargo.template.toml index 349516d481e..553b27289cf 100644 --- a/noir-projects/noir-protocol-circuits/Nargo.template.toml +++ b/noir-projects/noir-protocol-circuits/Nargo.template.toml @@ -1,7 +1,7 @@ [workspace] members = [ "crates/types", -# "crates/blob", + "crates/blob", "crates/parity-base", "crates/parity-lib", "crates/parity-root", diff --git a/noir-projects/noir-protocol-circuits/crates/blob/Nargo.toml b/noir-projects/noir-protocol-circuits/crates/blob/Nargo.toml index 29bbc9ffce0..da49758490e 100644 --- a/noir-projects/noir-protocol-circuits/crates/blob/Nargo.toml +++ b/noir-projects/noir-protocol-circuits/crates/blob/Nargo.toml @@ -1,8 +1,9 @@ [package] name = "blob" -type = "bin" +type = "lib" authors = [""] compiler_version = ">=0.30.0" [dependencies] -bigint = {tag = "v0.3.4", git = "https://github.com/noir-lang/noir-bignum" } +bigint = {tag = "v0.4.2", git = "https://github.com/noir-lang/noir-bignum" } +types = { path = "../types" } diff --git a/noir-projects/noir-protocol-circuits/crates/blob/src/blob.nr b/noir-projects/noir-protocol-circuits/crates/blob/src/blob.nr new file mode 100644 index 00000000000..d7e85025df4 --- /dev/null +++ b/noir-projects/noir-protocol-circuits/crates/blob/src/blob.nr @@ -0,0 +1,671 @@ +// TODO(#9982): Replace unconstrained_config with config and import ROOTS - calculating ROOTS in unconstrained is insecure. +use crate::{ + blob_public_inputs::{BlobCommitment, BlobPublicInputs, BlockBlobPublicInputs}, + unconstrained_config::{ + compute_roots_of_unity, D, D_INV, F, FIELDS_CARRYING_AN_EXTRA_BIT_PER_BLOB, + LOG_FIELDS_PER_BLOB, NOIR_FIELDS_PER_BLOB, + }, +}; + +use bigint::BigNum; +// Fixed hash method: +use types::hash::poseidon2_hash_subarray; +// Variable hash method: +// use types::hash::poseidon2_cheaper_variable_hash; +use types::{ + abis::sponge_blob::SpongeBlob, + constants::{BLOBS_PER_BLOCK, FIELDS_PER_BLOB}, + utils::arrays::array_splice, +}; + +global LIMB_MAX = 0x1000000000000000000000000000000; // 2^120 +global TWO_POW_56: u64 = 0x100000000000000; // u64 to aid integer only modulo in __field_to_bignum_limbs +global TWO_POW_64: Field = 0x10000000000000000; + +unconstrained fn __batch_invert_impl(mut x: [F; N]) -> [F; N] { + let mut accumulator: F = BigNum::one(); + + let mut temporaries: [F] = &[]; + for i in 0..x.len() { + temporaries = temporaries.push_back(accumulator); + if (x[i].__is_zero() == false) { + accumulator = accumulator.__mul(x[i]); + } + } + + accumulator = accumulator.__invmod(); + let mut T0: F = BigNum::new(); + for i in 0..x.len() { + let idx = x.len() - 1 - i; + if (x[idx].__is_zero() == false) { + T0 = accumulator.__mul(temporaries[idx]); + accumulator = accumulator.__mul(x[idx]); + x[idx] = T0; + } + } + x +} + +// Taken from https://github.com/iAmMichaelConnor/blob-lib/blob/main/noir-circuits/blob/src/main.nr +unconstrained fn __field_to_bignum_limbs(x: Field) -> [Field; 3] { + // Here we're taking advantage of truncating 64 bit limbs from the input field + // and then subtracting them from the input such that the field division is equivalent to integer division. + let low_120_lower_64 = (x as u64) as Field; + let x_shifted_64 = (x - low_120_lower_64) / TWO_POW_64; + let low_120_upper_56 = ((x_shifted_64 as u64) % TWO_POW_56) as Field; + let low_120 = low_120_lower_64 + TWO_POW_64 * low_120_upper_56; + + let x_shifted_120 = (x_shifted_64 - low_120_upper_56) / (TWO_POW_56 as Field); + + let mid_120_lower_64 = (x_shifted_120 as u64) as Field; + let x_shifted_184 = (x_shifted_120 - mid_120_lower_64) / TWO_POW_64; + let mid_120_upper_56 = ((x_shifted_184 as u64) % TWO_POW_56) as Field; + let mid_120 = mid_120_lower_64 + TWO_POW_64 * mid_120_upper_56; + + let x_shifted_240 = (x_shifted_184 - mid_120_upper_56) / (TWO_POW_56 as Field); + + let hi_120_lower_64 = (x_shifted_240 as u64) as Field; + // We don't need to go further, as we've reached 304 bits, and a Field is 254 bits. + let hi_120 = hi_120_lower_64; + + [low_120, mid_120, hi_120] +} + +// Only works for bignums with modulus larger than the BN Fr size (which is true +// for the bls12-381 Fr field). +fn field_to_bignum(x: Field) -> F { + let __x_limbs = unsafe { __field_to_bignum_limbs(x) }; + + let mut check = __x_limbs[3 - 1]; + for i in 1..3 { + check *= LIMB_MAX; + check += __x_limbs[3 - i - 1]; + } + assert(check == x); + + BigNum { limbs: __x_limbs } +} + +fn convert_blob_fields(blob_as_fields: [Field; FIELDS_PER_BLOB]) -> [F; FIELDS_PER_BLOB] { + let mut blob: [F; FIELDS_PER_BLOB] = [BigNum::new(); FIELDS_PER_BLOB]; + for i in 0..FIELDS_PER_BLOB { + blob[i] = field_to_bignum(blob_as_fields[i]); + } + blob +} + +pub fn check_block_blob_sponge( + blobs_as_fields: [Field; FIELDS_PER_BLOB * BLOBS_PER_BLOCK], + mut sponge_blob: SpongeBlob, +) -> Field { + // Check that we haven't overfilled the blobs + assert( + sponge_blob.expected_fields <= FIELDS_PER_BLOB * BLOBS_PER_BLOCK, + "Attempted to overfill blobs", + ); + // Check that the blob is full + assert( + sponge_blob.expected_fields == sponge_blob.fields, + "Incorrect number of tx effects added to blob", + ); + let sponge_hash = sponge_blob.squeeze(); + let hash = poseidon2_hash_subarray(blobs_as_fields, sponge_blob.fields); + assert(hash == sponge_hash, "Mismatched hashed tx effects"); + + sponge_hash +} + +fn compute_challenge(hashed_blobs_fields: Field, kzg_commitment: BlobCommitment) -> Field { + let preimage = [hashed_blobs_fields, kzg_commitment.inner[0], kzg_commitment.inner[1]]; + let challenge = std::hash::poseidon2::Poseidon2::hash(preimage, 3); + challenge +} + +// ~500k constraints. 30 MINUTES TO COMPILE (due to all the brillig)! +// +// Note: the kzg_commitment is technically a BLS12-381 point in (Fq, Fq), but +// we haven't implemented Fq; only Fr, and we don't actually need to operate on it; +// we just need the bits of data. So we've simply encoded it as fitting inside a +// [Field; 2], since two 254-bit fields more-than covers 381+1=382 bits. +// See yarn-project/foundation/src/blob/index.ts -> commitmentToFields() for encoding +fn evaluate_blob( + blob_as_fields: [Field; FIELDS_PER_BLOB], + kzg_commitment: BlobCommitment, + hashed_blobs_fields: Field, +) -> BlobPublicInputs { + let challenge_z: Field = compute_challenge(hashed_blobs_fields, kzg_commitment); + let challenge_z_as_bignum: F = field_to_bignum(challenge_z); + let blob = convert_blob_fields(blob_as_fields); + + let y: F = barycentric_evaluate_blob_at_z(challenge_z_as_bignum, blob); + // TODO(Miranda): Since we are verifying a root proof, the below doesn't apply. We should be hashing ALL root public inputs, including the blob ones. + // In future, when we do hash PIs, the below will apply. + // TODO: this return data needs to be TIGHTLY PACKED into bytes. + // TODO: then those bytes need to be sha256-hashed, to produce a single value that can be sent to ethereum for cheap snark verification. + // On ethereum, the bytes will be sent along with the sha256-hash of the bytes. The bytes will be used in the point evaluation precompile. The sha256-hash will form a part of the public inputs of the zk-snark proof. + BlobPublicInputs { z: challenge_z, y, kzg_commitment } +} + +// Evaluates each blob required for a block +pub fn evaluate_blobs( + blobs_as_fields: [Field; FIELDS_PER_BLOB * BLOBS_PER_BLOCK], + kzg_commitments: [BlobCommitment; BLOBS_PER_BLOCK], + mut sponge_blob: SpongeBlob, +) -> BlockBlobPublicInputs { + // Note that with multiple blobs per block, each blob uses the same hashed_blobs_fields in: + // challenge_z = H(hashed_blobs_fields, kzg_commitment[0], kzg_commitment[1]) + // This is ok, because each commitment is unique to the blob, and we need hashed_blobs_fields to encompass + // all fields in the blob, which it does. + let hashed_blobs_fields = check_block_blob_sponge(blobs_as_fields, sponge_blob); + let mut result = BlockBlobPublicInputs::empty(); + for i in 0..BLOBS_PER_BLOCK { + let single_blob_fields = array_splice(blobs_as_fields, i * FIELDS_PER_BLOB); + result.inner[i] = + evaluate_blob(single_blob_fields, kzg_commitments[i], hashed_blobs_fields); + if (result.inner[i].is_zero()) & (single_blob_fields[0] == 0) { + // We use empty PIs for empty blobs, to make it simpler to verify on L1. + // Since our fields come from the base rollup, we know they are tightly packed + // and should contain no 0 values among valid values => single_blob_fields[0] == 0. + result.inner[i] = BlobPublicInputs::empty(); + } + } + result +} + +/** + * ___d-1 + * z^d - 1 \ omega^i + * p(z) = --------- . / y_i . --------- + * d /____ z - omega^i + * i=0 + * + * p(z) = factor . sum( y_i . num / denom ) + * + * + * where d = 4096 + * + * Precompute: + * - The d roots of unity omega^i (plus maybe their negatives for z - omega^i computations). + * - (1 / d) + * + * @param z + * @param ys - the many y_i's of the blob. + * + * @return y = p(z) + */ +fn barycentric_evaluate_blob_at_z(z: F, ys: [F; FIELDS_PER_BLOB]) -> F { + // TODO(#9982): Delete below and go back to using config.nr - calculating ROOTS in unconstrained is insecure. + let ROOTS = unsafe { compute_roots_of_unity() }; + // z ^ D: + let mut t1 = z.__mul(z); + + BigNum::evaluate_quadratic_expression([[z]], [[false]], [[z]], [[false]], [t1], [true]); + + let mut t2: F = BigNum::new(); + for _i in 0..LOG_FIELDS_PER_BLOB - 1 { + t2 = t1.__mul(t1); + + // GRATUITOUS USAGE OF as_witness, LIKE THROWING DARTS AT A DARTBOARD AND HOPING THIS HELPS + std::as_witness(t2.limbs[0]); + std::as_witness(t2.limbs[1]); + std::as_witness(t2.limbs[2]); + + BigNum::evaluate_quadratic_expression([[t1]], [[false]], [[t1]], [[false]], [t2], [true]); + + t1 = t2; + std::as_witness(t1.limbs[0]); + std::as_witness(t1.limbs[1]); + std::as_witness(t1.limbs[2]); + } + + let z_pow_d = t1; + + // factor: + let one: F = BigNum::one(); + + t1 = z_pow_d.__sub(one); + std::as_witness(t1.limbs[0]); + std::as_witness(t1.limbs[1]); + std::as_witness(t1.limbs[2]); + + let factor = t1.__mul(D_INV); + + // (z_pow_d - one) * (D_INV) - factor = 0 + // z_pow_d * D_INV - D_INV - factor = 0 + BigNum::evaluate_quadratic_expression( + [[z_pow_d]], + [[false]], + [[D_INV]], + [[false]], + [factor, D_INV], + [true, true], + ); + + // This version doesn't work: + // BigNum::evaluate_quadratic_expression( + // [[z_pow_d, one]], + // [[false, true]], + // [[D_INV]], + // [[false]], + // [factor], + // [true] + // ); + // sum: + let mut sum: F = BigNum::new(); + + // Making a call to this function causes a "stack too deep" error, so I've put the body of that function here, instead: + // let fracs = __compute_fracs(z, ys); // { y_i / (z - omega^i) } + // Note: it's more efficient (saving 30k constraints) to compute: + // ___d-1 + // \ / y_i \ + // / | --------- | . omega^i + // /____ \ z - omega^i / + // i=0 + // ^^^^^^^^^ + // frac + // + // ... than to compute: + // + // ___d-1 + // \ / omega^i \ + // / y_i . | --------- | + // /____ \ z - omega^i / + // i=0 + // + // perhaps because all the omega^i terms are constant witnesses? + //***************************************************************** + // This section is only needed because `__compute_fracs` isn't working (stack too deep error). + let mut fracs: [F; FIELDS_PER_BLOB] = [BigNum::new(); FIELDS_PER_BLOB]; // y_i / (z - omega^i), for all i + let mut denoms = [BigNum::new(); FIELDS_PER_BLOB]; + for i in 0..FIELDS_PER_BLOB { + denoms[i] = z.__sub(ROOTS[i]); // (z - omega^i) + } + + // If you're seeing a `bug` warning for this line, I think it's fine. + // Ideally, we'd be using `__compute_fracs`, anyway, but we're getting a "stack too deep" error. + let inv_denoms = __batch_invert_impl(denoms); // 1 / (z - omega^i), for all i + for i in 0..FIELDS_PER_BLOB { + let num = ys[i]; + let inv_denom = inv_denoms[i]; // 1 / (z - omega^i) + let frac = num.__mul(inv_denom); // y_i * (1 / (z - omega^i)) + fracs[i] = frac; // y_i / (z - omega^i) + std::as_witness(fracs[i].limbs[0]); + std::as_witness(fracs[i].limbs[1]); + std::as_witness(fracs[i].limbs[2]); + + //End of section that is only needed because `__compute_fracs` isn't working + //***************************************************************** + // frac <-- ys[i] / (z + neg_roots[i]) + // frac * (z + neg_roots[i]) - ys[i] = 0 + BigNum::evaluate_quadratic_expression( + [[fracs[i]]], + [[false]], + [[z, ROOTS[i].neg()]], + [[false, false]], + [ys[i]], + [true], + ); + } + + // OK so...we can add multiple product terms into a sum...but I am not sure how many! + // we are computing 254 * 254 bit products and we need to ensure each product limb doesn't overflow + // each limb is 120 bits => 120 * 120 = 240 bits. + // however when computing a mul we add up to 5 product terms into a single field element => 243 bits (ish) + // when we do a modular reduction we validate that a field element >> 120 bits is less than 2^{126} which implies we have 246 bits to play with + // which implies...we can accomodate up to EIGHT additions of product terms before we risk overflowing + // (this is really messy! I never considered the case of giant linear sequences of products) + let mut sum: F = BigNum::new(); + + // Seeking: + // ___d-1 + // \ omega^i + // sum = / y_i . --------- + // /____ z - omega^i + // i=0 + let NUM_PARTIAL_SUMS = FIELDS_PER_BLOB / 8; + for i in 0..NUM_PARTIAL_SUMS { + let mut partial_sum: F = BigNum::new(); + let mut lhs: [F; 8] = [BigNum::new(); 8]; + let mut rhs = lhs; + + // Seeking: + // ___i*8 + 7 + // \ omega^k + // partial_sum = / y_k . --------- + // /____ z - omega^k + // k=i*8 + 0 + for j in 0..8 { + let k = i * 8 + j; + lhs[j] = ROOTS[k]; // omega^k + rhs[j] = fracs[k]; // y_k / (z - omega^k) + std::as_witness(lhs[j].limbs[0]); + std::as_witness(lhs[j].limbs[1]); + std::as_witness(lhs[j].limbs[2]); + std::as_witness(rhs[j].limbs[0]); + std::as_witness(rhs[j].limbs[1]); + std::as_witness(rhs[j].limbs[2]); + + // y_k * ( omega^k / (z - omega^k) ) + let summand = ROOTS[k].__mul(fracs[k]); + + // partial_sum + ( y_k * ( omega^k / (z - omega^k) ) -> partial_sum + partial_sum = partial_sum.__add(summand); + std::as_witness(partial_sum.limbs[0]); + std::as_witness(partial_sum.limbs[1]); + std::as_witness(partial_sum.limbs[2]); + } + + // Seeking: + // ___i*8 - 1 ___i*8 + 7 + // \ omega^i \ / y_k \ + // sum_out = / y_i . --------- + / omega^k . | --------- | + // /____ z - omega^i /____ \ z - omega^k / + // 0 k = i*8 + // ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + // sum partial_sum + // + // ... that is: + // + // ___i*8 - 1 ___ 7 + // \ omega^i \ + // sum_out = / y_i . --------- + / lhs[j] . rhs[j] + // /____ z - omega^i /____ + // 0 j = 0 + // ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ + // sum partial_sum + // + let mut sum_out = sum.__add(partial_sum); + + std::as_witness(sum_out.limbs[0]); + std::as_witness(sum_out.limbs[1]); + std::as_witness(sum_out.limbs[2]); + + // sum_out <- sum + (lhs[0] * rhs[0] + ... + lhs[7] * rhs[7]) + // => (lhs[0] * rhs[0] + ... + lhs[7] * rhs[7]) + sum - sum_out == 0 + BigNum::evaluate_quadratic_expression( + [[lhs[0]], [lhs[1]], [lhs[2]], [lhs[3]], [lhs[4]], [lhs[5]], [lhs[6]], [lhs[7]]], + [[false], [false], [false], [false], [false], [false], [false], [false]], + [[rhs[0]], [rhs[1]], [rhs[2]], [rhs[3]], [rhs[4]], [rhs[5]], [rhs[6]], [rhs[7]]], + [[false], [false], [false], [false], [false], [false], [false], [false]], + [sum, sum_out], + [false, true], + ); + + sum = sum_out; + std::as_witness(sum.limbs[0]); + std::as_witness(sum.limbs[1]); + std::as_witness(sum.limbs[2]); + } + + // y: + let y = factor.__mul(sum); + + // y <- factor * sum + // => factor * sum - y == 0 + BigNum::evaluate_quadratic_expression([[factor]], [[false]], [[sum]], [[false]], [y], [true]); + + y +} + +mod tests { + // TODO(#9982): Replace unconstrained_config with config and import ROOTS - calculating ROOTS in unconstrained is insecure. + use crate::{ + blob::{ + barycentric_evaluate_blob_at_z, check_block_blob_sponge, evaluate_blob, evaluate_blobs, + field_to_bignum, + }, + blob_public_inputs::BlobCommitment, + unconstrained_config::{ + D, D_INV, F, FIELDS_CARRYING_AN_EXTRA_BIT_PER_BLOB, LOG_FIELDS_PER_BLOB, + NOIR_FIELDS_PER_BLOB, + }, + }; + use bigint::{BigNum, fields::bls12_381Fr::BLS12_381_Fr_Params}; + use types::{ + abis::sponge_blob::SpongeBlob, + constants::{BLOBS_PER_BLOCK, FIELDS_PER_BLOB}, + tests::{fixture_builder::FixtureBuilder, utils::pad_end}, + }; + + // Helper to return (z^d - 1)/d (unsafe - test only) + fn z_d_helper(challenge_z: F) -> F { + let mut t1 = challenge_z.__mul(challenge_z); + let mut t2: F = BigNum::new(); + for _i in 0..LOG_FIELDS_PER_BLOB - 1 { + t2 = t1.__mul(t1); + t1 = t2; + } + + let z_pow_d = t1; + + let one: F = BigNum::one(); + + t1 = z_pow_d.__sub(one); + let factor = t1.__mul(D_INV); + factor + } + + #[test] + unconstrained fn test_one_note() { + let mut tx_data = FixtureBuilder::new(); + tx_data.add_new_note_hash(1); + let mut blob: [Field; FIELDS_PER_BLOB] = [0; FIELDS_PER_BLOB]; + let blob_fields = tx_data.to_combined_accumulated_data().serialize(); + for i in 0..blob_fields.len() { + blob[i] = blob_fields[i]; + } + let mut sponge_blob = SpongeBlob::new(blob_fields.len()); + sponge_blob.absorb(blob_fields, blob_fields.len()); + + let kzg_commitment_in = BlobCommitment { inner: [1, 2] }; // this is made-up nonsense. + let padded_blob_fields = pad_end(blob, 0); + let hashed_blob = check_block_blob_sponge(padded_blob_fields, sponge_blob); + let output = evaluate_blob(blob, kzg_commitment_in, hashed_blob); + let challenge_z = field_to_bignum(output.z); + let y = output.y; + // Our blob is all 0s, apart from one commitment of value 1 at position 0 + // It's in eval form => our barycentric formula to find p(z) becomes: + // + // z^d - 1 omega^0 z^d - 1 1 + // p(z) = --------- . note . --------- = --------- . 1 . --------- + // d z - omega^0 d z - 1 + // + // => + // We check that: + //* z^d - 1 + //* p(z).(z - 1) = --------- + //* d + // + let rhs = z_d_helper(challenge_z); + let z_minus_1 = unsafe { challenge_z.__sub(BigNum::one()) }; + let lhs = y.__mul(z_minus_1); + assert_eq(lhs, rhs); + } + + #[test] + unconstrained fn test_base() { + let mut tx_data = FixtureBuilder::new(); + // Add some random bits of state + tx_data.append_note_hashes_with_logs(50); + tx_data.set_first_nullifier(); + tx_data.append_nullifiers(50); + tx_data.append_l2_to_l1_msgs(5); + tx_data.append_unencrypted_log_hashes(5); + let mut blob: [Field; FIELDS_PER_BLOB] = [0; FIELDS_PER_BLOB]; + let blob_fields = tx_data.to_combined_accumulated_data().serialize(); + for i in 0..blob_fields.len() { + blob[i] = blob_fields[i]; + } + let mut sponge_blob = SpongeBlob::new(blob_fields.len()); + sponge_blob.absorb(blob_fields, blob_fields.len()); + + let kzg_commitment_in = BlobCommitment { inner: [1, 2] }; // this is made-up nonsense. + let padded_blob_fields = pad_end(blob, 0); + let hashed_blob = check_block_blob_sponge(padded_blob_fields, sponge_blob); + let output = evaluate_blob(blob, kzg_commitment_in, hashed_blob); + let expected_z = std::hash::poseidon2::Poseidon2::hash( + [sponge_blob.squeeze(), kzg_commitment_in.inner[0], kzg_commitment_in.inner[1]], + 3, + ); + assert(expected_z == output.z); + } + + // All hardcoded values in this test are taken from yarn-project/foundation/src/blob/blob.test.ts -> 'should evaluate a blob of 400 items' + #[test] + unconstrained fn test_400() { + let mut blob: [Field; FIELDS_PER_BLOB] = [0; FIELDS_PER_BLOB]; + for i in 0..400 { + blob[i] = 3; + } + let mut sponge_blob = SpongeBlob::new(400); + sponge_blob.absorb(blob, 400); + + let kzg_commitment_in = BlobCommitment { + inner: [ + 0x00b2803d5fe972914ba3616033e2748bbaa6dbcddefc3721a54895a7a45e7750, + 0x0000000000000000000000000000004dd1a971c7e8d8292be943d05bccebcfea, + ], + }; + + let padded_blob_fields = pad_end(blob, 0); + let hashed_blob = check_block_blob_sponge(padded_blob_fields, sponge_blob); + let output = evaluate_blob(blob, kzg_commitment_in, hashed_blob); + + // y is a BLS field with value 0x212c4f0c0ee5e7dd037110686a4639d191dde7b57ab99b51e4b06e7d827b6c4c + let expected_y: F = BigNum { + limbs: [0xdde7b57ab99b51e4b06e7d827b6c4c, 0x4f0c0ee5e7dd037110686a4639d191, 0x212c], + }; + assert(expected_y == output.y); + } + + // All hardcoded values in this test are taken from yarn-project/foundation/src/blob/blob.test.ts -> 'should evaluate full blobs' + #[test] + unconstrained fn test_full_blobs() { + let mut blob: [Field; FIELDS_PER_BLOB * BLOBS_PER_BLOCK] = + [0; FIELDS_PER_BLOB * BLOBS_PER_BLOCK]; + for j in 0..BLOBS_PER_BLOCK { + for i in 0..FIELDS_PER_BLOB { + blob[j * FIELDS_PER_BLOB + i] = i as Field + 2; + } + } + + let mut sponge_blob = SpongeBlob::new(FIELDS_PER_BLOB * BLOBS_PER_BLOCK); + sponge_blob.absorb(blob, FIELDS_PER_BLOB * BLOBS_PER_BLOCK); + + let kzg_commitment_in = BlobCommitment { + inner: [ + 0x00ac771dea41e29fc2b7016c32731602c0812548ba0f491864a4e03fdb94b8d3, + 0x000000000000000000000000000000d195faad1967cdf005acf73088b0e8474a, + ], + }; + + let output = evaluate_blobs(blob, [kzg_commitment_in; BLOBS_PER_BLOCK], sponge_blob); + + // y is a BLS field with value 0x52fd4e272015a79f3889cc9ab1d84bee4326de7d8ced52612ecc9ec137bd38ee + let expected_y: F = BigNum { + limbs: [0x26de7d8ced52612ecc9ec137bd38ee, 0x4e272015a79f3889cc9ab1d84bee43, 0x52fd], + }; + for j in 0..BLOBS_PER_BLOCK { + assert(expected_y == output.inner[j].y); + } + } + + #[test(should_fail_with = "Found non-zero field after breakpoint")] + unconstrained fn test_no_extra_blob_fields() { + let mut blob: [Field; FIELDS_PER_BLOB] = [0; FIELDS_PER_BLOB]; + // Fill fields with 50 inputs... + for i in 0..50 { + blob[i] = 3; + } + // ...but the rollup's sponge is only expecting 45... + let mut sponge_blob = SpongeBlob::new(45); + sponge_blob.absorb(blob, 45); + + // ...so the below should fail as it detects we are adding effects which did not come from the rollup. + let padded_blob_fields = pad_end(blob, 0); + let _ = check_block_blob_sponge(padded_blob_fields, sponge_blob); + } + + #[test(should_fail_with = "Incorrect number of tx effects added to blob")] + unconstrained fn test_absorbed_too_few_blob_fields() { + let mut blob: [Field; FIELDS_PER_BLOB] = [0; FIELDS_PER_BLOB]; + // Fill fields with 50 inputs... + for i in 0..50 { + blob[i] = 3; + } + // ...but the rollup's sponge is expecting 100... + let mut sponge_blob = SpongeBlob::new(100); + sponge_blob.absorb(blob, 50); + + // ...so the below should fail as it detects we have not added all the tx effects. + let padded_blob_fields = pad_end(blob, 0); + let _ = check_block_blob_sponge(padded_blob_fields, sponge_blob); + } + + #[test] + unconstrained fn test_empty_blob() { + let mut blob: [Field; FIELDS_PER_BLOB * BLOBS_PER_BLOCK] = + [0; FIELDS_PER_BLOB * BLOBS_PER_BLOCK]; + let mut sponge_blob = SpongeBlob::new(0); + // The below should not throw + let _ = check_block_blob_sponge(blob, sponge_blob); + } + + #[test] + unconstrained fn test_barycentric() { + let z: F = BigNum { limbs: [2, 0, 0] }; + + // many y's form a blob: + let mut ys: [F; FIELDS_PER_BLOB] = [BigNum::new(); FIELDS_PER_BLOB]; + + ys[0] = BigNum { limbs: [0x1234, 0, 0] }; + ys[1] = BigNum { limbs: [0xabcd, 0, 0] }; + ys[2] = BigNum { limbs: [0x69, 0, 0] }; + + // evaluate the blob at z = 2 to yield y: + let y = barycentric_evaluate_blob_at_z(z, ys); + + let mut expected_y: [Field; 3] = [0; 3]; + if (FIELDS_PER_BLOB == 4096) { + // Computed with the eth consensus specs py lib + expected_y = + [0x0c62e352a428e8e9842eadc1c106bd, 0x902c5b4968d755b6f49c0231e15af8, 0x00049a]; + // Also computed with cKzg, in the typescript tests: + // 0x049a902c5b4968d755b6f49c0231e15af80c62e352a428e8e9842eadc1c106bd + } + if (FIELDS_PER_BLOB == 8) { + // Computed with the eth consensus specs py lib (after hacking it to cope with blobs of size 8 instead of 4096): + expected_y = + [0xb04cdea4304000053abffffffb203a, 0x0000000002e30785c8afa4496f8e38, 0x000000]; + } + assert(y.limbs == expected_y); + } + + // Helper function used to populate the hard-coded double_modulus value in the bls12381Fr.nr file in the bignum library. + unconstrained fn compute_double_modulus() -> [Field; 3] { + let two_p = [0x7b4805fffcb7fdfffffffe00000002, 0x4ea6533afa906673b0101343b00aa7, 0x00e7db]; + let NUM_LIMBS = 3; // must be >= 3 + let two_pow_120 = 2.pow_32(120); + let mut double_modulus: [Field; 3] = [0; 3]; + + double_modulus[0] = two_p[0] + two_pow_120; + for i in 1..NUM_LIMBS - 1 { + double_modulus[i] = two_p[i] + two_pow_120 - 1; + } + double_modulus[NUM_LIMBS - 1] = two_p[NUM_LIMBS - 1] - 1; + double_modulus + } + + #[test] + unconstrained fn test_compute_double_modulus() { + let double_modulus = BLS12_381_Fr_Params::get_params().double_modulus; + assert_eq(double_modulus, compute_double_modulus()); + } + + #[test] + unconstrained fn test_compute_d_inv() { + let d_inversed = D.__invmod(); + assert_eq(d_inversed, D_INV); + } +} + diff --git a/noir-projects/noir-protocol-circuits/crates/blob/src/blob_public_inputs.nr b/noir-projects/noir-protocol-circuits/crates/blob/src/blob_public_inputs.nr new file mode 100644 index 00000000000..ce3c00068c6 --- /dev/null +++ b/noir-projects/noir-protocol-circuits/crates/blob/src/blob_public_inputs.nr @@ -0,0 +1,134 @@ +use crate::unconstrained_config::F; +// TODO(#9982): Replace unconstrained_config with config. +use bigint::BigNum; +use types::{ + constants::{BLOB_PUBLIC_INPUTS, BLOBS_PER_BLOCK}, + traits::{Deserialize, Empty, Serialize}, + utils::reader::Reader, +}; + +// NB: This only exists because a nested array of [[Field; 2]; N] did not build with earthly, but was fine otherwise +// For blobs, we use the compressed 48 byte BLS12 commitment to compute the challenge. We never need to operate on it, +// so it's encoded as 2 fields. The first is the first 31 bytes, and the second is the next 17 bytes. +pub struct BlobCommitment { + pub inner: [Field; 2], +} + +impl Eq for BlobCommitment { + fn eq(self, other: Self) -> bool { + self.inner.eq(other.inner) + } +} + +impl Empty for BlobCommitment { + fn empty() -> Self { + Self { inner: [0; 2] } + } +} + +pub struct BlobPublicInputs { + pub z: Field, + pub y: F, + pub kzg_commitment: BlobCommitment, +} + +impl BlobPublicInputs { + fn accumulate(self, other: Self) -> Self { + // TODO: When we verify root, rather than block root, on L1 we need to accumulate many blob openings + // @Mike this may be where we calculate z_acc, y_acc, C_acc, etc. + // WARNING: unimplemented, below is nonsense to get noir to compile + Self { z: self.z + other.z, y: self.y.add(other.y), kzg_commitment: self.kzg_commitment } + } + + // This checks whether the blob public inputs represent data of all 0s + // This is not equivalent to being empty, since the challenge point z is a hash and won't have 0 value. + fn is_zero(self) -> bool { + // Note: there is no constrained is_zero in bignum + (self.y == BigNum { limbs: [0, 0, 0] }) & (self.kzg_commitment.inner == [0, 0]) + } +} + +impl Empty for BlobPublicInputs { + fn empty() -> Self { + Self { z: 0, y: BigNum::new(), kzg_commitment: BlobCommitment::empty() } + } +} + +impl Serialize for BlobPublicInputs { + fn serialize(self) -> [Field; BLOB_PUBLIC_INPUTS] { + [ + self.z, + self.y.limbs[0], + self.y.limbs[1], + self.y.limbs[2], + self.kzg_commitment.inner[0], + self.kzg_commitment.inner[1], + ] + } +} + +impl Deserialize for BlobPublicInputs { + fn deserialize(fields: [Field; BLOB_PUBLIC_INPUTS]) -> Self { + Self { + z: fields[0], + y: BigNum { limbs: [fields[1], fields[2], fields[3]] }, + kzg_commitment: BlobCommitment { inner: [fields[4], fields[5]] }, + } + } +} + +impl Eq for BlobPublicInputs { + fn eq(self, other: Self) -> bool { + (self.z == other.z) & (self.y.eq(other.y)) & (self.kzg_commitment.eq(other.kzg_commitment)) + } +} + +// NB: it is much cleaner throughout the protocol circuits to define this struct rather than use a nested array. +// Once we accumulate blob inputs, it should be removed, and we just use BlobPublicInputs::accumulate everywhere. +pub struct BlockBlobPublicInputs { + pub inner: [BlobPublicInputs; BLOBS_PER_BLOCK], +} + +impl Empty for BlockBlobPublicInputs { + fn empty() -> Self { + Self { inner: [BlobPublicInputs::empty(); BLOBS_PER_BLOCK] } + } +} + +impl Serialize for BlockBlobPublicInputs { + fn serialize(self) -> [Field; BLOB_PUBLIC_INPUTS * BLOBS_PER_BLOCK] { + let mut fields: BoundedVec = BoundedVec::new(); + for i in 0..BLOBS_PER_BLOCK { + fields.extend_from_array(self.inner[i].serialize()); + } + fields.storage() + } +} + +impl Deserialize for BlockBlobPublicInputs { + fn deserialize(fields: [Field; BLOB_PUBLIC_INPUTS * BLOBS_PER_BLOCK]) -> Self { + let mut reader = Reader::new(fields); + let item = Self { + inner: reader.read_struct_array( + BlobPublicInputs::deserialize, + [BlobPublicInputs::empty(); BLOBS_PER_BLOCK], + ), + }; + reader.finish(); + item + } +} + +impl Eq for BlockBlobPublicInputs { + fn eq(self, other: Self) -> bool { + self.inner.eq(other.inner) + } +} + +#[test] +fn serialization_of_empty() { + let item = BlockBlobPublicInputs::empty(); + let serialized = item.serialize(); + let deserialized = BlockBlobPublicInputs::deserialize(serialized); + assert(item.eq(deserialized)); +} diff --git a/noir-projects/noir-protocol-circuits/crates/blob/src/config.nr b/noir-projects/noir-protocol-circuits/crates/blob/src/config.nr index 8b3fbac3339..9fd051426c0 100644 --- a/noir-projects/noir-protocol-circuits/crates/blob/src/config.nr +++ b/noir-projects/noir-protocol-circuits/crates/blob/src/config.nr @@ -1,4110 +1,12305 @@ -use dep::bigint::{BigNum, fields::bls12_381Fr::BLS12_381_Fr_Params}; +use bigint::{BigNum, fields::bls12_381Fr::BLS12_381_Fr_Params}; +use types::constants::FIELDS_PER_BLOB; -type F = BigNum<3, BLS12_381_Fr_Params>; +type F = BigNum<3, 255, BLS12_381_Fr_Params>; + +// TODO(#9982): Delete unconstrained_config.nr and go back to using this file - calculating ROOTS in unconstrained is insecure. -global FIELDS_PER_BLOB: u32 = 4096; global LOG_FIELDS_PER_BLOB: u32 = 12; global EXTRA_FIELDS_PER_BLOB: u32 = 16; // 16 = floor(4096 FIELDS_PER_BLOB / 254 noir_field_bits), wasting only 32 bits. global NOIR_FIELDS_PER_BLOB: u32 = FIELDS_PER_BLOB + EXTRA_FIELDS_PER_BLOB; global FIELDS_CARRYING_AN_EXTRA_BIT_PER_BLOB: u32 = EXTRA_FIELDS_PER_BLOB * 254; // EXTRA_FIELDS_PER_BLOB * 254 = 4064. So the first 4064 bls Fr fields in the blob will carry an extra bit in their 255th bit position, that will be used to reconstitute 16 extra fields. global D: F = BigNum { limbs: [4096, 0, 0] }; -global D_INV = BigNum { limbs: [0x686828bfce5c19400fffff00100001, 0x6878b46ae3705eb6a46a89213de7d3, 0x73e6] }; +global D_INV: F = + BigNum { limbs: [0x686828bfce5c19400fffff00100001, 0x6878b46ae3705eb6a46a89213de7d3, 0x73e6] }; global ROOTS: [F; FIELDS_PER_BLOB] = [ - BigNum { limbs: [ 0x000000000000000000000000000001, 0x000000000000000000000000000000, 0x000000 ] } , - BigNum { limbs: [ 0xbda402fffe5bfeffffffff00000000, 0xa753299d7d483339d80809a1d80553, 0x0073ed ] } , - BigNum { limbs: [ 0x030002760300000001000000000000, 0x0000000000008d51ccce760304d0ec, 0x000000 ] } , - BigNum { limbs: [ 0xbaa40089fb5bfefffeffff00000001, 0xa753299d7d47a5e80b39939ed33467, 0x0073ed ] } , - BigNum { limbs: [ 0x8b21c28713b7007228fd3397743f7a, 0x66f603fa66e78c0625cd70d77ce2b3, 0x003457 ] } , - BigNum { limbs: [ 0x32824078eaa4fe8dd702cb688bc087, 0x405d25a31660a733b23a98ca5b22a0, 0x003f96 ] } , - BigNum { limbs: [ 0x74903694b04fd86037fe81ae99502e, 0xb22e5ce11044babc5affca86bf658e, 0x001333 ] } , - BigNum { limbs: [ 0x4913cc6b4e0c269fc8017d5166afd3, 0xf524ccbc6d03787d7d083f1b189fc5, 0x0060b9 ] } , - BigNum { limbs: [ 0xbeb312f20b6f7653ea61d87742bcce, 0xce9140267af9dd1c0af834cec32c17, 0x0020b1 ] } , - BigNum { limbs: [ 0xfef0f00df2ec88ac159e2688bd4333, 0xd8c1e977024e561dcd0fd4d314d93b, 0x00533b ] } , - BigNum { limbs: [ 0xf4e672ebc1e1bb95df4b360411fe73, 0x596e753e4fcc6e92a9c460afca4a1e, 0x004f2c ] } , - BigNum { limbs: [ 0xc8bd90143c7a436a20b4c8fbee018e, 0x4de4b45f2d7bc4a72e43a8f20dbb34, 0x0024c1 ] } , - BigNum { limbs: [ 0x7a6b6cfb0faca4807b811a823f728d, 0x919ec91f38ac5ccd4631f16edba496, 0x001edc ] } , - BigNum { limbs: [ 0x43389604eeaf5a7f847ee47dc08d74, 0x15b4607e449bd66c91d61832fc60bd, 0x005511 ] } , - BigNum { limbs: [ 0xbc96af334c36bca1abb31fb37786b9, 0xf2dd7e0c63fccabf643eda8951f257, 0x0038c7 ] } , - BigNum { limbs: [ 0x010d53ccb225425e544cdf4c887948, 0xb475ab91194b687a73c92f188612fc, 0x003b25 ] } , - BigNum { limbs: [ 0x6e88fb4c38fb8a360c60997369df4e, 0x903a157988bab4bcd40e22f55448bf, 0x0050e0 ] } , - BigNum { limbs: [ 0x4f1b07b3c56074c9f39f658c9620b3, 0x17191423f48d7e7d03f9e6ac83bc94, 0x00230d ] } , - BigNum { limbs: [ 0xbc7f62d13a6e1c3ec50c9031a36ca3, 0xc5837cb5fca206050b5832d1099726, 0x0065f6 ] } , - BigNum { limbs: [ 0x0124a02ec3ede2c13af36ece5c935e, 0xe1cface780a62d34ccafd6d0ce6e2d, 0x000df6 ] } , - BigNum { limbs: [ 0x3dc46688b5e11768cc0c58459f155b, 0x0457c83a7d9c5aea51f540eb0c0496, 0x002c7e ] } , - BigNum { limbs: [ 0x7fdf9c77487ae79733f3a6ba60eaa6, 0xa2fb6162ffabd84f8612c8b6cc00bd, 0x00476f ] } , - BigNum { limbs: [ 0xe943612401899720d4ed194fccfeb9, 0xda18a9d30564a8f0cfd2438f018c01, 0x005303 ] } , - BigNum { limbs: [ 0xd460a1dbfcd267df2b12e5b0330148, 0xcd3a7fca77e38a490835c612d67951, 0x0020e9 ] } , - BigNum { limbs: [ 0x317ae6451bb89de69679532ae1234c, 0x237e58fcced486fa69d8e4e48506e3, 0x000461 ] } , - BigNum { limbs: [ 0x8c291cbae2a361196986abd51edcb5, 0x83d4d0a0ae73ac3f6e2f24bd52fe70, 0x006f8c ] } , - BigNum { limbs: [ 0x593d6ff6dab086ee5bcecc4e7773cb, 0xb16caf96816fa3a95d2d4016e2bd45, 0x00047c ] } , - BigNum { limbs: [ 0x6466930923ab7811a43132b1888c36, 0xf5e67a06fbd88f907adac98af5480e, 0x006f70 ] } , - BigNum { limbs: [ 0xa6d195014b641082e68bc0bc50a88f, 0x5bb8ed54ae00468b04010fa5c79f62, 0x0056f3 ] } , - BigNum { limbs: [ 0x16d26dfeb2f7ee7d19743e43af5772, 0x4b9a3c48cf47ecaed406f9fc1065f1, 0x001cfa ] } , - BigNum { limbs: [ 0x452d43f6d5756f51cb57e0e3035d15, 0xb9c6e6797777851425ea12dcacdae7, 0x001579 ] } , - BigNum { limbs: [ 0x7876bf0928e68fae34a81e1cfca2ec, 0xed8c432405d0ae25b21df6c52b2a6c, 0x005e73 ] } , - BigNum { limbs: [ 0x967f4be2f951558140d032f0a9ee53, 0x6345ec055e4d14a1e27164d8fdbd2d, 0x0045af ] } , - BigNum { limbs: [ 0x2724b71d050aa97ebf2fcc0f5611ae, 0x440d3d981efb1e97f596a4c8da4826, 0x002e3e ] } , - BigNum { limbs: [ 0xf20a6f5e1709899ddf46bac40ac8e4, 0x300e9079af0b916f129332ba2dfc0b, 0x0028eb ] } , - BigNum { limbs: [ 0xcb9993a1e752756220b9443bf5371d, 0x77449923ce3ca1cac574d6e7aa0947, 0x004b02 ] } , - BigNum { limbs: [ 0xdc0ae311f00af48469ef4d246b6883, 0xad6a79b61c1a71d544f7800a7e4ae4, 0x005391 ] } , - BigNum { limbs: [ 0xe1991fee0e510a7b9610b1db94977e, 0xf9e8afe7612dc1649310899759ba6e, 0x00205b ] } , - BigNum { limbs: [ 0x2e4312e6011bf5d941e9338fb466f7, 0x0520cdfb5d9d6c54cb86cdf73e9123, 0x0044ed ] } , - BigNum { limbs: [ 0x8f60f019fd400926be16cb704b990a, 0xa2325ba21faac6e50c813baa997430, 0x002f00 ] } , - BigNum { limbs: [ 0x12abf7f3a89e7acf065a270f3c324f, 0x64fb4536c4fcf6ad66524f0376d9e4, 0x0054fa ] } , - BigNum { limbs: [ 0xaaf80b0c55bd8430f9a5d7f0c3cdb2, 0x4257e466b84b3c8c71b5ba9e612b6f, 0x001ef3 ] } , - BigNum { limbs: [ 0x2a70a615d0b8e4d2fc5e69ac5db47f, 0x40ac57f86f5e293b1d67bc8de5d9a1, 0x000e48 ] } , - BigNum { limbs: [ 0x93335cea2da31a2d03a19553a24b82, 0x66a6d1a50dea09febaa04d13f22bb2, 0x0065a5 ] } , - BigNum { limbs: [ 0x1f590ef73ba2bdc0f1357a508e5e7b, 0x00aba73798bfaf59d0fc7261da7291, 0x0058c4 ] } , - BigNum { limbs: [ 0x9e4af408c2b9413f0eca84af71a186, 0xa6a78265e48883e0070b973ffd92c2, 0x001b29 ] } , - BigNum { limbs: [ 0x02e4e461e72e18ddc3b03ea91bc267, 0x785206b5761a878d670fcb570ab3b8, 0x006358 ] } , - BigNum { limbs: [ 0xbabf1e9e172de6223c4fc056e43d9a, 0x2f0122e8072dabac70f83e4acd519b, 0x001095 ] } , - BigNum { limbs: [ 0xc3ebf43c92a949a4593e1acca2cb6c, 0x8adc7bff16bae3ee1645113940cf46, 0x0053c7 ] } , - BigNum { limbs: [ 0xf9b80ec36bb2b55ba6c1e4335d3495, 0x1c76ad9e668d4f4bc1c2f86897360c, 0x002026 ] } , - BigNum { limbs: [ 0xe74ba2b75ca477f44e14739932aa33, 0x508a14adf95959d7d47f20aa9f0259, 0x0037d3 ] } , - BigNum { limbs: [ 0xd6586048a1b7870bb1eb8b66cd55ce, 0x56c914ef83eed9620388e8f73902f9, 0x003c1a ] } , - BigNum { limbs: [ 0x9f1f01e2bbf0ac476e05bf67d4973c, 0xcc64ae610371dcd9ce528178852eaf, 0x005a50 ] } , - BigNum { limbs: [ 0x1e85011d426b52b891fa3f982b68c5, 0xdaee7b3c79d6566009b5882952d6a4, 0x00199c ] } , - BigNum { limbs: [ 0x1ae51df978cc3878f4ee1de45ab2f2, 0x03824bef73c976407b9926e20836d2, 0x006e57 ] } , - BigNum { limbs: [ 0xa2bee506858fc6870b11e11ba54d0f, 0xa3d0ddae097ebcf95c6ee2bfcfce81, 0x000596 ] } , - BigNum { limbs: [ 0x7493f160ce4cb729b4cb21179cfb0e, 0x79931cfdd8947f799cf20f675fde6a, 0x00036b ] } , - BigNum { limbs: [ 0x4910119f300f47d64b34dde86304f3, 0x2dc00c9fa4b3b3c03b15fa3a7826e9, 0x007082 ] } , - BigNum { limbs: [ 0x0664a566a603f98c15c05b1901cef2, 0xed2ec80a4115f20c57f6d7dc953305, 0x000afc ] } , - BigNum { limbs: [ 0xb73f5d9958580573ea3fa3e6fe310f, 0xba2461933c32412d801131c542d24e, 0x0068f0 ] } , - BigNum { limbs: [ 0xe20d3cfc83311c0727b36db1974ef4, 0xd5fd4e2f04c5e7caaba64af676214e, 0x0028c6 ] } , - BigNum { limbs: [ 0xdb96c6037b2ae2f8d84c914e68b10d, 0xd155db6e78824b6f2c61beab61e404, 0x004b26 ] } , - BigNum { limbs: [ 0x36750f231bcd8672d73ebbe97445d5, 0x9ddec7fa8e98e4b5243a8bda7ca378, 0x000fe0 ] } , - BigNum { limbs: [ 0x872ef3dce28e788d28c143168bba2c, 0x097461a2eeaf4e84b3cd7dc75b61db, 0x00640d ] } , - BigNum { limbs: [ 0xd0caac87f5713c5130c2c1660125be, 0x111413588742b7c68b4d7fdd60d098, 0x006898 ] } , - BigNum { limbs: [ 0xecd9567808eac2aecf3d3d99feda43, 0x963f1644f6057b734cba89c47734ba, 0x000b55 ] } , - BigNum { limbs: [ 0x30a34e5e4c7a31a0927a327c751043, 0x983de0110e23413ff88848100458b8, 0x0030d2 ] } , - BigNum { limbs: [ 0x8d00b4a1b1e1cd5f6d85cc838aefbe, 0x0f15498c6f24f1f9df7fc191d3ac9b, 0x00431b ] } , - BigNum { limbs: [ 0x1e0777f7ef73e32ef7664cb2440ed4, 0xf5b7cb3dee5f01fe51c5b744878f5d, 0x00510d ] } , - BigNum { limbs: [ 0x9f9c8b080ee81bd10899b24dbbf12d, 0xb19b5e5f8ee9313b8642525d5075f6, 0x0022df ] } , - BigNum { limbs: [ 0x608393655b6d323eae9752b92f9726, 0x1a173d90ba01c42ee040e5579a63af, 0x0015ae ] } , - BigNum { limbs: [ 0x5d206f9aa2eeccc15168ac46d068db, 0x8d3bec0cc3466f0af7c7244a3da1a4, 0x005e3f ] } , - BigNum { limbs: [ 0x136819ab9c98a27528d588439e5b12, 0x3ae1cc22ee66ae3320a20450eb9bbf, 0x001a8f ] } , - BigNum { limbs: [ 0xaa3be95461c35c8ad72a76bc61a4ef, 0x6c715d7a8ee18506b7660550ec6994, 0x00595e ] } , - BigNum { limbs: [ 0xb0deac619bda2d4000b0b3767c9928, 0x0b00588ed2cf8b98c6ffcd682aa219, 0x0035c6 ] } , - BigNum { limbs: [ 0x0cc5569e6281d1bfff4f4b898366d9, 0x9c52d10eaa78a7a111083c39ad633a, 0x003e27 ] } , - BigNum { limbs: [ 0x95392351a789a318d303a266992f63, 0x6bb22f520df225302664820cb7fbf4, 0x00058e ] } , - BigNum { limbs: [ 0x286adfae56d25be72cfc5c9966d09e, 0x3ba0fa4b6f560e09b1a3879520095f, 0x006e5f ] } , - BigNum { limbs: [ 0x47df05ce549e034eb4bb5cc301906f, 0xace8a4aeb40b597e225a1da4156c04, 0x007144 ] } , - BigNum { limbs: [ 0x75c4fd31a9bdfbb14b44a23cfe6f92, 0xfa6a84eec93cd9bbb5adebfdc2994f, 0x0002a8 ] } , - BigNum { limbs: [ 0x7d9fd5726f6b40ed9fa5c032ec0a23, 0xa72e47136966a4512dec6b0a03377e, 0x005f2f ] } , - BigNum { limbs: [ 0x40042d8d8ef0be12605a3ecd13f5de, 0x0024e28a13e18ee8aa1b9e97d4cdd5, 0x0014be ] } , - BigNum { limbs: [ 0x3accee4e32febaa4f1f87d90884c5a, 0x5f6ba59c3994a84b028e307c93637f, 0x002254 ] } , - BigNum { limbs: [ 0x82d714b1cb5d445b0e07816f77b3a7, 0x47e7840143b38aeed579d92544a1d4, 0x005199 ] } , - BigNum { limbs: [ 0x9fa49ec41505c948af25b254d71df9, 0xdf508052e8d9a67bb3d018ed258f03, 0x006c1c ] } , - BigNum { limbs: [ 0x1dff643be95635b750da4cab28e208, 0xc802a94a946e8cbe2437f0b4b27650, 0x0007d0 ] } , - BigNum { limbs: [ 0x0af27f081250e5bddd6dacba0b1d06, 0x9b0b4fa4971529805a2b04c50efc33, 0x005b75 ] } , - BigNum { limbs: [ 0xb2b183f7ec0b194222925245f4e2fb, 0x0c47d9f8e63309b97ddd04dcc90920, 0x001878 ] } , - BigNum { limbs: [ 0xffeee172f8ac74095e328eda2f8e5c, 0x8571ac60a4ce0468b4bb2b446edda9, 0x002904 ] } , - BigNum { limbs: [ 0xbdb5218d05af8af6a1cd7025d071a5, 0x21e17d3cd87a2ed1234cde5d6927a9, 0x004ae9 ] } , - BigNum { limbs: [ 0xfd4ee83f1b2499dbe21753938adf74, 0x09b8f9797bc1d44db4c7e28c3f15cb, 0x001aa9 ] } , - BigNum { limbs: [ 0xc0551ac0e33765241de8ab6c75208d, 0x9d9a302401865eec2340271598ef87, 0x005944 ] } , - BigNum { limbs: [ 0xfb82877b46d20d3f0ffba2ea149337, 0x83626bca158c398677e14a8cb7e715, 0x005815 ] } , - BigNum { limbs: [ 0xc2217b84b789f1c0f0045c15eb6cca, 0x23f0bdd367bbf9b36026bf15201e3d, 0x001bd8 ] } , - BigNum { limbs: [ 0xf0a42ec0e52a48c009cf2b0763b3d5, 0x72b23615cf703897e487b9c664354a, 0x0054b5 ] } , - BigNum { limbs: [ 0xccffd43f1931b63ff630d3f89c4c2c, 0x34a0f387add7faa1f3804fdb73d008, 0x001f38 ] } , - BigNum { limbs: [ 0xbdbdcad82928c864e8c456229dfdef, 0xd2940967b1a207e780cc7312dd5371, 0x0067ad ] } , - BigNum { limbs: [ 0xffe63827d533369b173ba8dd620212, 0xd4bf2035cba62b52573b968efab1e1, 0x000c3f ] } , - BigNum { limbs: [ 0x4b0f40448ca04c44568101d845f71f, 0x150315161c3e6e8ba6f2374a655d9d, 0x005318 ] } , - BigNum { limbs: [ 0x7294c2bb71bbb2bba97efd27ba08e2, 0x925014876109c4ae3115d25772a7b6, 0x0020d5 ] } , - BigNum { limbs: [ 0xe21a225b58e59f1d3e494f87fd6d91, 0x8bf565feb0f7bdf7f8f0d267d1ae2a, 0x00249a ] } , - BigNum { limbs: [ 0xdb89e0a4a5765fe2c1b6af78029270, 0x1b5dc39ecc507541df17373a065728, 0x004f53 ] } , - BigNum { limbs: [ 0x94a89651aca0ff810d9cff570736e9, 0x46355ac0cbecc13494e5cc0ae758c6, 0x006c43 ] } , - BigNum { limbs: [ 0x28fb6cae51baff7ef262ffa8f8c918, 0x611dcedcb15b720543223d96f0ac8d, 0x0007aa ] } , - BigNum { limbs: [ 0x9486bb67912a2b440dab45cd1fac5b, 0x03d7743e9a0675583bdb136e9f86e1, 0x001a9d ] } , - BigNum { limbs: [ 0x291d47986d31d3bbf254b932e053a6, 0xa37bb55ee341bde19c2cf633387e72, 0x005950 ] } , - BigNum { limbs: [ 0x6fb582ac74db12571ba2fccf28601b, 0xfa8d52f970ba51420be43501370b16, 0x001996 ] } , - BigNum { limbs: [ 0x4dee80538980eca8e45d0230d79fe6, 0xacc5d6a40c8de1f7cc23d4a0a0fa3d, 0x005a56 ] } , - BigNum { limbs: [ 0x8a65bc0f8e4d1ecdd815ee4d942bee, 0xa05ea5c70ef50d10f88231dde2f6e1, 0x003336 ] } , - BigNum { limbs: [ 0x333e46f0700ee03227ea10b26bd413, 0x06f483d66e532628df85d7c3f50e72, 0x0040b7 ] } , - BigNum { limbs: [ 0x56ab6223eff0406e175e44c490cbc0, 0x7a32e902f9e85187145dfaed820595, 0x0059dc ] } , - BigNum { limbs: [ 0x66f8a0dc0e6bbe91e8a1ba3b6f3441, 0x2d20409a835fe1b2c3aa0eb455ffbe, 0x001a11 ] } , - BigNum { limbs: [ 0x4492b6f43bb51eca7dadda50f555e4, 0x9040823a88e7b6a42eb341ff879cb0, 0x006025 ] } , - BigNum { limbs: [ 0x79114c0bc2a6e035825224af0aaa1d, 0x1712a762f4607c95a954c7a25068a3, 0x0013c8 ] } , - BigNum { limbs: [ 0xc85f7efbd6188bb08956f964517062, 0x2b7d27b4c23e09768a7087f0cc2629, 0x001356 ] } , - BigNum { limbs: [ 0xf54484042843734f76a9059bae8f9f, 0x7bd601e8bb0a29c34d9781b10bdf29, 0x006097 ] } , - BigNum { limbs: [ 0xae4a21d39a23bee9dc91a650a90e49, 0x59d76ca02af7f2f3e98766f8c9185c, 0x0016c3 ] } , - BigNum { limbs: [ 0x0f59e12c64384016236e58af56f1b8, 0x4d7bbcfd52504045ee80a2a90eecf7, 0x005d2a ] } , - BigNum { limbs: [ 0xc708b8b84ee699a565af7a806913be, 0x169d8ee087328d16baf2bdd5e94641, 0x002db7 ] } , - BigNum { limbs: [ 0xf69b4a47af75655a9a50847f96ec43, 0x90b59abcf615a6231d154bcbeebf11, 0x004636 ] } , - BigNum { limbs: [ 0xfb135ff413a356d5f57c79b59b2332, 0x73726e9409979c7943d6a33bc39345, 0x0061f2 ] } , - BigNum { limbs: [ 0xc290a30beab8a82a0a83854a64dccf, 0x33e0bb0973b096c09431666614720d, 0x0011fb ] } , - BigNum { limbs: [ 0x71082d2903a1ac633d3e92c7ca8ccf, 0x59c69ed3df9941205e1bb9264c6a7c, 0x003c9f ] } , - BigNum { limbs: [ 0x4c9bd5d6faba529cc2c16c38357332, 0x4d8c8ac99daef21979ec507b8b9ad7, 0x00374e ] } , - BigNum { limbs: [ 0x409954448fd0a2dbcc4af4074489e8, 0xe4668304bec207238a67fd3278fde6, 0x001bce ] } , - BigNum { limbs: [ 0x7d0aaebb6e8b5c2433b50af8bb7619, 0xc2eca698be862c164da00c6f5f076d, 0x00581e ] } , - BigNum { limbs: [ 0x3c9d94a870e33f9df832cfdf2062ef, 0xb766f5943eadc0dcf3788fe23b2f53, 0x001325 ] } , - BigNum { limbs: [ 0x81066e578d78bf6207cd2f20df9d12, 0xefec34093e9a725ce48f79bf9cd600, 0x0060c7 ] } , - BigNum { limbs: [ 0x0865a899e8deff4935bd2f817f694b, 0x4098e2e9f12e6b368121ac0cf4ad0a, 0x004f9b ] } , - BigNum { limbs: [ 0xb53e5a66157cffb6ca42cf7e8096b6, 0x66ba46b38c19c80356e65d94e35849, 0x002452 ] } , - BigNum { limbs: [ 0x505ce32828420562b851e3d2a34df5, 0x0aa154b7afb7604ccbce3186331764, 0x00663d ] } , - BigNum { limbs: [ 0x6d471fd7d619f99d47ae1b2d5cb20c, 0x9cb1d4e5cd90d2ed0c39d81ba4edef, 0x000db0 ] } , - BigNum { limbs: [ 0x39e2b6fbd943d0adc24eba36b7578e, 0x29432977ae6a072570e877993c3d74, 0x005a06 ] } , - BigNum { limbs: [ 0x83c14c0425182e523db144c948a873, 0x7e100025cede2c14671f92089bc7df, 0x0019e7 ] } , - BigNum { limbs: [ 0xcc59c903893ca8829235424bc52016, 0x03442f2fb2879a8a9d78c4fed2b2ba, 0x004d35 ] } , - BigNum { limbs: [ 0xf14a39fc751f567d6dcabcb43adfeb, 0xa40efa6dcac098af3a8f44a3055298, 0x0026b8 ] } , - BigNum { limbs: [ 0x8469e061a1c6905718b817f3ccad48, 0x97adfcf78a922bf7a6f6d02f061235, 0x005335 ] } , - BigNum { limbs: [ 0x393a229e5c956ea8e747e70c3352b9, 0x0fa52ca5f2b6074231113972d1f31e, 0x0020b8 ] } , - BigNum { limbs: [ 0x275f891994324c998731ee0c78437a, 0x57052117e1e151ea52ef08f1e06c38, 0x004ba3 ] } , - BigNum { limbs: [ 0x964479e66a29b26678ce10f387bc87, 0x504e08859b66e14f851900aff7991b, 0x00284a ] } , - BigNum { limbs: [ 0xdcd43dec9acd7108993b54226b7f93, 0x3f58561023a7fa481d537345cf6530, 0x004208 ] } , - BigNum { limbs: [ 0xe0cfc513638e8df766c4aadd94806e, 0x67fad38d59a038f1bab4965c08a022, 0x0031e5 ] } , - BigNum { limbs: [ 0xb309ae850664dec3e268216bdc4a30, 0x6d8cebced82bc53c32396daedbf90a, 0x000c11 ] } , - BigNum { limbs: [ 0x0a9a547af7f7203c1d97dd9423b5d1, 0x39c63dcea51c6dfda5ce9bf2fc0c49, 0x0067dc ] } , - BigNum { limbs: [ 0x10ed5bae398c9c164881d4baa8a72e, 0x37284ec1415dde48a52a93151b352e, 0x004432 ] } , - BigNum { limbs: [ 0xacb6a751c4cf62e9b77e2a455758d3, 0x702adadc3bea54f132dd768cbcd025, 0x002fbb ] } , - BigNum { limbs: [ 0x7fcad29e98164375352d72a0c9539a, 0xe61a3a2a9b39fcf3ec5eda0ddb53a0, 0x0042a2 ] } , - BigNum { limbs: [ 0x3dd930616645bb8acad28c5f36ac67, 0xc138ef72e20e3645eba92f93fcb1b3, 0x00314a ] } , - BigNum { limbs: [ 0x72c833e4cf3499ecbf5d6f01ea2fe8, 0xdb96249a23e969ac30e42135fbc427, 0x00485a ] } , - BigNum { limbs: [ 0x4adbcf1b2f27651340a28ffe15d019, 0xcbbd0503595ec98da723e86bdc412c, 0x002b92 ] } , - BigNum { limbs: [ 0xf67b913ee947b92fef56114b49c75d, 0x15ee4db709aa6e492ff0b0d05658b6, 0x0002b3 ] } , - BigNum { limbs: [ 0xc72871c1151445d010a9edb4b638a4, 0x9164dbe6739dc4f0a81758d181ac9c, 0x00713a ] } , - BigNum { limbs: [ 0x576cd5a085170dfba96832adfa9266, 0x0f08c01d85df59b31745ff67db9e8b, 0x004e34 ] } , - BigNum { limbs: [ 0x66372d5f7944f1045697cc52056d9b, 0x984a697ff768d986c0c20a39fc66c8, 0x0025b9 ] } , - BigNum { limbs: [ 0x0bf5a0bea3c2ee335ab15ecceb6a2d, 0xf883ceaa889c7f2b1554800870c74e, 0x005daf ] } , - BigNum { limbs: [ 0xb1ae62415a9910cca54ea0331495d4, 0xaecf5af2f4abb40ec2b38999673e05, 0x00163d ] } , - BigNum { limbs: [ 0xce26afb69019f7ee3b38a3813633f1, 0xacd7204034884021f50f21b39e1d96, 0x006743 ] } , - BigNum { limbs: [ 0xef7d53496e420711c4c75b7ec9cc10, 0xfa7c095d48bff317e2f8e7ee39e7bc, 0x000ca9 ] } , - BigNum { limbs: [ 0xa0eb428f0d8dccd165b2490ec7254e, 0x4dd24ebf1658766f71f92679eccdd9, 0x000959 ] } , - BigNum { limbs: [ 0x1cb8c070f0ce322e9a4db5f138dab3, 0x5980dade66efbcca660ee327eb377a, 0x006a94 ] } , - BigNum { limbs: [ 0x8df3051d69e220022193b333c3b855, 0x287007cdc98e2e1a54f5ed6dac0e6e, 0x003683 ] } , - BigNum { limbs: [ 0x2fb0fde29479defdde6c4bcc3c47ac, 0x7ee321cfb3ba051f83121c342bf6e5, 0x003d6a ] } , - BigNum { limbs: [ 0xafcb31434545d82efcfdaf4e265ab7, 0xb48988b9dbae9a54b1f2bebcea8bca, 0x002fb2 ] } , - BigNum { limbs: [ 0x0dd8d1bcb91626d103024fb1d9a54a, 0xf2c9a0e3a19998e526154ae4ed7989, 0x00443a ] } , - BigNum { limbs: [ 0x730e303c173e1c090bcdd715521bb1, 0x7940ac524648faaf9f04b421b462f2, 0x0046aa ] } , - BigNum { limbs: [ 0x4a95d2c3e71de2f6f43227eaade450, 0x2e127d4b36ff388a3903558023a261, 0x002d43 ] } , - BigNum { limbs: [ 0xa69d8f42e2c25b26dd05e4c4aec099, 0x5a6d7f643b5a2dee35b6cf12739eaf, 0x003dc4 ] } , - BigNum { limbs: [ 0x170673bd1b99a3d922fa1a3b513f68, 0x4ce5aa3941ee054ba2513a8f6466a4, 0x003629 ] } , - BigNum { limbs: [ 0x3d29335383e69a148277eef8c0a297, 0x64192e295d851bd07fc9fc34abead9, 0x00328f ] } , - BigNum { limbs: [ 0x807acfac7a7564eb7d8810073f5d6a, 0x4339fb741fc31769583e0d6d2c1a7a, 0x00415e ] } , - BigNum { limbs: [ 0x2c84f3154125602cabadec2fe322b8, 0xda59a33dcbf232a732ae1a3b0aef75, 0x002e95 ] } , - BigNum { limbs: [ 0x911f0feabd369ed3545212d01cdd49, 0xccf9865fb1560092a559ef66cd15de, 0x004557 ] } , - BigNum { limbs: [ 0x7570b00fca5c9a520c8c4d748fb509, 0x55665267f0974b35861cb1da153a8b, 0x003d06 ] } , - BigNum { limbs: [ 0x483352f033ff64adf373b18b704af8, 0x51ecd7358cb0e80451eb57c7c2cac8, 0x0036e7 ] } , - BigNum { limbs: [ 0x330977b7a8bfe99ca730e689c0bf9e, 0x7d2fce8520d1f5109fa0d7553d937a, 0x0000aa ] } , - BigNum { limbs: [ 0x8a9a8b48559c156358cf18763f4063, 0x2a235b185c763e293867324c9a71d9, 0x007343 ] } , - BigNum { limbs: [ 0x4628b567af1bb4e3d5dbe0d2f73e41, 0xb74a12568801be1e72f2066186fa64, 0x006eca ] } , - BigNum { limbs: [ 0x777b4d984f404a1c2a241e2d08c1c0, 0xf0091746f546751b65160340510aef, 0x000522 ] } , - BigNum { limbs: [ 0x5f56946340fdfc3b2bcdccf1ec7b16, 0x9e7e1c0691a3bae4d7a5261114f26f, 0x0055e2 ] } , - BigNum { limbs: [ 0x5e4d6e9cbd5e02c4d432320e1384eb, 0x08d50d96eba478550062e390c312e4, 0x001e0b ] } , - BigNum { limbs: [ 0x01cd8bef1b22603e16064aa9a77770, 0x214dfb1c37d97fb60b67a741a4eee4, 0x006635 ] } , - BigNum { limbs: [ 0xbbd67710e3399ec1e9f9b456588891, 0x86052e81456eb383cca0626033166f, 0x000db8 ] } , - BigNum { limbs: [ 0xab3ea313c630b6754ceec2fde25881, 0x29cbca5aa4231b2b2fbdb88c0832f1, 0x002043 ] } , - BigNum { limbs: [ 0x12655fec382b488ab3113c021da780, 0x7d875f42d925180ea84a5115cfd262, 0x0053aa ] } , - BigNum { limbs: [ 0x54e5045f96bdb5b46b6df596ba6ecf, 0xd3064ba6d18615e83527ce053b131c, 0x0055e9 ] } , - BigNum { limbs: [ 0x68befea0679e494b94920969459132, 0xd44cddf6abc21d51a2e03b9c9cf237, 0x001e03 ] } , - BigNum { limbs: [ 0x54642678ea64b7408a86452d1142b4, 0x14a479d7e1869cfafd436d7b412b06, 0x005c62 ] } , - BigNum { limbs: [ 0x693fdc8713f747bf7579b9d2eebd4d, 0x92aeafc59bc1963edac49c2696da4d, 0x00178b ] } , - BigNum { limbs: [ 0x771d65b2ee56d3198a034b1e705c0e, 0x117113c5d5a3e04369454396c3893c, 0x00255c ] } , - BigNum { limbs: [ 0x46869d4d10052be675fcb3e18fa3f3, 0x95e215d7a7a452f66ec2c60b147c17, 0x004e91 ] } , - BigNum { limbs: [ 0xc93f37bda7b84b0c06f42c4fa19fd3, 0xbb72051a32b8635dba604a48d7ba10, 0x003d0b ] } , - BigNum { limbs: [ 0xf464cb4256a3b3f3f90bd2b05e602e, 0xebe124834a8fcfdc1da7bf59004b42, 0x0036e1 ] } , - BigNum { limbs: [ 0x7d52a475e8ce1152a4c44c49a49f1e, 0x1bd32e1843bc1a3ef55558b56d6d42, 0x006dee ] } , - BigNum { limbs: [ 0x40515e8a158dedad5b3bb2b65b60e3, 0x8b7ffb85398c18fae2b2b0ec6a9811, 0x0005ff ] } , - BigNum { limbs: [ 0x4ef4c6bf3fe0c6c7ea608db8cd652c, 0x7ca6fc96f67ff5389b96856be8b140, 0x001df5 ] } , - BigNum { limbs: [ 0x6eaf3c40be7b3838159f7147329ad5, 0x2aac2d0686c83e013c718435ef5413, 0x0055f8 ] } , - BigNum { limbs: [ 0x38cc4f07468cebd78b1ef5748164e7, 0x56c04012bb93b8a0671498f387398d, 0x005e68 ] } , - BigNum { limbs: [ 0x84d7b3f8b7cf132874e1098b7e9b1a, 0x5092e98ac1b47a9970f370ae50cbc6, 0x001585 ] } , - BigNum { limbs: [ 0x6041cee0c4bdac8586e7bf3217bc38, 0x75545a9dcb2faf33b868f0e27d4ed6, 0x000a79 ] } , - BigNum { limbs: [ 0x5d62341f399e527a79183fcde843c9, 0x31feceffb21884061f9f18bf5ab67d, 0x006974 ] } , - BigNum { limbs: [ 0x8111d9b58068eda22cb0c0043581b8, 0x5f69535823b4eea87dbd8b3e7293c0, 0x004118 ] } , - BigNum { limbs: [ 0x3c92294a7df3115dd34f3efbca7e49, 0x47e9d645599344915a4a7e63657193, 0x0032d5 ] } , - BigNum { limbs: [ 0x01fb897d05b8538dfcd4912667f55f, 0x2898a7c259a810a20368471f6635e8, 0x0064e3 ] } , - BigNum { limbs: [ 0xbba87982f8a3ab72032b6dd9980aa2, 0x7eba81db23a02297d49fc28271cf6b, 0x000f0a ] } , - BigNum { limbs: [ 0x6cbfc87f549eb20f15758baad3fcf4, 0x7eef82a73dc4782fd931be0cba8ab0, 0x0018e1 ] } , - BigNum { limbs: [ 0x50e43a80a9bd4cf0ea8a73552c030d, 0x2863a6f63f83bb09fed64b951d7aa3, 0x005b0c ] } , - BigNum { limbs: [ 0x04a2294bb265301622dd5a6889a8e8, 0x0e0589dd793aa51bfee012ab18ba91, 0x00362f ] } , - BigNum { limbs: [ 0xb901d9b44bf6cee9dd22a497765719, 0x994d9fc0040d8e1dd927f6f6bf4ac2, 0x003dbe ] } , - BigNum { limbs: [ 0x1b8dd0e729d15d3f10f3a9abb257e1, 0x83b64fd60550e6c6e2fafbc3c935b1, 0x003718 ] } , - BigNum { limbs: [ 0xa2163218d48aa1c0ef0c55544da820, 0x239cd9c777f74c72f50d0dde0ecfa2, 0x003cd5 ] } , - BigNum { limbs: [ 0xc59162052451257675b5beeb6153ca, 0x7850ce28f03eea18ac2f59bed4eb36, 0x004405 ] } , - BigNum { limbs: [ 0xf812a0fada0ad9898a4a40149eac37, 0x2f025b748d0949212bd8afe3031a1c, 0x002fe8 ] } , - BigNum { limbs: [ 0x80f5ffdc6ac2e316a9e3e795d08887, 0xba2e026f2459a189d7e4af45dab593, 0x000688 ] } , - BigNum { limbs: [ 0x3cae032393991be9561c176a2f777a, 0xed25272e58ee91b000235a5bfd4fc0, 0x006d64 ] } , - BigNum { limbs: [ 0x78af6ba70b7705f1af8f454525fd66, 0xb1110b25238c7d7128741250354861, 0x004c33 ] } , - BigNum { limbs: [ 0x44f49758f2e4f90e5070b9bada029b, 0xf6421e7859bbb5c8af93f751a2bcf2, 0x0027b9 ] } , - BigNum { limbs: [ 0x3ec884963a020ab3e6eed5afa1109b, 0xced439e3c7897f5870bc08c4081661, 0x005db4 ] } , - BigNum { limbs: [ 0x7edb7e69c459f44c191129505eef66, 0xd87eefb9b5beb3e1674c00ddcfeef2, 0x001638 ] } , - BigNum { limbs: [ 0xffa1a105df6b8a7429c1fa7a88c247, 0xe1cbced44b4c46145a561c41e22acf, 0x000701 ] } , - BigNum { limbs: [ 0xbe0261fa1ef0748bd63e0485773dba, 0xc5875ac931fbed257db1ed5ff5da83, 0x006ceb ] } , - BigNum { limbs: [ 0x72266b93838c16cd4b696e7ea423f1, 0x1336b5ca226c34c543b8647ce9de4c, 0x000c72 ] } , - BigNum { limbs: [ 0x4b7d976c7acfe832b49690815bdc10, 0x941c73d35adbfe74944fa524ee2707, 0x00677b ] } , - BigNum { limbs: [ 0x6a4f579172314a0ff8423daf2fdb50, 0xfcd83aa5a469524e3a763bb50b0994, 0x0054c0 ] } , - BigNum { limbs: [ 0x5354ab6e8c2ab4f007bdc150d024b1, 0xaa7aeef7d8dee0eb9d91cdecccfbbf, 0x001f2c ] } , - BigNum { limbs: [ 0x2feb30d6711c70e95f38660e9d1536, 0xd7d20dac46ed6eae360ede81eba8db, 0x000832 ] } , - BigNum { limbs: [ 0x8db8d2298d3f8e16a0c798f162eacb, 0xcf811bf1365ac48ba1f92b1fec5c78, 0x006bba ] } , - BigNum { limbs: [ 0x0e24ef2f570c8a24438957b3e25619, 0x0e58dcdd8ce7f82295c732d111a2b2, 0x001a66 ] } , - BigNum { limbs: [ 0xaf7f13d0a74f74dbbc76a74c1da9e8, 0x98fa4cbff0603b174240d6d0c662a1, 0x005987 ] } , - BigNum { limbs: [ 0xa33e0d6b4dc2d87ee857bf1f253512, 0x8b55856bf49320c8b3bf4746e7abf6, 0x004877 ] } , - BigNum { limbs: [ 0x1a65f594b099268117a83fe0dacaef, 0x1bfda43188b512712448c25af0595d, 0x002b76 ] } , - BigNum { limbs: [ 0x1764ae9a77652c25c83bb50749f0af, 0x7bc7ac9a877903f012dba811a16818, 0x005e0b ] } , - BigNum { limbs: [ 0xa63f546586f6d2da37c449f8b60f52, 0x2b8b7d02f5cf2f49c52c6190369d3b, 0x0015e2 ] } , - BigNum { limbs: [ 0xca8e5c4d2dc5ffd2878366fcec15ba, 0x702dd52769aebdb6bf288d790d89bd, 0x005d19 ] } , - BigNum { limbs: [ 0xf315a6b2d095ff2d787c980313ea47, 0x372554761399758318df7c28ca7b95, 0x0016d4 ] } , - BigNum { limbs: [ 0x3d7e9803ec74e17a030cc2de5db52b, 0xdbf168716b60e5789556beff8edeb6, 0x001d12 ] } , - BigNum { limbs: [ 0x80256afc11e71d85fcf33c21a24ad6, 0xcb61c12c11e74dc142b14aa249269d, 0x0056da ] } , - BigNum { limbs: [ 0x7d166d26d7d13fef678c866ccd32d7, 0x1642c7524b471810c6122bee51ba89, 0x00725d ] } , - BigNum { limbs: [ 0x408d95d9268abf109873789332cd2a, 0x9110624b32011b2911f5ddb3864aca, 0x000190 ] } , - BigNum { limbs: [ 0x03788dd25be1b072994949fe8dda46, 0x315227033bb160f1e69f8f0320b088, 0x00622c ] } , - BigNum { limbs: [ 0xba2b752da27a4e8d66b6b5017225bb, 0x7601029a4196d247f1687a9eb754cb, 0x0011c1 ] } , - BigNum { limbs: [ 0x785fd8b3542a38a4a7a41d55234864, 0x2b04f3a711b74789f746a17afd9bde, 0x00241f ] } , - BigNum { limbs: [ 0x45442a4caa31c65b585be1aadcb79d, 0x7c4e35f66b90ebafe0c16826da6975, 0x004fce ] } , - BigNum { limbs: [ 0xbff88c0b7e4246f003cd6e73efb611, 0x0fdde70e992d0cc516e3bb219c82aa, 0x00146d ] } , - BigNum { limbs: [ 0xfdab76f48019b80ffc32908c1049f0, 0x9775428ee41b2674c1244e803b82a8, 0x005f80 ] } , - BigNum { limbs: [ 0x40e7eb01aad13b85caa34fd9b2b6ce, 0xb1d9346b1f74337b8c94b4e3a208e5, 0x007275 ] } , - BigNum { limbs: [ 0x7cbc17fe538ac37a355caf264d4933, 0xf579f5325dd3ffbe4b7354be35fc6e, 0x000177 ] } , - BigNum { limbs: [ 0x679941d7e3344ac1f99b485bb67d21, 0xd9e4727786c36067482e2d9445f9ef, 0x005aef ] } , - BigNum { limbs: [ 0x560ac1281b27b43e0664b6a44982e0, 0xcd6eb725f684d2d28fd9dc0d920b64, 0x0018fd ] } , - BigNum { limbs: [ 0xda7cb26fe41c7fe6b19f0b5eadf9cb, 0x1c67b10780e18ea3e9254dbb27ead7, 0x001c02 ] } , - BigNum { limbs: [ 0xe32750901a3f7f194e60f3a1520636, 0x8aeb7895fc66a495eee2bbe6b01a7b, 0x0057eb ] } , - BigNum { limbs: [ 0xafd9f0df88a27eefe8ef07b5048efa, 0x742370737a124164b50a572c9c65ee, 0x000ad7 ] } , - BigNum { limbs: [ 0x0dca122075b980101710f74afb7107, 0x332fb92a0335f1d522fdb2753b9f65, 0x006916 ] } , - BigNum { limbs: [ 0xde4d06174139246cfaf4c817c13fe6, 0x0e1ec7a28bb857f5f1a3b50f2b7f30, 0x0000c5 ] } , - BigNum { limbs: [ 0xdf56fce8bd22da93050b36e83ec01b, 0x993461faf18fdb43e6645492ac8622, 0x007328 ] } , - BigNum { limbs: [ 0x42551c91b1af3382fe7994226a7881, 0x30fb21510ba3cb52d65ec3b820f174, 0x005b33 ] } , - BigNum { limbs: [ 0x7b4ee66e4caccb7d01866add958780, 0x7658084c71a467e701a945e9b713df, 0x0018ba ] } , - BigNum { limbs: [ 0x97168a3a6000fe4541b8ff2ee0434e, 0x66525526a65439feec240d80689fd6, 0x000951 ] } , - BigNum { limbs: [ 0x268d78c59e5b00babe46ffd11fbcb3, 0x4100d476d6f3f93aebe3fc216f657d, 0x006a9c ] } , - BigNum { limbs: [ 0xa07e9cbe5a10af2a5e7b785841a1da, 0xb67ad287bb0f9589c90d5aa47634ea, 0x00668d ] } , - BigNum { limbs: [ 0x1d256641a44b4fd5a18486a7be5e27, 0xf0d85715c2389db00efaaefd61d069, 0x000d5f ] } , - BigNum { limbs: [ 0x6c91b560c5b82c9b2ee1a0bf112931, 0xdc55e43f779e0eace99e48f3d3cad6, 0x00243a ] } , - BigNum { limbs: [ 0x51124d9f38a3d264d11e5e40eed6d0, 0xcafd455e05aa248cee69c0ae043a7d, 0x004fb2 ] } , - BigNum { limbs: [ 0x424f00b1a2b32fa0eaaaa3583a6b80, 0x91a1889c6ab2045e7a34773491a611, 0x003362 ] } , - BigNum { limbs: [ 0x7b55024e5ba8cf5f15555ba7c59481, 0x15b1a10112962edb5dd3926d465f42, 0x00408b ] } , - BigNum { limbs: [ 0x0c078154d7c539a4c94125ad9dc176, 0x0931b15c62562ce4ba2c4bf31f353e, 0x006905 ] } , - BigNum { limbs: [ 0xb19c81ab2696c55b36bed952623e8b, 0x9e2178411af206551ddbbdaeb8d015, 0x000ae8 ] } , - BigNum { limbs: [ 0x9ad324193961627372e26d5720949f, 0x2ca6312ad70d5e3ab4ed8e1c3483aa, 0x0004a4 ] } , - BigNum { limbs: [ 0x22d0dee6c4fa9c8c8d1d91a8df6b62, 0x7aacf872a63ad4ff231a7b85a381a9, 0x006f49 ] } , - BigNum { limbs: [ 0xdf8723cf6834a9b16c92903c30681c, 0x7af602a41b0e4a7055b0fa4b32af44, 0x002a33 ] } , - BigNum { limbs: [ 0xde1cdf309627554e936d6ec3cf97e5, 0x2c5d26f96239e8c982570f56a5560e, 0x0049ba ] } , - BigNum { limbs: [ 0xa005008f5fa2fe6cd888c85ca05ae9, 0xeeb1a28cdf1a91ecc533285f28b4ad, 0x001b61 ] } , - BigNum { limbs: [ 0x1d9f02709eb90093277736a35fa518, 0xb8a187109e2da14d12d4e142af50a6, 0x00588b ] } , - BigNum { limbs: [ 0xec083a342b6152dc6c5431b7a01194, 0x444efe927bc8a141881064cd54d304, 0x002aaf ] } , - BigNum { limbs: [ 0xd19bc8cbd2faac2393abcd485fee6d, 0x63042b0b017f91f84ff7a4d483324e, 0x00493e ] } , - BigNum { limbs: [ 0xbf1d8539e5c50b799bd1773c3aadf2, 0xd6eec90f1e192c0cc5b558b3509c77, 0x00455e ] } , - BigNum { limbs: [ 0xfe867dc61896f386642e87c3c5520f, 0xd064608e5f2f072d1252b0ee8768db, 0x002e8e ] } , - BigNum { limbs: [ 0x4148b024d3ffa61cfd232fb7ac2d01, 0x8edaee2eeaed1ac42c62e56cb955a3, 0x0058ad ] } , - BigNum { limbs: [ 0x7c5b52db2a5c58e302dccf4853d300, 0x18783b6e925b1875aba524351eafb0, 0x001b40 ] } , - BigNum { limbs: [ 0x8bf3cd9093c0a2b6e7d38c824464d3, 0x5f24ab69299e82782d7daff3118923, 0x00223a ] } , - BigNum { limbs: [ 0x31b0356f6a9b5c49182c727dbb9b2e, 0x482e7e3453a9b0c1aa8a59aec67c30, 0x0051b3 ] } , - BigNum { limbs: [ 0xd0cb7ff2325177578545b4e64baae6, 0x86f9eb22d5720a288c1ac768fd31db, 0x00344b ] } , - BigNum { limbs: [ 0xecd8830dcc0a87a87aba4a19b4551b, 0x20593e7aa7d629114bed4238dad377, 0x003fa2 ] } , - BigNum { limbs: [ 0x49071f297def3c20da606ff4a3ba2b, 0x096ad9987ad9cbf93d062b4fda502a, 0x0072bf ] } , - BigNum { limbs: [ 0x749ce3d6806cc2df259f8f0b5c45d6, 0x9de85005026e67409b01de51fdb529, 0x00012e ] } , - BigNum { limbs: [ 0x9d3446b5219ed92c78c12b5913ffa2, 0x02082ceecbc03f01ab9eac85850baf, 0x0049e6 ] } , - BigNum { limbs: [ 0x206fbc4adcbd25d3873ed3a6ec005f, 0xa54afcaeb187f4382c695d1c52f9a4, 0x002a07 ] } , - BigNum { limbs: [ 0xb7b50e5693aeb64287ce1144fcf019, 0x4f3eb4931089c5be3aa28cfc810120, 0x00352c ] } , - BigNum { limbs: [ 0x05eef4a96aad48bd7831edbb030fe8, 0x5814750a6cbe6d7b9d657ca5570433, 0x003ec1 ] } , - BigNum { limbs: [ 0x30d9ac186fc5451f5753e3ccc4922e, 0x33f624c17d074b024c21cfa2302540, 0x0041ae ] } , - BigNum { limbs: [ 0x8cca56e78e96b9e0a8ac1b333b6dd3, 0x735d04dc0040e8378be639ffa7e013, 0x00323f ] } , - BigNum { limbs: [ 0x4de56daf67ef102318f1f6844036ac, 0x01b7108f6c67604297e1df5b7fe9fe, 0x007097 ] } , - BigNum { limbs: [ 0x6fbe9550966ceedce70e087bbfc955, 0xa59c190e10e0d2f740262a46581b55, 0x000356 ] } , - BigNum { limbs: [ 0xdc15bbb51c14b8bde69ad1be866e28, 0x4d702f536f1aef56d22dab86198a12, 0x005741 ] } , - BigNum { limbs: [ 0xe18e474ae247464219652d417991d9, 0x59e2fa4a0e2d43e305da5e1bbe7b40, 0x001cac ] } , - BigNum { limbs: [ 0x148b46fc8a9536b994f7e88da69099, 0xc54dedb0dd5c00f2b6fdeb2434990d, 0x0054a9 ] } , - BigNum { limbs: [ 0xa918bc0373c6c8466b081672596f68, 0xe2053bec9fec3247210a1e7da36c46, 0x001f43 ] } , - BigNum { limbs: [ 0xe0344c49d79b66f214cc49a9ca287b, 0x7bd852e497f37956c16f3a78ae28ee, 0x0051ec ] } , - BigNum { limbs: [ 0xdd6fb6b626c0980deb33b55635d786, 0x2b7ad6b8e554b9e31698cf2929dc64, 0x002201 ] } , - BigNum { limbs: [ 0x29e9208281d2988e92a08175236817, 0x8c4fc8876304b7701b97622a206b2e, 0x000f79 ] } , - BigNum { limbs: [ 0x93bae27d7c8966716d5f7d8adc97ea, 0x1b0361161a437bc9bc70a777b79a25, 0x006474 ] } , - BigNum { limbs: [ 0x2d67a18dc838277b51fa789fe811c1, 0x6d59e26f95d8df3b80de686838f4c0, 0x00420a ] } , - BigNum { limbs: [ 0x903c61723623d784ae05866017ee40, 0x39f9472de76f53fe5729a1399f1093, 0x0031e3 ] } , - BigNum { limbs: [ 0x98ce89ad3c4462f52172b7909c822f, 0x0f6f20aebd433bab579958add5d563, 0x000238 ] } , - BigNum { limbs: [ 0x24d57952c2179c0ade8d476f637dd2, 0x97e408eec004f78e806eb0f4022ff0, 0x0071b5 ] } , - BigNum { limbs: [ 0xad8bd407c8c41c02e2f94cd781d69e, 0xec60d8a45e9d074f9aa0ec1140c136, 0x0017c1 ] } , - BigNum { limbs: [ 0x10182ef83597e2fd1d06b2287e2963, 0xbaf250f91eab2bea3d671d9097441d, 0x005c2b ] } , - BigNum { limbs: [ 0x0d246202280193fea7c33496a345f2, 0xbad21bb26cbe0156dd6f2d56b9c192, 0x0059a2 ] } , - BigNum { limbs: [ 0xb07fa0fdd65a6b01583cca695cba0f, 0xec810deb108a31e2fa98dc4b1e43c1, 0x001a4a ] } , - BigNum { limbs: [ 0xb9bbd9b0a3590b2ee4c0317b41459b, 0x8c1a3548e372b5c82a603c67a3a3ba, 0x0016fd ] } , - BigNum { limbs: [ 0x03e8294f5b02f3d11b3fcd84beba66, 0x1b38f45499d57d71ada7cd3a346199, 0x005cf0 ] } , - BigNum { limbs: [ 0xc58a0b042cd4dc35d1ae71abd0a54d, 0x72419d80770cd6be007959cfa1c61b, 0x001793 ] } , - BigNum { limbs: [ 0xf819f7fbd18722ca2e518d542f5ab4, 0x35118c1d063b5c7bd78eafd2363f37, 0x005c5a ] } , - BigNum { limbs: [ 0x712f65dddcac5339a8f2d056a4027d, 0x8447f4db2f2599713674356834f476, 0x0059ac ] } , - BigNum { limbs: [ 0x4c749d2221afabc6570d2ea95bfd84, 0x230b34c24e2299c8a193d439a310dd, 0x001a41 ] } , - BigNum { limbs: [ 0x620b99aa201e9b7554cb01f596606f, 0x550e339064cc77fc010ff1bb87e048, 0x0000de ] } , - BigNum { limbs: [ 0x5b986955de3d638aab34fd0a699f92, 0x5244f60d187bbb3dd6f817e650250b, 0x00730f ] } , - BigNum { limbs: [ 0x7feef21aa1455b1985e5010d1e28f9, 0xf7d7a6997c064a244131970ee26e59, 0x005cf3 ] } , - BigNum { limbs: [ 0x3db510e55d16a3e67a1afdf2e1d708, 0xaf7b83040141e91596d67292f596fa, 0x0016f9 ] } , - BigNum { limbs: [ 0xef0eef02e9618bbf1b369c0a8445b6, 0x330063d404e1d74a7534d0a5cfbcaf, 0x006be4 ] } , - BigNum { limbs: [ 0xce9513fd14fa7340e4c962f57bba4b, 0x7452c5c978665bef62d338fc0848a3, 0x000809 ] } , - BigNum { limbs: [ 0x42f05b2dd0efa96d4b3d6d88b9ec49, 0x2dcdcaf325db8a076a0804aaf03d6b, 0x005a7e ] } , - BigNum { limbs: [ 0x7ab3a7d22d6c5592b4c291774613b8, 0x79855eaa576ca9326e0004f6e7c7e8, 0x00196f ] } , - BigNum { limbs: [ 0x278442906cdcb997c7058ee0f32403, 0x15d0bc7ed9cb8c826031662df9e760, 0x006c7a ] } , - BigNum { limbs: [ 0x961fc06f917f456838fa701f0cdbfe, 0x91826d1ea37ca6b777d6a373de1df3, 0x000773 ] } , - BigNum { limbs: [ 0x81b9b0030fff9b9dc2b95bda888cc3, 0x66c29c0c4d935f8efca0709e9fdc07, 0x004f0a ] } , - BigNum { limbs: [ 0x3bea52fcee5c63623d46a32577733e, 0x40908d912fb4d3aadb67990338294c, 0x0024e3 ] } , - BigNum { limbs: [ 0xb13e62a6404a74daf6c1cc2b79b805, 0x1db2c4fc40430e536c4bf821b25948, 0x002e8d ] } , - BigNum { limbs: [ 0x0c65a059be118a25093e32d48647fc, 0x89a064a13d0524e66bbc118025ac0b, 0x004560 ] } , - BigNum { limbs: [ 0x4ad0183cb4d23e3b9f40dc39226ef2, 0xbb8a5f91996cc7e207d405cec60f24, 0x004c63 ] } , - BigNum { limbs: [ 0x72d3eac34989c0c460bf22c6dd910f, 0xebc8ca0be3db6b57d03403d311f62f, 0x002789 ] } , - BigNum { limbs: [ 0x1d4b203d557fd3d0bd794485b1cd59, 0xff0465d7945d6b0fd286dc1624d8de, 0x001a8d ] } , - BigNum { limbs: [ 0xa058e2c2a8dc2b2f4286ba7a4e32a8, 0xa84ec3c5e8eac82a05812d8bb32c75, 0x00595f ] } , - BigNum { limbs: [ 0x7f4e7f70ec86ac05e2e6cb0db28404, 0x71b2bcbcebb0e07032ac4dd9f48655, 0x00222d ] } , - BigNum { limbs: [ 0x3e55838f11d552fa1d1933f24d7bfd, 0x35a06ce0919752c9a55bbbc7e37efe, 0x0051c0 ] } , - BigNum { limbs: [ 0x31d6a3b689584dd2f0f5e5e994ff3a, 0x98eed454988b6dee792e47fe9ebe96, 0x003268 ] } , - BigNum { limbs: [ 0x8bcd5f497503b12d0f0a19166b00c7, 0x0e645548e4bcc54b5ed9c1a33946bd, 0x004185 ] } , - BigNum { limbs: [ 0xd1a69ef390c21d4a865bf20d7fe4ff, 0x7ca7fee6f701be6bd1e602f93f1e7a, 0x000a60 ] } , - BigNum { limbs: [ 0xebfd640c6d99e1b579a40cf2801b02, 0x2aab2ab6864674ce062206a898e6d8, 0x00698d ] } , - BigNum { limbs: [ 0x62a8e248a5873997ef4c4862dac48b, 0x5edd0c55c21a756db007d73ddfd82b, 0x000083 ] } , - BigNum { limbs: [ 0x5afb20b758d4c56810b3b69d253b76, 0x48761d47bb2dbdcc28003263f82d28, 0x00736a ] } , - BigNum { limbs: [ 0xfbf6b6977f335ccc7ee15d01f39a0d, 0x40eb8f3ff496463dea24c6c2f0113d, 0x005839 ] } , - BigNum { limbs: [ 0xc1ad4c687f28a233811ea1fe0c65f4, 0x66679a5d88b1ecfbede342dee7f415, 0x001bb4 ] } , - BigNum { limbs: [ 0xa998918baa4ee01f8dc38c14a70a7d, 0x9a0c8d46e5c1431b68c23ab353eb5a, 0x00529a ] } , - BigNum { limbs: [ 0x140b7174540d1ee0723c72eb58f584, 0x0d469c569786f01e6f45ceee8419f9, 0x002153 ] } , - BigNum { limbs: [ 0xf5f8fb1cfd35bf416d25664132e681, 0xacd15cff4a085d468a777ba29478a8, 0x0063a1 ] } , - BigNum { limbs: [ 0xc7ab07e301263fbe92da98becd1980, 0xfa81cc9e333fd5f34d908dff438caa, 0x00104b ] } , - BigNum { limbs: [ 0xa148a069f07e83085c098a064e640d, 0x1d433b70d20df332844e948cea8ef0, 0x0059bd ] } , - BigNum { limbs: [ 0x1c5b62960ddd7bf7a3f674f9b19bf4, 0x8a0fee2cab3a400753b97514ed7663, 0x001a30 ] } , - BigNum { limbs: [ 0x323eed0b7541f7626cf66312dc75d4, 0xf0cfc53f02ad2cff5e64aca06bfdc0, 0x000521 ] } , - BigNum { limbs: [ 0x8b6515f4891a079d93099bed238a2d, 0xb683645e7a9b063a79a35d016c0793, 0x006ecb ] } , - BigNum { limbs: [ 0x6d33f723b2c096edd01d1e9965d339, 0xe5c62447e6c5b903259bd01c07a223, 0x007091 ] } , - BigNum { limbs: [ 0x50700bdc4b9b68122fe2e0669a2cc8, 0xc18d055596827a36b26c3985d06330, 0x00035b ] } , - BigNum { limbs: [ 0xced4862f3112b54a33b4ca4fa500d5, 0xe64e6e329643ccb9d7408ba4ad4f77, 0x0046d5 ] } , - BigNum { limbs: [ 0xeecf7cd0cd4949b5cc4b34b05aff2c, 0xc104bb6ae704668000c77dfd2ab5db, 0x002d17 ] } , - BigNum { limbs: [ 0xa7edc3eeb1ea0f3cd3d2e1c03a844c, 0xc7495e0793b32f9ded387ed31cf4f1, 0x001257 ] } , - BigNum { limbs: [ 0x15b63f114c71efc32c2d1d3fc57bb5, 0xe009cb95e995039beacf8acebb1062, 0x006195 ] } , - BigNum { limbs: [ 0xca9f6f63c7ee570593110cdd147867, 0x0c5a1acc4e039943b8c1f1c32bb124, 0x006d19 ] } , - BigNum { limbs: [ 0xf304939c366da7fa6ceef222eb879a, 0x9af90ed12f4499f61f4617deac542e, 0x0006d4 ] } , - BigNum { limbs: [ 0xa3138bbc3a874b460e884790b8c345, 0x8a70e4c6426c457a1f0b6f25f22f8b, 0x0049a9 ] } , - BigNum { limbs: [ 0x1a907743c3d4b3b9f177b76f473cbc, 0x1ce244d73adbedbfb8fc9a7be5d5c8, 0x002a44 ] } , - BigNum { limbs: [ 0x1169992c0dfff849ad9eda3ab2596b, 0xed13f5196adafec2c1e6f695673957, 0x006c32 ] } , - BigNum { limbs: [ 0xac3a69d3f05c06b6526124c54da696, 0xba3f3484126d34771621130c70cbfc, 0x0007ba ] } , - BigNum { limbs: [ 0x55a2ee5f896a4409af8f18266456c5, 0xac223b8b00a756b079736230d8d1e0, 0x005356 ] } , - BigNum { limbs: [ 0x680114a074f1baf65070e6d99ba93c, 0xfb30ee127ca0dc895e94a770ff3373, 0x002096 ] } , - BigNum { limbs: [ 0x2b4bfeb55dfba683a202b9605bdc7f, 0xcd834da0dfe13d24b851b6e0e2940a, 0x005b37 ] } , - BigNum { limbs: [ 0x9258044aa060587c5dfd459fa42382, 0xd9cfdbfc9d66f6151fb652c0f57149, 0x0018b5 ] } , - BigNum { limbs: [ 0x95ffdf3831c932ebf8ff080a52e66f, 0x9145a9d644ccae7ba896e4494d8bb6, 0x00364c ] } , - BigNum { limbs: [ 0x27a423c7cc92cc140700f6f5ad1992, 0x160d7fc7387b84be2f7125588a799d, 0x003da1 ] } , - BigNum { limbs: [ 0x548acb6d790da51557c2f3467bd1ca, 0x515b1711e6667471e199a39130b996, 0x0006b9 ] } , - BigNum { limbs: [ 0x69193792854e59eaa83d0bb9842e37, 0x55f8128b96e1bec7f66e6610a74bbd, 0x006d34 ] } , - BigNum { limbs: [ 0x0352b62f3f203eb38d064ea8444127, 0xfa03ad3c8255023718eed874887b51, 0x005aee ] } , - BigNum { limbs: [ 0xba514cd0bf3bc04c72f9b057bbbeda, 0xad4f7c60faf33102bf19312d4f8a02, 0x0018fe ] } , - BigNum { limbs: [ 0x6d63f8b28503442b436d7a469e3045, 0xd3a13151f5da0c095cf1e33152987a, 0x004c75 ] } , - BigNum { limbs: [ 0x50400a4d7958bad4bc9284b961cfbc, 0xd3b1f84b876e27307b162670856cd9, 0x002777 ] } , - BigNum { limbs: [ 0x62f6b763e08ab37846d9e1c754b5dc, 0x4af774526aa008078f5f1149b3a08b, 0x00327c ] } , - BigNum { limbs: [ 0x5aad4b9c1dd14b87b9261d38ab4a25, 0x5c5bb54b12a82b3248a8f8582464c8, 0x004171 ] } , - BigNum { limbs: [ 0xe5fdb63351c0ec536a984065c92adf, 0xe30b5b7bc5bd438d2dbf46dd5590f9, 0x000898 ] } , - BigNum { limbs: [ 0xd7a64cccac9b12ac9567be9a36d522, 0xc447ce21b78aefacaa48c2c4827459, 0x006b54 ] } , - BigNum { limbs: [ 0x2db53007db7808cb26d9489265bf28, 0x370156cdae5227f2d34b0ee0bab27b, 0x006103 ] } , - BigNum { limbs: [ 0x8feed2f822e3f634d926b66d9a40d9, 0x7051d2cfcef60b4704bcfac11d52d8, 0x0012ea ] } , - BigNum { limbs: [ 0xe92a5ff656e571e252f6a3681e0665, 0x48279a4d32928213bbd737bf0e62fa, 0x0067b7 ] } , - BigNum { limbs: [ 0xd479a309a7768d1dad095b97e1f99c, 0x5f2b8f504ab5b1261c30d1e2c9a258, 0x000c36 ] } , - BigNum { limbs: [ 0x4a3619fc303084522303685af9251f, 0xec39741c1ee0841ec896cf8d6b71cc, 0x003f80 ] } , - BigNum { limbs: [ 0x736de903ce2b7aaddcfc96a506dae2, 0xbb19b5815e67af1b0f713a146c9387, 0x00346c ] } , - BigNum { limbs: [ 0x09b29d2aaa46f58fde839c9b10f95a, 0xf481668a98cc916653ef8ee10c3160, 0x000b47 ] } , - BigNum { limbs: [ 0xb3f165d554150970217c6264ef06a7, 0xb2d1c312e47ba1d384187ac0cbd3f3, 0x0068a5 ] } , - BigNum { limbs: [ 0x8d4f7d4f608b27831af13e1a684e43, 0xeabd406c3a9d1aaa8bc17630875b9a, 0x002669 ] } , - BigNum { limbs: [ 0x305485b09dd0d77ce50ec0e597b1be, 0xbc95e93142ab188f4c46937150a9b9, 0x004d83 ] } , - BigNum { limbs: [ 0x5f59426e561ac3a0d046361160c87d, 0xf67c9a365f924184a3278cbac76cf6, 0x001e28 ] } , - BigNum { limbs: [ 0x5e4ac091a8413b5f2fb9c8ee9f3784, 0xb0d68f671db5f1b534e07ce710985d, 0x0055c4 ] } , - BigNum { limbs: [ 0xb504c88bc20bd7cd2b2f4c41dff3cb, 0x1dab874c3d6a7726f871b0da235e08, 0x00698f ] } , - BigNum { limbs: [ 0x089f3a743c502732d4d0b2be200c36, 0x89a7a2513fddbc12df9658c7b4a74b, 0x000a5e ] } , - BigNum { limbs: [ 0x5f34977fa341337055b514a4510f6a, 0x373ad66cee9842076ef74d0b719d55, 0x005dd7 ] } , - BigNum { limbs: [ 0x5e6f6b805b1acb8faa4aea5baef097, 0x701853308eaff1326910bc966667fe, 0x001616 ] } , - BigNum { limbs: [ 0x6c461ae56f072df424341daddcab5d, 0x0d96bee11ebb5204f44088385855a8, 0x004aa1 ] } , - BigNum { limbs: [ 0x515de81a8f54d10bdbcbe1522354a4, 0x99bc6abc5e8ce134e3c781697fafab, 0x00294c ] } , - BigNum { limbs: [ 0x0e8aaa2c0adab646add4de51661716, 0x17a81ec992dbd332c8edcb31b9c532, 0x006f8c ] } , - BigNum { limbs: [ 0xaf1958d3f38148b9522b20ae99e8eb, 0x8fab0ad3ea6c60070f1a3e701e4021, 0x000461 ] } , - BigNum { limbs: [ 0x966df282c99da1552407971d6a01b3, 0xc4a1e86297dd1f72eaf592b1a5e37c, 0x001064 ] } , - BigNum { limbs: [ 0x2736107d34be5daadbf867e295fe4e, 0xe2b1413ae56b13c6ed1276f03221d7, 0x006388 ] } , - BigNum { limbs: [ 0xdf55fe0e814040452ccd3a84afddff, 0xc0bccf122cf17f89e05099b9346eb4, 0x004fc3 ] } , - BigNum { limbs: [ 0xde4e04f17d1bbebad332c47b502202, 0xe6965a8b5056b3aff7b76fe8a3969e, 0x002429 ] } , - BigNum { limbs: [ 0x9025299f9d89f8b0a40e557f4b46ae, 0xb7cf8d35960d07e1837d2ec951dce4, 0x000c0e ] } , - BigNum { limbs: [ 0x2d7ed96060d2064f5bf1a980b4b953, 0xef839c67e73b2b58548adad886286f, 0x0067de ] } , - BigNum { limbs: [ 0x627ca6b51d001a6f9d0064fac7137d, 0xba9652521c23efdb2f0828054b7fb3, 0x006f56 ] } , - BigNum { limbs: [ 0x5b275c4ae15be49062ff9a0538ec84, 0xecbcd74b6124435ea8ffe19c8c85a0, 0x000496 ] } , - BigNum { limbs: [ 0x57c9facced7b915f66134727f54889, 0xc12d8a6f82133cf6cd1d9efc7c146e, 0x006c0e ] } , - BigNum { limbs: [ 0x65da083310e06da099ecb7d80ab778, 0xe6259f2dfb34f6430aea6aa55bf0e5, 0x0007de ] } , - BigNum { limbs: [ 0x339834601eaf9df9b5ad7e3464f5a5, 0x51053381165e056f4fd9e2e5174451, 0x00510f ] } , - BigNum { limbs: [ 0x8a0bce9fdfac61064a5280cb9b0a5c, 0x564df61c66ea2dca882e26bcc0c102, 0x0022de ] } , - BigNum { limbs: [ 0xea1b243740a635ed1c6473b3e31cf7, 0x6e5ee340acc503a56cc8813aa331a6, 0x0022c3 ] } , - BigNum { limbs: [ 0xd388dec8bdb5c912e39b8b4c1ce30a, 0x38f4465cd0832f946b3f886734d3ac, 0x00512a ] } , - BigNum { limbs: [ 0xa5a037f31901964ec74d66ce5ce51d, 0xd1a16317e2eef74564930e6096c055, 0x006852 ] } , - BigNum { limbs: [ 0x1803cb0ce55a68b138b29831a31ae4, 0xd5b1c6859a593bf47374fb414144fe, 0x000b9a ] } , - BigNum { limbs: [ 0x5b9ca898999be0e41960cc8f7cf554, 0x10c103e349beeebdfa4d46a48617eb, 0x001be6 ] } , - BigNum { limbs: [ 0x62075a6764c01e1be69f3270830aad, 0x969225ba3389447bddbac2fd51ed68, 0x005807 ] } , - BigNum { limbs: [ 0xc9e646f0bc30f46b1ac0499b422b78, 0x36685571ebe59efaac6d4efab2f7a2, 0x00178c ] } , - BigNum { limbs: [ 0xf3bdbc0f422b0a94e53fb564bdd489, 0x70ead42b9162943f2b9abaa7250db0, 0x005c61 ] } , - BigNum { limbs: [ 0x468edeb6787ad5963a9c566e8bd6b5, 0x92e90312698626747ffd80262ac35f, 0x003dfd ] } , - BigNum { limbs: [ 0x7715244985e12969c563a89174294c, 0x146a268b13c20cc5580a897bad41f4, 0x0035f0 ] } , - BigNum { limbs: [ 0xa1f0d04b158d7aa271966e405dcffd, 0xeac8ef44b61d5e3ddfac65da256f88, 0x00378f ] } , - BigNum { limbs: [ 0x1bb332b4e8ce845d8e6990bfa23004, 0xbc8a3a58c72ad4fbf85ba3c7b295cb, 0x003c5d ] } , - BigNum { limbs: [ 0x719dedc145d3ee4580dba9fc46a574, 0x8c3a3826d76773a54de6e95a9de480, 0x00102b ] } , - BigNum { limbs: [ 0x4c06153eb88810ba7f245503b95a8d, 0x1b18f176a5e0bf948a2120473a20d3, 0x0063c2 ] } , - BigNum { limbs: [ 0x6d85a7faf7c62885336974811c697a, 0xbda65519ec38a6266415c4d6ced228, 0x003b35 ] } , - BigNum { limbs: [ 0x501e5b050695d67acc968a7ee39687, 0xe9acd483910f8d1373f244cb09332b, 0x0038b7 ] } , - BigNum { limbs: [ 0x510ebfb4543a3efb350dbef02a116e, 0xa56e80f82b2df675522e37ad4eca1c, 0x001907 ] } , - BigNum { limbs: [ 0x6c95434baa21c004caf2400fd5ee93, 0x01e4a8a5521a3cc485d9d1f4893b37, 0x005ae6 ] } , - BigNum { limbs: [ 0x1102eb66f6fce55e501a6aa6138595, 0x8e203415456536060cc57d5ad557ea, 0x006d3d ] } , - BigNum { limbs: [ 0xaca11799075f19a1afe59459ec7a6c, 0x1932f58837e2fd33cb428c4702ad69, 0x0006b0 ] } , - BigNum { limbs: [ 0x7dea6029017fdc9dac7b409d585d19, 0xc0e6aaf7c2d906dbeaab1ad525575d, 0x00634f ] } , - BigNum { limbs: [ 0x3fb9a2d6fcdc22625384be62a7a2e8, 0xe66c7ea5ba6f2c5ded5ceeccb2adf6, 0x00109d ] } , - BigNum { limbs: [ 0x3764a3ff5f912e67cf9ca3e9f5b1b1, 0xbee4fcf836297cc088f970ebac3ad3, 0x005f20 ] } , - BigNum { limbs: [ 0x863f5f009ecad09830635b160a4e50, 0xe86e2ca5471eb6794f0e98b62bca80, 0x0014cc ] } , - BigNum { limbs: [ 0x738f0e49608f7fec3894fdbbc5e597, 0x6831b2c665dce522dc0df640392d0a, 0x002e91 ] } , - BigNum { limbs: [ 0x4a14f4b69dcc7f13c76b01443a1a6a, 0x3f2176d7176b4e16fbfa13619ed849, 0x00455c ] } , - BigNum { limbs: [ 0xb1cebef9a7dbaf187a081bc020c9e9, 0x49dce1168ed72eb22d78a01a149188, 0x0048c6 ] } , - BigNum { limbs: [ 0x0bd5440656804fe785f7e33fdf3618, 0x5d764886ee710487aa8f6987c373cb, 0x002b27 ] } , - BigNum { limbs: [ 0x786c05f26d2d14072fff623d593acc, 0x4567920d7fbdd5ad1e34af8ba8297e, 0x004b0f ] } , - BigNum { limbs: [ 0x4537fd0d912eeaf8d0009cc2a6c535, 0x61eb978ffd8a5d8cb9d35a162fdbd5, 0x0028de ] } , - BigNum { limbs: [ 0xa08916e4882ed38e69d125b2613b98, 0x2412402056b9c587252e3f738f0291, 0x00154d ] } , - BigNum { limbs: [ 0x1d1aec1b762d2b71962ed94d9ec469, 0x8340e97d268e6db2b2d9ca2e4902c2, 0x005ea0 ] } , - BigNum { limbs: [ 0xa44a292b2e5b2982758592725b5677, 0x3df3d2c48682ef7088ae62b6a01241, 0x004c5f ] } , - BigNum { limbs: [ 0x1959d9d4d000d57d8a7a6c8da4a98a, 0x695f56d8f6c543c94f59a6eb37f312, 0x00278e ] } , - BigNum { limbs: [ 0x3dc049317117871848f2442fea2cc8, 0x6e34562bbc52e204d5dce884424849, 0x002cb0 ] } , - BigNum { limbs: [ 0x7fe3b9ce8d4477e7b70dbad015d339, 0x391ed371c0f55135022b211d95bd0a, 0x00473d ] } , - BigNum { limbs: [ 0xd2201ed10a653f0612b0fb6cc1107c, 0xcba74f737371896fb6a2fbba8ee922, 0x006c1b ] } , - BigNum { limbs: [ 0xeb83e42ef3f6bff9ed4f03933eef85, 0xdbabda2a09d6a9ca21650de7491c30, 0x0007d1 ] } , - BigNum { limbs: [ 0xdf8a6e25303f2fd0c13b83274f45b0, 0xbb2eb5bc528c11781b3e716a0f505e, 0x002bdd ] } , - BigNum { limbs: [ 0xde1994dace1ccf2f3ec47bd8b0ba51, 0xec2473e12abc21c1bcc99837c8b4f4, 0x00480f ] } , - BigNum { limbs: [ 0xd22b0908293b435d970e0b0666e0d8, 0x0683301968fdb44d3b688f8492460a, 0x005b03 ] } , - BigNum { limbs: [ 0xeb78f9f7d520bba268f1f3f9991f29, 0xa0cff984144a7eec9c9f7a1d45bf48, 0x0018ea ] } , - BigNum { limbs: [ 0xc5922e39ae0bf92ae6e2c121bfc3c3, 0x9e36de006c054af1a2d79a24d27ae1, 0x007000 ] } , - BigNum { limbs: [ 0xf811d4c6505005d5191d3dde403c3e, 0x091c4b9d1142e84835306f7d058a71, 0x0003ed ] } , - BigNum { limbs: [ 0xe63a729649cca628f1221a8298a060, 0xe2fcb84cd789855a08d1b96d6c46b4, 0x001272 ] } , - BigNum { limbs: [ 0xd7699069b48f58d70edde47d675fa1, 0xc4567150a5beaddfcf3650346bbe9e, 0x00617a ] } , - BigNum { limbs: [ 0x5fe456e0de774541fed1c1f077470a, 0xef9cfd0d5b9c3c011284ce2c0a5ae6, 0x0058ea ] } , - BigNum { limbs: [ 0x5dbfac1f1fe4b9be012e3d0f88b8f7, 0xb7b62c9021abf738c5833b75cdaa6d, 0x001b02 ] } , - BigNum { limbs: [ 0x4e7bab3c93dde164936d794ecac754, 0x8efcbc9ffba397e292677efe6e684b, 0x00192d ] } , - BigNum { limbs: [ 0x6f2857c36a7e1d9b6c9285b13538ad, 0x18566cfd81a49b5745a08aa3699d08, 0x005ac0 ] } , - BigNum { limbs: [ 0xf39aabdcbb7d0745a8d91e955983d1, 0xed933c287503e05891c9ff9c3987d4, 0x00075d ] } , - BigNum { limbs: [ 0xca09572342def7ba5726e06aa67c30, 0xb9bfed75084452e1463e0a059e7d7e, 0x006c8f ] } , - BigNum { limbs: [ 0x04d8e25880e9cee1d977e545af710b, 0x5fb6453833c4c973f8fca82606c27d, 0x00527d ] } , - BigNum { limbs: [ 0xb8cb20a77d72301e268819ba508ef6, 0x479ce465498369c5df0b617bd142d6, 0x002170 ] } , - BigNum { limbs: [ 0x9741e455322d312856121a533306a0, 0xd41c2b82dcc6b2dd9a95731e9ccfab, 0x005d63 ] } , - BigNum { limbs: [ 0x26621eaacc2ecdd7a9ede4acccf961, 0xd336fe1aa081805c3d7296833b35a8, 0x001689 ] } , - BigNum { limbs: [ 0x9d89aade182224f825d2b60a32f87a, 0x4aec85b8f956e027a83558a1fa00b9, 0x001df4 ] } , - BigNum { limbs: [ 0x201a5821e639da07da2d48f5cd0787, 0x5c66a3e483f153122fd2b0ffde049a, 0x0055f9 ] } , - BigNum { limbs: [ 0x2d7dae9287cd043df47cf236da17e9, 0xf534d4599079c579b994cbef0c2ce9, 0x001306 ] } , - BigNum { limbs: [ 0x9026546d768efac20b830cc925e818, 0xb21e5543ecce6dc01e733db2cbd86a, 0x0060e6 ] } , - BigNum { limbs: [ 0xcbb1bd356f80cdcf2c53214fca9316, 0xe397c114f8f36fa873d6002f921fda, 0x003495 ] } , - BigNum { limbs: [ 0xf1f245ca8edb3130d3acddb0356ceb, 0xc3bb68888454c3916432097245e578, 0x003f57 ] } , - BigNum { limbs: [ 0x62629752f7b4ac743e6cd3f2d8b5e4, 0xb727404262a9c24956b7927d30eacb, 0x001874 ] } , - BigNum { limbs: [ 0x5b416bad06a7528bc1932b0d274a1d, 0xf02be95b1a9e70f081507724a71a88, 0x005b78 ] } , - BigNum { limbs: [ 0x0cfc2a8e76963e1cfb5b8201d3c611, 0xdbab8b1811260a0955d20478e94671, 0x0038a2 ] } , - BigNum { limbs: [ 0xb0a7d87187c5c0e304a47cfe2c39f0, 0xcba79e856c22293082360528eebee2, 0x003b4a ] } , - BigNum { limbs: [ 0x501d116ae74916c40d56452b59c640, 0x823696c820865acd8b4a64b679a2e3, 0x0032e8 ] } , - BigNum { limbs: [ 0x6d86f1951712e83bf2a9b9d4a639c1, 0x251c92d55cc1d86c4cbda4eb5e6270, 0x004105 ] } , - BigNum { limbs: [ 0x9d714edf2c5d73e9fd3487793e0a1e, 0x777daecfbc8bf776f0b322161a54eb, 0x000c02 ] } , - BigNum { limbs: [ 0x2032b420d1fe8b1602cb7786c1f5e3, 0x2fd57acdc0bc3bc2e754e78bbdb068, 0x0067eb ] } , - BigNum { limbs: [ 0xa019a046396b882f67888351b3aed0, 0x4490a807026fab8427037d4aaef513, 0x0000df ] } , - BigNum { limbs: [ 0x1d8a62b9c4f076d098777bae4c5131, 0x62c281967ad887b5b1048c57291040, 0x00730e ] } , - BigNum { limbs: [ 0xb7da58c5251abce7c952e4bd7af7d4, 0x42944aa32bee278a8c2e3d1fd8e115, 0x005e85 ] } , - BigNum { limbs: [ 0x05c9aa3ad941421836ad1a4285082d, 0x64bedefa515a0baf4bd9cc81ff243e, 0x001568 ] } , - BigNum { limbs: [ 0xb169206b7f3154077d390dd7d05b42, 0x0a68359a3f51e5084aaf8797a96f5e, 0x004197 ] } , - BigNum { limbs: [ 0x0c3ae2947f2aaaf882c6f1282fa4bf, 0x9ceaf4033df64e318d58820a2e95f5, 0x003256 ] } , - BigNum { limbs: [ 0x3c05a40dd7360af2be473f9f510696, 0x85d44e308ee97c96515b1b38427a7c, 0x004f02 ] } , - BigNum { limbs: [ 0x819e5ef22725f40d41b8bf60aef96b, 0x217edb6cee5eb6a386acee69958ad7, 0x0024eb ] } , - BigNum { limbs: [ 0xc01d3617a563363c520c2b1a297a42, 0x1b34b95dfdc7a5455416cfcec9c93f, 0x0057d1 ] } , - BigNum { limbs: [ 0xfd86cce858f8c8c3adf3d3e5d685bf, 0x8c1e703f7f808df483f139d30e3c13, 0x001c1c ] } , - BigNum { limbs: [ 0xd04289be4d5845428c9fe880b696f2, 0xefc99d37fe721eb3867a7d42417bfd, 0x003337 ] } , - BigNum { limbs: [ 0xed617941b103b9bd7360167f49690f, 0xb7898c657ed61486518d8c5f968955, 0x0040b5 ] } , - BigNum { limbs: [ 0x471747bfef212bcdcd38d6f117f52f, 0x873a1f951adfb6548e4a26c46cf637, 0x00260e ] } , - BigNum { limbs: [ 0x768cbb400f3ad33232c7280ee80ad2, 0x20190a0862687ce549bde2dd6b0f1c, 0x004ddf ] } , - BigNum { limbs: [ 0x1bd60176f653694582bcb64c16195c, 0xf7a2a21cae9a8382c4cf78190afc04, 0x0045c6 ] } , - BigNum { limbs: [ 0xa1ce0189080895ba7d4348b3e9e6a5, 0xafb08780ceadafb713389188cd094f, 0x002e26 ] } , - BigNum { limbs: [ 0x12d6dbc4da70eb9281ca5182004249, 0x6ee71fba800af7b5bc01b47b0c0cc1, 0x00524f ] } , - BigNum { limbs: [ 0xaacd273b23eb136d7e35ad7dffbdb8, 0x386c09e2fd3d3b841c065526cbf892, 0x00219e ] } , - BigNum { limbs: [ 0xdd88120258390fcf4a24368337be6a, 0xbc58cb5eb5c44cc9ff4bf19abce5bb, 0x0030e1 ] } , - BigNum { limbs: [ 0xe01bf0fda622ef30b5dbc87cc84197, 0xeafa5e3ec783e66fd8bc18071b1f97, 0x00430b ] } , - BigNum { limbs: [ 0xa959dcb76fe5390c0871ffc19b100f, 0xce8ba2c48aa4894506e8611524fe2a, 0x002f73 ] } , - BigNum { limbs: [ 0x144a26488e76c5f3f78dff3e64eff2, 0xd8c786d8f2a3a9f4d11fa88cb30729, 0x004479 ] } , - BigNum { limbs: [ 0x73882ea6ce7aa9e15b2a94a295c9ad, 0x7fb3c3230d556d15603c30cffb92d1, 0x003d74 ] } , - BigNum { limbs: [ 0x4a1bd4592fe1551ea4d56a5d6a3654, 0x279f667a6ff2c62477cbd8d1dc7282, 0x003679 ] } , - BigNum { limbs: [ 0xf7ba1663b31d0376fd4001b4f824c8, 0x46853ef9fa574485c4aa168e870ab3, 0x006fbe ] } , - BigNum { limbs: [ 0xc5e9ec9c4b3efb8902bffd4b07db39, 0x60cdeaa382f0eeb4135df31350fa9f, 0x00042f ] } , - BigNum { limbs: [ 0x0119a77a9a472b1f0256b78db57e18, 0xf68db38f4a7b27a0943532cbc2db68, 0x00474c ] } , - BigNum { limbs: [ 0xbc8a5b856414d3e0fda947724a81e9, 0xb0c5760e32cd0b9943d2d6d61529eb, 0x002ca0 ] } , - BigNum { limbs: [ 0x1592642caef3e5a869ecf2cc0d850a, 0xd792bef1368d6e952e48357708336a, 0x004164 ] } , - BigNum { limbs: [ 0xa8119ed34f68195796130c33f27af7, 0xcfc06aac46bac4a4a9bfd42acfd1e9, 0x003288 ] } , - BigNum { limbs: [ 0xea563e74aa3185e99ab4b0ce6c0c7c, 0xcb7ba7a1102bab1c2cbe2844a0ddd5, 0x00098b ] } , - BigNum { limbs: [ 0xd34dc48b542a7916654b4e3193f385, 0xdbd781fc6d1c881dab49e15d37277d, 0x006a61 ] } , - BigNum { limbs: [ 0x437f9626fc085e3c28d666a5c2d854, 0xb5c3debf77a18f4de02c0f776af3ea, 0x00325d ] } , - BigNum { limbs: [ 0x7a246cd90253a0c3d729985a3d27ad, 0xf18f4ade05a6a3ebf7dbfa2a6d1169, 0x00418f ] } , - BigNum { limbs: [ 0x042bde9573c4ad1ff95ac74f4dd55e, 0xf518291d3e252d00a5be2412a997b6, 0x0050c8 ] } , - BigNum { limbs: [ 0xb978246a8a9751e006a537b0b22aa3, 0xb23b00803f2306393249e58f2e6d9d, 0x002324 ] } , - BigNum { limbs: [ 0xd42ce812d4161a128568bfed36d2d6, 0x61d6a24bc012a01a09222bf9650bd9, 0x006524 ] } , - BigNum { limbs: [ 0xe9771aed2a45e4ed7a973f12c92d2b, 0x457c8751bd35931fcee5dda872f979, 0x000ec9 ] } , - BigNum { limbs: [ 0x4eea3f60d8ba48352b5233bf7ba901, 0x9a5b87438c07220bc79e6b495d459f, 0x003304 ] } , - BigNum { limbs: [ 0x6eb9c39f25a1b6cad4adcb40845700, 0x0cf7a259f141112e10699e587abfb4, 0x0040e9 ] } , - BigNum { limbs: [ 0x67db8f3cd65da7c8f54ccb3906df6e, 0x385ab3740f1d0a08b8806bf140116a, 0x003ff0 ] } , - BigNum { limbs: [ 0x55c873c327fe57370ab333c6f92093, 0x6ef876296e2b29311f879db097f3e9, 0x0033fd ] } , - BigNum { limbs: [ 0x10f133fcb8fede5de6afb9568b79d7, 0x555d2abe285e02fca0c6b9bfafb5fd, 0x00149f ] } , - BigNum { limbs: [ 0xacb2cf03455d20a2195045a974862a, 0x51f5fedf54ea303d37414fe2284f56, 0x005f4e ] } , - BigNum { limbs: [ 0xb769a52be75f80a78adc4c393f40fb, 0x8cf482eda4eaeba7fb8a7fa58fc5d9, 0x0007f3 ] } , - BigNum { limbs: [ 0x063a5dd416fc7e587523b2c6c0bf06, 0x1a5ea6afd85d4791dc7d89fc483f7a, 0x006bfa ] } , - BigNum { limbs: [ 0x1d3d048e2bae51fb8bf031847f0368, 0x7d0f0c1d7fa06092d03a32cfcbe1a7, 0x004b4f ] } , - BigNum { limbs: [ 0xa066fe71d2adad04740fcd7b80fc99, 0x2a441d7ffda7d2a707cdd6d20c23ac, 0x00289e ] } , - BigNum { limbs: [ 0xcfc07ba26779319d6862e69abec349, 0x7fd1ffada9fb7ce80043e235fce4b6, 0x0027a5 ] } , - BigNum { limbs: [ 0xede3875d96e2cd62979d1865413cb8, 0x278129efd34cb651d7c4276bdb209c, 0x004c48 ] } , - BigNum { limbs: [ 0x2b9280b02b0f38389490a19470e8d1, 0x662f4b3bf7dd4a6b4b7925d178b97c, 0x00006c ] } , - BigNum { limbs: [ 0x9211824fd34cc6c76b6f5d6b8f1730, 0x4123de61856ae8ce8c8ee3d05f4bd7, 0x007381 ] } , - BigNum { limbs: [ 0x626ce47a1970433653bbc394e0194f, 0x0ed3d812e1900c2d1e5df0ba7ba08d, 0x001b07 ] } , - BigNum { limbs: [ 0x5b371e85e4ebbbc9ac443b6b1fe6b2, 0x987f518a9bb8270cb9aa18e75c64c6, 0x0058e6 ] } , - BigNum { limbs: [ 0xbf59d5e64bbfa343aac380bd084cf0, 0xe70b5e0ee5d8a20cb37113cdf8a9af, 0x00534e ] } , - BigNum { limbs: [ 0xfe4a2d19b29c5bbc553c7e42f7b311, 0xc047cb8e976f912d2496f5d3df5ba3, 0x00209e ] } , - BigNum { limbs: [ 0x597b23df05312f8c2af61a8141cd2a, 0x0fd36013a65e8edf76cab18f8a37c7, 0x0008f6 ] } , - BigNum { limbs: [ 0x6428df20f92acf73d509e47ebe32d7, 0x977fc989d6e9a45a613d58124dcd8c, 0x006af7 ] } , - BigNum { limbs: [ 0x18d8297cc221bdb5e7ec7507841320, 0x300ff31bf898416efa2f23e851d93e, 0x00315f ] } , - BigNum { limbs: [ 0xa4cbd9833c3a414a181389f87bece1, 0x7743368184aff1caddd8e5b9862c15, 0x00428e ] } , - BigNum { limbs: [ 0xb9cfa13c9e7075a60c85450b7b2f47, 0x6723c0c73b43c6b58ce353a65ae24f, 0x000185 ] } , - BigNum { limbs: [ 0x03d461c35feb8959f37ab9f484d0ba, 0x402f68d642046c844b24b5fb7d2304, 0x007268 ] } , - BigNum { limbs: [ 0x4aa8865b38d3fe56375852f503eab6, 0x0a59d3076a69a11bab9cdb76c9aa34, 0x002e1d ] } , - BigNum { limbs: [ 0x72fb7ca4c58800a9c8a7ac0afc154b, 0x9cf9569612de921e2c6b2e2b0e5b1f, 0x0045d0 ] } , - BigNum { limbs: [ 0x2f158931e7234f34277686b037a511, 0x36a53627e337d86327fa50db777aaf, 0x003bff ] } , - BigNum { limbs: [ 0x8e8e79ce1738afcbd889784fc85af0, 0x70adf3759a105ad6b00db8c6608aa4, 0x0037ee ] } , - BigNum { limbs: [ 0x5b11f7e8d7950307379aa242bef13a, 0x854d6e4b49d1a48d5cc9eb4b326da6, 0x003cd9 ] } , - BigNum { limbs: [ 0x62920b1726c6fbf8c8655cbd410ec7, 0x2205bb5233768eac7b3e1e56a597ad, 0x003714 ] } , - BigNum { limbs: [ 0x74c9b15c2f6c8157b9d269efd0d9fd, 0x43d2741d83a4ffa6a4d8853dc711ed, 0x00349a ] } , - BigNum { limbs: [ 0x48da51a3ceef7da8462d95102f2604, 0x6380b57ff9a33393332f846410f366, 0x003f53 ] } , - BigNum { limbs: [ 0x922dc33e3981ed211c46be69369843, 0x792481d33f84533665b7ea0775febc, 0x004a34 ] } , - BigNum { limbs: [ 0x2b763fc1c4da11dee3b94096c967be, 0x2e2ea7ca3dc3e00372501f9a620697, 0x0029b9 ] } , - BigNum { limbs: [ 0x6fa92e866fdb2fb08e0577296c2a24, 0xadb60d8a7bf7640ac08abd3c0874ce, 0x00699a ] } , - BigNum { limbs: [ 0x4dfad4798e80cf4f71fa87d693d5dd, 0xf99d1c130150cf2f177d4c65cf9085, 0x000a52 ] } , - BigNum { limbs: [ 0x10bc93086722d6faa75e2409644896, 0x0d36010c2912e9b9971968377e8f23, 0x0045cc ] } , - BigNum { limbs: [ 0xace76ff79739280558a1daf69bb76b, 0x9a1d28915435498040eea16a597630, 0x002e21 ] } , - BigNum { limbs: [ 0x12974aa30cb0dbc3ad07b8488f216a, 0x599a73b32821076027ac452fa314e7, 0x0027f8 ] } , - BigNum { limbs: [ 0xab0cb85cf1ab233c52f846b770de97, 0x4db8b5ea55272bd9b05bc47234f06c, 0x004bf5 ] } , - BigNum { limbs: [ 0x07c23f803514299fe2121c20b86988, 0xb000d89ab17c3ca13436f849d0c5b7, 0x0052a3 ] } , - BigNum { limbs: [ 0xb5e1c37fc947d5601dede2df479679, 0xf7525102cbcbf698a3d11158073f9c, 0x002149 ] } , - BigNum { limbs: [ 0x54efb0bc8d997ff0498fbd3aed65cf, 0xb926e96be027edd2c44927ecd41b3a, 0x0021f9 ] } , - BigNum { limbs: [ 0x68b4524370c27f0fb67041c5129a32, 0xee2c40319d20456713bee1b503ea19, 0x0051f3 ] } , - BigNum { limbs: [ 0xc33eff3b2e005d15c92e1aac022f7a, 0x03f06c32134406419d72de2d04da5c, 0x0038dd ] } , - BigNum { limbs: [ 0xfa6503c4d05ba1ea36d1e453fdd087, 0xa362bd6b6a042cf83a952b74d32af6, 0x003b10 ] } , - BigNum { limbs: [ 0x35e832d903d52910fc77c70f6789eb, 0x025cc14be0ad31420245361de9b12f, 0x00575f ] } , - BigNum { limbs: [ 0x87bbd026fa86d5ef038837f0987616, 0xa4f668519c9b01f7d5c2d383ee5424, 0x001c8e ] } , - BigNum { limbs: [ 0xb7ab8507f3920122be1a8aba702c85, 0x25e3c9a4ab06a671d938712e096896, 0x0058b6 ] } , - BigNum { limbs: [ 0x05f87df80ac9fddd41e574458fd37c, 0x816f5ff8d2418cc7fecf9873ce9cbd, 0x001b37 ] } , - BigNum { limbs: [ 0x69be7aef4c8d1ef94c14f22139573f, 0x6f3cc7d42821defa95e48ec5f0df7f, 0x004e12 ] } , - BigNum { limbs: [ 0x53e58810b1cee006b3eb0cdec6a8c2, 0x381661c95526543f42237adbe725d4, 0x0025db ] } , - BigNum { limbs: [ 0x743ad6e2d471f5c5266f7287443e47, 0x5f70d71d12f4ac20bd03516e01a536, 0x002adc ] } , - BigNum { limbs: [ 0x49692c1d29ea093ad9908c78bbc1ba, 0x47e252806a5387191b04b833d6601d, 0x004911 ] } , - BigNum { limbs: [ 0x2c25c55d44a0cda2c7312172f024d5, 0x856c0c995405fcbdc0f7c531d5529a, 0x004d16 ] } , - BigNum { limbs: [ 0x917e3da2b9bb315d38cedd8d0fdb2c, 0x21e71d042942367c1710447002b2b9, 0x0026d7 ] } , - BigNum { limbs: [ 0x223e998d178fb680440e833ea39b55, 0x42b69828825b5da8aa10fae01e8c0c, 0x00181c ] } , - BigNum { limbs: [ 0x9b656972e6cc487fbbf17bc15c64ac, 0x649c9174faecd5912df70ec1b97947, 0x005bd1 ] } , - BigNum { limbs: [ 0x10989d7476cf2bc1bf28a8007ab548, 0xeb7d5ee5004ffc6c81de8478b8e220, 0x002099 ] } , - BigNum { limbs: [ 0xad0b658b878cd33e40d756ff854ab9, 0xbbd5cab87cf836cd562985291f2333, 0x005353 ] } , - BigNum { limbs: [ 0x96d79f8a3e8e0b93b28aebc303f074, 0xc9102a942d517007277851e8aec9ea, 0x0024db ] } , - BigNum { limbs: [ 0x26cc6375bfcdf36c4d75133cfc0f8d, 0xde42ff094ff6c332b08fb7b9293b69, 0x004f11 ] } , - BigNum { limbs: [ 0x472415b0f60defaa8f3f7b31a9d713, 0x5bb263c0e75edaf8ea26346303cc91, 0x00406e ] } , - BigNum { limbs: [ 0x767fed4f084e0f5570c083ce5628ee, 0x4ba0c5dc95e95840ede1d53ed438c2, 0x00337f ] } , - BigNum { limbs: [ 0x22c16ba307dd3aa0d0db6053a9a3e0, 0xe0b7bf8e8c0fd7bcbd2b9d03b8b2db, 0x000042 ] } , - BigNum { limbs: [ 0x9ae2975cf67ec45f2f249eac565c21, 0xc69b6a0ef1385b7d1adc6c9e1f5278, 0x0073aa ] } , - BigNum { limbs: [ 0xd8f9f506885a4f1784febbb03b452f, 0xd0cbdf62af6ec9809d68741ff12a30, 0x000d36 ] } , - BigNum { limbs: [ 0xe4aa0df97601afe87b01434fc4bad2, 0xd6874a3acdd969b93a9f9581e6db22, 0x0066b6 ] } , - BigNum { limbs: [ 0x657d647e701c3bc1294eb7f2f2f66d, 0x076752b9400f5ae617b0fcc5dbf9ca, 0x002887 ] } , - BigNum { limbs: [ 0x58269e818e3fc33ed6b1470d0d0994, 0x9febd6e43d38d853c0570cdbfc0b89, 0x004b66 ] } , - BigNum { limbs: [ 0xf3dc40acfe2b7256cfcec9c01c3ffe, 0xdab0be5128d795d19d03d8fd323cf7, 0x0068f0 ] } , - BigNum { limbs: [ 0xc9c7c25300308ca93031353fe3c003, 0xcca26b4c54709d683b0430a4a5c85b, 0x000afc ] } , - BigNum { limbs: [ 0x39c74778c695afde09673bab61e898, 0xdf77f041dc9735c1728a223969d1ee, 0x0013c8 ] } , - BigNum { limbs: [ 0x83dcbb8737c64f21f698c3549e1769, 0xc7db395ba0b0fd78657de7686e3365, 0x006024 ] } , - BigNum { limbs: [ 0x16c96bf3f6890a98d0402a397d3074, 0xa203d88e626925ff7d17d595046f32, 0x0057df ] } , - BigNum { limbs: [ 0xa6da970c07d2f4672fbfd4c682cf8d, 0x054f510f1adf0d3a5af0340cd39621, 0x001c0e ] } , - BigNum { limbs: [ 0xd286c9c7b2f3fd967bc7d5bce1a804, 0xdd564bbe5d15ce91a6d6efc2c7ca96, 0x007073 ] } , - BigNum { limbs: [ 0xeb1d39384b680169843829431e57fd, 0xc9fcdddf203264a8313119df103abc, 0x000379 ] } , - BigNum { limbs: [ 0xe540b9c586fcea58550848d0259347, 0xba723ff8c505df9d9a8301247105a2, 0x00046c ] } , - BigNum { limbs: [ 0xd863493a775f14a7aaf7b62fda6cba, 0xece0e9a4b842539c3d85087d66ffb0, 0x006f80 ] } , - BigNum { limbs: [ 0x97ac9b42b5bc323c3e9892b876b461, 0xd6151fc5ce2e0c824958cba91b6f97, 0x001128 ] } , - BigNum { limbs: [ 0x25f767bd489fccc3c1676c47894ba0, 0xd13e09d7af1a26b78eaf3df8bc95bc, 0x0062c4 ] } , - BigNum { limbs: [ 0xe306b538773eb4b850d2a3eabf958f, 0x7355217fce074c0bb60b247d0d6499, 0x0033dc ] } , - BigNum { limbs: [ 0xda9d4dc7871d4a47af2d5b15406a72, 0x33fe081daf40e72e21fce524caa0b9, 0x004011 ] } , - BigNum { limbs: [ 0xd5081bd50bfe8c49ab063c9866233a, 0x8d40c2ef982f0174fd293ff31fa487, 0x00546f ] } , - BigNum { limbs: [ 0xe89be72af25d72b654f9c26799dcc7, 0x1a1266ade51931c4dadec9aeb860cb, 0x001f7e ] } , - BigNum { limbs: [ 0xd4dd6fb2dd1c1cec4a327b5d6681f3, 0x978bf9dde4f2a890bb7866fb5680a5, 0x00421a ] } , - BigNum { limbs: [ 0xe8c6934d213fe213b5cd83a2997e0e, 0x0fc72fbf98558aa91c8fa2a68184ad, 0x0031d3 ] } , - BigNum { limbs: [ 0x46e6e574bb0264650613937dec903a, 0xc4fdd5553c2b935c9c3ce1c6e9f013, 0x0004e9 ] } , - BigNum { limbs: [ 0x76bd1d8b43599a9af9ec6b82136fc7, 0xe2555448411c9fdd3bcb27daee1540, 0x006f03 ] } , - BigNum { limbs: [ 0x967c6423a55ee21c6f641f5ca11dfc, 0x2962daeacf09aac3e29a57a5f0d8ef, 0x0000f1 ] } , - BigNum { limbs: [ 0x27279edc58fd1ce3909bdfa35ee205, 0x7df04eb2ae3e8875f56db1fbe72c64, 0x0072fc ] } , - BigNum { limbs: [ 0xa48d852fc35b7c3556faf3eba03702, 0x7d9f742f652cb5537e7ab5699d8e10, 0x000a28 ] } , - BigNum { limbs: [ 0x19167dd03b0082caa9050b145fc8ff, 0x29b3b56e181b7de6598d54383a7743, 0x0069c5 ] } , - BigNum { limbs: [ 0x4ece6e79d374f7694d7d44aa42aaf2, 0x25830d537d2afc0117e00180409d8d, 0x005c98 ] } , - BigNum { limbs: [ 0x6ed594862ae70796b282ba55bd550f, 0x81d01c4a001d3738c02808219767c6, 0x001755 ] } , - BigNum { limbs: [ 0xb02312ec12eeec6e8f66fbf9b79cc1, 0xb52abbca218662fa4f9250a0361b14, 0x002c94 ] } , - BigNum { limbs: [ 0x0d80f013eb6d129170990306486340, 0xf2286dd35bc1d03f8875b901a1ea3f, 0x004758 ] } , - BigNum { limbs: [ 0x06b58844f30ad2b5006d3e54988604, 0x08e682580ff68a3ffa39d11f260543, 0x0051cb ] } , - BigNum { limbs: [ 0xb6ee7abb0b512c4aff92c0ab6779fd, 0x9e6ca7456d51a8f9ddce3882b20010, 0x002222 ] } , - BigNum { limbs: [ 0x07e8ac00ccd608596a75b117ddfba0, 0x1c78170c4872ed5d290fa2d313f10c, 0x0021a0 ] } , - BigNum { limbs: [ 0xb5bb56ff3185f6a6958a4de8220461, 0x8adb129134d545dcaef866cec41447, 0x00524d ] } , - BigNum { limbs: [ 0x309873a10967a45beb4be6840f3104, 0xdee51318c6e47085da8a68d064ea95, 0x005b93 ] } , - BigNum { limbs: [ 0x8d0b8f5ef4f45aa414b4187bf0cefd, 0xc86e1684b663c2b3fd7da0d1731abe, 0x001859 ] } , - BigNum { limbs: [ 0x6bccfd4eb9f5f9bac25779bd028d08, 0x4c188b40510d4553ed07dd76774c14, 0x00204e ] } , - BigNum { limbs: [ 0x51d705b1446605453da88542fd72f9, 0x5b3a9e5d2c3aede5eb002c2b60b93f, 0x00539f ] } , - BigNum { limbs: [ 0x9cde21536c74fac14aa34c68accbfa, 0xacabe5adc2561160383ee23ed3ba6d, 0x0017a9 ] } , - BigNum { limbs: [ 0x20c5e1ac91e7043eb55cb297533407, 0xfaa743efbaf221d99fc92763044ae6, 0x005c43 ] } , - BigNum { limbs: [ 0x0e05ddcf13a22fbd9b29beb5d8cc55, 0x7f61fc62e2a94bc3a5672aa39e4215, 0x000c58 ] } , - BigNum { limbs: [ 0xaf9e2530eab9cf4264d6404a2733ac, 0x27f12d3a9a9ee77632a0defe39c33e, 0x006795 ] } , - BigNum { limbs: [ 0x375b2142604d30f4d7712a9f7e571c, 0xcab5043cc4f48ad290c1186b578186, 0x005b3c ] } , - BigNum { limbs: [ 0x8648e1bd9e0ece0b288ed46081a8e5, 0xdc9e2560b853a8674746f1368083cd, 0x0018b0 ] } , - BigNum { limbs: [ 0x0d311f3cdb74b04dc26f175eaf57e2, 0x9930e7bfc55513a31b5c3e627cc654, 0x00000d ] } , - BigNum { limbs: [ 0xb072e3c322e74eb23d90e7a150a81f, 0x0e2241ddb7f31f96bcabcb3f5b3eff, 0x0073e0 ] } , - BigNum { limbs: [ 0x0a9c3e533dc34f63482f5e6ac7f5ee, 0x67bf56026f1264f3c71a7fc4285c1b, 0x001ef8 ] } , - BigNum { limbs: [ 0xb307c4acc098af9cb7d0a095380a13, 0x3f93d39b0e35ce4610ed89ddafa938, 0x0054f5 ] } , - BigNum { limbs: [ 0xf4363b42e95eb239d9acde14fb20e2, 0xa43cfc49003d2e82c238e01af647d6, 0x0034fe ] } , - BigNum { limbs: [ 0xc96dc7bd14fd4cc6265320eb04df1f, 0x03162d547d0b04b715cf2986e1bd7c, 0x003eef ] } , - BigNum { limbs: [ 0x537def6e0f30f92345e2553f15b27d, 0x399fdefa8ddc87f3c352e16c5500fb, 0x005ae6 ] } , - BigNum { limbs: [ 0x6a261391ef2b05dcba1da9c0ea4d84, 0x6db34aa2ef6bab4614b52835830458, 0x001907 ] } , - BigNum { limbs: [ 0x2f5049b1d0e187821f241ffda547a5, 0x8f3a988966e051b31982d33b68de07, 0x000c4e ] } , - BigNum { limbs: [ 0x8e53b94e2d7a777de0dbdf025ab85c, 0x181891141667e186be8536666f274c, 0x00679f ] } , - BigNum { limbs: [ 0x0f2fa24cca7e118a23f8184f67be53, 0x33bf9e5c6e898b6d5abad78fbbc311, 0x005a94 ] } , - BigNum { limbs: [ 0xae7460b333dded75dc07e6b09841ae, 0x73938b410ebea7cc7d4d32121c4242, 0x001959 ] } , - BigNum { limbs: [ 0x58b769fd60bae85dd0ba3600c21ea9, 0xcba700d5638da68d1e587fd67f193c, 0x00442a ] } , - BigNum { limbs: [ 0x64ec99029da116a22f45c8ff3de158, 0xdbac28c819ba8cacb9af89cb58ec17, 0x002fc2 ] } , - BigNum { limbs: [ 0x49a4ab02e82f769ee500f647f7d43b, 0xb7446f10658c06ede0897762f302e9, 0x003cc1 ] } , - BigNum { limbs: [ 0x73ff57fd162c88611aff08b8082bc6, 0xf00eba8d17bc2c4bf77e923ee5026a, 0x00372b ] } , - BigNum { limbs: [ 0x511800ae1cf2a898a5dc3fa6a50014, 0x687779a20ce0b1eeadb86ec0a240a1, 0x000f9d ] } , - BigNum { limbs: [ 0x6c8c0251e16956675a23bf595affed, 0x3edbaffb7067814b2a4f9ae135c4b2, 0x006450 ] } , - BigNum { limbs: [ 0xa29e201b732f6dad4c4a46f5409741, 0xb39452ab3a4709599704eba189b706, 0x0017f3 ] } , - BigNum { limbs: [ 0x1b05e2e48b2c9152b3b5b80abf68c0, 0xf3bed6f2430129e041031e004e4e4d, 0x005bf9 ] } , - BigNum { limbs: [ 0x8c90ec812879e1589db18082632470, 0x0d64d5746e14f108e29cdc4cf25ab0, 0x000bd7 ] } , - BigNum { limbs: [ 0x3113167ed5e21da7624e7e7d9cdb91, 0x99ee54290f334230f56b2d54e5aaa3, 0x006816 ] } , - BigNum { limbs: [ 0xe820d586118b4a5213a84b62a68904, 0x52bba176b0cf4add1ac0d9aa0cc9d8, 0x0046e3 ] } , - BigNum { limbs: [ 0xd5832d79ecd0b4adec57b39d5976fd, 0x54978826cc78e85cbd472ff7cb3b7a, 0x002d0a ] } , - BigNum { limbs: [ 0x285991341c908ed897ab600af26a9f, 0x4729896b3e93c2aeac62b2b1175d52, 0x006743 ] } , - BigNum { limbs: [ 0x954a71cbe1cb702768549ef50d9562, 0x6029a0323eb4708b2ba556f0c0a801, 0x000caa ] } , - BigNum { limbs: [ 0xee64f977b0bc8213b864a44525e8e4, 0x576fae62c2747e9d59a9016efb44e8, 0x001b4d ] } , - BigNum { limbs: [ 0xcf3f09884d9f7cec479b5abada171d, 0x4fe37b3abad3b49c7e5f0832dcc06a, 0x0058a0 ] } , - BigNum { limbs: [ 0xbb530e72b7bfc3855fca21c045e849, 0x249e0bfc4d51cc64d8b824c354c377, 0x0023d3 ] } , - BigNum { limbs: [ 0x0250f48d469c3b7aa035dd3fba17b8, 0x82b51da12ff666d4ff4fe4de8341dc, 0x00501a ] } , - BigNum { limbs: [ 0x82849fa29e943275fe4524a3df9914, 0x4787c92fb6003ec786b72669f55ce5, 0x00043f ] } , - BigNum { limbs: [ 0x3b1f635d5fc7cc8a01bada5c2066ed, 0x5fcb606dc747f4725150e337e2a86e, 0x006fae ] } , - BigNum { limbs: [ 0x6b6f86bf14aefcc2338ad83cdfa657, 0xb53f58ce81940a859ee7dfedce98f1, 0x005c9d ] } , - BigNum { limbs: [ 0x52347c40e9ad023dcc7526c32059aa, 0xf213d0cefbb428b4392029b4096c62, 0x00174f ] } , - BigNum { limbs: [ 0xdcf47128786d2189831ce42c6138b3, 0x498eb85e702360db58e449ef2a892a, 0x0003f6 ] } , - BigNum { limbs: [ 0xe0af91d785eedd767ce31ad39ec74e, 0x5dc4713f0d24d25e7f23bfb2ad7c28, 0x006ff7 ] } , - BigNum { limbs: [ 0xf89acd6211e66705b59d4d67e78267, 0x51a561f4691450c8d1e120be501af7, 0x003dde ] } , - BigNum { limbs: [ 0xc509359dec7597fa4a62b198187d9a, 0x55adc7a91433e2710626e8e387ea5b, 0x00360f ] } , - BigNum { limbs: [ 0x5c622bba78e96e62ad6e618cd63fc9, 0xe604e2122797b4fc5b308c0f64c4b1, 0x006f1b ] } , - BigNum { limbs: [ 0x6141d7458572909d52919d7329c038, 0xc14e478b55b07e3d7cd77d927340a2, 0x0004d1 ] } , - BigNum { limbs: [ 0x7e9861925f3c85728b638faa490c47, 0x8f85d4bb9c9568fd174cc19863a83f, 0x001590 ] } , - BigNum { limbs: [ 0x3f0ba16d9f1f798d749c6f55b6f3ba, 0x17cd54e1e0b2ca3cc0bb4809745d14, 0x005e5d ] } , - BigNum { limbs: [ 0x5cc1b32b2a1950ab93f25b2906d21a, 0x69a09d5aa6587cf3f6638899a0097e, 0x00671e ] } , - BigNum { limbs: [ 0x60e24fd4d442ae546c0da3d6f92de7, 0x3db28c42d6efb645e1a4810837fbd5, 0x000ccf ] } , - BigNum { limbs: [ 0xc8f5dd633013028cfda586295ea84b, 0x7cce960c7027f14b86bb7c12055e83, 0x003da0 ] } , - BigNum { limbs: [ 0xf4ae259cce48fc73025a78d6a157b6, 0x2a8493910d2041ee514c8d8fd2a6cf, 0x00364d ] } , - BigNum { limbs: [ 0x71d0d9c1e612bd99b980c752953536, 0x26c472d9a268f3d2329d2bd130b8e7, 0x005126 ] } , - BigNum { limbs: [ 0x4bd3293e18494166467f37ad6acacb, 0x808eb6c3dadf3f67a56addd0a74c6c, 0x0022c7 ] } , - BigNum { limbs: [ 0x735dfec23461fb447108a871678206, 0x593fb2d1e4796f84312c4cd1ae75c2, 0x000d82 ] } , - BigNum { limbs: [ 0x4a46043dc9fa03bb8ef7568e987dfb, 0x4e1376cb98cec3b5a6dbbcd0298f91, 0x00666b ] } , - BigNum { limbs: [ 0x29130b18a08ed66bb7b793ab94d67d, 0xd9b87eff068a96987520a4a84e5315, 0x006d86 ] } , - BigNum { limbs: [ 0x9490f7e75dcd289448486b546b2984, 0xcd9aaa9e76bd9ca162e764f989b23e, 0x000666 ] } , - BigNum { limbs: [ 0xefd6b0570bf109d58a5af42d010ff9, 0xb09858f43cef3ed6d55a6350721d79, 0x002f27 ] } , - BigNum { limbs: [ 0xcdcd52a8f26af52a75a50ad2fef008, 0xf6bad0a94058f46302ada65165e7d9, 0x0044c5 ] } , - BigNum { limbs: [ 0x977360b30175c52dbb2cf227158434, 0x2fe0ca12c0b44b70ca6708f3104867, 0x002318 ] } , - BigNum { limbs: [ 0x2630a24cfce639d244d30cd8ea7bcd, 0x77725f8abc93e7c90da100aec7bcec, 0x0050d5 ] } , - BigNum { limbs: [ 0x835c9ca817ed357b3354fe4df74d21, 0xa535477e1384fba967880c356fda5d, 0x006d52 ] } , - BigNum { limbs: [ 0x3a476657e66ec984ccab00b208b2e0, 0x021de21f69c33790707ffd6c682af6, 0x00069b ] } , - BigNum { limbs: [ 0x62f50c1fa01a6ebf12d1967f5228c6, 0xcccb86887bc1090ea1eafe6cd3d6f0, 0x0021c7 ] } , - BigNum { limbs: [ 0x5aaef6e05e419040ed2e6880add73b, 0xda87a31501872a2b361d0b35042e63, 0x005225 ] } , - BigNum { limbs: [ 0x783e184f0f10da4ad463040bfa6b96, 0x89d9a062ba8ff6e0797726f231b176, 0x004b12 ] } , - BigNum { limbs: [ 0x4565eab0ef4b24b52b9cfaf405946b, 0x1d79893ac2b83c595e90e2afa653dd, 0x0028db ] } , - BigNum { limbs: [ 0x7fcbf22df21291ca782131084255da, 0xb49750ddb83253aa8f5c166504001b, 0x002164 ] } , - BigNum { limbs: [ 0x3dd810d20c496d3587decdf7bdaa27, 0xf2bbd8bfc515df8f48abf33cd40538, 0x005288 ] } , - BigNum { limbs: [ 0xeea8827f4e9ec602b926b27753b127, 0xfbbd7f20c3ced966ea577b468e20b9, 0x004f0e ] } , - BigNum { limbs: [ 0xcefb8080afbd38fd46d94c88ac4eda, 0xab95aa7cb97959d2edb08e5b49e499, 0x0024de ] } , - BigNum { limbs: [ 0xa933db67c24c70716d094756b66d63, 0x1aa615b346f8ebad67ddc10c732ae8, 0x0004d2 ] } , - BigNum { limbs: [ 0x147027983c0f8e8e92f6b7a949929e, 0x8cad13ea364f478c702a489564da6b, 0x006f1b ] } , - BigNum { limbs: [ 0xf79311d4603ebe660cb35a9fa42972, 0xdb65a3240463f4216b3d286b5f60ee, 0x000b7b ] } , - BigNum { limbs: [ 0xc610f12b9e1d4099f34ca4605bd68f, 0xcbed867978e43f186ccae13678a464, 0x006871 ] } , - BigNum { limbs: [ 0xafc701df2ef92f02a3555fc5ee25f7, 0x471ca69edd738a2bb3e93d180d6310, 0x004751 ] } , - BigNum { limbs: [ 0x0ddd0120cf62cffd5caa9f3a11da0a, 0x603682fe9fd4a90e241ecc89caa243, 0x002c9c ] } , - BigNum { limbs: [ 0x83b10a7188a75be4d08b3a9bd95dc2, 0xc0e837c5ea1d5fd7929a9439bb000a, 0x0012c1 ] } , - BigNum { limbs: [ 0x39f2f88e75b4a31b2f74c46426a23f, 0xe66af1d7932ad362456d75681d0549, 0x00612b ] } , - BigNum { limbs: [ 0x40d6987940175aa503ad6c44bc5ff8, 0xb1e6bfb9702607fd3c97042f2373a4, 0x005a03 ] } , - BigNum { limbs: [ 0x7ccd6a86be44a45afc5292bb43a009, 0xf56c69e40d222b3c9b710572b491af, 0x0019e9 ] } , - BigNum { limbs: [ 0x9c55f6ffe871ea5ddbbc4e9b6615b8, 0x0415d906203d93cbbee466fd232897, 0x00005c ] } , - BigNum { limbs: [ 0x214e0c0015ea14a22443b06499ea49, 0xa33d50975d0a9f6e1923a2a4b4dcbc, 0x007391 ] } , - BigNum { limbs: [ 0xd30122c843684408d2342a11db2c67, 0xe20c7f6c968c5058ca294459777599, 0x002c14 ] } , - BigNum { limbs: [ 0xeaa2e037baf3baf72dcbd4ee24d39a, 0xc546aa30e6bbe2e10ddec548608fb9, 0x0047d8 ] } , - BigNum { limbs: [ 0xcf9853c5492f70dbe2b6ae6a65e380, 0x4b4b630bd746efffb256ee28750441, 0x000c94 ] } , - BigNum { limbs: [ 0xee0baf3ab52c8e241d4950959a1c81, 0x5c07c691a601433a25b11b79630111, 0x006759 ] } , - BigNum { limbs: [ 0xa240a2a069113c159a067743cae6c5, 0xeb7f91a0d0a7f1d0c3c19d09cf9306, 0x00585a ] } , - BigNum { limbs: [ 0x1b63605f954ac2ea65f987bc35193c, 0xbbd397fcaca0416914466c9808724d, 0x001b92 ] } , - BigNum { limbs: [ 0xc301f4f32087447899594a115b42ec, 0xa53a04150fa19233a27cfafd0e6ca8, 0x002e4c ] } , - BigNum { limbs: [ 0xfaa20e0cddd4ba8766a6b4eea4bd15, 0x021925886da6a106358b0ea4c998aa, 0x0045a1 ] } , - BigNum { limbs: [ 0xb12fefba555a4c968b0decdd5c8bff, 0xbdc683722a25b401681bc0a21dae2e, 0x001c50 ] } , - BigNum { limbs: [ 0x0c741345a901b26974f21222a37402, 0xe98ca62b53227f386fec48ffba5725, 0x00579c ] } , - BigNum { limbs: [ 0xefb15e20ddffa892cbd498b8ae4748, 0x2ca691fde3753d113105a6f6224cab, 0x0037a8 ] } , - BigNum { limbs: [ 0xcdf2a4df205c566d342b664751b8b9, 0x7aac979f99d2f628a70262abb5b8a7, 0x003c45 ] } , - BigNum { limbs: [ 0xde6c81def05707ddd48b53c0632b7f, 0xb79237478ed134868d055a78d4d127, 0x006482 ] } , - BigNum { limbs: [ 0xdf3781210e04f7222b74ab3f9cd482, 0xefc0f255ee76feb34b02af2903342b, 0x000f6a ] } , - BigNum { limbs: [ 0x905e68e892d76597534a53351aeb21, 0xc2b7e09e88cf54c6bcf61242906281, 0x001c1b ] } , - BigNum { limbs: [ 0x2d459a176b849968acb5abcae514e0, 0xe49b48fef478de731b11f75f47a2d2, 0x0057d1 ] } , - BigNum { limbs: [ 0x3059b2dacb997091e05fa34880ee67, 0xb79d4996ad5169ae844074894dab48, 0x002374 ] } , - BigNum { limbs: [ 0x8d4a502532c28e6e1fa05bb77f119a, 0xefb5e006cff6c98b53c795188a5a0b, 0x005078 ] } , - BigNum { limbs: [ 0x81a6284dfcdcdb79aca024dfa3bea6, 0x4cf83a91c028b44b584b898ea2487e, 0x0032af ] } , - BigNum { limbs: [ 0x3bfddab2017f2386535fda205c415b, 0x5a5aef0bbd1f7eee7fbc801335bcd5, 0x00413e ] } , - BigNum { limbs: [ 0xe255d810db7c7ba57428937e370687, 0x2e7f20b138794741d7afe1d1739af4, 0x004cf7 ] } , - BigNum { limbs: [ 0xdb4e2aef22df835a8bd76b81c8f97a, 0x78d408ec44ceebf8005827d0646a5e, 0x0026f6 ] } , - BigNum { limbs: [ 0x2a36904e65334d504798a56d84b81b, 0x4e6452d677424619a91495c55a387a, 0x001963 ] } , - BigNum { limbs: [ 0x936d72b19928b1afb86759927b47e6, 0x58eed6c70605ed202ef373dc7dccd9, 0x005a8a ] } , - BigNum { limbs: [ 0x892679c5bf83b3bedbfaac558c8d18, 0xe9ac49520d3dc9997bf03a451a6630, 0x003754 ] } , - BigNum { limbs: [ 0x347d893a3ed84b41240552aa7372e9, 0xbda6e04b700a69a05c17cf5cbd9f23, 0x003c98 ] } , - BigNum { limbs: [ 0xf254f66ae5ee531c14292bf0255fd5, 0x1effcfc73d5c86252263d4232859d9, 0x00526e ] } , - BigNum { limbs: [ 0xcb4f0c95186dabe3ebd6d30fdaa02c, 0x885359d63febad14b5a4357eafab79, 0x00217f ] } , - BigNum { limbs: [ 0xe17e99d8256761f9a5ad12c1f3853f, 0x36423bc3f0fae23f188a9a547b7d01, 0x006a6d ] } , - BigNum { limbs: [ 0xdc256927d8f49d065a52ec3e0c7ac2, 0x7110edd98c4d50fabf7d6f4d5c8851, 0x000980 ] } , - BigNum { limbs: [ 0x306689091abed321eed5418571ac33, 0x92d95a4ef11d7cddd189d0ec4d20a0, 0x000e3d ] } , - BigNum { limbs: [ 0x8d3d79f6e39d2bde112abd7a8e53ce, 0x1479cf4e8c2ab65c067e38b58ae4b3, 0x0065b0 ] } , - BigNum { limbs: [ 0x3d1d54f8f2982de43fdb36bf47bcc3, 0xba63f2b18adc6f2e9e0b45136d4f1c, 0x006efb ] } , - BigNum { limbs: [ 0x8086ae070bc3d11bc024c840b8433e, 0xecef36ebf26bc40b39fcc48e6ab637, 0x0004f1 ] } , - BigNum { limbs: [ 0x902f381368c0b10a873d6c9d82cbdd, 0x7b0015a2d0fe32712683cabe07344f, 0x0050ee ] } , - BigNum { limbs: [ 0x2d74caec959b4df578c292627d3424, 0x2c5313faac4a00c8b1843ee3d0d104, 0x0022ff ] } , - BigNum { limbs: [ 0xee61519e282a1877ab619f936cb9e1, 0xf2c40c622d5c14a79f3664b930f42d, 0x002e62 ] } , - BigNum { limbs: [ 0xcf42b161d631e688549e5f6c934620, 0xb48f1d3b4fec1e9238d1a4e8a71125, 0x00458a ] } , - BigNum { limbs: [ 0xc4dccaecd1fbf5e4f8b0b094a83cb3, 0xa8ec3ef066195ec440a4e3fd2ea14c, 0x000539 ] } , - BigNum { limbs: [ 0xf8c738132c60091b074f4e6b57c34e, 0xfe66eaad172ed475976325a4a96406, 0x006eb3 ] } , - BigNum { limbs: [ 0xea27b86283f69cf28211eacc0710ff, 0x0a61fb4687169578008f160eb02032, 0x0016a8 ] } , - BigNum { limbs: [ 0xd37c4a9d7a65620d7dee1433f8ef02, 0x9cf12e56f6319dc1d778f39327e520, 0x005d45 ] } , - BigNum { limbs: [ 0x53ec9a4a2ac078308183f53cba4097, 0x9444ba3d2df9d017f9d3a6beb55f1f, 0x004fb9 ] } , - BigNum { limbs: [ 0x69b768b5d39b86cf7e7c09c345bf6a, 0x130e6f604f4e6321de3462e322a634, 0x002434 ] } , - BigNum { limbs: [ 0xd20df595f39f2afdc2fcf153ad903c, 0x2ece77c82d2c0c03b16ef100307a6e, 0x000d33 ] } , - BigNum { limbs: [ 0xeb960d6a0abcd4023d030dac526fc5, 0x7884b1d5501c2736269918a1a78ae4, 0x0066ba ] } , - BigNum { limbs: [ 0x0ac6a330a41421f54ee691e0643777, 0x4f96d2ac9b3923c8d9e9259802f7d7, 0x002194 ] } , - BigNum { limbs: [ 0xb2dd5fcf5a47dd0ab1196d1f9bc88a, 0x57bc56f0e20f0f70fe1ee409d50d7c, 0x005259 ] } , - BigNum { limbs: [ 0x0e3d52802ba363eb2b24461b367723, 0x0dba5e260f57ac9e3e8ba3ed80a750, 0x006e68 ] } , - BigNum { limbs: [ 0xaf66b07fd2b89b14d4dbb8e4c988de, 0x9998cb776df0869b997c65b4575e03, 0x000585 ] } , - BigNum { limbs: [ 0xc786c39e8d76c168070ff63089758b, 0x4bf2fd4556aba449afd09e0b523b9a, 0x0047cd ] } , - BigNum { limbs: [ 0xf61d3f6170e53d97f8f008cf768a76, 0x5b602c58269c8ef028376b9685c9b8, 0x002c20 ] } , - BigNum { limbs: [ 0x5b740bab2ae626b3a288e56cbe6ba2, 0x2ec9ee1056d93f5bdf1610b8e02c02, 0x0061be ] } , - BigNum { limbs: [ 0x622ff754d375d84c5d77199341945f, 0x78893b8d266ef3ddf8f1f8e8f7d951, 0x00122f ] } , - BigNum { limbs: [ 0xb2b4506b58821b9782d98e09dd2095, 0x1180e4201fdd09faded963276eda9c, 0x001717 ] } , - BigNum { limbs: [ 0x0aefb294a5d9e3687d2670f622df6c, 0x95d2457d5d6b293ef92ea67a692ab7, 0x005cd6 ] } , - BigNum { limbs: [ 0x59d09e36445b2c8d76f7be4ffbdf0c, 0x7d907dfec3418f3e53c99a199f8fa5, 0x005deb ] } , - BigNum { limbs: [ 0x63d364c9ba00d272890840b00420f5, 0x29c2ab9eba06a3fb843e6f883875ae, 0x001602 ] } , - BigNum { limbs: [ 0x5abe13ab2a152efe228225b0b37c11, 0x78ed18c25162b9575235ed65ee9b01, 0x005681 ] } , - BigNum { limbs: [ 0x62e5ef54d446d001dd7dd94f4c83f0, 0x2e6610db2be579e285d21c3be96a52, 0x001d6c ] } , - BigNum { limbs: [ 0xd8c7e12991d3593a7478c980a80dcd, 0xb7a1c70a28635fea4420d98de0ddff, 0x00077f ] } , - BigNum { limbs: [ 0xe4dc21d66c88a5c58b87357f57f234, 0xefb1629354e4d34f93e73013f72753, 0x006c6d ] } , - BigNum { limbs: [ 0xbe7f08f42eb31a40103db7fbe67596, 0x76187ee6c6269fbef78669ab90d7d8, 0x005cb3 ] } , - BigNum { limbs: [ 0xff24fa0bcfa8e4bfefc24704198a6b, 0x313aaab6b721937ae0819ff6472d7a, 0x00173a ] } , - BigNum { limbs: [ 0x1234f45f84b51a2458759b86aa9b46, 0xbce4857298de5aa7436a8e41578bef, 0x001ade ] } , - BigNum { limbs: [ 0xab6f0ea079a6e4dba78a63795564bb, 0xea6ea42ae469d892949d7b60807964, 0x00590e ] } , - BigNum { limbs: [ 0xe8cb30c74f3496a5de0a8cb929b435, 0x7142c749358132565e4a3f276dddcf, 0x00263d ] } , - BigNum { limbs: [ 0xd4d8d238af27685a21f57246d64bcc, 0x3610625447c700e379bdca7a6a2783, 0x004db0 ] } , - BigNum { limbs: [ 0xc06812fcc08500e1b3a80d3dc99e5a, 0xde2bae7c6bb687328292c58f0914fc, 0x000a7a ] } , - BigNum { limbs: [ 0xfd3bf0033dd6fe1e4c57f1c23661a7, 0xc9277b211191ac0755754412cef056, 0x006972 ] } , - BigNum { limbs: [ 0xc8b17cc28f5b5914730aa651dc14c6, 0x0a2862c6b0aa7e00857f06f8f13093, 0x001dca ] } , - BigNum { limbs: [ 0xf4f2863d6f00a5eb8cf558ae23eb3b, 0x9d2ac6d6cc9db539528902a8e6d4bf, 0x005623 ] } , - BigNum { limbs: [ 0x1230bc0e387e9558bd52e8fdf0f3fa, 0x0e85c8adf888bf4821c2f7e1d5e5bb, 0x003755 ] } , - BigNum { limbs: [ 0xab7346f1c5dd69a742ad16020f0c07, 0x98cd60ef84bf73f1b64511c0021f98, 0x003c98 ] } , - BigNum { limbs: [ 0xe24941616914e7ad110ef96d2c8b89, 0x2f2b1ea09b86b3e9ced3336c9ff439, 0x001bbc ] } , - BigNum { limbs: [ 0xdb5ac19e95471752eef10592d37478, 0x78280afce1c17f500934d635381119, 0x005831 ] } , - BigNum { limbs: [ 0xb530ecbcf382bb730881f99cce2b05, 0x97b86edc1c02dfa201d28456bec63b, 0x00008a ] } , - BigNum { limbs: [ 0x087316430ad9438cf77e056331d4fc, 0x0f9abac161455397d635854b193f18, 0x007363 ] } , - BigNum { limbs: [ 0xa7275730b5b11515f4e3caddb042a0, 0xf0a1a79dc567185006d5ff757c19fe, 0x0056c8 ] } , - BigNum { limbs: [ 0x167cabcf48aae9ea0b1c34224fbd61, 0xb6b181ffb7e11ae9d1320a2c5beb55, 0x001d24 ] } , - BigNum { limbs: [ 0x61b6a2481f0bc6f89b6e4cc3f8a8d9, 0xcbcfbfa6e1cac504800176c799853b, 0x005048 ] } , - BigNum { limbs: [ 0x5bed60b7df5038076491b23c075728, 0xdb8369f69b7d6e35580692da3e8018, 0x0023a4 ] } , - BigNum { limbs: [ 0x65dd758be92292d21af29fac91cf26, 0xf5feecd35328814b1382cf67a22cc2, 0x00503f ] } , - BigNum { limbs: [ 0x57c68d7415396c2de50d5f536e30db, 0xb1543cca2a1fb1eec4853a3a35d891, 0x0023ad ] } , - BigNum { limbs: [ 0x1f5a7f98a0d41d2fb01e7994ae9e07, 0x266275af949d1efef1ea963a619c6d, 0x007145 ] } , - BigNum { limbs: [ 0x9e4983675d87e1d04fe1856b5161fa, 0x80f0b3ede8ab143ae61d73677668e6, 0x0002a8 ] } , - BigNum { limbs: [ 0x8d78320cf0b1dc0bf6682a1f324c98, 0xd95c3d037697cca953c9a7d7135772, 0x004e04 ] } , - BigNum { limbs: [ 0x302bd0f30daa22f40997d4e0cdb369, 0xcdf6ec9a06b06690843e61cac4ade1, 0x0025e8 ] } , - BigNum { limbs: [ 0xab429c42218eea9d1a8d0cdf05b3f5, 0xba420ebae0ca2485088dcd0eedfd0f, 0x004571 ] } , - BigNum { limbs: [ 0x126166bddccd1462e572f220fa4c0c, 0xed111ae29c7e0eb4cf7a3c92ea0844, 0x002e7b ] } , - BigNum { limbs: [ 0x8a07f9f945e0a8a970b4f3f6820606, 0xc78bdc342aafc2989b69d7031f283b, 0x003573 ] } , - BigNum { limbs: [ 0x339c0906b87b56568f4b0b097df9fb, 0xdfc74d69529870a13c9e329eb8dd18, 0x003e79 ] } , - BigNum { limbs: [ 0x17df56d813171c551a3d49cec26fff, 0xd46e142d366d1862d870c69ea23d3b, 0x0034df ] } , - BigNum { limbs: [ 0xa5c4ac27eb44e2aae5c2b5313d9002, 0xd2e5157046db1ad6ff97430335c818, 0x003f0d ] } , - BigNum { limbs: [ 0x71280f074d1440d341280e40f6ff69, 0x493dd2c18195b3d4f002ab14fce7d7, 0x003657 ] } , - BigNum { limbs: [ 0x4c7bf3f8b147be2cbed7f0bf090098, 0x5e1556dbfbb27f64e8055e8cdb1d7c, 0x003d96 ] } , - BigNum { limbs: [ 0x7d5dfa3a479c8e611337171217a856, 0x8a69cc191d70c9bffed16f4a90e9b9, 0x0023f6 ] } , - BigNum { limbs: [ 0x404608c5b6bf709eecc8e7ede857ab, 0x1ce95d845fd76979d9369a57471b9a, 0x004ff7 ] } , - BigNum { limbs: [ 0x2297d77e27dabdc088bdd905a55f21, 0xe5ba74ab8f7b7943135dbd04ce91ce, 0x000ec6 ] } , - BigNum { limbs: [ 0x9b0c2b81d681413f774225fa5aa0e0, 0xc198b4f1edccb9f6c4aa4c9d097385, 0x006526 ] } , - BigNum { limbs: [ 0x1780f66062d06efdbc5c8f8076051c, 0xff129029040c12f30d72abc32d1510, 0x002214 ] } , - BigNum { limbs: [ 0xa6230c9f9b8b900243a36f7f89fae5, 0xa8409974793c2046ca955ddeaaf043, 0x0051d8 ] } , - BigNum { limbs: [ 0xff74fc1738cfd4e640defe9c3d1988, 0x5f9a2cb148576539d6e7048fb70e71, 0x002be5 ] } , - BigNum { limbs: [ 0xbe2f06e8c58c2a19bf210063c2e679, 0x47b8fcec34f0ce000121051220f6e1, 0x004808 ] } , - BigNum { limbs: [ 0xfee0e9919be7eb242860ad1233361d, 0x51765816dd0870c5f64dfff44c0fe1, 0x005251 ] } , - BigNum { limbs: [ 0xbec3196e627413dbd79f51edccc9e4, 0x55dcd186a03fc273e1ba09ad8bf571, 0x00219c ] } , - BigNum { limbs: [ 0x1d417ac2d72f8681deb3aea33c8449, 0xf5bec7ef45efbf9de97916504aabd2, 0x002801 ] } , - BigNum { limbs: [ 0xa062883d272c787e214c505cc37bb8, 0xb19461ae3758739bee8ef3518d5981, 0x004beb ] } , - BigNum { limbs: [ 0xffd9cd43748cd07e797c34f167e1ae, 0xfb8721c1baed95f9167176d30171d8, 0x0032d0 ] } , - BigNum { limbs: [ 0xbdca35bc89cf2e818683ca0e981e53, 0xabcc07dbc25a9d40c19692ced6937a, 0x00411c ] } , - BigNum { limbs: [ 0x46efcbd5cbd25bcdea20340e865edc, 0x5cf7ea7460e71bb5ebece92e50178a, 0x003bbb ] } , - BigNum { limbs: [ 0x76b4372a3289a33215dfcaf179a125, 0x4a5b3f291c611783ec1b207387edc9, 0x003832 ] } , - BigNum { limbs: [ 0x1acd98fa4e19e15adb37a5ea82fe43, 0x64500bde4ae6b522fed010b950c90d, 0x0039b7 ] } , - BigNum { limbs: [ 0xa2d66a05b0421da524c859157d01be, 0x43031dbf32617e16d937f8e8873c46, 0x003a36 ] } , - BigNum { limbs: [ 0xf97bf1fe6c26fcec89f106fb90245c, 0xcc7b13e9ecf1b6504cd2a95cc231ba, 0x00707c ] } , - BigNum { limbs: [ 0xc428110192350213760ef8046fdba5, 0xdad815b390567ce98b35604515d398, 0x000370 ] } , - BigNum { limbs: [ 0xb40031a396daed1d58d36d2887248a, 0xefd47eb0b490fb4b5fe309008ffb30, 0x0025d6 ] } , - BigNum { limbs: [ 0x09a3d15c678111e2a72c91d778db77, 0xb77eaaecc8b737ee782500a1480a23, 0x004e16 ] } , - BigNum { limbs: [ 0xb896192a36d9e94f4e49f4db97e1d9, 0x2ffe51ef6ac663a47e046c9d5d166c, 0x003fd0 ] } , - BigNum { limbs: [ 0x050de9d5c78215b0b1b60a24681e28, 0x7754d7ae1281cf955a039d047aeee7, 0x00341d ] } , - BigNum { limbs: [ 0x3c79d13bd65d4193ca2d1bc7fd9263, 0x66ae43c4c3c56831575a9d83a15eb2, 0x003933 ] } , - BigNum { limbs: [ 0x812a31c427febd6c35d2e338026d9e, 0x40a4e5d8b982cb0880ad6c1e36a6a1, 0x003aba ] } , - BigNum { limbs: [ 0x8534756de28ddf9c097282f8518c00, 0x2e85cd535086081a5545bd583161c8, 0x005fc4 ] } , - BigNum { limbs: [ 0x386f8d921bce1f63f68d7c07ae7401, 0x78cd5c4a2cc22b1f82c24c49a6a38b, 0x001429 ] } , - BigNum { limbs: [ 0x7ad52f8a5c627be96a0110191444de, 0xd5d6f7db3f4f0f669bb5886c3af4cb, 0x000753 ] } , - BigNum { limbs: [ 0x42ced375a1f9831695feeee6ebbb23, 0xd17c31c23df923d33c5281359d1088, 0x006c99 ] } , - BigNum { limbs: [ 0xfcbf4084f4f9b2c30b3c3647dd9723, 0x82a49d6b5c74782c1cd532b1b61313, 0x002b73 ] } , - BigNum { limbs: [ 0xc0e4c27b09624c3cf4c3c8b82268de, 0x24ae8c3220d3bb0dbb32d6f021f23f, 0x00487a ] } , - BigNum { limbs: [ 0x5167b6e1c6e7094e396cf2c8808fc1, 0x2b3fd45a67f93cbcdfb94554c90356, 0x00403c ] } , - BigNum { limbs: [ 0x6c3c4c1e3774f5b1c6930c377f7040, 0x7c135543154ef67cf84ec44d0f01fd, 0x0033b1 ] } , - BigNum { limbs: [ 0xaad9d1e07e8ad1c6704a19b8498e4c, 0x9a8e6f552967166e1d63d16fa4191b, 0x002cfc ] } , - BigNum { limbs: [ 0x12ca311f7fd12d398fb5e547b671b5, 0x0cc4ba4853e11ccbbaa4383233ec38, 0x0046f1 ] } , - BigNum { limbs: [ 0xa6f095c3e393ea78bad60fe8295af1, 0x51570dd9c749cd846dedf76d82d68e, 0x0018f1 ] } , - BigNum { limbs: [ 0x16b36d3c1ac814874529ef17d6a510, 0x55fc1bc3b5fe65b56a1a1234552ec5, 0x005afc ] } , - BigNum { limbs: [ 0xd4799a1030031151641d355ed74859, 0xa82ef937f7a8184e37dc8531cf3300, 0x005c33 ] } , - BigNum { limbs: [ 0xe92a68efce58edae9be2c9a128b7a8, 0xff24306585a01aeba02b847008d252, 0x0017b9 ] } , - BigNum { limbs: [ 0x9183dce28ef8014fe8d6d7c4afe0a9, 0xcfdf2f836149018debf684e68567f3, 0x002b70 ] } , - BigNum { limbs: [ 0x2c20261d6f63fdb01729273b501f58, 0xd773fa1a1bff31abec1184bb529d60, 0x00487c ] } , - BigNum { limbs: [ 0x78921f813dbb183c71a7402ec2eed5, 0x4ad5a9709b098e4630618320a9220e, 0x0034ff ] } , - BigNum { limbs: [ 0x4511e37ec0a0e6c38e58bed13d112c, 0x5c7d802ce23ea4f3a7a686812ee345, 0x003eee ] } , - BigNum { limbs: [ 0xb104627af5b12aeb15f8b2e0dc45d1, 0xafb9f051dae05d758652dede4d953e, 0x005765 ] } , - BigNum { limbs: [ 0x0c9fa08508aad414ea074c1f23ba30, 0xf799394ba267d5c451b52ac38a7015, 0x001c87 ] } , - BigNum { limbs: [ 0x076c47c5c2c17969253d44de1e4d00, 0x18e25537e45a543a827b37d2ebc611, 0x000970 ] } , - BigNum { limbs: [ 0xb637bb3a3b9a8596dac2ba21e1b301, 0x8e70d46598eddeff558cd1ceec3f42, 0x006a7d ] } , - BigNum { limbs: [ 0x1a77c155967b404f527ffbb148e55b, 0x124a85c2aa3222dad195f08db8c103, 0x004820 ] } , - BigNum { limbs: [ 0xa32c41aa67e0beb0ad80034eb71aa6, 0x9508a3dad316105f067219141f4450, 0x002bcd ] } , - BigNum { limbs: [ 0x526ac238e5a0c5a70265e120dec41a, 0xb91dbc2c171b610f40689e8bdb7e85, 0x0054a2 ] } , - BigNum { limbs: [ 0x6b3940c718bb3958fd9a1ddf213be7, 0xee356d71662cd22a979f6b15fc86ce, 0x001f4a ] } , - BigNum { limbs: [ 0xbc3f5982e5d13e52ac9853b184617d, 0xcfe5971c4e6c2818670f0f6e1efe30, 0x005db5 ] } , - BigNum { limbs: [ 0x0164a97d188ac0ad5367ab4e7b9e84, 0xd76d92812edc0b2170f8fa33b90723, 0x001637 ] } , - BigNum { limbs: [ 0xea190ee72171b5bf96906be310d83a, 0xb49f8ab5bb56e6d4fddaed19d920a7, 0x005edc ] } , - BigNum { limbs: [ 0xd38af418dcea4940696f931cef27c7, 0xf2b39ee7c1f14c64da2d1c87fee4ab, 0x001510 ] } , - BigNum { limbs: [ 0x1ca7fc06a7652dce89d9caeca2788e, 0x41484cc523db20e2ed344c1f0d27dc, 0x006fb2 ] } , - BigNum { limbs: [ 0xa0fc06f956f6d131762634135d8773, 0x660adcd8596d1256ead3bd82cadd77, 0x00043b ] } , - BigNum { limbs: [ 0x24ee69f08086a145b0c011142f943c, 0xbc8be1039af2e00b5ea72b0ce3cc51, 0x002f6b ] } , - BigNum { limbs: [ 0x98b5990f7dd55dba4f3fedebd06bc5, 0xeac74899e255532e7960de94f43902, 0x004481 ] } , - BigNum { limbs: [ 0x4e43d7d4c8cc800c599e831e62b8d6, 0xfe6e13f0c70ec64b7d75ada9bc94dc, 0x0020c6 ] } , - BigNum { limbs: [ 0x6f602b2b358f7ef3a6617be19d472b, 0xa8e515acb6396cee5a925bf81b7077, 0x005326 ] } , - BigNum { limbs: [ 0xa4cf29a5781cc8b8f0b1427b5e42f8, 0x14f60f00b7cfd56abdc480f96f516e, 0x001acf ] } , - BigNum { limbs: [ 0x18d4d95a863f36470f4ebc84a1bd09, 0x925d1a9cc5785dcf1a4388a868b3e5, 0x00591e ] } , - BigNum { limbs: [ 0x860ca3e0b0c8cd0d2607b31e34bf62, 0x39b5bc3017ffbab6734e04debb058b, 0x0046b3 ] } , - BigNum { limbs: [ 0x37975f1f4d9331f2d9f84be1cb409f, 0x6d9d6d6d6548788364ba04c31cffc8, 0x002d3a ] } , - BigNum { limbs: [ 0xaa0aa405432df6ef7fba47f56fb3d8, 0x3e710294f33c1a7756ed868ab15142, 0x005dc7 ] } , - BigNum { limbs: [ 0x13995efabb2e08108045b70a904c29, 0x68e227088a0c18c2811a831726b411, 0x001626 ] } , - BigNum { limbs: [ 0xe49f3bc59065cd5a9925b13969600f, 0x8418db7c8f6c07faa3df067d96a234, 0x0062b2 ] } , - BigNum { limbs: [ 0xd904c73a6df631a566da4dc6969ff2, 0x233a4e20eddc2b3f3429032441631e, 0x00113b ] } , - BigNum { limbs: [ 0x08f69bb5a34d7a4d4166e5018414f8, 0x0bd90a98a833477c49bd9f429e3221, 0x006bd5 ] } , - BigNum { limbs: [ 0xb4ad674a5b0e84b2be9919fe7beb09, 0x9b7a1f04d514ebbd8e4a6a5f39d332, 0x000818 ] } , - BigNum { limbs: [ 0x858e55d4b05011c65654cc6e143494, 0x5f38c3c0928bc650a7b8aabc2c90b0, 0x00637a ] } , - BigNum { limbs: [ 0x3815ad2b4e0bed39a9ab3291ebcb6d, 0x481a65dceabc6ce9304f5ee5ab74a3, 0x001073 ] } , - BigNum { limbs: [ 0x56451a0f2e97031e3ac422a3bebfce, 0x375f4d14b97ee1c87bd168b412c9dc, 0x0007ce ] } , - BigNum { limbs: [ 0x675ee8f0cfc4fbe1c53bdc5c414033, 0x6ff3dc88c3c951715c36a0edc53b77, 0x006c1f ] } , - BigNum { limbs: [ 0x203872ef16ad220269e1371ad9a322, 0x6fbb53c9f81b01ac67d632538bc740, 0x00731a ] } , - BigNum { limbs: [ 0x9d6b9010e7aedcfd961ec7e5265cdf, 0x3797d5d3852d318d7031d74e4c3e13, 0x0000d3 ] } , - BigNum { limbs: [ 0x46ca8e879475036676bb13db1cfdd7, 0xb14784ed9323b84e3224c2e800f6bf, 0x0044df ] } , - BigNum { limbs: [ 0x76d9747869e6fb998944eb24e3022a, 0xf60ba4afea247aeba5e346b9d70e94, 0x002f0d ] } , - BigNum { limbs: [ 0x3f2f1cdac0bdd61490fae57a7c33a7, 0xe357b3f96e6d94c1b71405e3140b1f, 0x001189 ] } , - BigNum { limbs: [ 0x7e74e6253d9e28eb6f05198583cc5a, 0xc3fb75a40eda9e7820f403bec3fa34, 0x006263 ] } , - BigNum { limbs: [ 0x55ed36483309549cee4813c5113cae, 0x623b190ab7ecc0e1424947746063b4, 0x006bbf ] } , - BigNum { limbs: [ 0x67b6ccb7cb52aa6311b7eb3aeec353, 0x45181092c55b725895bec22d77a19f, 0x00082e ] } , - BigNum { limbs: [ 0x1b0f77f0d55ea106e039f68e5ab3dd, 0x860235a7434baffb53bd6eab1fa801, 0x003664 ] } , - BigNum { limbs: [ 0xa2948b0f28fd5df91fc60871a54c24, 0x2150f3f639fc833e844a9af6b85d52, 0x003d89 ] } , - BigNum { limbs: [ 0xe78026be2d5e7457717af258d76b50, 0xdacf4627bc5be4665ae77a4160334d, 0x000eeb ] } , - BigNum { limbs: [ 0xd623dc41d0fd8aa88e850ca72894b1, 0xcc83e375c0ec4ed37d208f6077d205, 0x006501 ] } , - BigNum { limbs: [ 0x67bb8c3c1db6ea8505ca50e03d6419, 0x9cbef4cf3ede358ff43badf4f95a4a, 0x004340 ] } , - BigNum { limbs: [ 0x55e876c3e0a5147afa35ae1fc29be8, 0x0a9434ce3e69fda9e3cc5bacdeab09, 0x0030ad ] } , - BigNum { limbs: [ 0x5f6b1fce35a767a42cef3b59936aca, 0x330034910c6106697712ede6bda93f, 0x006c0d ] } , - BigNum { limbs: [ 0x5e38e331c8b4975bd310c3a66c9537, 0x7452f50c70e72cd060f51bbb1a5c14, 0x0007e0 ] } , - BigNum { limbs: [ 0x3a056f49df88978ecfab339e06cb5b, 0x2071f73b29bb76665151b4cb89bba9, 0x000d56 ] } , - BigNum { limbs: [ 0x839e93b61ed367713054cb61f934a6, 0x86e13262538cbcd386b654d64e49aa, 0x006697 ] } , - BigNum { limbs: [ 0xef2c4c46e3ffffcb692d0528f44414, 0xacccb9468e3c4282dc4972a3cca5fb, 0x0005ca ] } , - BigNum { limbs: [ 0xce77b6b91a5bff3496d2f9d70bbbed, 0xfa867056ef0bf0b6fbbe96fe0b5f57, 0x006e22 ] } , - BigNum { limbs: [ 0x881eea9a94f19f18bb67ac498bb306, 0xdd3a18e8bc717109bb87546c7be526, 0x001055 ] } , - BigNum { limbs: [ 0x35851865696a5fe7449852b6744cfb, 0xca1910b4c0d6c2301c80b5355c202d, 0x006397 ] } , - BigNum { limbs: [ 0xa7f2c626b2e4def707a2d2027625b3, 0x9b9923940fc900b3afc1442ae9abaf, 0x006fa1 ] } , - BigNum { limbs: [ 0x15b13cd94b772008f85d2cfd89da4e, 0x0bba06096d7f32862846c576ee59a4, 0x00044c ] } , - BigNum { limbs: [ 0x10558d9aa509ab0e5ae9a70d5d061a, 0xc356d0de01d48ff79d5e980fce6409, 0x004e6f ] } , - BigNum { limbs: [ 0xad4e7565595253f1a51657f2a2f9e7, 0xe3fc58bf7b73a3423aa9719209a14a, 0x00257d ] } , - BigNum { limbs: [ 0x23c188df7ce263b135c7a97914d377, 0x39349820411f5fc93aca2333a367b1, 0x0031d6 ] } , - BigNum { limbs: [ 0x99e27a2081799b4eca385586eb2c8a, 0x6e1e917d3c28d3709d3de66e349da2, 0x004217 ] } , - BigNum { limbs: [ 0x6246eaafa91200119436ea05caedb2, 0xfe0d05b931869a29e30166d46cc7b6, 0x004b5e ] } , - BigNum { limbs: [ 0x5b5d18505549feee6bc914fa35124f, 0xa94623e44bc1990ff506a2cd6b3d9d, 0x00288e ] } , - BigNum { limbs: [ 0x9d99175038716628f47d40e82d15bd, 0x093fd8cc8c196a702485b38d5808f4, 0x00713d ] } , - BigNum { limbs: [ 0x200aebafc5ea98d70b82be17d2ea44, 0x9e1350d0f12ec8c9b38256147ffc5f, 0x0002b0 ] } , - BigNum { limbs: [ 0xeb780345d8d48e768d55926c7e753e, 0x99ddf792e5371ad4958bc9e7000449, 0x005664 ] } , - BigNum { limbs: [ 0xd22bffba2587708972aa6c93818ac3, 0x0d75320a98111865427c3fbad80109, 0x001d89 ] } , - BigNum { limbs: [ 0x252bfa132081f9d0568f04b84b2a00, 0x3359a03f722a55433db658105171ca, 0x00726e ] } , - BigNum { limbs: [ 0x987808ecddda052fa970fa47b4d601, 0x73f9895e0b1dddf69a51b191869389, 0x00017f ] } , - BigNum { limbs: [ 0x4430904a87ce25144f897786ee3fb6, 0x09193ddd55abe3de5d7d83eacc3d55, 0x002f75 ] } , - BigNum { limbs: [ 0x797372b5768dd9ebb076877911c04b, 0x9e39ebc0279c4f5b7a8a85b70bc7fe, 0x004478 ] } , - BigNum { limbs: [ 0xe4fb2dcb4d9f1a4a9ebdd727b87a2e, 0x2b3e89f62de6e60238fe7599d7ec10, 0x0062ab ] } , - BigNum { limbs: [ 0xd8a8d534b0bce4b5614227d84785d3, 0x7c149fa74f614d379f099408001942, 0x001142 ] } , - BigNum { limbs: [ 0xd620293ae0ef1d9da284bedb2f43d0, 0x180a5114016f798c9348185b0382e2, 0x003b69 ] } , - BigNum { limbs: [ 0xe783d9c51d6ce1625d7b4024d0bc31, 0x8f48d8897bd8b9ad44bff146d48270, 0x003884 ] } , - BigNum { limbs: [ 0x6e4a6abf88d933719ae8985de5540a, 0x852ff0a7b43ffbb7a8b0d7b33af34c, 0x002eae ] } , - BigNum { limbs: [ 0x4f5998407582cb8e651766a21aabf7, 0x222338f5c90837822f5731ee9d1207, 0x00453f ] } , - BigNum { limbs: [ 0xcc886ec1f3ffe0d1b7b97da44a349a, 0x156b1645203e0188cbbb016cf2efe2, 0x006934 ] } , - BigNum { limbs: [ 0xf11b943e0a5c1e2e4846815bb5cb67, 0x91e813585d0a31b10c4d0834e51570, 0x000ab9 ] } , - BigNum { limbs: [ 0xa3311e69461863c932b24d441a3598, 0x4a6827f60d795efd1735c252faeb40, 0x0061aa ] } , - BigNum { limbs: [ 0x1a72e496b8439b36cd4db1bbe5ca69, 0x5ceb01a76fced43cc0d2474edd1a13, 0x001243 ] } , - BigNum { limbs: [ 0x82345ac27d7e4868b67310ef09a9cb, 0x92f702edb6d0f2507c5f193db6176b, 0x00110f ] } , - BigNum { limbs: [ 0x3b6fa83d80ddb697498cee10f65636, 0x145c26afc67740e95ba8f06421ede8, 0x0062de ] } , - BigNum { limbs: [ 0xdb0f7c98858057112f96e2b0f9b3dd, 0x58e0c574d4f3d63057d2ac2decc1c8, 0x001a68 ] } , - BigNum { limbs: [ 0xe294866778dba7eed0691c4f064c24, 0x4e726428a8545d0980355d73eb438a, 0x005985 ] } , - BigNum { limbs: [ 0x8c7c2afe21b8d4c669d39e6258ef1e, 0x02a17e71df56bfb88204fb95d7509b, 0x001696 ] } , - BigNum { limbs: [ 0x3127d801dca32a39962c609da710e3, 0xa4b1ab2b9df1738156030e0c00b4b8, 0x005d57 ] } , - BigNum { limbs: [ 0x4b6eef836791e9f54098590590f97a, 0x18a877b7ab1d7cfa546e4bac4497c4, 0x002a75 ] } , - BigNum { limbs: [ 0x7235137c96ca150abf67a5fa6f0687, 0x8eaab1e5d22ab63f8399bdf5936d8f, 0x004978 ] } , - BigNum { limbs: [ 0xda57a2483dd819a0521ef18aeb112b, 0x741f3f8e164dd0c49746d9253f440e, 0x005928 ] } , - BigNum { limbs: [ 0xe34c60b7c083e55fade10d7514eed6, 0x3333ea0f66fa627540c1307c98c144, 0x001ac5 ] } , - BigNum { limbs: [ 0x6d9efa01c14d946eb5dc3197a8ef92, 0x93e8f9bde758fed2674d81d6135835, 0x001439 ] } , - BigNum { limbs: [ 0x500508fe3d0e6a914a23cd6857106f, 0x136a2fdf95ef346770ba87cbc4ad1e, 0x005fb4 ] } , - BigNum { limbs: [ 0x6b343de16bed11f7715c2b59ea6e61, 0x4bd44428726e555938660d5f1259af, 0x003451 ] } , - BigNum { limbs: [ 0x526fc51e926eed088ea3d3a61591a0, 0x5b7ee5750ad9dde09fa1fc42c5aba4, 0x003f9c ] } , - BigNum { limbs: [ 0xd7adea656c88ebe1c73198fced09ec, 0x858f3343b72247e4ce45ae3b842b6b, 0x0004ba ] } , - BigNum { limbs: [ 0xe5f6189a91d3131e38ce660312f615, 0x21c3f659c625eb5509c25b6653d9e7, 0x006f33 ] } , - BigNum { limbs: [ 0x4396812497c58b3d6e0eb2267582d7, 0x19f1fc6fe5a19f799a4ac31e134aad, 0x00342f ] } , - BigNum { limbs: [ 0x7a0d81db669673c291f14cd98a7d2a, 0x8d612d2d97a693c03dbd4683c4baa6, 0x003fbe ] } , - BigNum { limbs: [ 0x330ac33976577896e7cd165be118af, 0x513188184d1e47fe7c0925272dc385, 0x006c00 ] } , - BigNum { limbs: [ 0x8a993fc6880486691832e8a41ee752, 0x5621a1853029eb3b5bfee47aaa41ce, 0x0007ed ] } , - BigNum { limbs: [ 0xb422e761321f21d09645fe30b61c23, 0x9970ea51b0e6b23e7b35ed24a1e5c7, 0x00395c ] } , - BigNum { limbs: [ 0x09811b9ecc3cdd2f69ba00cf49e3de, 0x0de23f4bcc6180fb5cd21c7d361f8c, 0x003a91 ] } , - BigNum { limbs: [ 0x0b160cf2d6797490f41560b245b067, 0xffc2ee6b0313ed07699a98a0e39141, 0x004a5a ] } , - BigNum { limbs: [ 0xb28df60d27e28a6f0bea9e4dba4f9a, 0xa7903b327a3446326e6d7100f47412, 0x002992 ] } , - BigNum { limbs: [ 0xaba6e2d7d140d91f7cc4829e8423a4, 0xb6b450e6f2baafc992e5de759fc13a, 0x002110 ] } , - BigNum { limbs: [ 0x11fd20282d1b25e0833b7c617bdc5d, 0xf09ed8b68a8d837045222b2c384419, 0x0052dc ] } , - BigNum { limbs: [ 0xa01148af98688c508dd3077d60548f, 0x935af62d62298775e60c31411c7d36, 0x0013e9 ] } , - BigNum { limbs: [ 0x1d92ba5065f372af722cf7829fab72, 0x13f833701b1eabc3f1fbd860bb881d, 0x006004 ] } , - BigNum { limbs: [ 0xc7276b0e0087cc7eb1318aca4306de, 0x43d57eb232ec56fb40f6e0bf66906e, 0x004451 ] } , - BigNum { limbs: [ 0xf67c97f1fdd432814ece7435bcf923, 0x637daaeb4a5bdc3e971128e27174e4, 0x002f9c ] } , - BigNum { limbs: [ 0xeba7f573b3b0edb038298303139ae1, 0xe4ce8328676baf6a10b22f3eda88c1, 0x001629 ] } , - BigNum { limbs: [ 0xd1fc0d8c4aab114fc7d67bfcec6520, 0xc284a67515dc83cfc755da62fd7c91, 0x005dc3 ] } , - BigNum { limbs: [ 0x9bcab0951254eec1d795605c9454e1, 0x4f1ed5f3daea6d94451f7d62139849, 0x0030d1 ] } , - BigNum { limbs: [ 0x21d9526aec07103e286a9ea36bab20, 0x583453a9a25dc5a592e88c3fc46d0a, 0x00431c ] } , - BigNum { limbs: [ 0x015a142b676f214fde7e2d7a559fd3, 0x6fb6de21ab8a003f81fccd9c6817e5, 0x00083d ] } , - BigNum { limbs: [ 0xbc49eed496ecddb02181d185aa602e, 0x379c4b7bd1be32fa560b3c056fed6e, 0x006bb0 ] } , - BigNum { limbs: [ 0xb05750b0757d9b1b525693c4fdf276, 0xa020a192f58550d8f5fae982ba3ffb, 0x006226 ] } , - BigNum { limbs: [ 0x0d4cb24f88de63e4ada96b3b020d8b, 0x0732880a87c2e260e20d201f1dc558, 0x0011c7 ] } , - BigNum { limbs: [ 0x9589c6d02e429124ca49ae2654cfed, 0x93b1dca7fd1456679d9af60081e614, 0x000055 ] } , - BigNum { limbs: [ 0x281a3c2fd0196ddb35b650d9ab3014, 0x13a14cf58033dcd23a6d13a1561f3f, 0x007398 ] } , - BigNum { limbs: [ 0xe5f85ddf3c1b5cb31a1acd9d26ce3c, 0x0c64c68dd203f81ab9316428dff763, 0x003505 ] } , - BigNum { limbs: [ 0xd7aba520c240a24ce5e53162d931c5, 0x9aee630fab443b1f1ed6a578f80def, 0x003ee8 ] } , - BigNum { limbs: [ 0xaa559c25a323066982caeaed4863fd, 0x51ff3b932efd9f1ca45610bea15005, 0x000405 ] } , - BigNum { limbs: [ 0x134e66da5b38f8967d351412b79c04, 0x5553ee0a4e4a941d33b1f8e336b54e, 0x006fe8 ] } , - BigNum { limbs: [ 0x7c55cac91b46847d77398fb0253409, 0x54aa601bd20e14bc524e83f5dfdf0a, 0x0018aa ] } , - BigNum { limbs: [ 0x414e3836e3157a8288c66f4fdacbf8, 0x52a8c981ab3a1e7d85b985abf82649, 0x005b43 ] } , - BigNum { limbs: [ 0x72ebfd53689d24efb99d766acb5fd5, 0x53b4e3288a76fc3f7b8a3bd7c507c1, 0x0018af ] } , - BigNum { limbs: [ 0x4ab805ac95beda104662889534a02c, 0x539e4674f2d136fa5c7dcdca12fd92, 0x005b3e ] } , - BigNum { limbs: [ 0xfd1bdd35d3c9d1c6cbff4af2be3916, 0x1e437926a687585966d8d7855d16d5, 0x00274d ] } , - BigNum { limbs: [ 0xc08825ca2a922d393400b40d41c6eb, 0x890fb076d6c0dae0712f321c7aee7d, 0x004ca0 ] } , - BigNum { limbs: [ 0xb77311aa5733c02e36541e5c44ddc4, 0xf70a9c158f6fb5fca7743791401f4b, 0x00649c ] } , - BigNum { limbs: [ 0x0630f155a7283ed1c9abe0a3bb223d, 0xb0488d87edd87d3d3093d21097e608, 0x000f50 ] } , - BigNum { limbs: [ 0xbec17bd32d28f964b877880b7bd162, 0x1c8e1645a812d561eb297d716c3f6e, 0x004732 ] } , - BigNum { limbs: [ 0xfee2872cd133059b478876f4842e9f, 0x8ac51357d5355dd7ecde8c306bc5e4, 0x002cbb ] } , - BigNum { limbs: [ 0x4b9abc640df6a92392180523c30faa, 0xccb911dcb1ae544edf064df058b8a6, 0x000b8b ] } , - BigNum { limbs: [ 0x7209469bf06555dc6de7f9dc3cf057, 0xda9a17c0cb99deeaf901bbb17f4cad, 0x006861 ] } , - BigNum { limbs: [ 0x43fba07004bb352fb97ddcbb685b7e, 0xfb15e4fc1addd4df8ea0dd402af30b, 0x0016aa ] } , - BigNum { limbs: [ 0x79a8628ff9a0c9d04682224497a483, 0xac3d44a1626a5e5a49672c61ad1248, 0x005d42 ] } , - BigNum { limbs: [ 0x56e2bbfada26463ad32c3398b4cb0a, 0xf0957745c50282acff8e98d64e22c9, 0x003095 ] } , - BigNum { limbs: [ 0x66c147052435b8c52cd3cb674b34f7, 0xb6bdb257b845b08cd87970cb89e28a, 0x004357 ] } , - BigNum { limbs: [ 0x31dfefa8056f0bb4ad409f0a9afc82, 0x9150327c8a8167c605fb4aa50a4642, 0x002e81 ] } , - BigNum { limbs: [ 0x8bc41357f8ecf34b52bf5ff565037f, 0x1602f720f2c6cb73d20cbefccdbf11, 0x00456c ] } , - BigNum { limbs: [ 0xe90e9f0a64c08bc2c919362a37a2f5, 0x90bdf40839f0ea8ca59fb662da9e1f, 0x003872 ] } , - BigNum { limbs: [ 0xd49563f5999b733d36e6c8d5c85d0c, 0x16953595435748ad3268533efd6733, 0x003b7b ] } , - BigNum { limbs: [ 0x071011023ca1f11813365f2e4dd33f, 0x63d9876c3af1054103abfd750fa7e3, 0x0073d8 ] } , - BigNum { limbs: [ 0xb693f1fdc1ba0de7ecc99fd1b22cc2, 0x4379a23142572df8d45c0c2cc85d70, 0x000015 ] } , - BigNum { limbs: [ 0x694ee83ae27a47bed39a0919fadbc3, 0x4a3b47df5caa2bdad7b86e55e1c1cc, 0x0030e6 ] } , - BigNum { limbs: [ 0x54551ac51be1b7412c65f5e605243e, 0x5d17e1be209e075f004f9b4bf64387, 0x004307 ] } , - BigNum { limbs: [ 0x5e55696d530d23c829d3b1ec72d08f, 0xc09602866dfdcaae5a41e711829dab, 0x003c1e ] } , - BigNum { limbs: [ 0x5f4e9992ab4edb37d62c4d138d2f72, 0xe6bd27170f4a688b7dc622905567a8, 0x0037ce ] } , - BigNum { limbs: [ 0x288cf2ea23bfefa96caf3ac3f8ba22, 0xb3275950a9f9c4441b6584b2104f8d, 0x00719f ] } , - BigNum { limbs: [ 0x95171015da9c0f569350c43c0745df, 0xf42bd04cd34e6ef5bca284efc7b5c6, 0x00024d ] } , - BigNum { limbs: [ 0x8bc3b8285c996dbad4d376d1513768, 0x7256e5b76cb3175f0352ab72b4f874, 0x005ebd ] } , - BigNum { limbs: [ 0x31e04ad7a1c291452b2c882eaec899, 0x34fc43e610951bdad4b55e2f230cdf, 0x001530 ] } , - BigNum { limbs: [ 0x894a39cb116c525af67e8ae5be1bb2, 0x8c6cd36c4d58e020f6ea3ff00d743a, 0x00625d ] } , - BigNum { limbs: [ 0x3459c934ecefaca50981741a41e44f, 0x1ae656312fef5318e11dc9b1ca9119, 0x001190 ] } , - BigNum { limbs: [ 0x25e1a5766d24382bb250f695030649, 0xd5ae6d99265b8f18e758585cbb43c1, 0x005977 ] } , - BigNum { limbs: [ 0x97c25d899137c6d44daf086afcf9b8, 0xd1a4bc0456eca420f0afb1451cc192, 0x001a75 ] } , - BigNum { limbs: [ 0x108a14b7c70a6ad26c4075ed336c51, 0x0b039e7a6793034fce3be69716022a, 0x0041dd ] } , - BigNum { limbs: [ 0xad19ee483751942d93bf8912cc93b0, 0x9c4f8b2315b52fea09cc230ac20329, 0x003210 ] } , - BigNum { limbs: [ 0x73d08bc76ccf5ba34807979b0215f8, 0x672456cb0e4d663c27a5ae14f1c97c, 0x006b48 ] } , - BigNum { limbs: [ 0x49d37738918ca35cb7f86764fdea09, 0x402ed2d26efaccfdb0625b8ce63bd7, 0x0008a5 ] } , - BigNum { limbs: [ 0xb194d22c9353d04f23e87d934f1f96, 0xd299fff47a28674a00d694f09259c6, 0x006a55 ] } , - BigNum { limbs: [ 0x0c0f30d36b082eb0dc17816cb0e06b, 0xd4b929a9031fcbefd73174b145ab8d, 0x000997 ] } , - BigNum { limbs: [ 0xe60667a30dabcfb52e13c743b9975c, 0x9bbee3ad9bc81a5f72c6f875ee7602, 0x001460 ] } , - BigNum { limbs: [ 0xd79d9b5cf0b02f4ad1ec37bc4668a5, 0x0b9445efe18018da6541112be98f50, 0x005f8d ] } , - BigNum { limbs: [ 0xab86dadb989e51f0cbebe282c25f67, 0x985bbe50fcdf18c268a03833d98497, 0x0007a0 ] } , - BigNum { limbs: [ 0x121d282465bdad0f34141c7d3da09a, 0x0ef76b4c80691a776f67d16dfe80bc, 0x006c4d ] } , - BigNum { limbs: [ 0xda7702676dea396d79c4d11332d72d, 0x2e7430a3a2a093042049534a4e9515, 0x004eda ] } , - BigNum { limbs: [ 0xe32d00989071c592863b2deccd28d4, 0x78def8f9daa7a035b7beb65789703d, 0x002513 ] } , - BigNum { limbs: [ 0x3fea587c4affedc04f2ce41153449c, 0x22a7edcf8fa76606557aaa616f7f58, 0x003eaa ] } , - BigNum { limbs: [ 0x7db9aa83b35c113fb0d31aeeacbb65, 0x84ab3bcdeda0cd33828d5f406885fb, 0x003543 ] } , - BigNum { limbs: [ 0xd6197d6c736880f50cd1a8e4c2db19, 0x175965785290878d175aaf9256fc91, 0x003bdf ] } , - BigNum { limbs: [ 0xe78a85938af37e0af32e561b3d24e8, 0x8ff9c4252ab7abacc0ad5a0f8108c1, 0x00380e ] } , - BigNum { limbs: [ 0xd541ba86f98b53e4a9ecb7395b88da, 0xdd06325810ac9f0db723ad6706b7b6, 0x002288 ] } , - BigNum { limbs: [ 0xe862487904d0ab1b561347c6a47727, 0xca4cf7456c9b942c20e45c3ad14d9c, 0x005164 ] } , - BigNum { limbs: [ 0xea6811be9c622d4a838b5d59cd79e5, 0x1f1b5c49c83409f1ca610a08f16655, 0x006d03 ] } , - BigNum { limbs: [ 0xd33bf14161f9d1b57c74a1a632861c, 0x8837cd53b51429480da6ff98e69efd, 0x0006ea ] } , - BigNum { limbs: [ 0x4e1e3ba38d57fa7de6ee5fb11c8691, 0xc39cc1085e035b0395f3cb50c20339, 0x000d8b ] } , - BigNum { limbs: [ 0x6f85c75c7104048219119f4ee37970, 0xe3b668951f44d83642143e5116021a, 0x006661 ] } , - BigNum { limbs: [ 0x11bb5ed43415b6eaa3a247fac9045c, 0x8ce61b57c643fab4ad0b6127b0bdf5, 0x006200 ] } , - BigNum { limbs: [ 0xabe8a42bca4648155c5db70536fba5, 0x1a6d0e45b70438852afca87a27475e, 0x0011ed ] } , - BigNum { limbs: [ 0x66edf951391e017027b8876a00b1dd, 0x16bac381fe479a73369f5b7b9fbd66, 0x00269e ] } , - BigNum { limbs: [ 0x56b609aec53dfd8fd8477795ff4e24, 0x9098661b7f0098c6a168ae263847ed, 0x004d4f ] } , - BigNum { limbs: [ 0x8d3bda72fe32ac556446a1e4c8b12c, 0xdecdc861cdd2ba3c1894e10b47bb26, 0x0070a1 ] } , - BigNum { limbs: [ 0x3068288d002952aa9bb95d1b374ed5, 0xc885613baf7578fdbf732896904a2d, 0x00034b ] } , - BigNum { limbs: [ 0xc2aede9421fa9e20d9bfae30c1dd53, 0x261192cf65c5eb82149a7ac5fda4ff, 0x0041af ] } , - BigNum { limbs: [ 0xfaf5246bdc6160df264050cf3e22ae, 0x814196ce178247b7c36d8edbda6053, 0x00323e ] } , - BigNum { limbs: [ 0x39f3a6db6531cdca1cb78883b5501f, 0x26227262918465175978507ae3f87a, 0x00650f ] } , - BigNum { limbs: [ 0x83b05c24992a3135e348767c4aafe2, 0x8130b73aebc3ce227e8fb926f40cd9, 0x000ede ] } , - BigNum { limbs: [ 0xc37dd45f1728e7f0d65f4eb1657ebb, 0xcbf627e693d811320caaca8a58a05a, 0x005d7a ] } , - BigNum { limbs: [ 0xfa262ea0e733170f29a0b04e9a8146, 0xdb5d01b6e9702207cb5d3f177f64f8, 0x001672 ] } , - BigNum { limbs: [ 0xf0213a7d775a248c5cb6eb5617be18, 0x3d8529f4a57d3684ca197cb9b2697e, 0x0032a6 ] } , - BigNum { limbs: [ 0xcd82c8828701da73a34913a9e841e9, 0x69cdffa8d7cafcb50dee8ce8259bd4, 0x004147 ] } , - BigNum { limbs: [ 0x28b34e361f477916846a9d93c59012, 0x68771297c5f5cab5e5b78e6a8640e0, 0x000bb8 ] } , - BigNum { limbs: [ 0x94f0b4c9df1485e97b95616c3a6fef, 0x3edc1705b7526883f2507b3751c473, 0x006835 ] } , - BigNum { limbs: [ 0x2fcc7b4c5132e44eade4f1a131233d, 0x24993436058950f7e263c54ee6a9b5, 0x0053e3 ] } , - BigNum { limbs: [ 0x8dd787b3ad291ab1521b0d5ecedcc4, 0x82b9f56777bee241f5a44452f15b9e, 0x00200a ] } , - BigNum { limbs: [ 0xe3b4dbe22b4392311d3304db643695, 0x6c675105ced67e07f5abd08cc0fb81, 0x00118c ] } , - BigNum { limbs: [ 0xd9ef271dd3186ccee2ccfa249bc96c, 0x3aebd897ae71b531e25c39151709d1, 0x006261 ] } , - BigNum { limbs: [ 0xf11efe066d096281a3dfb44cd7d165, 0x9692bcbb22f340a207f615ad60750f, 0x003157 ] } , - BigNum { limbs: [ 0xcc8504f991529c7e5c204ab3282e9c, 0x10c06ce25a54f297d011f3f4779043, 0x004296 ] } , - BigNum { limbs: [ 0xdcb69c52a4e2ed82c4a6de94c8bf96, 0xadb5b738776bd7f6723b1e2ff13929, 0x0005c6 ] } , - BigNum { limbs: [ 0xe0ed66ad5979117d3b59206b37406b, 0xf99d726505dc5b4365cceb71e6cc29, 0x006e26 ] } , - BigNum { limbs: [ 0xbdddcc8bf7cd9ed4857eba4432963c, 0xae7241f1a002af8f5d5d7f44857a7f, 0x001987 ] } , - BigNum { limbs: [ 0xffc63674068e602b7a8144bbcd69c5, 0xf8e0e7abdd4583aa7aaa8a5d528ad3, 0x005a65 ] } , - BigNum { limbs: [ 0x403fec5dd82b2b02f99d83bd109f22, 0xad7b8eb369ebc5844282de960e20ea, 0x004e19 ] } , - BigNum { limbs: [ 0x7d6416a22630d3fd06627b42ef60df, 0xf9d79aea135c6db595852b0bc9e469, 0x0025d3 ] } , - BigNum { limbs: [ 0x667871334f5a17c81450fbaf4bac63, 0x8c39463268f3eff98a4b7b39d85563, 0x0054d1 ] } , - BigNum { limbs: [ 0x572b91ccaf01e737ebaf0350b4539e, 0x1b19e36b145443404dbc8e67ffaff0, 0x001f1c ] } , - BigNum { limbs: [ 0xe5f786d3627dca98b3217a2417eb91, 0x2b1650a62e0d01d8396db702f1cebe, 0x007322 ] } , - BigNum { limbs: [ 0xd7ac7c2c9bde34674cde84dbe81470, 0x7c3cd8f74f3b31619e9a529ee63694, 0x0000cb ] } , - BigNum { limbs: [ 0x14442a81d5dacf112f0e1c1ea12f87, 0x8dc193c234980989fd6dc601cf00dc, 0x0039df ] } , - BigNum { limbs: [ 0xa95fd87e28812feed0f1e2e15ed07a, 0x199195db48b029afda9a43a0090477, 0x003a0e ] } , - BigNum { limbs: [ 0x921cee975fa0e584ce4ae1e892a3c5, 0xc62efbed2b5cecef70db4531b7f32d, 0x000c2f ] } , - BigNum { limbs: [ 0x2b8714689ebb197b31b51d176d5c3c, 0xe1242db051eb464a672cc470201226, 0x0067bd ] } , - BigNum { limbs: [ 0x80e62a591e130ddff868f0a741ce9b, 0x73617687ce3861a1cbdaf40353ac4d, 0x005d2b ] } , - BigNum { limbs: [ 0x3cbdd8a6e048f12007970e58be3166, 0x33f1b315af0fd1980c2d159e845906, 0x0016c2 ] } , - BigNum { limbs: [ 0xbebbfef511cfe3de78900fcc779e4b, 0x5e5d2d844e5ab78ecd7e8bbf2f114f, 0x004cc8 ] } , - BigNum { limbs: [ 0xfee8040aec8c1b21876fef338861b6, 0x48f5fc192eed7bab0a897de2a8f403, 0x002725 ] } , - BigNum { limbs: [ 0xfb644fa915d933a7364690463b8c5a, 0x3da87aae9f28ef0fa6840d0fb03214, 0x0035f4 ] } , - BigNum { limbs: [ 0xc23fb356e882cb58c9b96eb9c473a7, 0x69aaaeeede1f442a3183fc9227d33e, 0x003df9 ] } , - BigNum { limbs: [ 0x291078c0516e965d1f8871ac8e55dd, 0xd8a29031fa3b19ae5ba085ac0ef4a6, 0x005a92 ] } , - BigNum { limbs: [ 0x94938a3faced68a2e0778d5371aa24, 0xceb0996b830d198b7c6783f5c910ad, 0x00195a ] } , - BigNum { limbs: [ 0xbe569a3a31f165c75c815f425cadf6, 0x91d2ea1bb63a6725ce5bff1ee40056, 0x003c67 ] } , - BigNum { limbs: [ 0xff4d68c5cc6a9938a37e9fbda3520b, 0x15803f81c70dcc1409ac0a82f404fc, 0x003786 ] } , - BigNum { limbs: [ 0xd4e8f014ba143af233e178fcd9035e, 0x187a05e3c16ef03e7c1f872a7e3d16, 0x007309 ] } , - BigNum { limbs: [ 0xe8bb12eb4447c40dcc1e860326fca3, 0x8ed923b9bbd942fb5be8827759c83c, 0x0000e4 ] } , - BigNum { limbs: [ 0x72c83deac35889a527d24cb6033b6d, 0x8dae310a1c6ed27159d1f41e8ecf38, 0x002a77 ] } , - BigNum { limbs: [ 0x4adbc5153b03755ad82db249fcc494, 0x19a4f89360d960c87e36158349361b, 0x004976 ] } , - BigNum { limbs: [ 0xed383bd6c47164f0f4a28beafd4b05, 0xfe95f6cd1c5ae51f8b3c2f31b064ca, 0x004b19 ] } , - BigNum { limbs: [ 0xd06bc72939ea9a0f0b5d731502b4fc, 0xa8bd32d060ed4e1a4ccbda7027a088, 0x0028d3 ] } , - BigNum { limbs: [ 0xc2af4e8c17ec9b12d6d2603dee0fe2, 0xaffd6163c6457b489fed890fd8e5be, 0x0055b0 ] } , - BigNum { limbs: [ 0xfaf4b473e66f63ed292d9ec211f01f, 0xf755c839b702b7f1381a8091ff1f94, 0x001e3c ] } , - BigNum { limbs: [ 0x9902e6b674cd83c44a9dee0b94bba2, 0xe168decf4b8ed4289398be82882966, 0x001896 ] } , - BigNum { limbs: [ 0x24a11c49898e7b3bb56210f46b445f, 0xc5ea4ace31b95f11446f4b1f4fdbed, 0x005b56 ] } , - BigNum { limbs: [ 0x4e45ae2b0e3452a4529d1d508d95fc, 0x7722bad2894e16b2203d6eb58db41f, 0x0033f1 ] } , - BigNum { limbs: [ 0x6f5e54d4f027ac5bad62e1af726a05, 0x30306ecaf3fa1c87b7ca9aec4a5134, 0x003ffc ] } , - BigNum { limbs: [ 0x37da9fd247b74cb41071ef7f2aea85, 0x217231241ba8cb044aeeeef2e88ea4, 0x003467 ] } , - BigNum { limbs: [ 0x85c9632db6a4b24bef8e0f80d5157c, 0x85e0f879619f68358d191aaeef76af, 0x003f86 ] } , - BigNum { limbs: [ 0x3f627cef182bf8f6139aa4696affcb, 0x10ac5d53a149416469b17618f6a047, 0x005364 ] } , - BigNum { limbs: [ 0x7e418610e6300609ec655a96950036, 0x96a6cc49dbfef1d56e569388e1650c, 0x002089 ] } , - BigNum { limbs: [ 0x7e981b72650bfeff3159bca6f143eb, 0xfc526f7aaa2242fa324ea12a7d5c51, 0x0011d4 ] } , - BigNum { limbs: [ 0x3f0be78d99500000cea642590ebc16, 0xab00ba22d325f03fa5b968775aa902, 0x006218 ] } , - BigNum { limbs: [ 0xd355e9996feaa77dfbd1f922488ad7, 0xb0058ff22890469a4cefef1ddd319e, 0x005848 ] } , - BigNum { limbs: [ 0xea4e19668e715782042e05ddb7752a, 0xf74d99ab54b7ec9f8b181a83fad3b4, 0x001ba4 ] } , - BigNum { limbs: [ 0x71709889e0167d409fadc1390c215b, 0x74aa326c7001fa831c8ac096dad4f9, 0x00693f ] } , - BigNum { limbs: [ 0x4c336a761e4581bf60523dc6f3dea6, 0x32a8f7310d4638b6bb7d490afd305a, 0x000aae ] } , - BigNum { limbs: [ 0x7f3c55e68a9ebe67f8591eaace97e5, 0x36a927134e53d5de7528fa90299f94, 0x000767 ] } , - BigNum { limbs: [ 0x3e67ad1973bd409807a6e05531681c, 0x70aa028a2ef45d5b62df0f11ae65bf, 0x006c86 ] } , - BigNum { limbs: [ 0xd68c4e218d617df86a5774c5ddad45, 0x3791051adf2dcf04d9abd55a75fca8, 0x00056b ] } , - BigNum { limbs: [ 0xe717b4de70fa810795a88a3a2252bc, 0x6fc224829e1a6434fe5c34476208aa, 0x006e82 ] } , - BigNum { limbs: [ 0x7b2013f325133a921b388995bea7fd, 0x97cf9f1de049dea2d37f97aa42f19b, 0x001305 ] } , - BigNum { limbs: [ 0x4283ef0cd948c46de4c7756a415804, 0x0f838a7f9cfe5497048871f79513b8, 0x0060e8 ] } , - BigNum { limbs: [ 0x8ab8dd1277fe748ac4ce96c05922c8, 0x10e56eefef4251ebd9d921306ed45a, 0x005d42 ] } , - BigNum { limbs: [ 0x32eb25ed865d8a753b31683fa6dd39, 0x966dbaad8e05e14dfe2ee8716930f9, 0x0016ab ] } , - BigNum { limbs: [ 0x0a4f7342f02550b7dd369ee24a4b2c, 0xfee53953c53b0cfcf5e4fb20e3fa23, 0x0006c4 ] } , - BigNum { limbs: [ 0xb3548fbd0e36ae4822c9601db5b4d5, 0xa86df049b80d263ce2230e80f40b30, 0x006d28 ] } , - BigNum { limbs: [ 0x7d50a297e01b9f76128ae4a4ec03cc, 0x48ee592217168094228f05f9a5f7b1, 0x0003cd ] } , - BigNum { limbs: [ 0x405360681e405f89ed751a5b13fc35, 0x5e64d07b6631b2a5b57903a8320da2, 0x007020 ] } , - BigNum { limbs: [ 0x15ef3ee3ffc51b88fd3eb853540a9b, 0x0703b0d3a24c6f57d8c0bf34a21c9a, 0x001d2d ] } , - BigNum { limbs: [ 0xa7b4c41bfe96e37702c146acabf566, 0xa04f78c9dafbc3e1ff474a6d35e8b9, 0x0056c0 ] } , - BigNum { limbs: [ 0xa0e87e3224359144dd54d2b5c75587, 0x4ac46b49ad06003051d8ebe9cfeefb, 0x003126 ] } , - BigNum { limbs: [ 0x1cbb84cdda266dbb22ab2c4a38aa7a, 0x5c8ebe53d0423309862f1db8081658, 0x0042c7 ] } , - BigNum { limbs: [ 0x8b986d29b33eb5f0def2eff45786de, 0xc59e71fd63b2bf1d7ff3348ecd758b, 0x0040be ] } , - BigNum { limbs: [ 0x320b95d64b1d490f210d0f0ba87923, 0xe1b4b7a01995741c5814d5130a8fc8, 0x00332e ] } , - BigNum { limbs: [ 0x99b19c7bca6174d7162d9719890f64, 0x9b45fa34b0b61f0b2d8c094d642020, 0x003b30 ] } , - BigNum { limbs: [ 0x23f2668433fa8a28e9d267e676f09d, 0x0c0d2f68cc92142eaa7c005473e533, 0x0038bd ] } , - BigNum { limbs: [ 0xd107902335e8b13bda35e579e11aaf, 0x059e6e34b922e5757ecbd6781b5e62, 0x002ec2 ] } , - BigNum { limbs: [ 0xec9c72dcc8734dc425ca19861ee552, 0xa1b4bb68c4254dc4593c3329bca6f0, 0x00452b ] } , - BigNum { limbs: [ 0x9e3c15394e6e1b208b52545e33565a, 0x494ae6fc135c86b8d15bf3d84bec66, 0x00191b ] } , - BigNum { limbs: [ 0x1f67edc6afede3df74adaaa1cca9a7, 0x5e0842a169ebac8106ac15c98c18ed, 0x005ad2 ] } , - BigNum { limbs: [ 0x7d4b44384d28349ae50103d6566c65, 0x9d381a6230d31aa9d7cb35b628a6c7, 0x0057ad ] } , - BigNum { limbs: [ 0x4058bec7b133ca651afefb29a9939c, 0x0a1b0f3b4c751890003cd3ebaf5e8c, 0x001c40 ] } , - BigNum { limbs: [ 0x86f87457e8d83a3e453abe1c7e3711, 0x8ca8ab8a88de4e6c5a7b26d84725a4, 0x005162 ] } , - BigNum { limbs: [ 0x36ab8ea81583c4c1bac540e381c8f0, 0x1aaa7e12f469e4cd7d8ce2c990dfaf, 0x00228b ] } , - BigNum { limbs: [ 0xf1a3f8ee19dbd5ae0de328241583d7, 0xf540ec8a19daeeda67854d1fd03c74, 0x00330b ] } , - BigNum { limbs: [ 0xcc000a11e4802951f21cd6dbea7c2a, 0xb2123d13636d445f7082bc8207c8de, 0x0040e1 ] } , - BigNum { limbs: [ 0x7f4a71e8149069d29f8a66433e17c6, 0x9b28721e8abbc3e8f9d6b214dd6309, 0x001c12 ] } , - BigNum { limbs: [ 0x3e599117e9cb952d607598bcc1e83b, 0x0c2ab77ef28c6f50de31578cfaa24a, 0x0057db ] } , - BigNum { limbs: [ 0xa60a12a7fafe3326945a8982257a8c, 0x56b1edc476b1082be230899d88c0b8, 0x002d3f ] } , - BigNum { limbs: [ 0x1799f058035dcbd96ba5757dda8575, 0x50a13bd906972b0df5d780044f449b, 0x0046ae ] } , - BigNum { limbs: [ 0xeb5269e06340da74ad6f23b8331b7d, 0x812e1d221ea3c3d27fdf06de69822a, 0x00081d ] } , - BigNum { limbs: [ 0xd251991f9b1b248b5290db47cce484, 0x26250c7b5ea46f67582902c36e8328, 0x006bd0 ] } , - BigNum { limbs: [ 0x5d72906ae5974656402311a3c88c0d, 0x20bdebb8c529b77a75fbc3e63a6bd7, 0x0060c5 ] } , - BigNum { limbs: [ 0x6031729518c4b8a9bfdced5c3773f4, 0x86953de4b81e7bbf620c45bb9d997c, 0x001328 ] } , - BigNum { limbs: [ 0x8ae0d36eaa8ceeb0ec520770f54dd3, 0x051ba804583083d632fb1caac7277b, 0x005e0e ] } , - BigNum { limbs: [ 0x32c32f9153cf104f13adf78f0ab22e, 0xa23781992517af63a50cecf710ddd8, 0x0015df ] } , - BigNum { limbs: [ 0x70ca1a6b232d5316951ae5ab0e6a4c, 0x0e9a156bfcdfe7a10eedb8e7072c92, 0x000599 ] } , - BigNum { limbs: [ 0x4cd9e894db2eabe96ae51954f195b5, 0x98b9143180684b98c91a50bad0d8c1, 0x006e54 ] } , - BigNum { limbs: [ 0x0f8c6a786fe9e866941a14b23a4155, 0x871fec91df9e50d66999b7f71ecb85, 0x00260d ] } , - BigNum { limbs: [ 0xae1798878e7216996be5ea4dc5beac, 0x20333d0b9da9e2636e6e51aab939ce, 0x004de0 ] } , - BigNum { limbs: [ 0x728f805725223905648a06d5bf4779, 0x9f15f40745862c463c0f6c15f45234, 0x000eac ] } , - BigNum { limbs: [ 0x4b1482a8d939c5fa9b75f82a40b888, 0x083d359637c206f39bf89d8be3b31f, 0x006541 ] } , - BigNum { limbs: [ 0xb10938a76e2590378e47a78cb232a2, 0x99c93e92dfca58c7a298d7828572ca, 0x000550 ] } , - BigNum { limbs: [ 0x0c9aca5890366ec871b857734dcd5f, 0x0d89eb0a9d7dda72356f321f529289, 0x006e9d ] } , - BigNum { limbs: [ 0xe83b231555ac35ead6a82181c19293, 0xa2397a7ac4814435fb53a4ff017529, 0x001f23 ] } , - BigNum { limbs: [ 0xd568dfeaa8afc9152957dd7e3e6d6e, 0x0519af22b8c6ef03dcb464a2d69029, 0x0054ca ] } , - BigNum { limbs: [ 0x6f49efba092206bec4af45a3dd836a, 0x8a349d98ba5804e0a5947115d93a2f, 0x005569 ] } , - BigNum { limbs: [ 0x4e5a1345f539f8413b50b95c227c97, 0x1d1e8c04c2f02e593273988bfecb24, 0x001e84 ] } , - BigNum { limbs: [ 0x1b702ad51911966e554ba438256c09, 0x4d7122d117efeb680de72cff169011, 0x006daa ] } , - BigNum { limbs: [ 0xa233d82ae54a6891aab45ac7da93f8, 0x59e206cc655847d1ca20dca2c17542, 0x000643 ] } , - BigNum { limbs: [ 0x3bc1e33db1fabde67e9726e2110a9f, 0x5bf26247526e599fab5a4a1e19cff4, 0x0047a4 ] } , - BigNum { limbs: [ 0x81e21fc24c6141198168d81deef562, 0x4b60c7562ad9d99a2cadbf83be355f, 0x002c49 ] } , - BigNum { limbs: [ 0x92dc9c9ab9a192a42416165d386af9, 0x2e6ad1aa805d875c182d7bfe77cc17, 0x0035b9 ] } , - BigNum { limbs: [ 0x2ac7666544ba6c5bdbe9e8a2c79508, 0x78e857f2fceaabddbfda8da360393c, 0x003e34 ] } , - BigNum { limbs: [ 0xdbf9d401389e118356c2dfd4542a7e, 0x1beb3356e7eac8b5c49358e42cc261, 0x005d40 ] } , - BigNum { limbs: [ 0xe1aa2efec5bded7ca93d1f2babd583, 0x8b67f646955d6a841374b0bdab42f1, 0x0016ad ] } , - BigNum { limbs: [ 0xde093f86dc82aee638c24bfb618f3f, 0xcc695696e15f33b6703722957141dc, 0x004b57 ] } , - BigNum { limbs: [ 0xdf9ac37921d95019c73db3049e70c2, 0xdae9d3069be8ff8367d0e70c66c376, 0x002895 ] } , - BigNum { limbs: [ 0x43cf43b8a4fea9a6910d41d80997d6, 0xb89955f3ac075693ab26c50bb8772e, 0x001b0a ] } , - BigNum { limbs: [ 0x79d4bf47595d55596ef2bd27f6682b, 0xeeb9d3a9d140dca62ce144961f8e25, 0x0058e2 ] } , - BigNum { limbs: [ 0x6df74788bfddf547809a0593c52c29, 0x6e3537a8223b30a23b5534d53e7afc, 0x004be8 ] } , - BigNum { limbs: [ 0x4facbb773e7e09b87f65f96c3ad3d8, 0x391df1f55b0d02979cb2d4cc998a57, 0x002805 ] } , - BigNum { limbs: [ 0xecbebc0bb2bede8728abb983c104a2, 0xd259c48b91eaa8064226f6054683bc, 0x003083 ] } , - BigNum { limbs: [ 0xd0e546f44b9d2078d754457c3efb5f, 0xd4f96511eb5d8b3395e1139c918196, 0x004369 ] } , - BigNum { limbs: [ 0xd37ff2a87babb380c6c92288db9ca6, 0x72a1f9cd89124eb06d927e27a3fd9e, 0x007289 ] } , - BigNum { limbs: [ 0xea24105782b04b7f3936dc7724635b, 0x34b12fcff435e4896a758b7a3407b4, 0x000164 ] } , - BigNum { limbs: [ 0x3a7585c54ec264e3ee86325ff52f02, 0x34796ea0382b31d08ef46443e548e5, 0x000b97 ] } , - BigNum { limbs: [ 0x832e7d3aaf999a1c1179cca00ad0ff, 0x72d9bafd451d01694913a55df2bc6e, 0x006856 ] } , - BigNum { limbs: [ 0x83611805de11188d9fc12803667dbf, 0xd8489d9b1d2b7d981b5cc7400d058a, 0x00668c ] } , - BigNum { limbs: [ 0x3a42eafa204ae672603ed6fc998242, 0xcf0a8c02601cb5a1bcab4261caffc9, 0x000d60 ] } , - BigNum { limbs: [ 0x6ace9eee636cfea106cdd2093221c4, 0x25a27aaf423e560d8375b9f57ddb5f, 0x004164 ] } , - BigNum { limbs: [ 0x52d564119aef005ef9322cf6cdde3d, 0x81b0aeee3b09dd2c54924fac5a29f4, 0x003289 ] } , - BigNum { limbs: [ 0x804da7679b1f2ab1d8a86c599c1125, 0x37ea83b297acb4d4cac9a82e460d7a, 0x000562 ] } , - BigNum { limbs: [ 0x3d565b98633cd44e275792a663eedc, 0x6f68a5eae59b7e650d3e617391f7d9, 0x006e8b ] } , - BigNum { limbs: [ 0xac81ba0e9f27289accbc94269dcfed, 0xca7fe2354d973f2d66f302fd0a4109, 0x006288 ] } , - BigNum { limbs: [ 0x112248f15f34d66533436ad9623014, 0xdcd347682fb0f40c711506a4cdc44a, 0x001164 ] } , - BigNum { limbs: [ 0xaa925bcaf595931a976cec0c95430e, 0xf19446ee388087b66e87e6421ad7f4, 0x006e17 ] } , - BigNum { limbs: [ 0x1311a73508c66be5689312f36abcf3, 0xb5bee2af44c7ab836980235fbd2d5f, 0x0005d5 ] } , - BigNum { limbs: [ 0x7eebd047cbc2e51c5ec124a724f5d0, 0xf253594888ee9a00b7f8aae9ee446d, 0x0029f1 ] } , - BigNum { limbs: [ 0x3eb832b8329919e3a13eda58db0a31, 0xb4ffd054f4599939200f5eb7e9c0e6, 0x0049fb ] } , - BigNum { limbs: [ 0xc3721ea6c79959350ce6a6828af90a, 0x65e4d3674be8111f4ebbffa0ac1554, 0x003f1a ] } , - BigNum { limbs: [ 0xfa31e45936c2a5caf319587d7506f7, 0x416e56363160221a894c0a012beffe, 0x0034d3 ] } , - BigNum { limbs: [ 0xc955e365e603ea58bb2d6aa83247db, 0xdb61407a6cf482dcb6fbe1f248d57f, 0x006323 ] } , - BigNum { limbs: [ 0xf44e1f9a185814a744d29457cdb826, 0xcbf1e9231053b05d210c27af8f2fd3, 0x0010c9 ] } , - BigNum { limbs: [ 0x78a3d2d41320a58a91e7a363e4bf29, 0xf65a022ccf82e082eced9e4db37053, 0x004043 ] } , - BigNum { limbs: [ 0x4500302beb3b59756e185b9c1b40d8, 0xb0f92770adc552b6eb1a6b54249500, 0x0033a9 ] } , - BigNum { limbs: [ 0x51110b4d802457efc0e95192098448, 0x204ab0d2a8638e24584004aba6faa2, 0x001d4a ] } , - BigNum { limbs: [ 0x6c92f7b27e37a7103f16ad6df67bb9, 0x870878cad4e4a5157fc804f6310ab1, 0x0056a3 ] } , - BigNum { limbs: [ 0xa76cbd7137e6f47e6e58015540096f, 0x17e3d47a499280db319a950d9b3877, 0x0024f7 ] } , - BigNum { limbs: [ 0x1637458ec6750a8191a7fdaabff692, 0x8f6f552333b5b25ea66d74943cccdc, 0x004ef6 ] } , - BigNum { limbs: [ 0x46cc3132ae68b8a5f2cc3b6ce6684c, 0xaeefe26d6d67ed111551f5aecd91b5, 0x006694 ] } , - BigNum { limbs: [ 0x76d7d1cd4ff3465a0d33c3931997b5, 0xf86347300fe04628c2b613f30a739e, 0x000d58 ] } , - BigNum { limbs: [ 0x356ebb9037c6036cf0c644e1105fba, 0xe6ce8ff225aa86da51c04c9130a03f, 0x005271 ] } , - BigNum { limbs: [ 0x8835476fc695fb930f39ba1eefa047, 0xc08499ab579dac5f8647bd10a76514, 0x00217b ] } , - BigNum { limbs: [ 0x71972107f75956b53875e0be421d2a, 0xbd4090207fe16c1f9ade683c154e89, 0x0071bc ] } , - BigNum { limbs: [ 0x4c0ce1f80702a84ac78a1e41bde2d7, 0xea12997cfd66c71a3d29a165c2b6ca, 0x000230 ] } , - BigNum { limbs: [ 0x62cc3eb2ba6bc6f7b5e5dc5beed42f, 0x4302c5125319ab5b6b747430015857, 0x0067d1 ] } , - BigNum { limbs: [ 0x5ad7c44d43f038084a1a22a4112bd2, 0x6450648b2a2e87de6c939571d6acfc, 0x000c1c ] } , - BigNum { limbs: [ 0x4ded5e86515588409b42a1c622af82, 0xc18924c9ff6195534d6b669470a21f, 0x006db9 ] } , - BigNum { limbs: [ 0x6fb6a479ad0676bf64bd5d39dd507f, 0xe5ca04d37de69de68a9ca30d676334, 0x000633 ] } , - BigNum { limbs: [ 0xf940aaef199513b2942e1e96335b6e, 0x9fb0976b417260510ce0bd3d0820c3, 0x004908 ] } , - BigNum { limbs: [ 0xc4635810e4c6eb4d6bd1e069cca493, 0x07a292323bd5d2e8cb274c64cfe48f, 0x002ae5 ] } , - BigNum { limbs: [ 0x99f96384bc107506288c5822ce5a85, 0x472aaaaaf10a84bbb7015543f86105, 0x0031a4 ] } , - BigNum { limbs: [ 0x23aa9f7b424b89f9d773a6dd31a57c, 0x60287ef28c3dae7e2106b45ddfa44e, 0x004249 ] } , - BigNum { limbs: [ 0x380fc7606ef68763087e889370beba, 0xa48e895f4d79a04b607cacfddcb934, 0x0058be ] } , - BigNum { limbs: [ 0x85943b9f8f65779cf781766c8f4147, 0x02c4a03e2fce92ee778b5ca3fb4c1f, 0x001b2f ] } , - BigNum { limbs: [ 0x0d0e018ef12219eb96289ab55ac431, 0x583bb90996d418302d24d1f9482095, 0x0033d6 ] } , - BigNum { limbs: [ 0xb09601710d39e51469d7644aa53bd0, 0x4f177093e6741b09aae337a88fe4be, 0x004017 ] } , - BigNum { limbs: [ 0x720ee1ef0d377d0671c39b05d1219c, 0x0e3c672a9e17fe930bc21be24ae73d, 0x002bb2 ] } , - BigNum { limbs: [ 0x4b952110f12481f98e3c63fa2ede65, 0x9916c272df3034a6cc45edbf8d1e16, 0x00483b ] } , - BigNum { limbs: [ 0x8f937d589f241863fb1675b6ea931b, 0x1c2179e9ba67fb96c016aa69f8fe7b, 0x0010f3 ] } , - BigNum { limbs: [ 0x2e1085a75f37e69c04e98949156ce6, 0x8b31afb3c2e037a317f15f37df06d8, 0x0062fa ] } , - BigNum { limbs: [ 0x56e00d5f1e00882902252fc85dc59c, 0x3e901ee55f3ead151e1a9ffea6d1e0, 0x0020d7 ] } , - BigNum { limbs: [ 0x66c3f5a0e05b76d6fddacf37a23a65, 0x68c30ab81e098624b9ed69a3313373, 0x005316 ] } , - BigNum { limbs: [ 0xbc23b54455eb4351ac2ebbbbf58f0f, 0x9056fb6c09d687252eb8459705938c, 0x001765 ] } , - BigNum { limbs: [ 0x01804dbba870bbae53d143440a70f2, 0x16fc2e317371ac14a94fc40ad271c7, 0x005c88 ] } , - BigNum { limbs: [ 0x93c6b06754a128dff1056cfd5ec865, 0xf74df5e016d7a53f6b08885f52e784, 0x005e2a ] } , - BigNum { limbs: [ 0x29dd5298a9bad6200efa9202a1379c, 0xb00533bd66708dfa6cff8142851dcf, 0x0015c2 ] } , - BigNum { limbs: [ 0x41d2f6c7f8a9395717a8e61423c05b, 0x3d0053a77263e322f86bf6d0dc3924, 0x0048ae ] } , - BigNum { limbs: [ 0x7bd10c3805b2c5a8e85718ebdc3fa6, 0x6a52d5f60ae45016df9c12d0fbcc2f, 0x002b3f ] } , - BigNum { limbs: [ 0x709eafc06c4ff19ad80a4b7b416ac5, 0x298eec226cfaea1765007c50fae425, 0x0031fc ] } , - BigNum { limbs: [ 0x4d05533f920c0d6527f5b384be953c, 0x7dc43d7b104d492273078d50dd212e, 0x0041f1 ] } , - BigNum { limbs: [ 0x69099c2b782691822141c76792a203, 0x0bdedfe0d19fff137b4c5c01b22f1a, 0x003789 ] } , - BigNum { limbs: [ 0x549a66d486356d7ddebe37986d5dfe, 0x9b7449bcaba834265cbbada025d639, 0x003c64 ] } , - BigNum { limbs: [ 0x09b329fa1577ff554c99286208dfee, 0x6776f189910ff3a606914c38247b25, 0x005a7f ] } , - BigNum { limbs: [ 0xb3f0d905e8e3ffaab366d69df72013, 0x3fdc3813ec383f93d176bd69b38a2e, 0x00196e ] } , - BigNum { limbs: [ 0x24accfa767b8cf3d2cac8d90592e9c, 0xb0bff695f8bb1988ea48d61b0adbd7, 0x002e0c ] } , - BigNum { limbs: [ 0x98f7335896a32fc2d353716fa6d165, 0xf6933307848d19b0edbf3386cd297c, 0x0045e0 ] } , - BigNum { limbs: [ 0x1c7ac41146f49ac18f962c2f958a43, 0x307fb2724e316afbbe1c20bf199667, 0x0065d9 ] } , - BigNum { limbs: [ 0xa1293eeeb767643e7069d2d06a75be, 0x76d3772b2f16c83e19ebe8e2be6eec, 0x000e14 ] } , - BigNum { limbs: [ 0xcd5e72e6bcb06297c78f3489f706ea, 0x1ed60f08ce06aadbb17ef22557b500, 0x005a6f ] } , - BigNum { limbs: [ 0xf045901941ab9c683870ca7608f917, 0x887d1a94af41885e2689177c805052, 0x00197e ] } , - BigNum { limbs: [ 0xe6b7a3bfecde634244d4514c7912ad, 0x0cb7e84409d6c970aa662616e8b847, 0x0037f5 ] } , - BigNum { limbs: [ 0xd6ec5f40117d9bbdbb2badb386ed54, 0x9a9b4159737169c92da1e38aef4d0b, 0x003bf8 ] } , - BigNum { limbs: [ 0x209b1c1b82cb497c47ca08d92d3855, 0x585dfc3bb27bf4ec94f6914ed44415, 0x000f94 ] } , - BigNum { limbs: [ 0x9d08e6e47b90b583b835f626d2c7ac, 0x4ef52d61cacc3e4d4311785303c13e, 0x006459 ] } , - BigNum { limbs: [ 0x0c3761f18348336e42f959081acdf7, 0xc7e6d1ada8b1413bf7a2546e4b2a2c, 0x0025f0 ] } , - BigNum { limbs: [ 0xb16ca10e7b13cb91bd06a5f7e5320a, 0xdf6c57efd496f1fde065b5338cdb27, 0x004dfc ] } , - BigNum { limbs: [ 0xbd040be90c1f098bdfa8f11646bfd6, 0x43d46fcb1be37348df13ad0c2a5b55, 0x0010e9 ] } , - BigNum { limbs: [ 0x009ff716f23cf57420570de9b9402b, 0x637eb9d26164bff0f8f45c95ada9fe, 0x006304 ] } , - BigNum { limbs: [ 0x1d9aa77779df363215065a4e6c2abd, 0xc6a057415d04ff53233bd8fbdd0586, 0x004fa4 ] } , - BigNum { limbs: [ 0xa0095b88847cc8cdeaf9a4b193d544, 0xe0b2d25c204333e6b4cc30a5faffcd, 0x002448 ] } , - BigNum { limbs: [ 0x9cb31f0b9200b0648ac18a60c7b419, 0xedbddad8c9ed9ccc28ba8ce12efb12, 0x001deb ] } , - BigNum { limbs: [ 0x20f0e3f46c5b4e9b753e749f384be8, 0xb9954ec4b35a966daf4d7cc0a90a41, 0x005601 ] } , - BigNum { limbs: [ 0x2e713efdc506192c3fd2500d74ed6a, 0xf5c94a9135d4738d8393fd1f618fcf, 0x005a3e ] } , - BigNum { limbs: [ 0x8f32c4023955e5d3c02daef28b1297, 0xb189df0c4773bfac54740c82767584, 0x0019ae ] } , - BigNum { limbs: [ 0x019f2521aea11163fdb1347e6d3c9b, 0xa3738160674ee6d82b9f88354b2359, 0x0015f0 ] } , - BigNum { limbs: [ 0xbc04ddde4fbaed9c024eca8192c366, 0x03dfa83d15f94c61ac68816c8ce1fa, 0x005dfd ] } , - BigNum { limbs: [ 0x92fda99d579539f60c1d8e32539eed, 0x186ff76aea8fd621c79e7166b7c3ef, 0x004354 ] } , - BigNum { limbs: [ 0x2aa65962a6c6c509f3e270cdac6114, 0x8ee3323292b85d181069983b204164, 0x003099 ] } , - BigNum { limbs: [ 0x4724fc91e126a038f88846a27a42f1, 0x67d8299d6a032639726942cb41b3ab, 0x006903 ] } , - BigNum { limbs: [ 0x767f066e1d355ec70777b85d85bd10, 0x3f7b000013450d00659ec6d69651a8, 0x000aea ] } , - BigNum { limbs: [ 0x36b2bbef5d95fb7d47e495b596c9e9, 0x7f053989ebbecb783501b9ec0fc922, 0x0073b2 ] } , - BigNum { limbs: [ 0x86f14710a0c60382b81b694a693618, 0x284df013918967c1a3064fb5c83c31, 0x00003b ] } , - BigNum { limbs: [ 0xb23ca83d927621d3100b451544eeb2, 0xab0cf321b5b87b7be0e951d31d980f, 0x0001eb ] } , - BigNum { limbs: [ 0x0b675ac26be5dd2ceff4b9eabb114f, 0xfc46367bc78fb7bdf71eb7ceba6d44, 0x007201 ] } , - BigNum { limbs: [ 0x55d00501e227d8804bf625d398d145, 0x32372fc6312f124acc1f42547e59ea, 0x005032 ] } , - BigNum { limbs: [ 0x67d3fdfe1c34267fb409d92c672ebc, 0x751bf9d74c1920ef0be8c74d59ab69, 0x0023bb ] } , - BigNum { limbs: [ 0x179e352fd65140abe985536de528a4, 0xcebd48220fe6df7882f59ab9abc5a7, 0x000597 ] } , - BigNum { limbs: [ 0xa605cdd0280abe54167aab921ad75d, 0xd895e17b6d6153c155126ee82c3fac, 0x006e55 ] } , - BigNum { limbs: [ 0x6468c1fc0bd98bc3f6e8b28be3db63, 0x7ef3b4556ef6d679aecad160dc2576, 0x00313f ] } , - BigNum { limbs: [ 0x593b4103f282733c09174c741c249e, 0x285f75480e515cc0293d3840fbdfdd, 0x0042ae ] } , - BigNum { limbs: [ 0x13470f1ab3da1ef5d61e450be78a51, 0x2f1becd5cc2934506a82aac78647b9, 0x000c05 ] } , - BigNum { limbs: [ 0xaa5cf3e54a81e00a29e1b9f41875b0, 0x78373cc7b11efee96d855eda51bd9a, 0x0067e8 ] } , - BigNum { limbs: [ 0x661c5aa57383f79b12c70a99339b94, 0x46dd8726ce03b8415b884acecaf444, 0x001319 ] } , - BigNum { limbs: [ 0x5787a85a8ad80764ed38f466cc646d, 0x6075a276af447af87c7fbed30d110f, 0x0060d4 ] } , - BigNum { limbs: [ 0xce5f9885b2f745bfa666b56d5a311a, 0x2668128e4a2bc83ba98b6857538716, 0x000a71 ] } , - BigNum { limbs: [ 0xef446a7a4b64b94059994992a5cee7, 0x80eb170f331c6afe2e7ca14a847e3c, 0x00697c ] } , - BigNum { limbs: [ 0x6aed1a564c146832d3560d5be17df8, 0x52d64d9b5c2fa87d62e7251e9f9727, 0x006b68 ] } , - BigNum { limbs: [ 0x52b6e8a9b24796cd2ca9f1a41e8209, 0x547cdc0221188abc7520e483386e2c, 0x000885 ] } , - BigNum { limbs: [ 0xd812068ac8f3657b45e33be2652de0, 0x309990b78e6f19be2ed4aae8454f92, 0x00411b ] } , - BigNum { limbs: [ 0xe591fc7535689984ba1cc31d9ad221, 0x76b998e5eed9197ba9335eb992b5c0, 0x0032d2 ] } , - BigNum { limbs: [ 0xbd51462129070533c31b718832f5e8, 0x19426e03b06186e1de604ed007c9b0, 0x006903 ] } , - BigNum { limbs: [ 0x0052bcded554f9cc3ce48d77cd0a19, 0x8e10bb99cce6ac57f9a7bad1d03ba3, 0x000aea ] } , - BigNum { limbs: [ 0x55d8768e908ff925fd2d98cb6dbbee, 0x8db0c855debd836ab3062d9fa9d8d9, 0x00547a ] } , - BigNum { limbs: [ 0x67cb8c716dcc05da02d26634924413, 0x19a261479e8aafcf2501dc022e2c7a, 0x001f73 ] } , - BigNum { limbs: [ 0x8e0ba527eca417365149025f015d1e, 0xc3152df73f24a32669617e74f15ae1, 0x0070fc ] } , - BigNum { limbs: [ 0x2f985dd811b7e7c9aeb6fca0fea2e3, 0xe43dfba63e2390136ea68b2ce6aa72, 0x0002f0 ] } , - BigNum { limbs: [ 0x8275c394add2deae53a0e275fd0cf4, 0x7b2aeb5230fa2c195afbea2192bd19, 0x00702f ] } , - BigNum { limbs: [ 0x3b2e3f6b50892051ac5f1c8a02f30d, 0x2c283e4b4c4e07207d0c1f8045483a, 0x0003be ] } , - BigNum { limbs: [ 0xb3c3d1d51852439775462cfb15928e, 0x5b03ee8a9e0c240a6ba7523bd51940, 0x00068f ] } , - BigNum { limbs: [ 0x09e0312ae609bb688ab9d204ea6d73, 0x4c4f3b12df3c0f2f6c60b76602ec13, 0x006d5e ] } , - BigNum { limbs: [ 0x2b5f0db0dd8f62428bf3d065323436, 0x3195598a28d8092bd18a7ee24d2161, 0x0001e3 ] } , - BigNum { limbs: [ 0x9244f54f20cc9cbd740c2e9acdcbcb, 0x75bdd01354702a0e067d8abf8ae3f2, 0x00720a ] } , - BigNum { limbs: [ 0x9df86f28195171f1fe341312f98924, 0x54eb6b36c54b9602ae7a61023ae791, 0x0031b3 ] } , - BigNum { limbs: [ 0x1fab93d7e50a8d0e01cbebed0676dd, 0x5267be66b7fc9d37298da89f9d1dc2, 0x00423a ] } , - BigNum { limbs: [ 0x32e14ea5c65fd882f06ddfe57fb749, 0xa4854293013e6b346b4a4b01e810da, 0x00109a ] } , - BigNum { limbs: [ 0x8ac2b45a37fc267d0f921f1a8048b8, 0x02cde70a7c09c8056cbdbe9feff479, 0x006353 ] } , - BigNum { limbs: [ 0x423c71ad2b0dfa572131cee36007fa, 0x33b9c1df4ffd1b118bfbe33bd251a0, 0x001467 ] } , - BigNum { limbs: [ 0x7b679152d34e04a8dece301c9ff807, 0x739967be2d4b18284c0c266605b3b3, 0x005f86 ] } , - BigNum { limbs: [ 0x4312ad66d4b7e90d2b6da17aab81c3, 0xe4da640bbaac82fcb1b1e258caf7f7, 0x00218a ] } , - BigNum { limbs: [ 0x7a91559929a415f2d4925d85547e3e, 0xc278c591c29bb03d265627490d0d5c, 0x005262 ] } , - BigNum { limbs: [ 0x7b3c07432c4bb846d7751759b82258, 0xbcb86c65c99f9735bdebf5628898ac, 0x00653a ] } , - BigNum { limbs: [ 0x4267fbbcd21046b9288ae7a647dda9, 0xea9abd37b3a89c041a1c143f4f6ca7, 0x000eb2 ] } , - BigNum { limbs: [ 0x9ce7c297ab8d54db615b721e6888d5, 0x889f6574f553a2a6da1423fa9a8a78, 0x002313 ] } , - BigNum { limbs: [ 0x20bc406852ceaa249ea48ce197772c, 0x1eb3c42887f49092fdf3e5a73d7adb, 0x0050da ] } , - BigNum { limbs: [ 0x73546ee70933efffe30ef5a9528edd, 0x0e58e6c6cf02feb911dc3dad3a3bad, 0x0054bc ] } , - BigNum { limbs: [ 0x4a4f9418f5280f001cf10956ad7124, 0x98fa42d6ae453480c62bcbf49dc9a6, 0x001f31 ] } , - BigNum { limbs: [ 0x4b743731d6de69caf95626573b849e, 0x7b4eac93969def71980219544f4fd8, 0x0017e4 ] } , - BigNum { limbs: [ 0x722fcbce277d953506a9d8a8c47b63, 0x2c047d09e6aa43c84005f04d88b57b, 0x005c09 ] } , - BigNum { limbs: [ 0x76809182ba32c095d44706ae689c0c, 0xa9f46ae7f49b8041bad9d23de711f3, 0x0070d4 ] } , - BigNum { limbs: [ 0x4723717d44293e6a2bb8f8519763f5, 0xfd5ebeb588acb2f81d2e3763f0f360, 0x000318 ] } , - BigNum { limbs: [ 0x4311151b41f2e4a8b188dd1a6a4bf6, 0x66fd2e6a621ba27d46e4e6ebaaab28, 0x002920 ] } , - BigNum { limbs: [ 0x7a92ede4bc691a574e7721e595b40b, 0x4055fb331b2c90bc912322b62d5a2b, 0x004acd ] } , - BigNum { limbs: [ 0x5cb240f458a0411af937dd7884b5bd, 0x5c392742ebcb8eda0f11c5920ab794, 0x004c46 ] } , - BigNum { limbs: [ 0x60f1c20ba5bbbde506c821877b4a44, 0x4b1a025a917ca45fc8f6440fcd4dbf, 0x0027a7 ] } , - BigNum { limbs: [ 0x6b26bf3a5b9cedc4de75f89a010b97, 0x7787223bc8fc5a52f2e3933f823d47, 0x006a5b ] } , - BigNum { limbs: [ 0x527d43c5a2bf113b218a0665fef46a, 0x2fcc0761b44bd8e6e524766255c80c, 0x000992 ] } , - BigNum { limbs: [ 0x906daf54262b5a6d913c8a21d61a14, 0xfd20ce3f8b5ded02bf205d2103eac1, 0x00646e ] } , - BigNum { limbs: [ 0x2d3653abd830a4926ec374de29e5ed, 0xaa325b5df1ea463718e7ac80d41a92, 0x000f7e ] } , - BigNum { limbs: [ 0xd3fa076900a2701dc2e8ce1a0001e5, 0x8a061c5504e40c9c6d744ce76f9570, 0x004bae ] } , - BigNum { limbs: [ 0xe9a9fb96fdb98ee23d1730e5fffe1c, 0x1d4d0d487864269d6a93bcba686fe2, 0x00283f ] } , - BigNum { limbs: [ 0x841ffb42a9153d71f0aca0022c86e0, 0x0b4a3128782aad8b75eeb88658b3d3, 0x002b1f ] } , - BigNum { limbs: [ 0x398407bd5546c18e0f535efdd37921, 0x9c08f875051d85ae6219511b7f5180, 0x0048ce ] } , - BigNum { limbs: [ 0x328f11d9cdf877394e8363ac674b29, 0xfea00f8d24bf97d28a6cca10529e21, 0x004b21 ] } , - BigNum { limbs: [ 0x8b14f126306387c6b17c9b5398b4d8, 0xa8b31a1058889b674d9b3f91856732, 0x0028cb ] } , - BigNum { limbs: [ 0x535ba390e22a934f2887da7a4613ac, 0x146fc82c471d6006a526adeef61511, 0x005d2c ] } , - BigNum { limbs: [ 0x6a485f6f1c316bb0d7782485b9ec55, 0x92e36171362ad33332e15bb2e1f042, 0x0016c1 ] } , - BigNum { limbs: [ 0xe632049f8464426c8b9b2bf815aad7, 0x48ccf85251fc944d705267aef07995, 0x002fe5 ] } , - BigNum { limbs: [ 0xd771fe6079f7bc937464d307ea552a, 0x5e86314b2b4b9eec67b5a1f2e78bbd, 0x004408 ] } , - BigNum { limbs: [ 0xe3f58397fa59ca7ee8c97459708936, 0x49b450f7e1001fbfe1fc8d8a0d5fe7, 0x007294 ] } , - BigNum { limbs: [ 0xd9ae7f680402348117368aa68f76cb, 0x5d9ed8a59c481379f60b7c17caa56b, 0x000159 ] } , - BigNum { limbs: [ 0x9de328231391765bc4f547e17fae04, 0x7ae3db865ba7714dcc8e32350736c2, 0x002d93 ] } , - BigNum { limbs: [ 0x1fc0dadceaca88a43b0ab71e8051fd, 0x2c6f4e1721a0c1ec0b79d76cd0ce91, 0x00465a ] } , - BigNum { limbs: [ 0x99e982481eb187c638ab874c146c0a, 0x850021892f6b10f3be96e9d4669892, 0x001b04 ] } , - BigNum { limbs: [ 0x23ba80b7dfaa7739c75477b3eb93f7, 0x225308144ddd224619711fcd716cc1, 0x0058e9 ] } , - BigNum { limbs: [ 0x22968828352a6e3f4bf52554d38e6f, 0xf1c7a7718e251607c0636d7990d68f, 0x00262a ] } , - BigNum { limbs: [ 0x9b0d7ad7c93190c0b40ad9ab2c7192, 0xb58b822bef231d3217a49c28472ec4, 0x004dc2 ] } , - BigNum { limbs: [ 0x19d4b2a482d2fbc23c6ee8ac5a4aaf, 0xc9aafb60bcbac15b96d0a2f553f4e4, 0x002d95 ] } , - BigNum { limbs: [ 0xa3cf505b7b89033dc3911653a5b552, 0xdda82e3cc08d71de413766ac84106f, 0x004657 ] } , - BigNum { limbs: [ 0x9ac76eb653b8077d5feb370589ddcd, 0x1cea5e2d9df0734149137047b1786e, 0x003b8c ] } , - BigNum { limbs: [ 0x22dc9449aaa3f782a014c7fa762234, 0x8a68cb6fdf57bff88ef4995a268ce5, 0x003861 ] } , - BigNum { limbs: [ 0x6ea99bee92c793b2126ee2e55d5b7b, 0x532503b950c74c9db999b77bc95b13, 0x006efd ] } , - BigNum { limbs: [ 0x4efa67116b946b4ded911c1aa2a486, 0x542e25e42c80e69c1e6e52260eaa40, 0x0004f0 ] } , - BigNum { limbs: [ 0x4abd405dd655c9caba576e317c51c0, 0x5b7f47d7e3dde00b481b539b58b533, 0x006e5f ] } , - BigNum { limbs: [ 0x72e6c2a22806353545a890ce83ae41, 0x4bd3e1c5996a532e8fecb6067f5020, 0x00058e ] } , - BigNum { limbs: [ 0x231f19c71e8773da6453c4f956b91c, 0x019aedcb1f56b52853da3777fcc872, 0x000eaf ] } , - BigNum { limbs: [ 0x9a84e938dfd48b259bac3a06a946e5, 0xa5b83bd25df17e11842dd229db3ce1, 0x00653e ] } , - BigNum { limbs: [ 0x19668a6e56d866fa44b2cf5ea9ce3e, 0x3a4b78ab5c819959f3c1dbce24dcb2, 0x00567a ] } , - BigNum { limbs: [ 0xa43d7891a7839805bb4d2fa15631c3, 0x6d07b0f220c699dfe4462dd3b328a1, 0x001d73 ] } , - BigNum { limbs: [ 0x8fc3ecb74d2370818a195b4030b82d, 0xda607fd657b1ecc589fe94d902934c, 0x002c8e ] } , - BigNum { limbs: [ 0x2de01648b1388e7e75e6a3bfcf47d4, 0xccf2a9c7259646744e0974c8d57207, 0x00475e ] } , - BigNum { limbs: [ 0x8586ae1f584b84c709f7cddb49aefe, 0x9d29782d7022884ec5a8cd2669f7cc, 0x0019fa ] } , - BigNum { limbs: [ 0x381d54e0a6107a38f6083124b65103, 0x0a29b1700d25aaeb125f3c7b6e0d87, 0x0059f3 ] } , - BigNum { limbs: [ 0x97551d7eb479316903092c74d1b363, 0xc0dfcf0eae86c2b3ee68881b3131e8, 0x004b0e ] } , - BigNum { limbs: [ 0x264ee58149e2cd96fcf6d28b2e4c9e, 0xe6735a8ecec17085e99f8186a6d36b, 0x0028de ] } , - BigNum { limbs: [ 0x8f79025062832db2e14ff671c966ca, 0x39d976a5cc746815ff2c5df25e4c4b, 0x00500c ] } , - BigNum { limbs: [ 0x2e2b00af9bd8d14d1eb0088e369937, 0x6d79b2f7b0d3cb23d8dbabaf79b908, 0x0023e1 ] } , - BigNum { limbs: [ 0x9d16dab72c6ea893501f19a2ae9b40, 0x9285f4b67ba0714fb14e35f116982e, 0x003c74 ] } , - BigNum { limbs: [ 0x208d2848d1ed566cafe0e55d5164c1, 0x14cd34e701a7c1ea26b9d3b0c16d25, 0x003779 ] } , - BigNum { limbs: [ 0x376a86c53fbaa0e7b0f84cf1693a6c, 0xd3d2ca0f2c04501eff841f6ad00440, 0x005f25 ] } , - BigNum { limbs: [ 0x86397c3abea15e184f07b20e96c595, 0xd3805f8e5143e31ad883ea37080113, 0x0014c7 ] } , - BigNum { limbs: [ 0xcfc741b88a6d90351e7a72117b4660, 0xbefa63943b3c9fb623bd7d8f468827, 0x00235e ] } , - BigNum { limbs: [ 0xeddcc14773ee6ecae1858cee84b9a1, 0xe858c609420b9383b44a8c12917d2b, 0x00508e ] } , - BigNum { limbs: [ 0x73d6ebd3f2d04ebd818c79e9b418c3, 0xa89d6917cf356fb52776257e47f6bd, 0x006d9c ] } , - BigNum { limbs: [ 0x49cd172c0b8bb0427e7385164be73e, 0xfeb5c085ae12c384b091e423900e96, 0x000650 ] } , - BigNum { limbs: [ 0xcbed26a10189725865f49cae84c1f0, 0x51abf2ff1a7ac214f8af079281e8c2, 0x001c89 ] } , - BigNum { limbs: [ 0xf1b6dc5efcd28ca79a0b62517b3e11, 0x55a7369e62cd7124df59020f561c90, 0x005764 ] } , - BigNum { limbs: [ 0x5c2a2517ea29380d784d83532d58a4, 0xe5bdc2f376ef3fbfaf7cf36c98f23c, 0x002acb ] } , - BigNum { limbs: [ 0x6179dde81432c6f287b27bacd2a75d, 0xc19566aa0658f37a288b16353f1317, 0x004921 ] } , - BigNum { limbs: [ 0x0c396a9fa67ea67e2a604403076877, 0xa9395cb8d476fab39024f46a4961d9, 0x003334 ] } , - BigNum { limbs: [ 0xb16a986057dd5881d59fbafcf8978a, 0xfe19cce4a8d1388647e315378ea37a, 0x0040b8 ] } , - BigNum { limbs: [ 0x659be0bb7e781e96ab11c20e5ad151, 0xbf9e4612a7a04b853daeb5686a7f1f, 0x005f0e ] } , - BigNum { limbs: [ 0x580822447fe3e06954ee3cf1a52eb0, 0xe7b4e38ad5a7e7b49a5954396d8634, 0x0014de ] } , - BigNum { limbs: [ 0x34af14b61e0abe74a1f6718c130477, 0x7a8bca252472eb674a1a620890d7a5, 0x004352 ] } , - BigNum { limbs: [ 0x88f4ee49e051408b5e098d73ecfb8a, 0x2cc75f7858d547d28deda799472dae, 0x00309b ] } , - BigNum { limbs: [ 0x986d4f948654a8ddccfd2991cb1cc7, 0x529d1d76d858cc6ba0596eae27c4e4, 0x003b18 ] } , - BigNum { limbs: [ 0x2536b36b780756223302d56e34e33a, 0x54b60c26a4ef66ce37ae9af3b0406f, 0x0038d5 ] } , - BigNum { limbs: [ 0x9da80dc7ef9f0f200b5775cb7c7f34, 0xada04d5e74819262a96d0a5549b5f1, 0x000679 ] } , - BigNum { limbs: [ 0x1ffbf5380ebcefdff4a889348380cd, 0xf9b2dc3f08c6a0d72e9aff4c8e4f62, 0x006d73 ] } , - BigNum { limbs: [ 0x8076a04042fa6a4ae23d4887732cc7, 0x84efe7a91e54c20ba6c40efc806c85, 0x005327 ] } , - BigNum { limbs: [ 0x3d2d62bfbb6194b51dc2b6788cd33a, 0x226341f45ef3712e3143faa55798ce, 0x0020c6 ] } , - BigNum { limbs: [ 0xad338dc96b53f06d9bd93caef95435, 0x46d16b0ded487a772571e97d5605ea, 0x004ac4 ] } , - BigNum { limbs: [ 0x1070753693080e926426c25106abcc, 0x6081be8f8fffb8c2b296202481ff69, 0x002929 ] } , - BigNum { limbs: [ 0x640ded94a2153f4f3cf1b82d878f30, 0x620c501b6d5b34b1fe426ba069ee6f, 0x000904 ] } , - BigNum { limbs: [ 0x5996156b5c46bfb0c30e46d27870d1, 0x4546d9820fecfe87d9c59e016e16e4, 0x006ae9 ] } , - BigNum { limbs: [ 0x3fcc8fbece3ff36832c0e6cf2383d0, 0xb5ed3c6c5168d7a5b570137a2c4e8f, 0x0030a3 ] } , - BigNum { limbs: [ 0x7dd77341301c0b97cd3f1830dc7c31, 0xf165ed312bdf5b942297f627abb6c4, 0x004349 ] } , - BigNum { limbs: [ 0x950b898168358f10a2ea8dd9532d0b, 0x3fa6331dc12669b74e8a5f93d55dda, 0x0043a1 ] } , - BigNum { limbs: [ 0x2898797e96266fef5d157126acd2f6, 0x67acf67fbc21c982897daa0e02a779, 0x00304c ] } , - BigNum { limbs: [ 0x87dd867c2846dfcc3b7f324100ce0b, 0xdd9346337dff0ec770162a016a73c0, 0x000934 ] } , - BigNum { limbs: [ 0x35c67c83d6151f33c480ccbeff31f6, 0xc9bfe369ff49247267f1dfa06d9193, 0x006ab8 ] } , - BigNum { limbs: [ 0xea948838d3a59e714fe5f9a319f08b, 0xd9b9e9bc0a45bca442260d0f5cc781, 0x0019ff ] } , - BigNum { limbs: [ 0xd30f7ac72ab6608eb01a055ce60f76, 0xcd993fe17302769595e1fc927b3dd1, 0x0059ed ] } , - BigNum { limbs: [ 0x42eaa33c21a6c3f8e855b7ca48e223, 0x2a883802cf8d5e7aadc120761b2157, 0x001430 ] } , - BigNum { limbs: [ 0x7ab95fc3dcb53b0717aa4735b71dde, 0x7ccaf19aadbad4bf2a46e92bbce3fc, 0x005fbd ] } , - BigNum { limbs: [ 0xea26e3e861e9a6f03205e4801f0670, 0x521b43809c6f413f091a0442fe3b0a, 0x0057e2 ] } , - BigNum { limbs: [ 0xd37d1f179c72580fcdfa1a7fe0f991, 0x5537e61ce0d8f1faceee055ed9ca48, 0x001c0b ] } , - BigNum { limbs: [ 0x888aca5f2cf18937eb9c08a6bad0a5, 0xb368c1bd3ec3d9a4667dbe97b7466b, 0x006c24 ] } , - BigNum { limbs: [ 0x351938a0d16a75c81463f659452f5c, 0xf3ea67e03e845995718a4b0a20bee8, 0x0007c8 ] } , - BigNum { limbs: [ 0xca463738abfdcceae6f7f2c97f6ddc, 0x37a8bdb046c980f6c206144132a757, 0x0053ca ] } , - BigNum { limbs: [ 0xf35dcbc7525e321519080c36809225, 0x6faa6bed367eb2431601f560a55dfb, 0x002023 ] } , - BigNum { limbs: [ 0x33e248bb1c34f3d3daea56ba7f16a9, 0xf0818c66f93206930810c8ebd7cf6f, 0x002c56 ] } , - BigNum { limbs: [ 0x89c1ba44e2270b2c2515a84580e958, 0xb6d19d3684162ca6cff740b60035e4, 0x004796 ] } , - BigNum { limbs: [ 0xfa342f2e54d35b3efaf03e1f4c23a5, 0x4ed170bf21bac2867ad9bd62474fc4, 0x00426e ] } , - BigNum { limbs: [ 0xc36fd3d1a988a3c1050fc0e0b3dc5c, 0x5881b8de5b8d70b35d2e4c3f90b58e, 0x00317f ] } , - BigNum { limbs: [ 0xee7464cc2693acc7f2b0c7f97d0157, 0xcd54ee73a12d5a25364bab696dd707, 0x0044f2 ] } , - BigNum { limbs: [ 0xcf2f9e33d7c852380d4f370682feaa, 0xd9fe3b29dc1ad914a1bc5e386a2e4b, 0x002efa ] } , - BigNum { limbs: [ 0x09bb3a7eed94b5ee1cb6e72b82c6d1, 0x2cf9a0599655f39dd358a82382f466, 0x002a3b ] } , - BigNum { limbs: [ 0xb3e8c88110c74911e34917d47d3930, 0x7a598943e6f23f9c04af617e5510ed, 0x0049b2 ] } , - BigNum { limbs: [ 0xded1798f001c83984bae2ba9e576ec, 0x56ee3af2ac38ca85bda4670d2c2307, 0x000975 ] } , - BigNum { limbs: [ 0xded28970fe3f7b67b451d3561a8915, 0x5064eeaad10f68b41a63a294abe24b, 0x006a78 ] } , - BigNum { limbs: [ 0x4dc75cbe09f501a0b24ec3dca1f2ce, 0x3112ac902e13ee36737d3869b66204, 0x0031e6 ] } , - BigNum { limbs: [ 0x6fdca641f466fd5f4db13b235e0d33, 0x76407d0d4f344503648ad13821a34f, 0x004207 ] } , - BigNum { limbs: [ 0x156add501a1c6937b11e308bf0abc8, 0x363da95355ccf81be9d7b571ce05b1, 0x003e29 ] } , - BigNum { limbs: [ 0xa83925afe43f95c84ee1ce740f5439, 0x7115804a277b3b1dee30543009ffa2, 0x0035c4 ] } , - BigNum { limbs: [ 0xb50c83fd1f5c0dcd6dcd1e8a6d2938, 0x647da03f2b3cd52856ab58c24f30f6, 0x0025ad ] } , - BigNum { limbs: [ 0x08977f02defff1329232e07592d6c9, 0x42d5895e520b5e11815cb0df88d45d, 0x004e40 ] } , - BigNum { limbs: [ 0xa73479f853c1eb8d14b4edec527670, 0x6dce2e5ec6630aa522414c846da37a, 0x001450 ] } , - BigNum { limbs: [ 0x166f8907aa9a1372eb4b1113ad8991, 0x3984fb3eb6e52894b5c6bd1d6a61d9, 0x005f9d ] } , - BigNum { limbs: [ 0xd15d8f0976f55e06f8ee5e9777964d, 0x95ea54b09d10987f4e2ce1b79388c1, 0x00413d ] } , - BigNum { limbs: [ 0xec4673f68766a0f90711a0688869b4, 0x1168d4ece0379aba89db27ea447c91, 0x0032b0 ] } , - BigNum { limbs: [ 0xb6afda9637ccb788a3d4bd18e66da6, 0x518219806ce2d8c3dd1ccbc1b529ec, 0x005581 ] } , - BigNum { limbs: [ 0x06f42869c68f47775c2b41e719925b, 0x55d1101d10655a75faeb3de022db67, 0x001e6c ] } , - BigNum { limbs: [ 0x991b24aa25db0e40861b826cace87f, 0x5ee79ca9436b6c1feffb1c216f70a6, 0x007149 ] } , - BigNum { limbs: [ 0x2488de55d880f0bf79e47c93531782, 0x486b8cf439dcc719e80ced806894ad, 0x0002a4 ] } , - BigNum { limbs: [ 0xfb90de5161d3aa0e4f9e5a6854836c, 0x7730aabeaf2707d3acaf7b7234937b, 0x000453 ] } , - BigNum { limbs: [ 0xc21324ae9c8854f1b061a497ab7c95, 0x30227edece212b662b588e2fa371d7, 0x006f9a ] } , - BigNum { limbs: [ 0x514cd4e04272c008e2fb108e12e22a, 0x80e1938cd09c9a3ae5427d8e18cb54, 0x000fe6 ] } , - BigNum { limbs: [ 0x6c572e1fbbe93ef71d04ee71ed1dd7, 0x26719610acab98fef2c58c13bf39ff, 0x006407 ] } , - BigNum { limbs: [ 0xad623bf3402bd57a9634b25637c216, 0x449c6a67b9ed93981376c9cd141418, 0x003869 ] } , - BigNum { limbs: [ 0x1041c70cbe30298569cb4ca9c83deb, 0x62b6bf35c35a9fa1c4913fd4c3f13b, 0x003b84 ] } , - BigNum { limbs: [ 0xc2dfa82313ad493a3e1a7aa260077d, 0xbce2aa1625f8acb62f7f17837a2577, 0x001c25 ] } , - BigNum { limbs: [ 0xfac45adceaaeb5c5c1e5845d9ff884, 0xea707f87574f8683a888f21e5ddfdb, 0x0057c7 ] } , - BigNum { limbs: [ 0x1db465016aecf09e6f74084c8e85a6, 0xf3dd5bee9b24bd298bcb9b46025a18, 0x006cbe ] } , - BigNum { limbs: [ 0x9fef9dfe936f0e61908bf6b3717a5b, 0xb375cdaee22376104c3c6e5bd5ab3b, 0x00072e ] } , - BigNum { limbs: [ 0x07ba425b194f3be868c32a5b94f4e5, 0x27101520c4b2e11d3393b8d009aa2c, 0x000eba ] } , - BigNum { limbs: [ 0xb5e9c0a4e50cc317973cd4a46b0b1c, 0x8043147cb895521ca47450d1ce5b27, 0x006533 ] } , - BigNum { limbs: [ 0xe5eebb2c61bfc76d8878e6c92c1964, 0x3ea3f96c0440f88cd53e4cee2d698d, 0x00507c ] } , - BigNum { limbs: [ 0xd7b547d39c9c379277871836d3e69d, 0x68af303179073aad02c9bcb3aa9bc5, 0x002371 ] } , - BigNum { limbs: [ 0xcaef2e1b379cbd65f21f6521b5ffe3, 0xb92efbacec2085f75cd0394e7e1493, 0x004c10 ] } , - BigNum { limbs: [ 0xf2b4d4e4c6bf419a0de099de4a001e, 0xee242df09127ad427b37d05359f0bf, 0x0027dc ] } , - BigNum { limbs: [ 0x5a90d8902f34ee2ffffbac2e990b32, 0x85e3496a299b1a2b4aad24d743792b, 0x0042ce ] } , - BigNum { limbs: [ 0x63132a6fcf2710d0000452d166f4cf, 0x216fe03353ad190e8d5ae4ca948c28, 0x00311f ] } , - BigNum { limbs: [ 0xb5b47bb725cda97ed4be029bd47ddd, 0x6e0bba848829e2af1b87209c0c0556, 0x0072af ] } , - BigNum { limbs: [ 0x07ef8748d88e55812b41fc642b8224, 0x39476f18f51e508abc80e905cbfffd, 0x00013e ] } , - BigNum { limbs: [ 0x2bafd544a199a3fe213ce3f40c2fa1, 0x01cdf2ff819eb174b778fe8e29f421, 0x00158b ] } , - BigNum { limbs: [ 0x91f42dbb5cc25b01dec31b0bf3d060, 0xa585369dfba981c5208f0b13ae1132, 0x005e62 ] } , - BigNum { limbs: [ 0xe7f96676286b47c433afe4d106b43d, 0x310d4f00fee0175ca29996af2afe4e, 0x004b52 ] } , - BigNum { limbs: [ 0xd5aa9c89d5f0b73bcc501a2ef94bc4, 0x7645da9c7e681bdd356e72f2ad0704, 0x00289b ] } , - BigNum { limbs: [ 0xca2c4fd11289ccc9f8090ae9106aaf, 0x72623392274a8b3b1472c4aac7b30c, 0x00586f ] } , - BigNum { limbs: [ 0xf377b32eebd2323607f6f416ef9552, 0x34f0f60b55fda7fec39544f7105246, 0x001b7e ] } , - BigNum { limbs: [ 0xddcb3aae11b4f6a83569dad6cd41e9, 0xa2a0e40b14ad3ac082ec036858c652, 0x0042cb ] } , - BigNum { limbs: [ 0xdfd8c851eca70857ca96242932be18, 0x04b24592689af879551c06397f3f00, 0x003122 ] } , - BigNum { limbs: [ 0xa633eb2bd252b8f338d1145bbf0bd5, 0x83fc39549f77c4b5af9e6def1f5a2e, 0x006953 ] } , - BigNum { limbs: [ 0x177017d42c09460cc72eeaa440f42c, 0x2356f048ddd06e8428699bb2b8ab25, 0x000a9a ] } , - BigNum { limbs: [ 0xcd97301b698d332256b524d8b89e8b, 0x754e6966f69b3071acf3d7805a5c41, 0x004f5b ] } , - BigNum { limbs: [ 0xf00cd2e494cecbdda94ada27476176, 0x3204c03686ad02c82b1432217da911, 0x002492 ] } , - BigNum { limbs: [ 0x85f998168289ca7f2423392adae5b9, 0xd7a8d381273c1b290213873ae175d7, 0x004fd7 ] } , - BigNum { limbs: [ 0x37aa6ae97bd23480dbdcc5d5251a48, 0xcfaa561c560c1810d5f48266f68f7c, 0x002415 ] } , - BigNum { limbs: [ 0x461c33c1a0f0b758be078a66b064a1, 0xe1a1f2cc7087dc66f4b808f364646b, 0x0037f4 ] } , - BigNum { limbs: [ 0x7787cf3e5d6b47a741f874994f9b60, 0xc5b136d10cc056d2e35000ae73a0e8, 0x003bf8 ] } , - BigNum { limbs: [ 0x10344b217e61bd034fe540f385a129, 0x7149c0f9efc012a497e72294fe0d1b, 0x000151 ] } , - BigNum { limbs: [ 0xad6fb7de7ffa41fcb01abe0c7a5ed8, 0x360968a38d8820954020e70cd9f838, 0x00729c ] } , - BigNum { limbs: [ 0xaa12dad03920b780c10f21710ecb97, 0x2c08ab0d493cb63fc62f04e5adaf87, 0x0038b5 ] } , - BigNum { limbs: [ 0x1391282fc53b477f3ef0dd8ef1346a, 0x7b4a7e90340b7cfa11d904bc2a55cc, 0x003b38 ] } , - BigNum { limbs: [ 0xc9785e4b1a161953a535350d483019, 0x62ff5bf8d281fb472b23db94f42d8e, 0x00420b ] } , - BigNum { limbs: [ 0xf42ba4b4e445e5ac5acac9f2b7cfe8, 0x4453cda4aac637f2ace42e0ce3d7c4, 0x0031e2 ] } , - BigNum { limbs: [ 0xf91bc8feb9b112808f505c45cb015c, 0x917dc58e99c00d615843aba8be67e6, 0x00109e ] } , - BigNum { limbs: [ 0xc4883a0144aaec7f70afa2ba34fea5, 0x15d5640ee38825d87fc45df9199d6c, 0x00634f ] } , - BigNum { limbs: [ 0xa0b2c8a4a7bc2e69a5eae3e0a37475, 0x723faf835210730c75680995aa200f, 0x006fb5 ] } , - BigNum { limbs: [ 0x1cf13a5b569fd0965a151b1f5c8b8c, 0x35137a1a2b37c02d62a0000c2de544, 0x000438 ] } , - BigNum { limbs: [ 0x5cf9ee56a0d33e35042724c5b436bb, 0xc0eebcb1f4772ef461072f445e70e7, 0x00080e ] } , - BigNum { limbs: [ 0x60aa14a95d88c0cafbd8da3a4bc946, 0xe6646ceb88d104457700da5d79946c, 0x006bde ] } , - BigNum { limbs: [ 0xe4ef4d5372d2492e81ced8221f9f8a, 0x1efd37f7f7e0769798bf3a5553980d, 0x0060b7 ] } , - BigNum { limbs: [ 0xd8b4b5ac8b89b5d17e3126dde06077, 0x8855f1a58567bca23f48cf4c846d45, 0x001336 ] } , - BigNum { limbs: [ 0xc6252dbf1b326892f4d9b3220826cd, 0xfeab6ca661472557041d93d5177942, 0x0013b1 ] } , - BigNum { limbs: [ 0xf77ed540e329966d0b264bddf7d934, 0xa8a7bcf71c010de2d3ea75ccc08c10, 0x00603b ] } , - BigNum { limbs: [ 0x9b851d08727d4269878537a09ab251, 0xe2b20f3384ec13ab948f2be0c4358d, 0x005366 ] } , - BigNum { limbs: [ 0x221ee5f78bdebc96787ac75f654db0, 0xc4a11a69f85c1f8e4378ddc113cfc6, 0x002086 ] } , - BigNum { limbs: [ 0x97fa6b553424bce61ba1af6202359a, 0x62790c9ec5709483ded871817d0f54, 0x0027cf ] } , - BigNum { limbs: [ 0x25a997aaca374219e45e4f9dfdca67, 0x44da1cfeb7d79eb5f92f98205af5ff, 0x004c1e ] } , - BigNum { limbs: [ 0xc62920e6caa9f8f2292b77ec6944b7, 0x17e308d1480c85fddad45ca496fc0c, 0x006ddc ] } , - BigNum { limbs: [ 0xf77ae21933b2060dd6d4871396bb4a, 0x8f7020cc353bad3bfd33acfd410946, 0x000611 ] } , - BigNum { limbs: [ 0xcc6493ffad656f51eae331d45e4567, 0x9478a2d01333d6a928516c6c492af2, 0x0048b3 ] } , - BigNum { limbs: [ 0xf13f6f0050f68fae151ccd2ba1ba9a, 0x12da86cd6a145c90afb69d358eda60, 0x002b3a ] } , - BigNum { limbs: [ 0xa4b9a7d9b44f7d6609134c8fd05714, 0xef733c2089cf6b37fc2d2bce9a49f6, 0x006304 ] } , - BigNum { limbs: [ 0x18ea5b264a0c8199f6ecb2702fa8ed, 0xb7dfed7cf378c801dbdaddd33dbb5d, 0x0010e8 ] } , - BigNum { limbs: [ 0x01287aa8e28eee99c2146c444e519a, 0xaa852cf69d9898ecff7fc2e04b67ab, 0x0025ea ] } , - BigNum { limbs: [ 0xbc7b88571bcd10663deb92bbb1ae67, 0xfccdfca6dfaf9a4cd88846c18c9da8, 0x004e02 ] } , - BigNum { limbs: [ 0x6c05295b5fb41cb8d6b4ecef99c9e8, 0x71a09ca75e9ecf0144808af6112ecb, 0x001783 ] } , - BigNum { limbs: [ 0x519ed9a49ea7e247294b1210663619, 0x35b28cf61ea9643893877eabc6d688, 0x005c6a ] } , - BigNum { limbs: [ 0x0dab4c4a2a63ad2369ef864781d95e, 0x2f7c6017a94f9b01da56279eb5d9e5, 0x003cd1 ] } , - BigNum { limbs: [ 0xaff8b6b5d3f851dc961078b87e26a3, 0x77d6c985d3f89837fdb1e203222b6e, 0x00371c ] } , - BigNum { limbs: [ 0xfbbf05605e22049088086fe345cf99, 0x9962d49e98f824a86f10b7e39f2849, 0x004955 ] } , - BigNum { limbs: [ 0xc1e4fd9fa039fa6f77f78f1cba3068, 0x0df054fee4500e9168f751be38dd09, 0x002a98 ] } , - BigNum { limbs: [ 0x6ea85e98587c4a13068409bc82e244, 0x73eb7bcba57289a774bf888a996f9c, 0x0052c7 ] } , - BigNum { limbs: [ 0x4efba467a5dfb4ecf97bf5437d1dbd, 0x3367add1d7d5a992634881173e95b7, 0x002126 ] } , - BigNum { limbs: [ 0x15a25c56a25116ef4661cf681ac890, 0x122395c63dc1d8108a1f42d3561429, 0x000157 ] } , - BigNum { limbs: [ 0xa801a6a95c0ae810b99e2f97e53771, 0x952f93d73f865b294de8c6ce81f12a, 0x007296 ] } , - BigNum { limbs: [ 0xfa85c091fab993f2d6a61c264bba11, 0xc9de3a5deb69cc970bd5f2e6c815a4, 0x005469 ] } , - BigNum { limbs: [ 0xc31e426e03a26b0d2959e2d9b445f0, 0xdd74ef3f91de66a2cc3216bb0fefae, 0x001f83 ] } , - BigNum { limbs: [ 0x9cf7f79590474d5947ce0ad319cdc7, 0xe9425e38ffcc78b5a5b93d41590f4b, 0x0054d9 ] } , - BigNum { limbs: [ 0x20ac0b6a6e14b1a6b831f42ce6323a, 0xbe10cb647d7bba84324ecc607ef608, 0x001f13 ] } , - BigNum { limbs: [ 0x059903e0524868e55b60810a7f877b, 0xe6dafe0adda151ded54695836adc05, 0x006bea ] } , - BigNum { limbs: [ 0xb80aff1fac13961aa49f7df5807886, 0xc0782b929fa6e15b02c1741e6d294e, 0x000802 ] } , - BigNum { limbs: [ 0xe617879a72d893b66d13df0b850d61, 0x14ed7cb17771b59db72419438d24fd, 0x002e07 ] } , - BigNum { limbs: [ 0xd78c7b658b836b4992ec1ff47af2a0, 0x9265acec05d67d9c20e3f05e4ae055, 0x0045e6 ] } , - BigNum { limbs: [ 0xe4824fbac5f8e7a21ac44df3477076, 0x4574e3442ee136aebb2396bd4f09d5, 0x0062b3 ] } , - BigNum { limbs: [ 0xd921b3453863175de53bb10cb88f8b, 0x61de46594e66fc8b1ce472e488fb7d, 0x00113a ] } , - BigNum { limbs: [ 0xb8ecee197d9af0e3712b897f88b4d1, 0x00c45b561179be483f87c82a93f63f, 0x001a16 ] } , - BigNum { limbs: [ 0x04b714e680c10e1c8ed47580774b30, 0xa68ece476bce74f198804177440f14, 0x0059d7 ] } , - BigNum { limbs: [ 0x94ef84e6b7b995a1041f9488f68dae, 0x2ec1fc6138bd21f6d173aa046fe4ca, 0x0026c6 ] } , - BigNum { limbs: [ 0x28b47e1946a2695efbe06a77097253, 0x78912d3c448b114306945f9d682089, 0x004d27 ] } , - BigNum { limbs: [ 0x6d56a1d006b6372fac4dd82e55e945, 0x85187afb65a3c87c53ce3f7a76569b, 0x004129 ] } , - BigNum { limbs: [ 0x504d612ff7a5c7d053b226d1aa16bc, 0x223aaea217a46abd8439ca2761aeb8, 0x0032c4 ] } , - BigNum { limbs: [ 0x63ef45ad4908e6f172f93272aef9c6, 0xa5933f9d639627bceabba9c13bcb9a, 0x0011b5 ] } , - BigNum { limbs: [ 0x59b4bd52b553180e8d06cc8d51063b, 0x01bfea0019b20b7ced4c5fe09c39b9, 0x006238 ] } , - BigNum { limbs: [ 0x435d45df81fc513e24cf88d26d14bd, 0x4e82e0a4d4c5a66c4465ffe15f6be2, 0x00628f ] } , - BigNum { limbs: [ 0x7a46bd207c5fadc1db30762d92eb44, 0x58d048f8a8828ccd93a209c0789971, 0x00115e ] } , - BigNum { limbs: [ 0x5755762ed0dc2e1fda0410c4e4d674, 0x48feadc8d91349f2892deb1068f424, 0x0025ff ] } , - BigNum { limbs: [ 0x664e8cd12d7fd0e025fbee3b1b298d, 0x5e547bd4a434e9474eda1e916f112f, 0x004dee ] } , - BigNum { limbs: [ 0x976a04577e50444bc5e118fb425b35, 0xe8512409c3857773b21c8454d0d6c7, 0x001273 ] } , - BigNum { limbs: [ 0x2639fea8800bbab43a1ee604bda4cc, 0xbf020593b9c2bbc625eb854d072e8c, 0x006179 ] } , - BigNum { limbs: [ 0x4fb65d28974f6792018eab205ac3e1, 0x8d26543a3a60f8147ec78eec0ecf24, 0x006da6 ] } , - BigNum { limbs: [ 0x6deda5d7670c976dfe7153dfa53c20, 0x1a2cd56342e73b2559407ab5c9362f, 0x000647 ] } , - BigNum { limbs: [ 0x98fe6b6879e3c225a29005376888d7, 0x028e0bf569fd1c2b22c48fbf68ae2d, 0x000ebb ] } , - BigNum { limbs: [ 0x24a5979784783cda5d6ff9c897772a, 0xa4c51da8134b170eb54379e26f5726, 0x006532 ] } , - BigNum { limbs: [ 0x5c491d95facfe2393b548d4204a51f, 0xc40edecaced7de301cf8986c431565, 0x0020c0 ] } , - BigNum { limbs: [ 0x615ae56a038c1cc6c4ab71bdfb5ae2, 0xe3444ad2ae705509bb0f713594efee, 0x00532c ] } , - BigNum { limbs: [ 0xad139cafdaa772d6e616c9c1421c9e, 0x0a3d1e68f810578306d723b212c53f, 0x00348b ] } , - BigNum { limbs: [ 0x1090665023b48c2919e9353ebde363, 0x9d160b348537dbb6d130e5efc54014, 0x003f62 ] } , - BigNum { limbs: [ 0x700a79da2ac3c6085f76ac583f79a0, 0x140bc42b07da6b95d0e40b88b4ff01, 0x002e99 ] } , - BigNum { limbs: [ 0x4d998925d39838f7a08952a7c08661, 0x93476572756dc7a40723fe19230652, 0x004554 ] } , - BigNum { limbs: [ 0x81818041738bf1e847f9433776feb1, 0x0ebca8a36a05a5b6c8dde49bad804f, 0x00290a ] } , - BigNum { limbs: [ 0x3c2282be8ad00d17b806bbc8890150, 0x989680fa13428d830f2a25062a8504, 0x004ae3 ] } , - BigNum { limbs: [ 0x309e790e65064e32306af340c1db2d, 0x686764a69972d87fb06401dd4ca805, 0x000bd0 ] } , - BigNum { limbs: [ 0x8d0589f19955b0cdcf950bbf3e24d4, 0x3eebc4f6e3d55aba27a407c48b5d4e, 0x00681d ] } , - BigNum { limbs: [ 0xde5b52cfa56e5ef9702d02ce6b3081, 0xdded4361edc32293b4da09077a31d3, 0x001395 ] } , - BigNum { limbs: [ 0xdf48b03058eda0068fd2fc3194cf80, 0xc965e63b8f8510a6232e009a5dd37f, 0x006057 ] } , - BigNum { limbs: [ 0x3a7a3a30e164ebf89184cfc722bd9f, 0x110afa3cec1ecf530b2c40345efea5, 0x000c0f ] } , - BigNum { limbs: [ 0x8329c8cf1cf713076e7b2f38dd4262, 0x96482f60912963e6ccdbc96d7906ae, 0x0067de ] } , - BigNum { limbs: [ 0x82c7aa2f50c6718c98f99408577a27, 0x59b976e328f1826addffd2285db4e5, 0x002059 ] } , - BigNum { limbs: [ 0x3adc58d0ad958d7367066af7a885da, 0x4d99b2ba5456b0cefa0837797a506e, 0x005394 ] } , - BigNum { limbs: [ 0x8fd7eef9244cb298fb4636446409e3, 0x01c7ef28e18206ab7288252332b360, 0x004783 ] } , - BigNum { limbs: [ 0x2dcc1406da0f4c6704b9c8bb9bf61e, 0xa58b3a749bc62c8e657fe47ea551f3, 0x002c6a ] } , - BigNum { limbs: [ 0x32aeceebd86026c4febf0b91c6806d, 0xa560942c6498c9107c1635743781d4, 0x0012a7 ] } , - BigNum { limbs: [ 0x8af5341425fbd83b0140f36e397f94, 0x01f2957118af6a295bf1d42da0837f, 0x006146 ] } , - BigNum { limbs: [ 0x1d7f2bc75be4ac1b670bcfcf1f849a, 0x509f02a10d5b316a6fe11176b0f9a8, 0x003c30 ] } , - BigNum { limbs: [ 0xa024d738a27752e498f42f30e07b67, 0x56b426fc6fed01cf6826f82b270bab, 0x0037bd ] } , - BigNum { limbs: [ 0xafa9321aff17c9004c5e11eb9505f9, 0x07f5cae1a195084571c7ab7696e4c1, 0x002e99 ] } , - BigNum { limbs: [ 0x0dfad0e4ff4435ffb3a1ed146afa08, 0x9f5d5ebbdbb32af466405e2b412092, 0x004554 ] } , - BigNum { limbs: [ 0x292d24283ac6fa129eee3f986b8455, 0x05c46d5e39f3855c0d1a0fb582e60a, 0x003852 ] } , - BigNum { limbs: [ 0x9476ded7c39504ed6111bf67947bac, 0xa18ebc3f4354adddcaedf9ec551f49, 0x003b9b ] } , - BigNum { limbs: [ 0xff6d043f13d90de781a5b5ae382857, 0xc1f34621fa6d9a2287d5f9220e2fb7, 0x003caa ] } , - BigNum { limbs: [ 0xbe36fec0ea82f1187e5a4951c7d7aa, 0xe55fe37b82da99175032107fc9d59b, 0x003742 ] } , - BigNum { limbs: [ 0x36a4cdd6c52bf66dea2db07aecfb2c, 0xb07666086a21dc850dde1ba420a978, 0x00081f ] } , - BigNum { limbs: [ 0x86ff35293930089215d24e851304d5, 0xf6dcc395132656b4ca29edfdb75bdb, 0x006bcd ] } , - BigNum { limbs: [ 0xcff89970e84a2fd43576dcf6601f6a, 0x95fd98daca15ee47fe04bc7132137e, 0x0020d0 ] } , - BigNum { limbs: [ 0xedab698f1611cf2bca8922099fe097, 0x115590c2b33244f1da034d30a5f1d4, 0x00531d ] } , - BigNum { limbs: [ 0x4bf510cf7c7c8c9e768704f04e2b80, 0x2d1b75a1ffc63094c7611bdd129b82, 0x002527 ] } , - BigNum { limbs: [ 0x71aef23081df72618978fa0fb1d481, 0x7a37b3fb7d8202a510a6edc4c569d1, 0x004ec6 ] } , - BigNum { limbs: [ 0xc766da81eb5f3a10cba8cca132a4af, 0x9895da559f7bcc1f97abceafe390c3, 0x002aef ] } , - BigNum { limbs: [ 0xf63d287e12fcc4ef3457325ecd5b52, 0x0ebd4f47ddcc671a405c3af1f4748f, 0x0048fe ] } , - BigNum { limbs: [ 0x77ccfd0e68f45d81c3ad1e35f68aa0, 0x04249a2841514c8df7a0b2153271d0, 0x007214 ] } , - BigNum { limbs: [ 0x45d705f19567a17e3c52e0ca097561, 0xa32e8f753bf6e6abe067578ca59383, 0x0001d9 ] } , - BigNum { limbs: [ 0xe42b3486654278312cda878efea016, 0x69b4cb4cf4fafbed3003ef8c3a813e, 0x001cc7 ] } , - BigNum { limbs: [ 0xd978ce79991986ced3257771015feb, 0x3d9e5e50884d374ca8041a159d8414, 0x005726 ] } , - BigNum { limbs: [ 0xdc08ba88d180d93188d4192bcfb84d, 0xa6db496e5b977354760383a269ab6e, 0x001e05 ] } , - BigNum { limbs: [ 0xe19b48772cdb25ce772be5d43047b4, 0x0077e02f21b0bfe5620485ff6e59e4, 0x0055e8 ] } , - BigNum { limbs: [ 0x9617aa98504fbcdf57909bea0a2da4, 0x5272602dee9b726a2311ddae84a49a, 0x005643 ] } , - BigNum { limbs: [ 0x278c5867ae0c4220a86f6315f5d25d, 0x54e0c96f8eacc0cfb4f62bf35360b9, 0x001daa ] } , - BigNum { limbs: [ 0x74a072f75e1eafc6b7ae4cbe9918df, 0x0ca1fa1ca2ce7bd130433636e1f719, 0x003963 ] } , - BigNum { limbs: [ 0x49039008a03d4f394851b24166e722, 0x9ab12f80da79b768a7c4d36af60e3a, 0x003a8a ] } , - BigNum { limbs: [ 0x0e4544b75517c16711866509b0117e, 0x8e613f107412f75f355eb5219f4d29, 0x005860 ] } , - BigNum { limbs: [ 0xaf5ebe48a9443d98ee7999f64fee83, 0x18f1ea8d09353bdaa2a9548038b82a, 0x001b8d ] } , - BigNum { limbs: [ 0x6b2362c6e3206af330c75237fd3287, 0xcf9dbeeb7a113d432c185eaed41723, 0x003918 ] } , - BigNum { limbs: [ 0x5280a0391b3b940ccf38acc802cd7a, 0xd7b56ab20336f5f6abefaaf303ee30, 0x003ad4 ] } , - BigNum { limbs: [ 0xfe6141c56e87705d1a4de431b14902, 0xb6f79972f279436a9109526def19bc, 0x000611 ] } , - BigNum { limbs: [ 0xbf42c13a8fd48ea2e5b21ace4eb6ff, 0xf05b902a8aceefcf46feb733e8eb96, 0x006ddb ] } , - BigNum { limbs: [ 0x771ac41ed853a25780bbfe03ec55d5, 0xa563d5b51c810b94291b65dd88b855, 0x000bf6 ] } , - BigNum { limbs: [ 0x46893ee126085ca87f4400fc13aa2c, 0x01ef53e860c727a5aeeca3c44f4cfe, 0x0067f7 ] } , - BigNum { limbs: [ 0x3ef3285a12e45cc86a0ebf672f9539, 0x73a1f676d8115d3e5f439eda2e7ab2, 0x001b27 ] } , - BigNum { limbs: [ 0x7eb0daa5eb77a23795f13f98d06ac8, 0x33b13326a536d5fb78c46ac7a98aa1, 0x0058c6 ] } , - BigNum { limbs: [ 0x078bb4a345264200b56e295c87eb31, 0x8d23be8445a567589623fdf89c7c4c, 0x002c63 ] } , - BigNum { limbs: [ 0xb6184e5cb935bcff4a91d5a37814d0, 0x1a2f6b1937a2cbe141e40ba93b8907, 0x00478a ] } , - BigNum { limbs: [ 0xc428f8a2654518b52166440df9b688, 0x3d89e044cc6c8191cc5fd4eb468731, 0x002ec4 ] } , - BigNum { limbs: [ 0xf97b0a5d9916e64ade99baf2064979, 0x69c94958b0dbb1a80ba834b6917e21, 0x004529 ] } , - BigNum { limbs: [ 0x356a0242c49b8fb3212df6a0e2db64, 0x410905166866b24236a3c7e932fe37, 0x004cde ] } , - BigNum { limbs: [ 0x883a00bd39c06f4cded2085f1d249d, 0x664a248714e180f7a16441b8a5071c, 0x00270f ] } , - BigNum { limbs: [ 0x4a92da52332af0b26f1f6b19b802a2, 0x903bb1db99afcd62607b6d2f5a7aed, 0x005ee5 ] } , - BigNum { limbs: [ 0x731128adcb310e4d90e093e647fd5f, 0x171777c1e39865d7778c9c727d8a66, 0x001508 ] } , - BigNum { limbs: [ 0x34b261df65292e9ebf6443bba0f2ed, 0x19bd16418157f24ce6e76cd2d04b7e, 0x0060b4 ] } , - BigNum { limbs: [ 0x88f1a1209932d061409bbb445f0d14, 0x8d96135bfbf040ecf1209ccf07b9d5, 0x001339 ] } , - BigNum { limbs: [ 0x3654f0611097c6b6a28c1f1914c201, 0x62bf4cb52ef4097fce3915c694a5c5, 0x004e30 ] } , - BigNum { limbs: [ 0x874f129eedc438495d73dfe6eb3e00, 0x4493dce84e5429ba09cef3db435f8e, 0x0025bd ] } , - BigNum { limbs: [ 0xa053141f7d3d7cf9065e7bcadcfc19, 0xb655d0e63d59e74dac8f8f64831f8c, 0x006be1 ] } , - BigNum { limbs: [ 0x1d50eee0811e8206f9a183352303e8, 0xf0fd58b73fee4bec2b787a3d54e5c7, 0x00080b ] } , - BigNum { limbs: [ 0x1211542079c63a04b57a388ce6c261, 0x7bac5f90a18bb38f7e83bd6db07800, 0x00699e ] } , - BigNum { limbs: [ 0xab92aedf8495c4fb4a85c673193da0, 0x2ba6ca0cdbbc7faa59844c34278d53, 0x000a4f ] } , - BigNum { limbs: [ 0x0ee0c64f8b7ac1ff7ba2024a37b7bb, 0x93e4697b1d9ce0c431b6db18076ff9, 0x000834 ] } , - BigNum { limbs: [ 0xaec33cb072e13d00845dfcb5c84846, 0x136ec0225fab5275a6512e89d0955a, 0x006bb9 ] } , - BigNum { limbs: [ 0x01fa182468ba7c595e445abe442dca, 0x879144d0fcd2fcc9670838442647e3, 0x0051e8 ] } , - BigNum { limbs: [ 0xbba9eadb95a182a6a1bba441bbd237, 0x1fc1e4cc8075367070ffd15db1bd70, 0x002205 ] } , - BigNum { limbs: [ 0x9afd4618c5e1bc80afccf22a6f8a52, 0x1540ac49fb06bbc6c6b9a9fc918afb, 0x005101 ] } , - BigNum { limbs: [ 0x22a6bce7387a427f50330cd59075af, 0x92127d5382417773114e5fa5467a58, 0x0022ec ] } , - BigNum { limbs: [ 0x1ee525b1ec67d1c5c9581135a7ab68, 0x30ea2e1c440d8b23d1f54cdf1fae7b, 0x00349e ] } , - BigNum { limbs: [ 0x9ebedd4e11f42d3a36a7edca585499, 0x7668fb81393aa8160612bcc2b856d8, 0x003f4f ] } , - BigNum { limbs: [ 0xae2ac8e1522fb525497b14298a9c76, 0x29bc131a89602fe31e0bda03eafb9b, 0x005ebe ] } , - BigNum { limbs: [ 0x0f793a1eac2c49dab684ead675638b, 0x7d971682f3e80356b9fc2f9ded09b8, 0x00152f ] } , - BigNum { limbs: [ 0x5b2f702a43d37b7ab8dac27f3e254c, 0x42d5471bc24662632562d7c80a5369, 0x0064a9 ] } , - BigNum { limbs: [ 0x627492d5ba88838547253c80c1dab5, 0x647de281bb01d0d6b2a531d9cdb1ea, 0x000f44 ] } , - BigNum { limbs: [ 0x77c91e81814f8b58eef8ea01b32225, 0xbbcf1c263cfc2d486a35143271ee7d, 0x003ea3 ] } , - BigNum { limbs: [ 0x45dae47e7d0c73a7110714fe4cdddc, 0xeb840d77404c05f16dd2f56f6616d6, 0x003549 ] } , - BigNum { limbs: [ 0x7e33d54601da6d389208e6356979ab, 0xc09b9fa4dfb218819428c8056d1d39, 0x0028c1 ] } , - BigNum { limbs: [ 0x3f702db9fc8191c76df718ca968656, 0xe6b789f89d961ab843df419c6ae81a, 0x004b2b ] } , - BigNum { limbs: [ 0xa5905736c46ea4c5475b119e356265, 0xd098fc0f8207b6faf0e0d74f7a1025, 0x00690b ] } , - BigNum { limbs: [ 0x1813abc939ed5a3ab8a4ed61ca9d9c, 0xd6ba2d8dfb407c3ee72732525df52e, 0x000ae1 ] } , - BigNum { limbs: [ 0xc3720c7bf19f0c42aa886429513423, 0xef4adbfcd69d77f7f625dacb9ddb3b, 0x0045eb ] } , - BigNum { limbs: [ 0xfa31f6840cbcf2bd55779ad6aecbde, 0xb8084da0a6aabb41e1e22ed63a2a17, 0x002e01 ] } , - BigNum { limbs: [ 0xd1b9212b65bf214e921640c47a0a45, 0xd6554ec4fbad86e639ebf267f538dd, 0x00278f ] } , - BigNum { limbs: [ 0xebeae1d4989cddb16de9be3b85f5bc, 0xd0fddad8819aac539e1c1739e2cc75, 0x004c5d ] } , - BigNum { limbs: [ 0x0c31c44ac745f527c512ff22e85c3a, 0x2e4cd97518258238f206e24c0b1c2b, 0x002cbc ] } , - BigNum { limbs: [ 0xb1723eb5371609d83aecffdd17a3c7, 0x790650286522b100e6012755cce928, 0x004731 ] } , - BigNum { limbs: [ 0x9989268429206117d51008e47afac8, 0x2c5a3a4f9c6aeb6b7a036c657da412, 0x001856 ] } , - BigNum { limbs: [ 0x241adc7bd53b9de82aeff61b850539, 0x7af8ef4de0dd47ce5e049d3c5a6141, 0x005b97 ] } , - BigNum { limbs: [ 0x3c1bffa488ae4c91a9d99c561db4f3, 0x5df95918a808d3a4931256f1413ddf, 0x002162 ] } , - BigNum { limbs: [ 0x8188035b75adb26e562662a9e24b0e, 0x4959d084d53f5f9544f5b2b096c774, 0x00528b ] } , - BigNum { limbs: [ 0xfb570516b5e5cefc96ef08c768f7bb, 0x202424aab720e62747593b3d0256dd, 0x004ae0 ] } , - BigNum { limbs: [ 0xc24cfde9487630036910f638970846, 0x872f04f2c6274d1290aece64d5ae75, 0x00290d ] } , - BigNum { limbs: [ 0x6d477b956af945571da68e63a7c767, 0xa9008ab58c52c373a0f84872096ba6, 0x005eed ] } , - BigNum { limbs: [ 0x505c876a9362b9a8e259709c58389a, 0xfe529ee7f0f56fc6370fc12fce99ad, 0x0014ff ] } , - BigNum { limbs: [ 0xc5dd2ae9e83d223d69281ae1af9955, 0x35a347e2e5a7d5bf621e6cdc1ff837, 0x00668d ] } , - BigNum { limbs: [ 0xf7c6d816161edcc296d7e41e5066ac, 0x71afe1ba97a05d7a75e99cc5b80d1b, 0x000d60 ] } , - BigNum { limbs: [ 0xba0324468f865128736875d438f2d6, 0x73380eda1d3ba312905b71fb212d57, 0x001dae ] } , - BigNum { limbs: [ 0x03a0deb96ed5add78c97892bc70d2b, 0x341b1ac3600c902747ac97a6b6d7fc, 0x00563f ] } , - BigNum { limbs: [ 0x5e326a7b6d1553fd517bb125e87aa6, 0xbdab877991b02c465a03f89c87977d, 0x000c40 ] } , - BigNum { limbs: [ 0x5f7198849146ab02ae844dda17855b, 0xe9a7a223eb9806f37e041105506dd6, 0x0067ac ] } , - BigNum { limbs: [ 0x5b47aa7fc702df407a3035875afd49, 0xa961d2308993234e4002f9a199a5c3, 0x004f00 ] } , - BigNum { limbs: [ 0x625c588037591fbf85cfc978a502b8, 0xfdf1576cf3b50feb980510003e5f90, 0x0024ec ] } , - BigNum { limbs: [ 0xfb9dc693cfbdcbd6d7b660f42ebdf7, 0xe8ad2baf59d5de4ac442c8ffc9599c, 0x004111 ] } , - BigNum { limbs: [ 0xc2063c6c2e9e332928499e0bd1420a, 0xbea5fdee237254ef13c540a20eabb6, 0x0032db ] } , - BigNum { limbs: [ 0x14d71f3d115d480b10922f5983b2e8, 0x80c524bd040ea27554f6cda2dd8143, 0x0046bf ] } , - BigNum { limbs: [ 0xa8cce3c2ecfeb6f4ef6dcfa67c4d19, 0x268e04e0793990c483113bfefa8410, 0x002d2e ] } , - BigNum { limbs: [ 0x8a4ccd5a8ffdaea479ce0adf737d2c, 0x281fc9738b6acf6a3c9e3de03c4b9f, 0x0057b4 ] } , - BigNum { limbs: [ 0x335735a56e5e505b8631f4208c82d5, 0x7f336029f1dd63cf9b69cbc19bb9b4, 0x001c39 ] } , - BigNum { limbs: [ 0xfa9da9aea7b7a807f3949ff7497ac4, 0x94e273230bc82fa52c43468bc2cb46, 0x0067d1 ] } , - BigNum { limbs: [ 0xc306595156a456f80c6b5f08b6853d, 0x1270b67a71800394abc4c316153a0c, 0x000c1c ] } , - BigNum { limbs: [ 0xf90efcf7889498c0fa84462b5be3f9, 0x506cf5b4ad5c5dfa071dbcb2f776a7, 0x004583 ] } , - BigNum { limbs: [ 0xc495060875c7663f057bb8d4a41c08, 0x56e633e8cfebd53fd0ea4ceee08eab, 0x002e6a ] } , - BigNum { limbs: [ 0x4bd6bd4ae9ab1cba6dbc0d400aabca, 0x020cfd306c1de084a51cd4d6f9f64b, 0x00678e ] } , - BigNum { limbs: [ 0x71cd45b514b0e2459243f1bff55437, 0xa5462c6d112a52b532eb34cade0f08, 0x000c5f ] } , - BigNum { limbs: [ 0xadc30be0afecd9400809b932c038e7, 0x6d07fcafce4a9a767be86caf30f381, 0x0063a0 ] } , - BigNum { limbs: [ 0x0fe0f71f4e6f25bff7f645cd3fc71a, 0x3a4b2cedaefd98c35c1f9cf2a711d2, 0x00104d ] } , - BigNum { limbs: [ 0xfe8d47e5eb3bac52f1982243ace47a, 0xd6124eee8fcbbcf665d106968cdd39, 0x0039da ] } , - BigNum { limbs: [ 0xbf16bb1a132052ad0e67dcbc531b87, 0xd140daaeed7c76437237030b4b2819, 0x003a12 ] } , - BigNum { limbs: [ 0x8b5ce291f218c9dd74958e6cca1c43, 0x7e5763a2583ce605c2850effefc8c8, 0x00144b ] } , - BigNum { limbs: [ 0x3247206e0c4335228b6a709335e3be, 0x28fbc5fb250b4d341582faa1e83c8b, 0x005fa2 ] } , - BigNum { limbs: [ 0x2e5e696f842cffe144608f74eaac1b, 0x8fb393a3ab78c209cb769b65fa1ebe, 0x0030f6 ] } , - BigNum { limbs: [ 0x8f4599907a2eff1ebb9f6f8b1553e6, 0x179f95f9d1cf71300c916e3bdde695, 0x0042f7 ] } , - BigNum { limbs: [ 0xa5b8d3dda353e8a443e6dbbea71c3d, 0x4da2acaeebdd573de9e05c005ca05c, 0x003e26 ] } , - BigNum { limbs: [ 0x17eb2f225b08165bbc19234158e3c4, 0x59b07cee916adbfbee27ada17b64f7, 0x0035c7 ] } , - BigNum { limbs: [ 0x78b65b0a65311a96bd8776dcb3a3de, 0x40eea7b1a760a3c8fb7b4ca1b1ceb3, 0x000c7f ] } , - BigNum { limbs: [ 0x44eda7f5992ae469427888234c5c23, 0x666481ebd5e78f70dc8cbd002636a0, 0x00676e ] } , - BigNum { limbs: [ 0xdc89a891d9f52411e9aa243ff64fb7, 0xf8687719af42f436be5744d2fd476f, 0x0005fd ] } , - BigNum { limbs: [ 0xe11a5a6e2466daee1655dac009b04a, 0xaeeab283ce053f0319b0c4cedabde3, 0x006def ] } , - BigNum { limbs: [ 0xa76a4d12a65a59e004a8616ad310f0, 0xdcd7f3e6f15ec6c4f5b601e21ff0d9, 0x0016c4 ] } , - BigNum { limbs: [ 0x1639b5ed5801a51ffb579d952cef11, 0xca7b35b68be96c74e25207bfb8147a, 0x005d28 ] } , - BigNum { limbs: [ 0x0467bb084c964790407b4446e144b0, 0x40ff209302f1e88adcdbbfcc7732aa, 0x004269 ] } , - BigNum { limbs: [ 0xb93c47f7b1c5b76fbf84bab91ebb51, 0x6654090a7a564aaefb2c49d560d2a9, 0x003184 ] } , - BigNum { limbs: [ 0x7f89984e1f494bd58aa66bb4834fd9, 0xf85ceb431b3e231aa97f1b81adbf24, 0x000a1c ] } , - BigNum { limbs: [ 0x3e1a6ab1df12b32a7559934b7cb028, 0xaef63e5a620a101f2e88ee202a462f, 0x0069d0 ] } , - BigNum { limbs: [ 0x6e71b10378df567095602a91bfeb57, 0x333f31a2b277845fe7e2ace6ee7a68, 0x0068bf ] } , - BigNum { limbs: [ 0x4f3251fc857ca88f6a9fd46e4014aa, 0x7413f7facad0aed9f0255cbae98aeb, 0x000b2e ] } , - BigNum { limbs: [ 0x72e12d4ef7b1bc1d048d5e4c8f92d5, 0x1919c9e42d245edfec475cd95fd90c, 0x0006dd ] } , - BigNum { limbs: [ 0x4ac2d5b106aa42e2fb72a0b3706d2c, 0x8e395fb95023d459ebc0acc8782c47, 0x006d10 ] } , - BigNum { limbs: [ 0xa6caeec0019cce89f8a28c04b02908, 0x4254d49cb10f9468da4449c73ffa3f, 0x002507 ] } , - BigNum { limbs: [ 0x16d9143ffcbf3076075d72fb4fd6f9, 0x64fe5500cc389ed0fdc3bfda980b14, 0x004ee6 ] } , - BigNum { limbs: [ 0x7678b48bb1db8fb4bd8e160157197c, 0x9af535ae0e253b310b396831542a11, 0x004279 ] } , - BigNum { limbs: [ 0x472b4e744c806f4b4271e8fea8e685, 0x0c5df3ef6f22f808cccea17083db42, 0x003174 ] } , - BigNum { limbs: [ 0xc281a93aef62e96137a691be2497f9, 0xd3cb28a3b5a16588627f08e73b1b20, 0x004bab ] } , - BigNum { limbs: [ 0xfb2259c50ef9159ec8596d41db6808, 0xd38800f9c7a6cdb1758900ba9cea32, 0x002841 ] } , - BigNum { limbs: [ 0xf4c10059af274ee2cc0434baf3e2fb, 0xd18546fdbca8764eb4562d580122db, 0x001aec ] } , - BigNum { limbs: [ 0xc8e302a64f34b01d33fbca450c1d06, 0xd5cde29fc09fbceb23b1dc49d6e277, 0x005900 ] } , - BigNum { limbs: [ 0x2d6fb35a5cecb4467864c0e822f4f6, 0x40d594cfa384a9b31eb7a0574d1a1c, 0x001a4b ] } , - BigNum { limbs: [ 0x90344fa5a16f4ab9879b3e17dd0b0b, 0x667d94cdd9c38986b950694a8aeb37, 0x0059a2 ] } , - BigNum { limbs: [ 0x0048cde3a189929b8c6581b7a57bb6, 0xc9c6a859b493283d27539aa3079e7e, 0x001a9f ] } , - BigNum { limbs: [ 0xbd5b351c5cd26c64739a7d485a844b, 0xdd8c8143c8b50afcb0b46efed066d5, 0x00594d ] } , - BigNum { limbs: [ 0x901f632ec9e7867e4f0728f664f220, 0x29d3d7d78713ff0e7a5f644cc3151a, 0x00256e ] } , - BigNum { limbs: [ 0x2d849fd134747881b0f8d6099b0de1, 0x7d7f51c5f634342b5da8a55514f039, 0x004e7f ] } , - BigNum { limbs: [ 0x8f4de46dd12913aa9ae8a21f3d3b2a, 0xc598ec5b2425c7cd9306078735756a, 0x006528 ] } , - BigNum { limbs: [ 0x2e561e922d32eb5565175ce0c2c4d7, 0xe1ba3d4259226b6c4502021aa28fe9, 0x000ec4 ] } , - BigNum { limbs: [ 0x13ba7565944c5b1543c85450272199, 0xf3850c2463a95f9cce23d45411857f, 0x00207f ] } , - BigNum { limbs: [ 0xa9e98d9a6a0fa3eabc37aaafd8de68, 0xb3ce1d79199ed39d09e4354dc67fd4, 0x00536d ] } , - BigNum { limbs: [ 0x46eb57ea4ac470f442b205efee0514, 0x43f88c427dfaf9484c246f79adca12, 0x00333c ] } , - BigNum { limbs: [ 0x76b8ab15b3978e0bbd4df91011faed, 0x635a9d5aff4d39f18be39a282a3b41, 0x0040b1 ] } , - BigNum { limbs: [ 0xd2b436f50932afdcd4eae782b30688, 0x64dd8e54b387f9512866d3f7d41f14, 0x000837 ] } , - BigNum { limbs: [ 0xeaefcc0af5294f232b15177d4cf979, 0x42759b48c9c039e8afa135aa03e63e, 0x006bb6 ] } , - BigNum { limbs: [ 0x99d9214c68d624dc714980be571087, 0x9f73e4a877e46ea11c8dfdfe84358b, 0x001f19 ] } , - BigNum { limbs: [ 0x23cae1b39585da238eb67e41a8ef7a, 0x07df44f50563c498bb7a0ba353cfc8, 0x0054d4 ] } , - BigNum { limbs: [ 0x399fcbaaa521a98ea8afae00d170ae, 0x373c48aa371fc73ef01e4237d0cd62, 0x004d0a ] } , - BigNum { limbs: [ 0x84043755593a5571575050ff2e8f53, 0x7016e0f346286bfae7e9c76a0737f1, 0x0026e3 ] } , - BigNum { limbs: [ 0x500eb02ee2d9b63e9fe4a0fd9609b0, 0x23d941e9787714e54cb0055d4e79e0, 0x0034ae ] } , - BigNum { limbs: [ 0x6d9552d11b8248c1601b5e0269f651, 0x8379e7b404d11e548b580444898b73, 0x003f3f ] } , - BigNum { limbs: [ 0x352480fa0142bbab3354b95ae621bc, 0x5126bd58cd82930f5e8f92bf19b8f0, 0x000cc6 ] } , - BigNum { limbs: [ 0x887f8205fd194354ccab45a519de45, 0x562c6c44afc5a02a797876e2be4c63, 0x006727 ] } , - BigNum { limbs: [ 0x62ded52fd700885ee20c0dd1b4a838, 0x1c067801129b35ed2aecb3a3c45a67, 0x00368a ] } , - BigNum { limbs: [ 0x5ac52dd0275b76a11df3f12e4b57c9, 0x8b4cb19c6aacfd4cad1b55fe13aaec, 0x003d63 ] } , - BigNum { limbs: [ 0x66e7055dd8b9a9362010e8b6f2fca0, 0xb1192af8a686ae9351a4b09f45cf52, 0x006626 ] } , - BigNum { limbs: [ 0x56bcfda225a255c9dfef16490d0361, 0xf639fea4d6c184a686635902923601, 0x000dc6 ] } , - BigNum { limbs: [ 0x829fa9756239065149e6b135daad43, 0x1d92c648e00ac9797442364e2a520c, 0x0042df ] } , - BigNum { limbs: [ 0x3b04598a9c22f8aeb6194dca2552be, 0x89c063549d3d69c063c5d353adb347, 0x00310e ] } , - BigNum { limbs: [ 0x039c93ab01de8dc45d6a0ee42c235e, 0xe9a05d32ae0c342f0b767f189f73b8, 0x005802 ] } , - BigNum { limbs: [ 0xba076f54fc7d713ba295f01bd3dca3, 0xbdb2cc6acf3bff0acc918a8938919b, 0x001bea ] } , - BigNum { limbs: [ 0x607690dcfab6e9e6e915abaf97bc2d, 0x7a3834c2b60b8fa3fe5f9b3c8ae049, 0x000023 ] } , - BigNum { limbs: [ 0x5d2d722303a5151916ea53506843d4, 0x2d1af4dac73ca395d9a86e654d250a, 0x0073ca ] } , - BigNum { limbs: [ 0xf7e8d06558cc09c2361a9ef0904d55, 0xcd45c3e35c09548b704bd2ae612416, 0x003a9d ] } , - BigNum { limbs: [ 0xc5bb329aa58ff53dc9e5600f6fb2ac, 0xda0d65ba213edeae67bc36f376e13c, 0x00394f ] } , - BigNum { limbs: [ 0x366ec9858bbf6c69998015cfb618f9, 0x55e541519389f820338273189ec513, 0x0070c9 ] } , - BigNum { limbs: [ 0x8735397a729c9296667fe93049e708, 0x516de84be9be3b19a4859689394040, 0x000324 ] } , - BigNum { limbs: [ 0x991a8549b179952dfc1c048b1eebba, 0x4c4e68daaf27eca0d4a90b42cef9db, 0x002fd7 ] } , - BigNum { limbs: [ 0x24897db64ce269d203e3fa74e11447, 0x5b04c0c2ce204699035efe5f090b78, 0x004416 ] } , - BigNum { limbs: [ 0xaa6d581ed2c4bd1bfec4e31db595da, 0x7d5b0ed096e4303bd342e46dae0b30, 0x000674 ] } , - BigNum { limbs: [ 0x1336aae12b9741e4013b1be24a6a27, 0x29f81acce66402fe04c5253429fa23, 0x006d79 ] } , - BigNum { limbs: [ 0x81e1b366348d59d5008b415742cf2c, 0x1de08c44b05c5f9615ada1567cea0f, 0x001a24 ] } , - BigNum { limbs: [ 0x3bc24f99c9cea52aff74bda8bd30d5, 0x89729d58ccebd3a3c25a684b5b1b44, 0x0059c9 ] } , - BigNum { limbs: [ 0xe75b2f9b862e777f2812860a5e7bf6, 0x603dcb33a8f035c2af174b0de333ac, 0x002fce ] } , - BigNum { limbs: [ 0xd648d364782d8780d7ed78f5a1840b, 0x47155e69d457fd7728f0be93f4d1a6, 0x00441f ] } , - BigNum { limbs: [ 0x192102577134b3fe804b693688c917, 0x152542076b192914da850aa8c1ca1b, 0x003d77 ] } , - BigNum { limbs: [ 0xa48300a88d274b017fb495c97736ea, 0x922de796122f0a24fd82fef9163b38, 0x003676 ] } , - BigNum { limbs: [ 0xf4bccd99cb9046c44608878e56b18d, 0xe4da84bd62fbae9aa110d4844095c6, 0x001266 ] } , - BigNum { limbs: [ 0xc8e7356632cbb83bb9f77771a94e74, 0xc278a4e01a4c849f36f7351d976f8c, 0x006186 ] } , - BigNum { limbs: [ 0x311fa027a0f568823cb99f2c17bdcd, 0xf7cf11927e6353a2ae829e2dd36e96, 0x0072d2 ] } , - BigNum { limbs: [ 0x8c8462d85d66967dc3465fd3e84234, 0xaf84180afee4df9729856b740496bd, 0x00011a ] } , - BigNum { limbs: [ 0x5c255fec426d8cdc8023c433014b7a, 0x1125fb8d170db8f63036640b7cfca4, 0x005ec0 ] } , - BigNum { limbs: [ 0x617ea313bbee72237fdc3accfeb487, 0x962d2e10663a7a43a7d1a5965b08af, 0x00152d ] } , - BigNum { limbs: [ 0x234cc83e129d05cac696b0e5c3fcac, 0xfeb419a46ea5fcd501b9c2cf437010, 0x001c0a ] } , - BigNum { limbs: [ 0x9a573ac1ebbef93539694e1a3c0355, 0xa89f0ff90ea23664d64e46d2949543, 0x0057e2 ] } , - BigNum { limbs: [ 0xe716e0f033f72b72498848fbc00998, 0xd0588d6029adaf665203abefaf0457, 0x001323 ] } , - BigNum { limbs: [ 0xd68d220fca64d38db677b6043ff669, 0xd6fa9c3d539a83d386045db22900fb, 0x0060c9 ] } , - BigNum { limbs: [ 0xa69c5cb7b5339c8b28202568c1191a, 0x7473aec107d89fd3fc0a318afa7228, 0x0010f4 ] } , - BigNum { limbs: [ 0x1707a64849286274d7dfd9973ee6e7, 0x32df7adc756f9365dbfdd816dd932b, 0x0062f9 ] } , - BigNum { limbs: [ 0x181f2d5d9e2a131245b9b503b948f7, 0x10fc1f1f45c512e78cf448f8beafff, 0x004bab ] } , - BigNum { limbs: [ 0xa584d5a26031ebedba4649fc46b70a, 0x96570a7e378320524b13c0a9195554, 0x002842 ] } , - BigNum { limbs: [ 0x899c749fdaf665bc1548facb7b03c5, 0xc7d005315cea488effc435dd9245f1, 0x0047e6 ] } , - BigNum { limbs: [ 0x34078e6023659943eab7043484fc3c, 0xdf83246c205deaaad843d3c445bf62, 0x002c06 ] } , - BigNum { limbs: [ 0x980680010107783cd0d52868bd62f1, 0xff4f2394b51c1d27378dd579388bb1, 0x001b6d ] } , - BigNum { limbs: [ 0x259d82fefd5486c32f2ad697429d10, 0xa8040608c82c1612a07a34289f79a2, 0x00587f ] } , - BigNum { limbs: [ 0x0fda5051a37d3acd0cf163f403c594, 0x25d07b49a277db8a3197f6667f0a7c, 0x000aa3 ] } , - BigNum { limbs: [ 0xadc9b2ae5adec432f30e9b0bfc3a6d, 0x8182ae53dad057afa670133b58fad7, 0x00694a ] } , - BigNum { limbs: [ 0xc4daee200c52605c067d108a5ba95a, 0x92c2bf28e2003a96940c094299dc62, 0x002976 ] } , - BigNum { limbs: [ 0xf8c914dff2099ea3f982ee75a456a7, 0x14906a749b47f8a343fc005f3e28f0, 0x004a77 ] } , - BigNum { limbs: [ 0xde75070be93e05f8f3ba3d42f36d2c, 0xd5e4479c8df0ecb3f50fb0f21337d1, 0x002414 ] } , - BigNum { limbs: [ 0xdf2efbf4151df9070c45c1bd0c92d5, 0xd16ee200ef574685e2f858afc4cd81, 0x004fd8 ] } , - BigNum { limbs: [ 0xf7bca4242070fcbc79729bfc181d87, 0xb15ea032d2eb3432303860656bc2eb, 0x004e23 ] } , - BigNum { limbs: [ 0xc5e75edbddeb0243868d6303e7e27a, 0xf5f4896aaa5cff07a7cfa93c6c4267, 0x0025c9 ] } , - BigNum { limbs: [ 0x5ef5e86046408143a898fb31c9c4ee, 0x91addd75800726e4c08df8991f67a0, 0x0056bd ] } , - BigNum { limbs: [ 0x5eae1a9fb81b7dbc576703ce363b13, 0x15a54c27fd410c55177a1108b89db3, 0x001d30 ] } , - BigNum { limbs: [ 0x6e588415ecaa66b136effd3f67e4f0, 0xd8fd7bb9852f096506fcb28d9b7cf6, 0x0038ce ] } , - BigNum { limbs: [ 0x4f4b7eea11b1984ec91001c0981b11, 0xce55ade3f81929d4d10b57143c885d, 0x003b1e ] } , - BigNum { limbs: [ 0x8f36cb9e84d1b1630642f16c936994, 0xe75a382cbf2e02f0663c969124c698, 0x0067dc ] } , - BigNum { limbs: [ 0x2e6d3761798a4d9cf9bd0d936c966d, 0xbff8f170be1a304971cb7310b33ebb, 0x000c10 ] } , - BigNum { limbs: [ 0xc391a44d095efb7975e7721deb1be9, 0xd069b7229003170842e6e017c538ea, 0x001403 ] } , - BigNum { limbs: [ 0xfa125eb2f4fd03868a188ce214e418, 0xd6e9727aed451c319521298a12cc68, 0x005fe9 ] } , - BigNum { limbs: [ 0x51d7689baf0f40f6c18c8d1ea26560, 0xb6ddd5775cb0f1982c73f8102e9d6d, 0x001b19 ] } , - BigNum { limbs: [ 0x6bcc9a644f4cbe093e7371e15d9aa1, 0xf0755426209741a1ab941191a967e6, 0x0058d3 ] } , - BigNum { limbs: [ 0xb10ea7a313f73e11fa377f6160c3e7, 0xf76f040b0a89bed4581761f087904e, 0x00346e ] } , - BigNum { limbs: [ 0x0c955b5cea64c0ee05c87f9e9f3c1a, 0xafe4259272be74657ff0a7b1507505, 0x003f7e ] } , - BigNum { limbs: [ 0xd73d5d3d1ebf4c2b27692f9d97b929, 0xc253a232e71502e1414cf60bcb7626, 0x004dd4 ] } , - BigNum { limbs: [ 0xe666a5c2df9cb2d4d896cf626846d8, 0xe4ff876a9633305896bb13960c8f2c, 0x002618 ] } , - BigNum { limbs: [ 0x01ab792405734124e37d7512d665de, 0x4efd72d699b6ad23b531fa5e728f48, 0x00502a ] } , - BigNum { limbs: [ 0xbbf889dbf8e8bddb1c8289ed299a23, 0x5855b6c6e391861622d60f4365760b, 0x0023c3 ] } , - BigNum { limbs: [ 0x04625fcd552eb47e4f18a74d8f0ffc, 0x74e27cad0a2c5df5679e2874a63c51, 0x001b14 ] } , - BigNum { limbs: [ 0xb941a332a92d4a81b0e757b270f005, 0x3270acf0731bd5447069e12d31c902, 0x0058d9 ] } , - BigNum { limbs: [ 0x128954af94fd14686873f8ebe729d3, 0xaf07783cd487ebc8683b74daafca98, 0x0067d2 ] } , - BigNum { limbs: [ 0xab1aae50695eea97978c061418d62e, 0xf84bb160a8c047716fcc94c7283abb, 0x000c1a ] } , - BigNum { limbs: [ 0x39c3bd751f2997989a8b21cb4b1481, 0xb14019f2da1c4b94376b4bf82d9ec8, 0x001e87 ] } , - BigNum { limbs: [ 0x83e0458adf3267676574dd34b4eb80, 0xf6130faaa32be7a5a09cbda9aa668b, 0x005565 ] } , - BigNum { limbs: [ 0x224e8044fb9b302d358051fe142663, 0x7e5dd2080df78bfe971e712d186e0a, 0x0041ee ] } , - BigNum { limbs: [ 0x9b5582bb02c0ced2ca7fad01ebd99e, 0x28f557956f50a73b40e99874bf9749, 0x0031ff ] } , - BigNum { limbs: [ 0x266e7302d6261ee8604ef138481f67, 0x4af099edb3d6b0bba73275b4fd222d, 0x003fb0 ] } , - BigNum { limbs: [ 0x97358ffd2835e0179fb10dc7b7e09a, 0x5c628fafc971827e30d593ecdae326, 0x00343d ] } , - BigNum { limbs: [ 0xcd04d4f26b49a51297254297f78ee1, 0x396fe69b76655402529839aa08e182, 0x0029a6 ] } , - BigNum { limbs: [ 0xf09f2e0d931259ed68dabc68087120, 0x6de3430206e2df37856fcff7cf23d0, 0x004a47 ] } , - BigNum { limbs: [ 0x9a0420135c1e74d004fced7127bbd0, 0xfdaea9b84859439bb05a2196d21ca9, 0x006730 ] } , - BigNum { limbs: [ 0x239fe2eca23d8a2ffb03118ed84431, 0xa9a47fe534eeef9e27ade80b05e8aa, 0x000cbc ] } , - BigNum { limbs: [ 0x9389ca095aa500706ae67706c752d6, 0x240d9f9006949ad4f83cf67b6dbbbc, 0x00710a ] } , - BigNum { limbs: [ 0x2a1a38f6a3b6fe8f951987f938ad2b, 0x83458a0d76b39864dfcb13266a4997, 0x0002e3 ] } , - BigNum { limbs: [ 0x3128560305c8ef5a2396bbf9697fb6, 0xccabef53799b1e88e1d0d1f0dc5dc7, 0x003bc4 ] } , - BigNum { limbs: [ 0x8c7bacfcf8930fa5dc69430696804b, 0xdaa73a4a03ad14b0f63737b0fba78c, 0x003828 ] } , - BigNum { limbs: [ 0x7bdee41758cacac6c8da15682a43ad, 0xa255a42715a228e1ce9a9398792771, 0x0061ed ] } , - BigNum { limbs: [ 0x41c51ee8a59134393725e997d5bc54, 0x04fd857667a60a58096d76095edde2, 0x001200 ] } , - BigNum { limbs: [ 0x36460c54463cd8f3645a8d9dd0449e, 0xc5e63ebd7c87a1375287bdfc69b2e7, 0x005f7a ] } , - BigNum { limbs: [ 0x875df6abb81f260c9ba571622fbb63, 0xe16ceae000c0920285804ba56e526c, 0x001472 ] } , - BigNum { limbs: [ 0xe527d3c618bd91111135e45e927581, 0x651a3c71c35b24f44b3cbdee5bb69e, 0x0034e9 ] } , - BigNum { limbs: [ 0xd87c2f39e59e6deeeeca1aa16d8a80, 0x4238ed2bb9ed0e458ccb4bb37c4eb4, 0x003f04 ] } , - BigNum { limbs: [ 0x14bad0bf6f6300650f9beee20b5515, 0xe269c37d4d8412f381403b89980ee9, 0x00217b ] } , - BigNum { limbs: [ 0xa8e932408ef8fe9af064101df4aaec, 0xc4e966202fc4204656c7ce183ff66a, 0x005271 ] } , - BigNum { limbs: [ 0x762a4c86bee8123a5f306e81360e77, 0x7337cf2dbc5743ce881218684db954, 0x0009e9 ] } , - BigNum { limbs: [ 0x4779b6793f73ecc5a0cf907ec9f18a, 0x341b5a6fc0f0ef6b4ff5f1398a4bff, 0x006a04 ] } , - BigNum { limbs: [ 0x9937ed82cb4a9fc76cd46491730168, 0xdc87d269cdd4133553ee41427fca0f, 0x001f19 ] } , - BigNum { limbs: [ 0x246c157d33115f38932b9a6e8cfe99, 0xcacb5733af7420048419c85f583b44, 0x0054d3 ] } , - BigNum { limbs: [ 0x56d7ccb64bbb09a91f10acaa57449b, 0x3d85d572d287a73bb732faaf08a75a, 0x004c45 ] } , - BigNum { limbs: [ 0x66cc3649b2a0f556e0ef5255a8bb66, 0x69cd542aaac08bfe20d50ef2cf5df9, 0x0027a8 ] } , - BigNum { limbs: [ 0x6f93db2578f813a18e4c1292f11cf2, 0x1640b859af326965abb4bbaf508f24, 0x003059 ] } , - BigNum { limbs: [ 0x4e1027da8563eb5e71b3ec6d0ee30f, 0x91127143ce15c9d42c534df287762f, 0x004394 ] } , - BigNum { limbs: [ 0x60ca413c1470f069cd62c92c7d3417, 0x0c87494cf671479a275b158a6c0d06, 0x006c26 ] } , - BigNum { limbs: [ 0x5cd9c1c3e9eb0e96329d35d382cbea, 0x9acbe05086d6eb9fb0acf4176bf84d, 0x0007c7 ] } , - BigNum { limbs: [ 0xb124828724cb9e6154c10541689b3b, 0x28ea95e4e4c038654cd2bddea77d27, 0x005169 ] } , - BigNum { limbs: [ 0x0c7f8078d990609eab3ef9be9764c6, 0x7e6893b89887fad48b354bc330882c, 0x002284 ] } , - BigNum { limbs: [ 0xd65e0a886ccc459e92185783bbf588, 0xf9623fbe85bf577afaa3b0aa4366e4, 0x003525 ] } , - BigNum { limbs: [ 0xe745f877918fb9616de7a77c440a79, 0xadf0e9def788dbbedd6458f7949e6e, 0x003ec7 ] } , - BigNum { limbs: [ 0x39b33948d004277c7c788388618a21, 0xd5d37bc89361ba87d73f16df38f517, 0x00166f ] } , - BigNum { limbs: [ 0x83f0c9b72e57d78383877b779e75e0, 0xd17fadd4e9e678b200c8f2c29f103c, 0x005d7d ] } , - BigNum { limbs: [ 0x0184807cbb3ccd17563741f5395c61, 0x191d96a87bdcf9bfabd2f465302102, 0x002917 ] } , - BigNum { limbs: [ 0xbc1f8283431f31e8a9c8bd0ac6a3a0, 0x8e3592f5016b397a2c35153ca7e451, 0x004ad6 ] } , - BigNum { limbs: [ 0x70b480ff3c8ada180c9ea7df3e2e1c, 0xb24c47cd173318b38cd42c7775b82f, 0x006df1 ] } , - BigNum { limbs: [ 0x4cef8200c1d124e7f3615720c1d1e5, 0xf506e1d066151a864b33dd2a624d24, 0x0005fb ] } , - BigNum { limbs: [ 0xe0618f7723728fadfafe11076f83fb, 0xb65b78377562265e0e278de1545148, 0x0033f7 ] } , - BigNum { limbs: [ 0xdd427388dae96f520501edf8907c06, 0xf0f7b16607e60cdbc9e07bc083b40a, 0x003ff5 ] } , - BigNum { limbs: [ 0xe5d866c41107068d880fd835f7e59c, 0xfd30fb91fe1846ee4785af0c016f5e, 0x000ff9 ] } , - BigNum { limbs: [ 0xd7cb9c3bed54f87277f026ca081a65, 0xaa222e0b7f2fec4b90825a95d695f4, 0x0063f3 ] } , - BigNum { limbs: [ 0xb426361576c9da4906585ea02264ed, 0x7eb308dc00235023c5a79a89d2bbdf, 0x0032a6 ] } , - BigNum { limbs: [ 0x097dccea879224b6f9a7a05fdd9b14, 0x28a020c17d24e31612606f18054974, 0x004147 ] } , - BigNum { limbs: [ 0xa8b71686c297c367949e884db344bf, 0xdc7f753c1d55d80c7e16600602f704, 0x00100d ] } , - BigNum { limbs: [ 0x14ecec793bc43b986b6176b24cbb42, 0xcad3b4615ff25b2d59f1a99bd50e4f, 0x0063df ] } , - BigNum { limbs: [ 0xc575ec1a329a5541f33ede3b9f9399, 0x7826ed24369781fc49d19b208571ff, 0x002b29 ] } , - BigNum { limbs: [ 0xf82e16e5cbc1a9be0cc120c4606c68, 0x2f2c3c7946b0b13d8e366e81529353, 0x0048c4 ] } , - BigNum { limbs: [ 0xd485c1f50cc769de0283afe1cb6584, 0x56553e601b81d52738de72cd45e191, 0x005dda ] } , - BigNum { limbs: [ 0xe91e410af1949521fd7c4f1e349a7d, 0x50fdeb3d61c65e129f2996d49223c1, 0x001613 ] } , - BigNum { limbs: [ 0x1fe5a5c8cfa8db155697e920b8c870, 0x4ccf3a7b715b6346c4d279d010a3a4, 0x000160 ] } , - BigNum { limbs: [ 0x9dbe5d372eb323eaa96815df473791, 0x5a83ef220beccff313358fd1c761af, 0x00728d ] } , - BigNum { limbs: [ 0x99795435ca67fef6cc5689c1f540e1, 0x2cd7cfa083667322f2be809c88ff9b, 0x001572 ] } , - BigNum { limbs: [ 0x242aaeca33f4000933a9753e0abf20, 0x7a7b59fcf9e1c016e54989054f05b8, 0x005e7b ] } , - BigNum { limbs: [ 0xba3d2b430423bbd2fee202f8577732, 0x8b74a34e54522dfa0d10e94de8286c, 0x002fb5 ] } , - BigNum { limbs: [ 0x0366d7bcfa38432d011dfc07a888cf, 0x1bde864f28f6053fcaf72053efdce7, 0x004438 ] } , - BigNum { limbs: [ 0xdbc3b2b164561896ce8e2e452c03e9, 0x67d41c98b8fa9829526ed6eec7578b, 0x0043ec ] } , - BigNum { limbs: [ 0xe1e0504e9a05e6693171d0bad3fc18, 0x3f7f0d04c44d9b10859932b310adc7, 0x003001 ] } , - BigNum { limbs: [ 0x3a3bcba4e33b5f6e7f2a73337c97eb, 0xb18d510dd282977c9c840d057bc4a8, 0x0012ad ] } , - BigNum { limbs: [ 0x8368375b1b209f9180d58bcc836816, 0xf5c5d88faac59bbd3b83fc9c5c40ab, 0x00613f ] } , - BigNum { limbs: [ 0x546f42d2f2136ab70c1a97d4a5a28b, 0x519305a6a34d00a54824fbd3c944df, 0x0032b8 ] } , - BigNum { limbs: [ 0x6934c02d0c489448f3e5672b5a5d76, 0x55c023f6d9fb32948fe30dce0ec074, 0x004135 ] } , - BigNum { limbs: [ 0x565938c72e8dc88dd6a6cbf1ff3e4a, 0xdbdc2c56cc7d4b28d83b2561c2568a, 0x002e17 ] } , - BigNum { limbs: [ 0x674aca38cfce36722959330e00c1b7, 0xcb76fd46b0cae810ffcce44015aec9, 0x0045d5 ] } , - BigNum { limbs: [ 0x77ba8dbe3dfb062809456c05e23c98, 0x14671281b8a4b1b3a9be35f3271afe, 0x001935 ] } , - BigNum { limbs: [ 0x45e97541c060f8d7f6ba92fa1dc369, 0x92ec171bc4a381862e49d3aeb0ea55, 0x005ab8 ] } , - BigNum { limbs: [ 0x1096f45046dd52a99f6a0d133d06aa, 0x861a7b23584626170d92377f7b5e79, 0x004ed7 ] } , - BigNum { limbs: [ 0xad0d0eafb77eac566095f1ecc2f957, 0x2138ae7a25020d22ca75d2225ca6da, 0x002516 ] } , - BigNum { limbs: [ 0xe1ab1e5b93f822d0b94eb237110d9f, 0x5fa125e49db89d2655af277ba7868c, 0x0069f2 ] } , - BigNum { limbs: [ 0xdbf8e4a46a63dc2f46b14cc8eef262, 0x47b203b8df8f96138258e226307ec6, 0x0009fb ] } , - BigNum { limbs: [ 0x6db8fecb665fa64c727ae95a4f1504, 0x4de5de9d149d0992379cc3665e3b80, 0x006d5c ] } , - BigNum { limbs: [ 0x4feb043497fc58b38d8515a5b0eafd, 0x596d4b0068ab29a7a06b463b79c9d3, 0x000691 ] } , - BigNum { limbs: [ 0x62eebd2d2d03301254d2facb9c65ec, 0x9789160e7b8c0fe7473fe43df5ffa2, 0x000707 ] } , - BigNum { limbs: [ 0x5ab545d2d158ceedab2d0434639a15, 0x0fca138f01bc235290c82563e205b1, 0x006ce6 ] } , - BigNum { limbs: [ 0x34fabfe22bf195070a40826b0a8a22, 0x496805d716afcfe47a545cdc549868, 0x0045de ] } , - BigNum { limbs: [ 0x88a9431dd26a69f8f5bf7c94f575df, 0x5deb23c6669863555db3acc5836ceb, 0x002e0f ] } , - BigNum { limbs: [ 0x8e36a4f207ed7934afa23e4d664fb9, 0xe13b38a0e39adb1535f05011c0f97d, 0x001f5f ] } , - BigNum { limbs: [ 0x2f6d5e0df66e85cb505dc0b299b048, 0xc617f0fc99ad5824a217b990170bd6, 0x00548d ] } , - BigNum { limbs: [ 0x0efba3add1439fcda6025fcec5f85e, 0x23e39e3bddb85c5f7c6f1f39bb4a43, 0x004172 ] } , - BigNum { limbs: [ 0xaea85f522d185f3259fd9f313a07a3, 0x836f8b619f8fd6da5b98ea681cbb10, 0x00327b ] } , - BigNum { limbs: [ 0x50fd367a04217a99f8b35c4feecc72, 0x3aeef6d281f2894bb176dc6c03beb7, 0x0000fa ] } , - BigNum { limbs: [ 0x6ca6cc85fa3a8466074ca2b011338f, 0x6c6432cafb55a9ee26912d35d4469c, 0x0072f3 ] } , - BigNum { limbs: [ 0x3abeed94b4f1634be87dab9013c5e6, 0x7c84cd1b601bec56a6760508dcf493, 0x002bd5 ] } , - BigNum { limbs: [ 0x82e5156b496a9bb41782536fec3a1b, 0x2ace5c821d2c46e331920498fb10c0, 0x004818 ] } , - BigNum { limbs: [ 0x8726c067a90bbe12024f89b257ee62, 0x2e08318aeeacb408378170769053cb, 0x006b7e ] } , - BigNum { limbs: [ 0x367d4298555040edfdb0754da8119f, 0x794af8128e9b7f31a086992b47b188, 0x00086f ] } , - BigNum { limbs: [ 0xd18fa289732f688a5ee031a9245ad3, 0xbc0e64c9d219a8d562efc8186a2d24, 0x002969 ] } , - BigNum { limbs: [ 0xec1460768b2c9675a11fcd56dba52e, 0xeb44c4d3ab2e8a64751841896dd82e, 0x004a83 ] } , - BigNum { limbs: [ 0x427c3d5132b42adb5bf0d17886f914, 0x1b7bf18b694222c41c5896457592c9, 0x0009bb ] } , - BigNum { limbs: [ 0x7b27c5aecba7d424a40f2d877906ed, 0x8bd7381214061075bbaf735c62728a, 0x006a32 ] } , - BigNum { limbs: [ 0xf4a328d6df60c441d4d6f8a6035ba1, 0x0e4e224ed50ccd12172874ef649f75, 0x0015ff ] } , - BigNum { limbs: [ 0xc900da291efb3abe2b290659fca460, 0x9905074ea83b6627c0df94b27365dd, 0x005dee ] } , - BigNum { limbs: [ 0x32eadeb2eaebb63bfd3383d2361246, 0xc05b04c9044fc6c5f0964c53353c45, 0x004c30 ] } , - BigNum { limbs: [ 0x8ab9244d137048c402cc7b2dc9edbb, 0xe6f824d478f86c73e771bd4ea2c90e, 0x0027bc ] } , - BigNum { limbs: [ 0xe64e1a0d2e560d6e1499e715bda543, 0x278c6eed86f45ec8092b13ec8a7ecd, 0x00484d ] } , - BigNum { limbs: [ 0xd755e8f2d005f191eb6617ea425abe, 0x7fc6baaff653d471cedcf5b54d8685, 0x002ba0 ] } , - BigNum { limbs: [ 0xa2a69107b6a980b482447428fa23ee, 0x7561de37d95e60cd66c57736477daa, 0x001a2c ] } , - BigNum { limbs: [ 0x1afd71f847b27e4b7dbb8ad705dc13, 0x31f14b65a3e9d26c7142926b9087a9, 0x0059c1 ] } , - BigNum { limbs: [ 0x34a8335508915c9da5d0cc12724318, 0x78fad28e89573fde62c6b46b658a0f, 0x00242c ] } , - BigNum { limbs: [ 0x88fbcfaaf5caa2625a2f32ed8dbce9, 0x2e58570ef3f0f35b75415536727b44, 0x004fc1 ] } , - BigNum { limbs: [ 0xd771dbf6e9599e6ae672da7b46fa2c, 0x3a0e0347179ccc16de33046dedfd4f, 0x005276 ] } , - BigNum { limbs: [ 0xe632270915026095198d2484b905d5, 0x6d45265665ab6722f9d50533ea0803, 0x002177 ] } , - BigNum { limbs: [ 0x50f41a25187433d5401e0e3fd3cfc1, 0x51bd4c910d3fe33c91024f7a8e43e3, 0x006e98 ] } , - BigNum { limbs: [ 0x6cafe8dae5e7cb2abfe1f0c02c3040, 0x5595dd0c70084ffd4705ba2749c170, 0x000555 ] } , - BigNum { limbs: [ 0x693136244c47d39006fed3cdaa0066, 0xa274da64baa96fb21ab194d4741dbd, 0x00004a ] } , - BigNum { limbs: [ 0x5472ccdbb2142b6ff9012b3255ff9b, 0x04de4f38c29ec387bd5674cd63e796, 0x0073a3 ] } , - BigNum { limbs: [ 0x960d51bf6ae6f4e4ab5ac48f2bd9a6, 0x11dd7971e55a4d99e7da903c25f117, 0x006584 ] } , - BigNum { limbs: [ 0x2796b14093750a1b54a53a70d4265b, 0x9575b02b97ede59ff02d7965b2143c, 0x000e69 ] } , - BigNum { limbs: [ 0x60c1d07e6eeefc87b5eac39c929ac3, 0xe6212869277b67c6ec8885a28cd25a, 0x005d5f ] } , - BigNum { limbs: [ 0x5ce232818f6d02784a153b636d653e, 0xc132013455cccb72eb7f83ff4b32f9, 0x00168d ] } , - BigNum { limbs: [ 0xddf56e2cd4099acf38136ebca02c29, 0xac21cd03c9f223c6493f18cca8f69b, 0x003a40 ] } , - BigNum { limbs: [ 0xdfae94d32a526430c7ec90435fd3d8, 0xfb315c99b3560f738ec8f0d52f0eb7, 0x0039ac ] } , - BigNum { limbs: [ 0x02b232af695bcf227fe83d53c1ddee, 0x912d964c2baf45393450556cb92530, 0x006af1 ] } , - BigNum { limbs: [ 0xbaf1d05095002fdd8017c1ac3e2213, 0x162593515198ee00a3b7b4351ee023, 0x0008fc ] } , - BigNum { limbs: [ 0xa642214f0552fce5dcbdb1a601c023, 0xc5389b8a77563adc60186611634372, 0x001ccb ] } , - BigNum { limbs: [ 0x1761e1b0f909021a23424d59fe3fde, 0xe21a8e1305f1f85d77efa39074c1e1, 0x005721 ] } , - BigNum { limbs: [ 0x62c16e272104bf004be4bfd097d114, 0xef816bc349c995e8b12f9a81eaa16a, 0x003adb ] } , - BigNum { limbs: [ 0x5ae294d8dd573fffb41b3f2f682eed, 0xb7d1bdda337e9d5126d86f1fed63e9, 0x003911 ] } , - BigNum { limbs: [ 0xe4c9e2213e75a9aea4435a94a73592, 0x7bacf43b42c5ad0303a3834b35fc71, 0x005f05 ] } , - BigNum { limbs: [ 0xd8da20debfe655515bbca46b58ca6f, 0x2ba635623a828636d4648656a208e1, 0x0014e8 ] } , - BigNum { limbs: [ 0xaea472d254c55dee3ac1bc2e985d0e, 0x481c5fd3e525670a5d517f05737bda, 0x005dc7 ] } , - BigNum { limbs: [ 0x0eff902da996a111c53e42d167a2f3, 0x5f36c9c99822cc2f7ab68a9c648979, 0x001626 ] } , - BigNum { limbs: [ 0x95714916b52a44a1d1b433c6d47388, 0xf72b124899b39b47aca9f79b77ff22, 0x000957 ] } , - BigNum { limbs: [ 0x2832b9e94931ba5e2e4bcb392b8c79, 0xb0281754e39497f22b5e1206600631, 0x006a95 ] } , - BigNum { limbs: [ 0x3dab9667fd8d6bc0b912fc6ebb6b4d, 0xa957470b3b35b9ebd8849e767d8f1a, 0x00723d ] } , - BigNum { limbs: [ 0x7ff86c9800ce933f46ed02914494b4, 0xfdfbe2924212794dff836b2b5a7639, 0x0001af ] } , - BigNum { limbs: [ 0x1a6dd107013e8f532cb2e6d8d5aba7, 0x5fb4f46a87242dcbdd1d919b4e16c6, 0x004c9c ] } , - BigNum { limbs: [ 0xa33631f8fd1d6facd34d18272a545a, 0x479e3532f624056dfaea780689ee8d, 0x002751 ] } , - BigNum { limbs: [ 0xdefdd5e0a986ed1c437a27915897ce, 0x95170c6c7a701e40b397a45127173a, 0x0043fb ] } , - BigNum { limbs: [ 0xdea62d1f54d511e3bc85d76ea76833, 0x123c1d3102d814f924706550b0ee18, 0x002ff2 ] } , - BigNum { limbs: [ 0xbba69476fa5eda3561bfd6c71847fd, 0xc0f1216b6c3e53e37f41765245dfb3, 0x003b35 ] } , - BigNum { limbs: [ 0x01fd6e8903fd24ca9e402838e7b804, 0xe66208321109df5658c6934f9225a0, 0x0038b7 ] } , - BigNum { limbs: [ 0x1e4f3c2848bde33792a0704d7f3d5c, 0xa41db4f4117fa6964523fbe0428afd, 0x0028ea ] } , - BigNum { limbs: [ 0x9f54c6d7b59e1bc86d5f8eb280c2a5, 0x033574a96bc88ca392e40dc1957a56, 0x004b03 ] } , - BigNum { limbs: [ 0x499179728f96587b47364abb902a7f, 0x06969e493afaf1cae603a9624c7f48, 0x0026cb ] } , - BigNum { limbs: [ 0x7412898d6ec5a684b8c9b4446fd582, 0xa0bc8b54424d416ef204603f8b860b, 0x004d22 ] } , - BigNum { limbs: [ 0x2eab334af1e1da6d7b0ac353e2e894, 0xc71899852062fc6ecc48d2fcc38796, 0x0034e7 ] } , - BigNum { limbs: [ 0x8ef8cfb50c7a249284f53bac1d176d, 0xe03a90185ce536cb0bbf36a5147dbd, 0x003f05 ] } , - BigNum { limbs: [ 0xbaaa75d37ac780d245d76b67f27d60, 0x6941c2658187de20aaf30c6e820a8f, 0x0009bf ] } , - BigNum { limbs: [ 0x02f98d2c83947e2dba2893980d82a1, 0x3e116737fbc055192d14fd3355fac4, 0x006a2e ] } , - BigNum { limbs: [ 0x4d58135e5084d45283c7e8f859236e, 0xd03359beb3ea94caca1076aabb329a, 0x002fc3 ] } , - BigNum { limbs: [ 0x704befa1add72aad7c381607a6dc93, 0xd71fcfdec95d9e6f0df792f71cd2b9, 0x004429 ] } , - BigNum { limbs: [ 0x10e5e09d4a435c9c77c878f2bb8464, 0xf72162824b43a150ed4182d6c5cc71, 0x0021a4 ] } , - BigNum { limbs: [ 0xacbe2262b418a2638837860d447b9d, 0xb031c71b320491e8eac686cb1238e2, 0x005248 ] } , - BigNum { limbs: [ 0xf51d82b4bab62433c15d109a2b1351, 0xc51b3151c9ef8fa6d009cc1e058c1f, 0x000714 ] } , - BigNum { limbs: [ 0xc886804b43a5dacc3ea2ee65d4ecb0, 0xe237f84bb358a39307fe3d83d27933, 0x006cd8 ] } , - BigNum { limbs: [ 0x34ef3e831e2ed58ba307e4e30ab1d4, 0x08d18af837ce39c12f6fd503a491da, 0x006d88 ] } , - BigNum { limbs: [ 0x88b4c47ce02d29745cf81a1cf54e2d, 0x9e819ea54579f978a898349e337379, 0x000665 ] } , - BigNum { limbs: [ 0x336da7150fc15dddd56ac9a7dc56c7, 0x7d5317cd6abce54817f7fd9bdce46e, 0x004011 ] } , - BigNum { limbs: [ 0x8a365beaee9aa1222a95355823a93a, 0x2a0011d0128b4df1c0100c05fb20e5, 0x0033dc ] } , - BigNum { limbs: [ 0x6ec9d66ed0d05112d7c36272dfa403, 0xc5d21eec1555ed81ca1bbc982e7922, 0x001ec1 ] } , - BigNum { limbs: [ 0x4eda2c912d8baded283c9c8d205bfe, 0xe1810ab167f245b80dec4d09a98c31, 0x00552b ] } , - BigNum { limbs: [ 0xfa8f9106dce56dec7ec96011f79a3c, 0x1ac2f79b05e28225f2afe1f417c2c5, 0x0052ee ] } , - BigNum { limbs: [ 0xc31471f92176911381369eee0865c5, 0x8c9032027765b113e55827adc0428d, 0x0020ff ] } , - BigNum { limbs: [ 0x088b2b3a9aec775d554ddf3121ab7d, 0xfa53f3c7787f73c5ee3d79f317d56d, 0x00357f ] } , - BigNum { limbs: [ 0xb518d7c5636f87a2aab21fcede5484, 0xacff35d604c8bf73e9ca8faec02fe6, 0x003e6d ] } , - BigNum { limbs: [ 0xab1d2a69326150035433bf5ab27518, 0x9450acd956d2d3e5beb3e22dd68c4c, 0x0011d9 ] } , - BigNum { limbs: [ 0x1286d896cbfaaefcabcc3fa54d8ae9, 0x13027cc426755f5419542774017907, 0x006214 ] } , - BigNum { limbs: [ 0xb422d75c3d666f868f9ace7f0c05ad, 0x08fa0da5731b7a4f6bf340fd338d21, 0x003186 ] } , - BigNum { limbs: [ 0x09812ba3c0f58f7970653080f3fa54, 0x9e591bf80a2cb8ea6c14c8a4a47832, 0x004267 ] } , - BigNum { limbs: [ 0xa13ca9ab7aec628d9e085dbcf627b3, 0x2ceae6375943e17d761d599629634f, 0x0061f7 ] } , - BigNum { limbs: [ 0x1c675954836f9c7261f7a14309d84e, 0x7a684366240451bc61eab00baea204, 0x0011f6 ] } , - BigNum { limbs: [ 0x5a435445e20ad1603533d63a46811e, 0x107acd46e6ead73902c051a4f47a89, 0x001099 ] } , - BigNum { limbs: [ 0x6360aeba1c512d9fcacc28c5b97ee3, 0x96d85c56965d5c00d547b7fce38aca, 0x006354 ] } , - BigNum { limbs: [ 0x0f556c7dd965c9e662abd652bab712, 0x2868b33df772d83728a650fec1696a, 0x0039ae ] } , - BigNum { limbs: [ 0xae4e968224f635199d5428ad4548ef, 0x7eea765f85d55b02af61b8a3169be9, 0x003a3f ] } , - BigNum { limbs: [ 0x095888daa8cfdbbb8cc4d2edbd46d3, 0xae4dd751366cffd24594deb8870dde, 0x0007e3 ] } , - BigNum { limbs: [ 0xb44b7a25558c2344733b2c1242b92e, 0xf905524c46db336792732ae950f775, 0x006c09 ] } , - BigNum { limbs: [ 0x5aeccb05e4e36060803fc8de4668e8, 0x193723dba47ad8cbb8d047f3a39b0c, 0x00414b ] } , - BigNum { limbs: [ 0x62b737fa19789e9f7fc03621b99719, 0x8e1c05c1d8cd5a6e1f37c1ae346a47, 0x0032a2 ] } , - BigNum { limbs: [ 0x1853b4ee0a8f23056507ef2eaa6a09, 0x0a90ca49d553e549f2ee40567332ca, 0x002d21 ] } , - BigNum { limbs: [ 0xa5504e11f3ccdbfa9af80fd15595f8, 0x9cc25f53a7f44defe519c94b64d289, 0x0046cc ] } , - BigNum { limbs: [ 0x2624f47a7cc3c3863217230f4471f9, 0xa98b3d9bb1a86d72e5e027b600ea16, 0x00382c ] } , - BigNum { limbs: [ 0x977f0e8581983b79cde8dbf0bb8e08, 0xfdc7ec01cb9fc5c6f227e1ebd71b3d, 0x003bc0 ] } , - BigNum { limbs: [ 0x833c9a0c4b5810f5b4c6b50487ae1f, 0x21f3bb92f58d494135cedd7cc2a033, 0x001be4 ] } , - BigNum { limbs: [ 0x3a6768f3b303ee0a4b3949fb7851e2, 0x855f6e0a87bae9f8a2392c25156520, 0x005809 ] } , - BigNum { limbs: [ 0xf382d2cf899e1c66a46ab4699489c6, 0xcabaccd26113e0b7a9efc26faa9532, 0x002803 ] } , - BigNum { limbs: [ 0xca21303074bde2995b954a966b763b, 0xdc985ccb1c3452822e1847322d7020, 0x004be9 ] } , - BigNum { limbs: [ 0x6910d639aefe17754b6a53fddc4c94, 0x88cd7576b823f47dfc583fe631a439, 0x0021d0 ] } , - BigNum { limbs: [ 0x54932cc64f5de78ab495ab0223b36d, 0x1e85b426c5243ebbdbafc9bba6611a, 0x00521d ] } , - BigNum { limbs: [ 0x0d613cc36bfa358f848821e4356469, 0x09516722769df28de6c16bb4bbee36, 0x002f2b ] } , - BigNum { limbs: [ 0xb042c63c9261c9707b77dd1bca9b98, 0x9e01c27b06aa40abf1469ded1c171d, 0x0044c2 ] } , - BigNum { limbs: [ 0x75d2d8c194a702ae113bb568e33c3c, 0xfd9bbe2b455b567ce9424c694ca7ba, 0x00596e ] } , - BigNum { limbs: [ 0x47d12a3e69b4fc51eec449971cc3c5, 0xa9b76b7237ecdcbceec5bd388b5d99, 0x001a7e ] } , - BigNum { limbs: [ 0xd67644ecb1ec23b5e2c92f7207066f, 0x3669f0b510aff120489b258ca13d29, 0x000c90 ] } , - BigNum { limbs: [ 0xe72dbe134c6fdb4a1d36cf8df8f992, 0x70e938e86c9842198f6ce41536c829, 0x00675d ] } , - BigNum { limbs: [ 0xc313287b50ee6ceb107d107792e331, 0xf5f496036dda75d6467e78880bd899, 0x001f92 ] } , - BigNum { limbs: [ 0xfa90da84ad6d9214ef82ee886d1cd0, 0xb15e939a0f6dbd6391899119cc2cb9, 0x00545a ] } , - BigNum { limbs: [ 0x0bd4e6a7e888998588ec8712bbb533, 0xc466e9f46b9b99b02b0d0da9e471ba, 0x003367 ] } , - BigNum { limbs: [ 0xb1cf1c5815d3657a771377ed444ace, 0xe2ec3fa911ac9989acfafbf7f39399, 0x004085 ] } , - BigNum { limbs: [ 0x3be97480c55418f45dadfa7ab57531, 0xea964384940530c5e2bc37a1533ac3, 0x0066b4 ] } , - BigNum { limbs: [ 0x81ba8e7f3907e60ba25204854a8ad0, 0xbcbce618e9430273f54bd20084ca90, 0x000d38 ] } , - BigNum { limbs: [ 0xc2430643e8182d35323eec80747457, 0xfcbdae14d82de463155db41faca3da, 0x006021 ] } , - BigNum { limbs: [ 0xfb60fcbc1643d1cacdc1127f8b8baa, 0xaa957b88a51a4ed6c2aa55822b6178, 0x0013cb ] } , - BigNum { limbs: [ 0xc7a2c8ab4cebe3229d28add06fa1a0, 0x36b466b8ceec2076b2987fe06886b8, 0x001769 ] } , - BigNum { limbs: [ 0xf6013a54b1701bdd62d7512f905e61, 0x709ec2e4ae5c12c3256f89c16f7e9a, 0x005c84 ] } , - BigNum { limbs: [ 0xd8a879169dd8991a08d5e4e2e01343, 0x192fb0cd079daf0f64a02464f057f6, 0x00679a ] } , - BigNum { limbs: [ 0xe4fb89e9608365e5f72a1a1d1fecbe, 0x8e2378d075aa842a7367e53ce7ad5c, 0x000c53 ] } , - BigNum { limbs: [ 0xb5485481194aefa65b28ed517d4354, 0xde37523e64d4ddbaddb9f90e7d697a, 0x000019 ] } , - BigNum { limbs: [ 0x085bae7ee5110f59a4d711ae82bcad, 0xc91bd75f1873557efa4e10935a9bd9, 0x0073d3 ] } , - BigNum { limbs: [ 0x970eedd0930abc1f41e0a2ec24c764, 0x76aca5cbffa191b659acf68394e8b7, 0x006b2f ] } , - BigNum { limbs: [ 0x2695152f6b5142e0be1f5c13db389d, 0x30a683d17da6a1837e5b131e431c9c, 0x0008be ] } , - BigNum { limbs: [ 0xea426fe3382da5ccd6232e773a7be0, 0xbccf1d2163b24879f55520eec3096c, 0x005fc0 ] } , - BigNum { limbs: [ 0xd361931cc62e593329dcd088c58421, 0xea840c7c1995eabfe2b2e8b314fbe6, 0x00142c ] } , - BigNum { limbs: [ 0x5ded1899239a88898b0554d218a61c, 0xd11ff6f7fa6cbcbe9301f686e86bf9, 0x0044c1 ] } , - BigNum { limbs: [ 0x5fb6ea66dac1767674faaa2de759e5, 0xd63332a582db767b4506131aef995a, 0x002f2b ] } , - BigNum { limbs: [ 0x62a1c1fa6e32aa1b529e40de1d7c4d, 0x5788394251987c11e63de35442f626, 0x0054e6 ] } , - BigNum { limbs: [ 0x5b024105902954e4ad61be21e283b4, 0x4fcaf05b2bafb727f1ca264d950f2d, 0x001f07 ] } , - BigNum { limbs: [ 0x23483beb660aa3126c1c8e445a8a5b, 0x12a22a888026f6f5faa93431d39300, 0x005726 ] } , - BigNum { limbs: [ 0x9a5bc71498515bed93e370bba575a6, 0x94b0ff14fd213c43dd5ed570047253, 0x001cc7 ] } , - BigNum { limbs: [ 0xd34a8629e2a390579464a37d34c01f, 0xe95e089c5912926d173883e9142489, 0x006800 ] } , - BigNum { limbs: [ 0xea597cd61bb86ea86b9b5b82cb3fe2, 0xbdf521012435a0ccc0cf85b8c3e0c9, 0x000bec ] } , - BigNum { limbs: [ 0x12f7a9a2ba4c6f2289841708c47e76, 0x8d51514e6d3ba1fb1ad2f91bea10fe, 0x006c5c ] } , - BigNum { limbs: [ 0xaaac595d440f8fdd767be7f73b818b, 0x1a01d84f100c913ebd351085edf455, 0x000791 ] } , - BigNum { limbs: [ 0x1084d1e459c2644faaa91388ae574d, 0xed8c43ec33b5e17e82746da5a2b076, 0x0047d7 ] } , - BigNum { limbs: [ 0xad1f311ba4999ab05556eb7751a8b4, 0xb9c6e5b1499251bb55939bfc3554dd, 0x002c15 ] } , - BigNum { limbs: [ 0xf9870d09b49934594ef32abcf775b9, 0xd339e9bdd168c902e32bba607579dc, 0x00220b ] } , - BigNum { limbs: [ 0xc41cf5f649c2caa6b10cd443088a48, 0xd4193fdfabdf6a36f4dc4f41628b76, 0x0051e1 ] } , - BigNum { limbs: [ 0xba5587cee31ba92218afc24fb3fb6d, 0x26f47becfa9260ab9a24e417ab6e2a, 0x00010c ] } , - BigNum { limbs: [ 0x034e7b311b4055dde7503cb04c0494, 0x805eadb082b5d28e3de3258a2c9729, 0x0072e1 ] } , - BigNum { limbs: [ 0xb1101b4a6a67fce5fb1ba223a764f8, 0x59b150561c08ee82c31d8e145688a9, 0x001f99 ] } , - BigNum { limbs: [ 0x0c93e7b593f4021a04e45cdc589b09, 0x4da1d947613f44b714ea7b8d817caa, 0x005454 ] } , - BigNum { limbs: [ 0x33e7e7f45b14fb3783b2614bebb0c2, 0x6a09c6e30dc4df9d916b36a30c5404, 0x006136 ] } , - BigNum { limbs: [ 0x89bc1b0ba34703c87c4d9db4144f3f, 0x3d4962ba6f83539c469cd2fecbb14f, 0x0012b7 ] } , - BigNum { limbs: [ 0x3eb77e93fdfad62d5d0f5c33535fd6, 0x31fb8102066d8296d9a9c6a10e2512, 0x006457 ] } , - BigNum { limbs: [ 0x7eec846c006128d2a2f0a2ccaca02b, 0x7557a89b76dab0a2fe5e4300c9e041, 0x000f96 ] } , - BigNum { limbs: [ 0x8fd58359d39d07910b8b9b66684add, 0x7d8c49ec4fb7f6900d91db7be189f1, 0x005363 ] } , - BigNum { limbs: [ 0x2dce7fa62abef76ef474639997b524, 0x29c6dfb12d903ca9ca762e25f67b62, 0x00208a ] } , - BigNum { limbs: [ 0x5b9ae4008d73829ab0eaa775faa012, 0x76e29080b50f1cd896a4b3705edc8a, 0x004256 ] } , - BigNum { limbs: [ 0x62091eff70e87c654f15578a055fef, 0x3070991cc8391661416356317928c9, 0x003197 ] } , - BigNum { limbs: [ 0x5415c7e32b57d8f14c6ea5a428c753, 0x2871d8bbf1938804b57eba0c7f48b2, 0x005ea3 ] } , - BigNum { limbs: [ 0x698e3b1cd304260eb391595bd738ae, 0x7ee150e18bb4ab3522894f9558bca1, 0x00154a ] } , - BigNum { limbs: [ 0x454cc072521a80dee4982fe73f0476, 0xc15b4cc4b5699059b96ae5d8e22ca0, 0x002ec1 ] } , - BigNum { limbs: [ 0x7857428dac417e211b67cf18c0fb8b, 0xe5f7dcd8c7dea2e01e9d23c8f5d8b3, 0x00452b ] } , - BigNum { limbs: [ 0x6a4174f9d391c3c1bc0e2e75444e71, 0xd2c2aeff4f7c1033a694607d9089ee, 0x00585f ] } , - BigNum { limbs: [ 0x53628e062aca3b3e43f1d08abbb190, 0xd4907a9e2dcc23063173a924477b65, 0x001b8d ] } , - BigNum { limbs: [ 0x077fb2af5f3968498cb1c004d751da, 0x9f9a7567a04fcef4eeac0deb62a9e2, 0x002f41 ] } , - BigNum { limbs: [ 0xb62450509f2296b6734e3efb28ae27, 0x07b8b435dcf86444e95bfbb6755b71, 0x0044ac ] } , - BigNum { limbs: [ 0x7f4b22ee86c90c6e3bf01c498740f6, 0xc509aec45575756fdf33240b9eb8c2, 0x004322 ] } , - BigNum { limbs: [ 0x3e58e0117792f291c40fe2b678bf0b, 0xe2497ad927d2bdc9f8d4e596394c91, 0x0030ca ] } , - BigNum { limbs: [ 0x62ff60cc15dea0c8e2dd3ed107d499, 0x0cdd9173bbfd3e8c95924f0548cbe5, 0x004c1c ] } , - BigNum { limbs: [ 0x5aa4a233e87d5e371d22c02ef82b68, 0x9a759829c14af4ad4275ba9c8f396e, 0x0027d1 ] } , - BigNum { limbs: [ 0xc9f9aa166bf26bc0797107b1cb3124, 0x3826c895df7f4b00e4140110a4aed7, 0x001896 ] } , - BigNum { limbs: [ 0xf3aa58e99269933f868ef74e34cedd, 0x6f2c61079dc8e838f3f4089133567b, 0x005b57 ] } , - BigNum { limbs: [ 0x6b1f176bbbafe77f0e8114b6a0d047, 0xe6b5bd56753f2c848ff6620f2d19a0, 0x0021fa ] } , - BigNum { limbs: [ 0x5284eb9442ac1780f17eea495f2fba, 0xc09d6c47080906b54811a792aaebb3, 0x0051f2 ] } , - BigNum { limbs: [ 0x24dfe0eff265eeb9f443beec8e4a98, 0xd12f488a4f008dde048d37f34632d0, 0x006ab6 ] } , - BigNum { limbs: [ 0x98c422100bf610460bbc401371b569, 0xd623e1132e47a55bd37ad1ae91d283, 0x000936 ] } , - BigNum { limbs: [ 0x89389d045ecd85912bd03df9174127, 0x5678784bdd314b69773fb25cf78088, 0x0009e9 ] } , - BigNum { limbs: [ 0x346b65fb9f8e796ed42fc106e8beda, 0x50dab151a016e7d060c85744e084cb, 0x006a04 ] } , - BigNum { limbs: [ 0xb2c43c2678b650937dff33b29a7067, 0x10012f49cbdbb0c057cfa5a042c808, 0x0032f6 ] } , - BigNum { limbs: [ 0x0adfc6d985a5ae6c8200cb4d658f9a, 0x9751fa53b16c827980386401953d4b, 0x0040f7 ] } , - BigNum { limbs: [ 0x89db099f5aa3d61cf9c8103c36f106, 0x04026adc48a1cb249422c0b1923c84, 0x00420f ] } , - BigNum { limbs: [ 0x33c8f960a3b828e30637eec3c90efb, 0xa350bec134a6681543e548f045c8cf, 0x0031de ] } , - BigNum { limbs: [ 0x131960517113c6aa3f1fa1135a9163, 0xb023314a82dbfe42fdcdc306e96f61, 0x006fbc ] } , - BigNum { limbs: [ 0xaa8aa2ae8d483855c0e05deca56e9e, 0xf72ff852fa6c34f6da3a469aee95f2, 0x000430 ] } , - BigNum { limbs: [ 0xa8dfb2d95d08eebad594175ea0777d, 0xd15d1348757839ea78d5ebd557ac68, 0x000fa5 ] } , - BigNum { limbs: [ 0x14c45026a15310452a6be7a15f8884, 0xd5f6165507cff94f5f321dcc8058eb, 0x006447 ] } , - BigNum { limbs: [ 0xb49eae14ca61adfb5a74bbf196694f, 0x78e42eccf77a299af2a89d3d9a9503, 0x0004a5 ] } , - BigNum { limbs: [ 0x090554eb33fa5104a58b430e6996b2, 0x2e6efad085ce099ee55f6c643d7050, 0x006f48 ] } , - BigNum { limbs: [ 0xc57c7aae3c5d192fc39139d30accaa, 0x6a37e78478720ac2b9a3a71bc6dee6, 0x0052ff ] } , - BigNum { limbs: [ 0xf8278851c1fee5d03c6ec52cf53357, 0x3d1b421904d628771e64628611266c, 0x0020ee ] } , - BigNum { limbs: [ 0xbfe4d04bc3af5abd41931e6ad8fbc4, 0xb4226f2d37b4092596aa02af41df19, 0x0052df ] } , - BigNum { limbs: [ 0xfdbf32b43aaca442be6ce09527043d, 0xf330ba7045942a14415e06f2962639, 0x00210d ] } , - BigNum { limbs: [ 0x5d4c8253345fc0da9862bcfa4152a5, 0xb67b052567d36d907e855e18e24fe2, 0x001666 ] } , - BigNum { limbs: [ 0x605780acc9fc3e25679d4205bead5c, 0xf0d824781574c5a95982ab88f5b571, 0x005d86 ] } , - BigNum { limbs: [ 0x2a6b489ba9d4071dd477a1a8fb9943, 0x2f1ccbe3e2f477c805e7d68aa60033, 0x0057e3 ] } , - BigNum { limbs: [ 0x9338ba645487f7e22b885d570466be, 0x78365db99a53bb71d2203317320520, 0x001c0a ] } , - BigNum { limbs: [ 0x1ab551c326a152b58257bb2e5d71db, 0xbc560f4a92e069085360a46e5262e7, 0x004bf9 ] } , - BigNum { limbs: [ 0xa2eeb13cd7baac4a7da843d1a28e26, 0xeafd1a52ea67ca3184a7653385a26c, 0x0027f3 ] } , - BigNum { limbs: [ 0x58997c0bcf1c7ec8ed5cac7b9d2bac, 0xb301523084ffbb94572c1757cd8070, 0x001998 ] } , - BigNum { limbs: [ 0x650a86f42f3f803712a3528462d455, 0xf451d76cf84877a580dbf24a0a84e3, 0x005a54 ] } , - BigNum { limbs: [ 0xbf85946a2dad3bd8b9c1884f38f043, 0x2e2d253894999a00ad991d57396878, 0x000645 ] } , - BigNum { limbs: [ 0xfe1e6e95d0aec327463e76b0c70fbe, 0x79260464e8ae99392a6eec4a9e9cda, 0x006da8 ] } , - BigNum { limbs: [ 0x79d0abcc6b92776cfd5fd90654dc47, 0x92b5ba1dbfdb4e6157ba4c1415819b, 0x001b33 ] } , - BigNum { limbs: [ 0x43d3573392c9879302a025f9ab23ba, 0x149d6f7fbd6ce4d8804dbd8dc283b8, 0x0058ba ] } , - BigNum { limbs: [ 0x68d3d308f6af752367d21449c614fb, 0x7acb9966a71884d4224a351c246aaa, 0x001e8c ] } , - BigNum { limbs: [ 0x54d02ff707ac89dc982deab639eb06, 0x2c879036d62fae65b5bdd485b39aa9, 0x005561 ] } , - BigNum { limbs: [ 0xd1347b378fbf96e206da11a5d36306, 0x0a11a0f704f4fc3e8acfe0f8245f0a, 0x00564c ] } , - BigNum { limbs: [ 0xec6f87c86e9c681df925ed5a2c9cfb, 0x9d4188a6785336fb4d3828a9b3a648, 0x001da1 ] } , - BigNum { limbs: [ 0xad4b8238fb15a2cd5f7b9753dbc950, 0x8876214b5ea64b7394e9aacb5a271f, 0x002bb6 ] } , - BigNum { limbs: [ 0x105880c703465c32a08467ac2436b1, 0x1edd08521ea1e7c6431e5ed67dde34, 0x004837 ] } , - BigNum { limbs: [ 0x63fff9337fecd313c7c03ef17a2033, 0xabee7c028923cc0affedaf37b5bb4e, 0x001c39 ] } , - BigNum { limbs: [ 0x59a409cc7e6f2bec383fc00e85dfce, 0xfb64ad9af424672ed81a5a6a224a05, 0x0057b3 ] } , - BigNum { limbs: [ 0x91a1faeb4b36d5cc2201b834e74a04, 0x8f5b87d7a05090eb099e349e17639b, 0x00605b ] } , - BigNum { limbs: [ 0x2c020814b3252933ddfe46cb18b5fd, 0x17f7a1c5dcf7a24ece69d503c0a1b8, 0x001392 ] } , - BigNum { limbs: [ 0xa2df4d8921e8aff1867882e0b9cae8, 0xcb41966a5661788743c7818f06051d, 0x0006f3 ] } , - BigNum { limbs: [ 0x1ac4b576dc734f0e79877c1f463519, 0xdc11933326e6bab294408812d20036, 0x006cf9 ] } , - BigNum { limbs: [ 0x5c5d4be5b92c7b5ab670793f534c85, 0x7f1658569f752082ae264b6ae7cc8d, 0x003a09 ] } , - BigNum { limbs: [ 0x6146b71a452f83a5498f85c0acb37c, 0x283cd146ddd312b729e1be36f038c6, 0x0039e4 ] } , - BigNum { limbs: [ 0x6736009fa130119f9a06a539dcc7bd, 0xf5a12bf093b927ab9acee22625ab94, 0x005351 ] } , - BigNum { limbs: [ 0x566e02605d2bed6065f959c6233844, 0xb1b1fdace98f0b8e3d39277bb259bf, 0x00209b ] } , - BigNum { limbs: [ 0x24c2fd6a62162b6b37d19f83bb87e0, 0xac8524669b3262d47d6f3069a6b4a9, 0x002146 ] } , - BigNum { limbs: [ 0x98e105959c45d394c82e5f7c447821, 0xface0536e215d0655a98d9383150aa, 0x0052a6 ] } , - BigNum { limbs: [ 0xa24a9bd470cd67ca0a0220aec02fa4, 0x3ba7dfb14308007b0e472badec8d39, 0x0057e0 ] } , - BigNum { limbs: [ 0x1b59672b8d8e9735f5fdde513fd05d, 0x6bab49ec3a4032bec9c0ddf3eb781a, 0x001c0d ] } , - BigNum { limbs: [ 0xbf80d6881dc2190c850dd65aaaaefa, 0x4708ac66bf63479ddf15c7b33589c3, 0x001bab ] } , - BigNum { limbs: [ 0xfe232c77e099e5f37af228a5555107, 0x604a7d36bde4eb9bf8f241eea27b8f, 0x005842 ] } , - BigNum { limbs: [ 0xd6c764f82602a7228bc1c0e7e3fdf5, 0x4cef0ca52f27785009eb7e7ecdaa03, 0x000658 ] } , - BigNum { limbs: [ 0xe6dc9e07d85957dd743e3e181c020c, 0x5a641cf84e20bae9ce1c8b230a5b4f, 0x006d95 ] } , - BigNum { limbs: [ 0x74957c1d2728744430911d2ef02d6c, 0x00c1a3aeef45073c6cb1200432d367, 0x00688a ] } , - BigNum { limbs: [ 0x490e86e2d7338abbcf6ee1d10fd295, 0xa69185ee8e032bfd6b56e99da531ec, 0x000b63 ] } , - BigNum { limbs: [ 0xb39fb2d51ad78d473ea412a309a77c, 0x9915614f3901e5434787eb246e5cea, 0x003d3d ] } , - BigNum { limbs: [ 0x0a04502ae38471b8c15bec5cf65885, 0x0e3dc84e44464df690801e7d69a869, 0x0036b0 ] } , - BigNum { limbs: [ 0x7203a676aa3fae360419ba7b4a732f, 0x208bd4a64316c3de999d9c5ccf8954, 0x00200d ] } , - BigNum { limbs: [ 0x4ba05c89541c50c9fbe64484b58cd2, 0x86c754f73a316f5b3e6a6d45087bff, 0x0053e0 ] } , - BigNum { limbs: [ 0xcb18f70b1666477b49fff1eb1daf38, 0x4e933af6252c6dc58e41cd427dbe5f, 0x00009c ] } , - BigNum { limbs: [ 0xf28b0bf4e7f5b784b6000d14e250c9, 0x58bfeea7581bc57449c63c5f5a46f3, 0x007351 ] } , - BigNum { limbs: [ 0x4567cac5c777f44c56fb3866d3a809, 0xffb392002a5b378787829b9e0abd13, 0x0067b3 ] } , - BigNum { limbs: [ 0x783c383a36e40ab3a904c6992c57f8, 0xa79f979d52ecfbb250856e03cd4840, 0x000c39 ] } , - BigNum { limbs: [ 0xdca0ae49bc978f29ebf33886000c8a, 0xabc5b7c03be4cc772df2b06be7d8d7, 0x0053d7 ] } , - BigNum { limbs: [ 0xe10354b641c46fd6140cc679fff377, 0xfb8d71dd416366c2aa155935f02c7b, 0x002015 ] } , - BigNum { limbs: [ 0x940867fad3080cff61da335d218c69, 0x9d4a6f36bb328011781ae2eb8338e5, 0x00596a ] } , - BigNum { limbs: [ 0x299b9b052b53f2009e25cba2de7398, 0x0a08ba66c215b3285fed26b654cc6e, 0x001a83 ] } , - BigNum { limbs: [ 0x542b67f83c49199e3ccb8dd576b0f5, 0xadb736656798954b937d9da775086a, 0x004a41 ] } , - BigNum { limbs: [ 0x69789b07c212e561c334712a894f0c, 0xf99bf33815af9dee448a6bfa62fce9, 0x0029ab ] } , - BigNum { limbs: [ 0x76cfa8688aad937936281d725764c6, 0xda887f345f79f45562e9505e5e255d, 0x005b21 ] } , - BigNum { limbs: [ 0x46d45a9773ae6b86c9d7e18da89b3b, 0xcccaaa691dce3ee4751eb94379dff6, 0x0018cb ] } , - BigNum { limbs: [ 0xeafd87bcdafda8cb6a70e04f526a21, 0x340846157bd5c13b498f50314635ca, 0x0029d8 ] } , - BigNum { limbs: [ 0xd2a67b43235e5634958f1eb0ad95e0, 0x734ae388017271fe8e78b97091cf88, 0x004a15 ] } , - BigNum { limbs: [ 0x1da259503de1389ec8f2d00aa19cc2, 0xbf6ff47ecf4640000ffa7ee6b74af1, 0x002250 ] } , - BigNum { limbs: [ 0xa001a9afc07ac661370d2ef55e633f, 0xe7e3351eae01f339c80d8abb20ba62, 0x00519c ] } , - BigNum { limbs: [ 0x03dab19044e968a5e53cecd36dabb8, 0xfcab3ad741ebc624a6bf28c35e8472, 0x00592e ] } , - BigNum { limbs: [ 0xb9c9516fb972965a1ac3122c925449, 0xaaa7eec63b5c6d153148e0de7980e1, 0x001abe ] } , - BigNum { limbs: [ 0x9d5d562fb82e29d6e0934f96c7a283, 0x5287a19abf3c4b844ced5de375e7cb, 0x0009c6 ] } , - BigNum { limbs: [ 0x2046acd0462dd5291f6caf69385d7e, 0x54cb8802be0be7b58b1aabbe621d88, 0x006a27 ] } , - BigNum { limbs: [ 0x726517ced91929d4910b491b0f88ae, 0x5ec1c5949c07f55d7b47c3dbbb90a2, 0x0010c6 ] } , - BigNum { limbs: [ 0x4b3eeb312542d52b6ef4b5e4f07753, 0x48916408e1403ddc5cc045c61c74b1, 0x006327 ] } , - BigNum { limbs: [ 0x93ecc4fa926abf15507909d573d669, 0x2ddbb6673ea3ae29036141e291016e, 0x00394a ] } , - BigNum { limbs: [ 0x29b73e056bf13feaaf86f52a8c2998, 0x797773363ea48510d4a6c7bf4703e5, 0x003aa3 ] } , - BigNum { limbs: [ 0xdb8c0f19e4d5789314520692a107bf, 0x559da0d834d894ef9b74b96b0020a5, 0x006d5b ] } , - BigNum { limbs: [ 0xe217f3e61986866cebadf86d5ef842, 0x51b588c5486f9e4a3c935036d7e4ad, 0x000692 ] } , - BigNum { limbs: [ 0x4ce9d6b7ae56c76a7878b810d6b679, 0xd0cbecb1569285bfd4bf0aae06bd36, 0x004ed8 ] } , - BigNum { limbs: [ 0x70ba2c4850053795878746ef294988, 0xd6873cec26b5ad7a0348fef3d1481d, 0x002514 ] } , - BigNum { limbs: [ 0x9a7d5bdaf34775fa3f8e60a92902ec, 0x7e6ad59835800491be3e124c5646a5, 0x0052a2 ] } , - BigNum { limbs: [ 0x2326a7250b148905c0719e56d6fd15, 0x28e8540547c82ea819c9f75581beae, 0x00214b ] } , - BigNum { limbs: [ 0x930a3974130cf21f0bf5b12e2ad57b, 0xa88d3bb843f1e59a0efbb9fbdaac29, 0x003f00 ] } , - BigNum { limbs: [ 0x2a99c98beb4f0ce0f40a4dd1d52a86, 0xfec5ede539564d9fc90c4fa5fd592a, 0x0034ec ] } , - BigNum { limbs: [ 0x0ca2ec307a54e23de675002a1dc598, 0xeaab319d871b6f8272abdf5878899b, 0x001327 ] } , - BigNum { limbs: [ 0xb10116cf84071cc2198afed5e23a69, 0xbca7f7fff62cc3b7655c2a495f7bb8, 0x0060c5 ] } , - BigNum { limbs: [ 0x7b78bbf9fcf6ac1a8ce009481b06f4, 0xcd295c0ef9e69f7e9ea74befd40aec, 0x00681c ] } , - BigNum { limbs: [ 0x422b4706016552e5731ff5b7e4f90d, 0xda29cd8e836193bb3960bdb203fa67, 0x000bd0 ] } , - BigNum { limbs: [ 0x684c6a14b706e6a4e458d205940a65, 0xb4baeca30de2fa564db1db4df55ad5, 0x00160f ] } , - BigNum { limbs: [ 0x555798eb4755185b1ba72cfa6bf59c, 0xf2983cfa6f6538e38a562e53e2aa7e, 0x005ddd ] } , - BigNum { limbs: [ 0x357125c09f65d2f6bc04f1ccc8a05b, 0x75ece38b6b216509c259b1a0a550a2, 0x002e7a ] } , - BigNum { limbs: [ 0x8832dd3f5ef62c0943fb0d33375fa6, 0x316646121226ce3015ae580132b4b1, 0x004573 ] } , - BigNum { limbs: [ 0x21340434d0af3d0e2bce377d6c3748, 0x53137d74125bb90512b69f97c1abe0, 0x003162 ] } , - BigNum { limbs: [ 0x9c6ffecb2dacc1f1d431c78293c8b9, 0x543fac296aec7a34c5516a0a165973, 0x00428b ] } , - BigNum { limbs: [ 0xb75ebf1fa6a848f2dcd7de352e7812, 0xfa066178e33c85eb74ae061ea0c95e, 0x005b88 ] } , - BigNum { limbs: [ 0x064543e057b3b60d232820cad187ef, 0xad4cc8249a0bad4e635a0383373bf5, 0x001864 ] } , - BigNum { limbs: [ 0x7841ddfd61aa748afd27280b1d26d5, 0xb5dc03165af6d7e53ad367a6de9eee, 0x004736 ] } , - BigNum { limbs: [ 0x456225029cb18a7502d8d6f4e2d92c, 0xf177268722515b549d34a1faf96665, 0x002cb6 ] } , - BigNum { limbs: [ 0xa3fca4c95e97ef62e4bc4334d24aa2, 0x970f33b7a49db81d211727eccfa32c, 0x00148a ] } , - BigNum { limbs: [ 0x19a75e369fc40f9d1b43bbcb2db55f, 0x1043f5e5d8aa7b1cb6f0e1b5086227, 0x005f63 ] } , - BigNum { limbs: [ 0x1af71607b2c66dfea4a56081023372, 0xb346b11ea91175e3dbeb28007ad97d, 0x0036e2 ] } , - BigNum { limbs: [ 0xa2acecf84b9591015b5a9e7efdcc8f, 0xf40c787ed436bd55fc1ce1a15d2bd6, 0x003d0a ] } , - BigNum { limbs: [ 0xd98e5d422c5d1b27ff824c52dca1d0, 0x28e8851cb172fab2b64503252a7def, 0x004e8f ] } , - BigNum { limbs: [ 0xe415a5bdd1fee3d8007db2ad235e31, 0x7e6aa480cbd5388721c3067cad8763, 0x00255e ] } , - BigNum { limbs: [ 0x47a42d475447363d44f03d6a565b97, 0xbe856f6bbf1c5d54f3a81142092b09, 0x005168 ] } , - BigNum { limbs: [ 0x75ffd5b8aa14c8c2bb0fc195a9a46a, 0xe8cdba31be2bd5e4e45ff85fceda4a, 0x002284 ] } , - BigNum { limbs: [ 0x31d674997b53dae2b092cec051cab3, 0x4c464e1891f0c3c830738958768167, 0x001f64 ] } , - BigNum { limbs: [ 0x8bcd8e668308241d4f6d303fae354e, 0x5b0cdb84eb576f71a79480496183ec, 0x005489 ] } , - BigNum { limbs: [ 0xa86a543b84b81418e39ed00f0fb9e9, 0x2c67e97367ce5c3e6671824479d465, 0x003d75 ] } , - BigNum { limbs: [ 0x1539aec479a3eae71c612ef0f04618, 0x7aeb402a1579d6fb7196875d5e30ee, 0x003678 ] } , - BigNum { limbs: [ 0x8378bf20f973c70da3b463586d4b7b, 0xcdaeaa9b7abf7cc0ce06072e27a588, 0x003aa6 ] } , - BigNum { limbs: [ 0x3a2b43df04e837f25c4b9ba792b486, 0xd9a47f020288b6790a020273b05fcb, 0x003946 ] } , - BigNum { limbs: [ 0x010585e07a712c0b6729335818e69a, 0x2bac15e611d6564ae36561f30c5d45, 0x00369d ] } , - BigNum { limbs: [ 0xbc9e7d1f83ead2f498d6cba7e71967, 0x7ba713b76b71dceef4a2a7aecba80e, 0x003d50 ] } , - BigNum { limbs: [ 0xa526579d681c965a90ff08490bfddc, 0x09f9fa970046d8d2e1418a37800c8a, 0x0027ad ] } , - BigNum { limbs: [ 0x187dab62963f68a56f00f6b6f40225, 0x9d592f067d015a66f6c67f6a57f8c9, 0x004c40 ] } , - BigNum { limbs: [ 0x203f88cbdc4471948cb801db257f24, 0xa39c71e06fdf474e1e622995bbb22e, 0x000088 ] } , - BigNum { limbs: [ 0x9d647a3422178d6b7347fd24da80dd, 0x03b6b7bd0d68ebebb9a5e00c1c5325, 0x007365 ] } , - BigNum { limbs: [ 0xd9640467b89b62bb3664bc5da730c0, 0xf25d387914b42e95a8ce3dab9495f8, 0x00070c ] } , - BigNum { limbs: [ 0xe43ffe9845c09c44c99b42a258cf41, 0xb4f5f124689404a42f39cbf6436f5a, 0x006ce0 ] } , - BigNum { limbs: [ 0xcb1c4c78afeecd4318a4cc529de646, 0x8ab180b6121766d0fbf770c619f590, 0x006722 ] } , - BigNum { limbs: [ 0xf287b6874e6d31bce75b32ad6219bb, 0x1ca1a8e76b30cc68dc1098dbbe0fc2, 0x000ccb ] } , - BigNum { limbs: [ 0xf232337ef6eba4549c3333d5cdae87, 0x1b7d643dcbb06052961d233134d2bd, 0x001131 ] } , - BigNum { limbs: [ 0xcb71cf8107705aab63cccb2a32517a, 0x8bd5c55fb197d2e741eae670a33295, 0x0062bc ] } , - BigNum { limbs: [ 0xd2a6543bf0a923b8baa3c5f39511a9, 0xfaafbd50344cd931eb4e7d8227c6d9, 0x0033f1 ] } , - BigNum { limbs: [ 0xeafdaec40db2db47455c390c6aee58, 0xaca36c4d48fb5a07ecb98c1fb03e79, 0x003ffb ] } , - BigNum { limbs: [ 0x1777ae6de43c3bcc3cf45503a26bf9, 0x4930044f66d8675907d64a5c2feb97, 0x005605 ] } , - BigNum { limbs: [ 0xa62c54921a1fc333c30ba9fc5d9408, 0x5e23254e166fcbe0d031bf45a819bc, 0x001de8 ] } , - BigNum { limbs: [ 0x7664eaa2d713a5c7b1b0deaf488dc0, 0xdecc5a66647f9784a0b1a526c1fc01, 0x00040b ] } , - BigNum { limbs: [ 0x473f185d274859384e4f2050b77241, 0xc886cf3718c89bb53756647b160952, 0x006fe1 ] } , - BigNum { limbs: [ 0xadbc1a2c46fc2c8d7616ca9a1232dd, 0x417472eed79049a3167cfffc90e27f, 0x0057d6 ] } , - BigNum { limbs: [ 0x0fe7e8d3b75fd27289e93465edcd24, 0x65deb6aea5b7e996c18b09a54722d4, 0x001c17 ] } , - BigNum { limbs: [ 0xfa62bbbbd6b631a42d6916ba23404c, 0x404b2b3e80406629c6836b11a80e95, 0x001e1a ] } , - BigNum { limbs: [ 0xc341474427a5cd5bd296e845dcbfb5, 0x6707fe5efd07cd1011849e902ff6bd, 0x0055d3 ] } , - BigNum { limbs: [ 0xd481d0bb6911548cb29e5f68cdc81a, 0xaaa3d798d21e94dadff55c6cbfdb7f, 0x00630e ] } , - BigNum { limbs: [ 0xe9223244954aaa734d619f973237e7, 0xfcaf5204ab299e5ef812ad351829d3, 0x0010de ] } , - BigNum { limbs: [ 0x030f7af2e756bfa10792d623ec078b, 0xaf53a7f8913c194caac36ab9b39ee1, 0x001fef ] } , - BigNum { limbs: [ 0xba94880d17053f5ef86d28dc13f876, 0xf7ff81a4ec0c19ed2d449ee8246672, 0x0053fd ] } , - BigNum { limbs: [ 0xca4d3655b7f65a7a73df2ecd0e2030, 0x7518b9fd3554c0f19a67641063833c, 0x004b1d ] } , - BigNum { limbs: [ 0xf356ccaa4665a4858c20d032f1dfd1, 0x323a6fa047f372483da0a591748216, 0x0028d0 ] } , - BigNum { limbs: [ 0xd3049773ed303c881867a03315f5d3, 0x2b4acc7c704c4f38a455be37d321ba, 0x0048b5 ] } , - BigNum { limbs: [ 0xea9f6b8c112bc277e7985eccea0a2e, 0x7c085d210cfbe40133b24b6a04e398, 0x002b38 ] } , - BigNum { limbs: [ 0xc2d66725116e6c0e39c5c0deac938d, 0x7b09d8722543e50d1ed404838c3942, 0x003c85 ] } , - BigNum { limbs: [ 0xfacd9bdaeced92f1c63a3e21536c74, 0x2c49512b58044e2cb934051e4bcc10, 0x003768 ] } , - BigNum { limbs: [ 0xc4f44254bfe3f098c01ebb90ee775e, 0x6d9caec03381a9ee3c0868e70f5777, 0x0043bc ] } , - BigNum { limbs: [ 0xf8afc0ab3e780e673fe1436f1188a3, 0x39b67add49c6894b9bffa0bac8addb, 0x003031 ] } , - BigNum { limbs: [ 0xfddd235c7a98ac608be7900aae3100, 0xa244819154424d60ebf9f5ac99f13f, 0x005cb7 ] } , - BigNum { limbs: [ 0xbfc6dfa383c3529f74186ef551cf01, 0x050ea80c2905e5d8ec0e13f53e1413, 0x001736 ] } , - BigNum { limbs: [ 0x4a0fd486334f79d808d5c0d3ae1f12, 0x9daab2457724a2a6708e58d280c315, 0x005ac9 ] } , - BigNum { limbs: [ 0x73942e79cb0c8527f72a3e2c51e0ef, 0x09a87758062390936779b0cf57423e, 0x001924 ] } , - BigNum { limbs: [ 0xea8c83047a0348092bc156145ae3be, 0x6498d3d08cd0b43f4591e262934f10, 0x001299 ] } , - BigNum { limbs: [ 0xd3177ffb8458b6f6d43ea8eba51c43, 0x42ba55ccf0777efa9276273f44b642, 0x006154 ] } , - BigNum { limbs: [ 0xc9e71e9ad981f3f9bee777f505a670, 0xa66cf5599656047e8cec0c7be22c07, 0x0015ed ] } , - BigNum { limbs: [ 0xf3bce46524da0b064118870afa5991, 0x00e63443e6f22ebb4b1bfd25f5d94b, 0x005e00 ] } , - BigNum { limbs: [ 0xaa95c116471933d23a4a114812d636, 0x1521f33b59d5e1255a25981421ff14, 0x0052c0 ] } , - BigNum { limbs: [ 0x130e41e9b742cb2dc5b5edb7ed29cb, 0x92313662237252147de2718db6063f, 0x00212d ] } , - BigNum { limbs: [ 0xd54a83f5ca1be3e25cfe9c39fa442b, 0xf39fdb8f4cc1ff72289a55de1ef66f, 0x003042 ] } , - BigNum { limbs: [ 0xe8597f0a34401b1da30162c605bbd6, 0xb3b34e0e308633c7af6db3c3b90ee3, 0x0043aa ] } , - BigNum { limbs: [ 0x6df133f7321a25f20ce8d579e35cee, 0xa3f774f19f1ff7a8b04d2828931d48, 0x0018c6 ] } , - BigNum { limbs: [ 0x4fb2cf08cc41d90df31729861ca313, 0x035bb4abde283b9127bae17944e80b, 0x005b27 ] } , - BigNum { limbs: [ 0x0f9d3b81d8d23eded4a5f256a9c7fa, 0xe84cc460e97596051ddbd646a327cd, 0x00211d ] } , - BigNum { limbs: [ 0xae06c77e2589c0212b5a0ca9563807, 0xbf06653c93d29d34ba2c335b34dd86, 0x0052cf ] } , - BigNum { limbs: [ 0x6d32c4bc785ddf8f84dcc764345e6f, 0x440f93c3062bad415ce2d67286aaff, 0x005d3d ] } , - BigNum { limbs: [ 0x50713e4385fe1f707b23379bcba192, 0x634395da771c85f87b25332f515a54, 0x0016b0 ] } , - BigNum { limbs: [ 0x65f7f950b8ea85342030e7ba39b3a6, 0x509b496b983f565de17858f422f2df, 0x002b01 ] } , - BigNum { limbs: [ 0x57ac09af457179cbdfcf1745c64c5b, 0x56b7e031e508dcdbf68fb0adb51274, 0x0048ec ] } , - BigNum { limbs: [ 0x0cf136ceac4b7be81282d9762849c5, 0x475dcfa943c0ac10e91b6361e98f4d, 0x004e05 ] } , - BigNum { limbs: [ 0xb0b2cc3152108317ed7d2589d7b63c, 0x5ff559f439878728eeeca63fee7606, 0x0025e8 ] } , - BigNum { limbs: [ 0xf5a38f02d0d9e3f6e035ff20282882, 0x92eb3eb00addf10be3c3f4a15ce3d9, 0x004f48 ] } , - BigNum { limbs: [ 0xc80073fd2d821b091fc9ffdfd7d77f, 0x1467eaed726a422df44415007b2179, 0x0024a5 ] } , - BigNum { limbs: [ 0x15abe4dc2aec8fda060609b2b47d85, 0x138145182f544c8a68d80bcba67af2, 0x0069de ] } , - BigNum { limbs: [ 0xa7f81e23d36f6f25f9f9f54d4b827c, 0x93d1e4854df3e6af6f2ffdd6318a61, 0x000a0f ] } , - BigNum { limbs: [ 0x1876aef7cc205e21ae42d827deca30, 0x6f29f2073a63626669c7c06691d161, 0x0010c7 ] } , - BigNum { limbs: [ 0xa52d5408323ba0de51bd26d82135d1, 0x3829379642e4d0d36e40493b4633f2, 0x006326 ] } , - BigNum { limbs: [ 0xd8e98cba8c851f53dbcceebb1aec4c, 0x7da509b2c067c30ab0c323dcd93343, 0x005edb ] } , - BigNum { limbs: [ 0xe4ba764571d6dfac24331044e513b5, 0x29ae1feabce0702f2744e5c4fed20f, 0x001512 ] } , - BigNum { limbs: [ 0x34466bd37b654e75fbe2738ef6ec21, 0xf7bdf6d2576613871ea55580a605e5, 0x002f9e ] } , - BigNum { limbs: [ 0x895d972c82f6b08a041d8b710913e0, 0xaf9532cb25e21fb2b962b42131ff6e, 0x00444e ] } , - BigNum { limbs: [ 0xe3d5c95963601cef87c9f995096338, 0x788108ad69a5b53f9e776978ee912d, 0x0022c0 ] } , - BigNum { limbs: [ 0xd9ce39a69afbe2107836056af69cc9, 0x2ed220f013a27dfa3990a028e97425, 0x00512d ] } , - BigNum { limbs: [ 0xa52764195066cb368bf892d23cfbea, 0x4ffc4e3af3f346bc2d29fe6ef3b600, 0x0000a1 ] } , - BigNum { limbs: [ 0x187c9ee6adf533c974076c2dc30417, 0x5756db628954ec7daade0b32e44f53, 0x00734c ] } , - BigNum { limbs: [ 0xe7644948035d564c122ce446b3b25c, 0xf7e46fad681a2e91cb91310e85e484, 0x003e4b ] } , - BigNum { limbs: [ 0xd63fb9b7fafea8b3edd31ab94c4da5, 0xaf6eb9f0152e04a80c76d8935220ce, 0x0035a1 ] } , - BigNum { limbs: [ 0xf2d9bfd5140d699cc42e43382e70a4, 0x083148cb1058349ee0fb910de629c0, 0x001bdd ] } , - BigNum { limbs: [ 0xcaca432aea4e95633bd1bbc7d18f5d, 0x9f21e0d26ceffe9af70c7893f1db92, 0x005810 ] } , - BigNum { limbs: [ 0xff8a227dfd1dec38fa67bcd4f84471, 0xbd7da7f332978a73656310ab4c6c08, 0x0066e4 ] } , - BigNum { limbs: [ 0xbe19e082013e12c70598422b07bb90, 0xe9d581aa4ab0a8c672a4f8f68b994a, 0x000d08 ] } , - BigNum { limbs: [ 0xdac5574c6b36285f26172cbdae7696, 0x467880c3870fe5f29a8023d2eb1261, 0x001a74 ] } , - BigNum { limbs: [ 0xe2deabb39325d6a0d9e8d24251896b, 0x60daa8d9f6384d473d87e5ceecf2f1, 0x005979 ] } , - BigNum { limbs: [ 0x092a39c6a48f459c533e348b6eff5f, 0x1db7d0376a78528b2ecd3ea8ae6c56, 0x0011e5 ] } , - BigNum { limbs: [ 0xb479c93959ccb963acc1ca749100a2, 0x899b596612cfe0aea93acaf92998fd, 0x006208 ] } , - BigNum { limbs: [ 0x209c683b1f1277f13eb4a91bb6a4f8, 0xdb28617d36ba715ec5ec903e27b135, 0x0051e8 ] } , - BigNum { limbs: [ 0x9d079ac4df49870ec14b55e4495b09, 0xcc2ac820468dc1db121b7963b0541e, 0x002204 ] } , - BigNum { limbs: [ 0x39d9bec3468ebe119a0380eb0bbdd4, 0xf5fcf2b2518e4d3d9ef4fd3ca74c1a, 0x00493d ] } , - BigNum { limbs: [ 0x83ca443cb7cd40ee65fc7e14f4422d, 0xb15636eb2bb9e5fc39130c6530b939, 0x002aaf ] } , - BigNum { limbs: [ 0xc036c97cdeccdb1309e8f8e477af4b, 0x633fec31a36e9a52920637cefbb3a0, 0x0053b9 ] } , - BigNum { limbs: [ 0xfd6d39831f8f23ecf617061b8850b6, 0x44133d6bd9d998e74601d1d2dc51b2, 0x002034 ] } , - BigNum { limbs: [ 0xb83acfc8e1fc9f12f727121ee0964a, 0x4d4c275307f975b7d7ce0cb29b36bc, 0x0017fa ] } , - BigNum { limbs: [ 0x056933371c5f5fed08d8ece11f69b7, 0x5a07024a754ebd820039fcef3cce97, 0x005bf3 ] } , - BigNum { limbs: [ 0x59be7af6c293cfd283f3b304941cef, 0x20f7ffe182d1e66aa095c3e85fc919, 0x0072b6 ] } , - BigNum { limbs: [ 0x63e588093bc82f2d7c0c4bfb6be312, 0x865b29bbfa764ccf377245b9783c3a, 0x000137 ] } , - BigNum { limbs: [ 0x03249c8429f87e6844532496014769, 0xf040e1fdfca4b40f89ddd68b08bfde, 0x000116 ] } , - BigNum { limbs: [ 0xba7f667bd4638097bbacda69feb898, 0xb712479f80a37f2a4e2a3316cf4575, 0x0072d6 ] } , - BigNum { limbs: [ 0x9356da41aa6f8f02e7836bb3ab600d, 0x64c674e3478a1a81fdfbfaf9e23819, 0x00690f ] } , - BigNum { limbs: [ 0x2a4d28be53ec6ffd187c934c549ff4, 0x428cb4ba35be18b7da0c0ea7f5cd3a, 0x000ade ] } , - BigNum { limbs: [ 0xcf83fe0ae1e6a534ea9661ff26117d, 0xfe13068acf76d38555ddf2b6be9f66, 0x005e47 ] } , - BigNum { limbs: [ 0xee2004f51c7559cb15699d00d9ee84, 0xa9402312add15fb4822a16eb1965ec, 0x0015a5 ] } , - BigNum { limbs: [ 0xad1740d605853de7454aa702a3c258, 0x76c88e274f02c447c149769ccad950, 0x0000a0 ] } , - BigNum { limbs: [ 0x108cc229f8d6c118bab557fd5c3da9, 0x308a9b762e456ef216be93050d2c03, 0x00734d ] } , - BigNum { limbs: [ 0xaec3d9a57ccd3297472f2054fecfd5, 0xb9661959f10d1a81eafd4497a5304a, 0x0054dd ] } , - BigNum { limbs: [ 0x0ee0295a818ecc68b8d0deab01302c, 0xeded10438c3b18b7ed0ac50a32d509, 0x001f0f ] } , - BigNum { limbs: [ 0xd7652e15e99c4fa549c326bd5ec839, 0x7e6d3b984ce333a79fcc2c033c1a9e, 0x0029e0 ] } , - BigNum { limbs: [ 0xe63ed4ea14bfaf5ab63cd842a137c8, 0x28e5ee053064ff92383bdd9e9beab4, 0x004a0d ] } , - BigNum { limbs: [ 0x4c88ff93efa64a2f0a407c5295fb98, 0xfac010dea4409740b7a0a0fd537819, 0x005882 ] } , - BigNum { limbs: [ 0x711b036c0eb5b4d0f5bf82ad6a0469, 0xac9318bed9079bf9206768a4848d3a, 0x001b6a ] } , - BigNum { limbs: [ 0x5e84d56af0f9ca4f7f8d52f0dc3992, 0x3119b933616cdbe1801187d7696ce6, 0x001772 ] } , - BigNum { limbs: [ 0x5f1f2d950d6234b08072ac0f23c66f, 0x7639706a1bdb575857f681ca6e986d, 0x005c7b ] } , - BigNum { limbs: [ 0x1f60d0941e92cd6a0c566da29d6b4e, 0x36ed69e2548982af2ca67090f30a51, 0x0007ca ] } , - BigNum { limbs: [ 0x9e43326bdfc93195f3a9915d6294b3, 0x7065bfbb28beb08aab619910e4fb02, 0x006c23 ] } , - BigNum { limbs: [ 0xe983b035dd777461db389f0c72ef67, 0xaaa63a9561e15c725eab59b885b4dc, 0x000a23 ] } , - BigNum { limbs: [ 0xd42052ca20e48a9e24c75ff38d109a, 0xfcacef081b66d6c7795cafe9525076, 0x0069c9 ] } , - BigNum { limbs: [ 0x1026bb7cc4a92cb1a5916f0c03c77e, 0x52872cea0502fba135f7b61b767f8b, 0x00673d ] } , - BigNum { limbs: [ 0xad7d478339b2d24e5a6e8ff3fc3883, 0x54cbfcb378453798a21053866185c8, 0x000cb0 ] } , - BigNum { limbs: [ 0xcc96ca4f8ddbb2b42b0658a8edfb6b, 0x43de3052b6648a3783538c1c28ad2f, 0x005c9c ] } , - BigNum { limbs: [ 0xf10d38b070804c4bd4f9a657120496, 0x6374f94ac6e3a90254b47d85af5823, 0x001751 ] } , - BigNum { limbs: [ 0xf152a3c0f1c231ff49725a1870375c, 0xf7d3c4edc935ffc2941254837a46d2, 0x006b82 ] } , - BigNum { limbs: [ 0xcc515f3f0c99cd00b68da4e78fc8a5, 0xaf7f64afb412337743f5b51e5dbe80, 0x00086a ] } , - BigNum { limbs: [ 0x9f913cac2cc77977ee6e82bfd3a1f9, 0xad1a0314eff2961eaed1c485488a76, 0x00706e ] } , - BigNum { limbs: [ 0x1e12c653d194858811917c402c5e08, 0xfa3926888d559d1b2936451c8f7add, 0x00037e ] } , - BigNum { limbs: [ 0x2ae97a5238177d86f50a21463dd536, 0x89498b4a364c53f06d7099b29ccb04, 0x004723 ] } , - BigNum { limbs: [ 0x92ba88adc64481790af5ddb9c22acb, 0x1e099e5346fbdf496a976fef3b3a4f, 0x002cca ] } , - BigNum { limbs: [ 0xb3b215b2a1cb8a7d5e2afb958221be, 0xa16e424912fc4b00c302811881c325, 0x0021e9 ] } , - BigNum { limbs: [ 0x09f1ed4d5c907482a1d5036a7dde43, 0x05e4e7546a4be8391505888956422e, 0x005204 ] } , - BigNum { limbs: [ 0x4e85ecd63f5c377a6298c0d8230e4f, 0x740ddd00e10d2b0611c4592c433219, 0x0062fa ] } , - BigNum { limbs: [ 0x6f1e1629beffc7859d673e27dcf1b2, 0x33454c9c9c3b0833c643b07594d33a, 0x0010f3 ] } , - BigNum { limbs: [ 0xe9678b025e60f28b161ada6afe9538, 0xf7a59a09cbe80551530ffb9aa031dd, 0x0027b8 ] } , - BigNum { limbs: [ 0xd43c77fd9ffb0c74e9e52495016ac9, 0xafad8f93b1602de884f80e0737d375, 0x004c34 ] } , - BigNum { limbs: [ 0x7ff15c409eef5bc3a92ef2ca3fd8cc, 0xfb4c9980bb944a5586179e02d5dc88, 0x004869 ] } , - BigNum { limbs: [ 0x3db2a6bf5f6ca33c56d10c35c02735, 0xac06901cc1b3e8e451f06b9f0228cb, 0x002b83 ] } , - BigNum { limbs: [ 0x85709d15b42a3e0c14b9b4139f47cc, 0xb392702c989dd317c3b03bc4cc00cc, 0x006104 ] } , - BigNum { limbs: [ 0x383365ea4a31c0f3eb464aec60b835, 0xf3c0b970e4aa60221457cddd0c0487, 0x0012e8 ] } , - BigNum { limbs: [ 0xd0d4498d8b5ced307b71c0af325c62, 0x9d954e4bc32d2071129882629c2840, 0x00278e ] } , - BigNum { limbs: [ 0xeccfb97272ff11cf848e3e50cda39f, 0x09bddb51ba1b12c8c56f873f3bdd12, 0x004c5f ] } , - BigNum { limbs: [ 0x525b7e8ba1b24d98d86a7929758ccd, 0x15da7d5d01b023f671701bbd40ca3b, 0x006b5e ] } , - BigNum { limbs: [ 0x6b4884745ca9b167279585d68a7334, 0x9178ac407b980f436697ede4973b18, 0x00088f ] } , - BigNum { limbs: [ 0x908e545d34e2793c0867a94b248b6c, 0x7d213aed98fd4b3905264a3e4317e5, 0x006bcc ] } , - BigNum { limbs: [ 0x2d15aea2c97985c3f79855b4db7495, 0x2a31eeafe44ae800d2e1bf6394ed6e, 0x000821 ] } , - BigNum { limbs: [ 0xc94cff0b73a8b9be2ad0a5f63874ba, 0xed38e13513aa7562ef27c3910418f9, 0x0056f9 ] } , - BigNum { limbs: [ 0xf45703f48ab34541d52f5909c78b47, 0xba1a4868699dbdd6e8e04610d3ec59, 0x001cf3 ] } , - BigNum { limbs: [ 0x36fe219d2f1ca32551d25163a57d86, 0xa592c8e79d78eb4ed97a2ea201b711, 0x002f18 ] } , - BigNum { limbs: [ 0x86a5e162cf3f5bdaae2dad9c5a827b, 0x01c060b5dfcf47eafe8ddaffd64e42, 0x0044d5 ] } , - BigNum { limbs: [ 0xa4784e5cefc9be2e1b980e4cafe433, 0x577770c381e5cbe1a229495b4b99c7, 0x0042db ] } , - BigNum { limbs: [ 0x192bb4a30e9240d1e467f0b3501bce, 0x4fdbb8d9fb62675835dec0468c6b8c, 0x003112 ] } , - BigNum { limbs: [ 0xb3c2c92942824865084a31ecb924fa, 0x2a1ecf656d32a30763627a6886702e, 0x001c62 ] } , - BigNum { limbs: [ 0x09e139d6bbd9b69af7b5cd1346db07, 0x7d345a381015903274a58f39519525, 0x00578b ] } , - BigNum { limbs: [ 0x3d902f03551049f127d7c393e202c0, 0xf9cfd3370d6c944417a9fc1f8cfeb5, 0x00056b ] } , - BigNum { limbs: [ 0x8013d3fca94bb50ed8283b6c1dfd41, 0xad8356666fdb9ef5c05e0d824b069e, 0x006e81 ] } , - BigNum { limbs: [ 0x4ba5d295058ca307a2b4097373ef5a, 0x85b55ab26d8ac390432f293555e2ba, 0x001d20 ] } , - BigNum { limbs: [ 0x71fe306af8cf5bf85d4bf58c8c10a7, 0x219dceeb0fbd6fa994d8e06c822299, 0x0056cd ] } , - BigNum { limbs: [ 0xc2c4351645ca60d00d8e28e597ebb9, 0x937f818d465e2b8a21cbde1084c7d2, 0x0019b8 ] } , - BigNum { limbs: [ 0xfadfcde9b8919e2ff271d61a681448, 0x13d3a81036ea07afb63c2b91533d80, 0x005a35 ] } , - BigNum { limbs: [ 0x449d265c117b30c24ac967f93d8b01, 0xb6bfa3edb16c0360158fd6702a37e9, 0x00141f ] } , - BigNum { limbs: [ 0x7906dca3ece0ce3db5369706c27500, 0xf09385afcbdc2fd9c2783331adcd6a, 0x005fcd ] } , - BigNum { limbs: [ 0x3651759b44053677b99f0eca393e84, 0xa01b180d7fc3a4c3b9f74a56ca0543, 0x00077b ] } , - BigNum { limbs: [ 0x87528d64ba56c8884660f035c6c17d, 0x0738118ffd848e761e10bf4b0e0010, 0x006c72 ] } , - BigNum { limbs: [ 0x5c324df87197f007401cd383ea6433, 0x19ddb92d997b13b0e0ff9f159f428e, 0x006b23 ] } , - BigNum { limbs: [ 0x6171b5078cc40ef8bfe32b7c159bce, 0x8d75706fe3cd1f88f7086a8c38c2c5, 0x0008ca ] } , - BigNum { limbs: [ 0xa3ed8c7d553c366294367b3eef0647, 0x6b11dbd832ff1fb4c9583417520f25, 0x0008b2 ] } , - BigNum { limbs: [ 0x19b67682a91fc89d6bc983c110f9ba, 0x3c414dc54a4913850eafd58a85f62e, 0x006b3b ] } , - BigNum { limbs: [ 0x9f779c216532e9654dff9acfc27353, 0xbb20340e48cb13a9b86723f41d63bd, 0x002365 ] } , - BigNum { limbs: [ 0x1e2c66de9929159ab20064303d8cae, 0xec32f58f347d1f901fa0e5adbaa196, 0x005087 ] } , - BigNum { limbs: [ 0x4badbde5b349d3512f0d5b5d19ba24, 0x6365555433d7803a1a95d55fc37552, 0x004e56 ] } , - BigNum { limbs: [ 0x71f6451a4b122baed0f2a3a2e645dd, 0x43edd4494970b2ffbd723442149001, 0x002597 ] } , - BigNum { limbs: [ 0x0acf4a881882c49d95b848783baff6, 0x6ef4daa39a3398ecd2bc6003abf49e, 0x004b0e ] } , - BigNum { limbs: [ 0xb2d4b877e5d93a626a47b687c4500b, 0x385e4ef9e3149a4d054ba99e2c10b5, 0x0028df ] } , - BigNum { limbs: [ 0xff7db1e208ca5762d37d2f50142c1d, 0x1798ccc9781075e48186a0f936f2f9, 0x00655b ] } , - BigNum { limbs: [ 0xbe26511df591a79d2c82cfafebd3e4, 0x8fba5cd40537bd55568168a8a11259, 0x000e92 ] } , - BigNum { limbs: [ 0xe4385aa59379304eb87f06f3052074, 0xb8a802a174ea379ba1457efc2e2881, 0x0011f9 ] } , - BigNum { limbs: [ 0xd96ba85a6ae2ceb14780f80cfadf8d, 0xeeab26fc085dfb9e36c28aa5a9dcd1, 0x0061f3 ] } , - BigNum { limbs: [ 0xec510028ee108633efbda071957818, 0x8ee91d8b9f540e171f160493e14fee, 0x0003a1 ] } , - BigNum { limbs: [ 0xd15302d7104b78cc10425e8e6a87e9, 0x186a0c11ddf42522b8f2050df6b564, 0x00704c ] } , - BigNum { limbs: [ 0xa7bbb5ec527557ba4fa14e54bbedf6, 0x417cb0e82b9ffd191ef6acc3e59f9d, 0x000c5e ] } , - BigNum { limbs: [ 0x15e84d13abe6a745b05eb0ab44120b, 0x65d678b551a83620b9115cddf265b6, 0x00678f ] } , - BigNum { limbs: [ 0xc024153f96227a1683c9b2579ec673, 0x898d8eda40f85e2f7f8a626b1f2011, 0x0035fc ] } , - BigNum { limbs: [ 0xfd7fedc0683984e97c364ca861398e, 0x1dc59ac33c4fd50a587da736b8e541, 0x003df1 ] } , - BigNum { limbs: [ 0xe952a25430c3b9c15e92b69fb876f2, 0x4d58a5b97c0d1ffa0fefe7651f7418, 0x004a57 ] } , - BigNum { limbs: [ 0xd45160abcd98453ea16d486047890f, 0x59fa83e4013b133fc818223cb8913a, 0x002996 ] } , - BigNum { limbs: [ 0xc16e47ee9344e623a5a02af7352846, 0x1570af1eaed89534129c442b9b50b0, 0x0039b2 ] } , - BigNum { limbs: [ 0xfc35bb116b1718dc5a5fd408cad7bb, 0x91e27a7ece6f9e05c56bc5763cb4a2, 0x003a3b ] } , - BigNum { limbs: [ 0xc9ff6bc17ee0c0300dcd481613376a, 0xf4786d303126047688651a184c8190, 0x003750 ] } , - BigNum { limbs: [ 0xf3a4973e7f7b3ecff232b6e9ecc897, 0xb2dabc6d4c222ec34fa2ef898b83c2, 0x003c9c ] } , - BigNum { limbs: [ 0xe47938602798ee2feabcab1eb5c580, 0x8bd6fa1e279cd00145595a25cf22fa, 0x000af4 ] } , - BigNum { limbs: [ 0xd92aca9fd6c310d0154353e14a3a81, 0x1b7c2f7f55ab633892aeaf7c08e258, 0x0068f9 ] } , - BigNum { limbs: [ 0x82450dbe073be8162efe65f1c2b990, 0xe506ed3420bd548b26494c5a621e78, 0x002335 ] } , - BigNum { limbs: [ 0x3b5ef541f72016e9d101990e3d4671, 0xc24c3c695c8adeaeb1bebd4775e6db, 0x0050b7 ] } , - BigNum { limbs: [ 0x1a903d8f52d2a90dff66838d9c7fbd, 0x8a08974d8c1bf1ec877e19a187e39b, 0x004c87 ] } , - BigNum { limbs: [ 0xa313c570ab8955f200997b72638044, 0x1d4a924ff12c414d5089f0005021b8, 0x002766 ] } , - BigNum { limbs: [ 0x96c3746709260726d987fa9e3bbed3, 0xa27be85055e8b203921cd6971c63e4, 0x004e25 ] } , - BigNum { limbs: [ 0x26e08e98f535f7d926780461c4412e, 0x04d7414d275f813645eb330abba16f, 0x0025c8 ] } , - BigNum { limbs: [ 0xbdee817f227e486819b9b9795c3e0f, 0x00154a61744cbb7789c88db15913ad, 0x000d03 ] } , - BigNum { limbs: [ 0xffb58180dbddb697e6464586a3c1f2, 0xa73ddf3c08fb77c24e3f7bf07ef1a5, 0x0066ea ] } , - BigNum { limbs: [ 0x07a6e79adda5afa3109ba77f2518c7, 0x867bd40a744e3d649126de0af18e82, 0x0063ea ] } , - BigNum { limbs: [ 0xb5fd1b6520b64f5cef645780dae73a, 0x20d7559308f9f5d546e12b96e676d1, 0x001003 ] } , - BigNum { limbs: [ 0x5b78d7ad57b0f38547116436757283, 0xfdd66062acb5a269327c0efa5e5c8c, 0x004514 ] } , - BigNum { limbs: [ 0x622b2b52a6ab0b7ab8ee9ac98a8d7e, 0xa97cc93ad09290d0a58bfaa779a8c7, 0x002ed8 ] } , - BigNum { limbs: [ 0xa56f61a006515a17be1566d99a7483, 0x4f501ad75aad02dac68288140c42da, 0x0043c5 ] } , - BigNum { limbs: [ 0x1834a15ff80aa4e841ea9826658b7e, 0x58030ec6229b305f1185818dcbc279, 0x003028 ] } , - BigNum { limbs: [ 0x065584e021791f1391419338a0badc, 0xe82a30c630237655b39804b4c4a0e3, 0x003951 ] } , - BigNum { limbs: [ 0xb74e7e1fdce2dfec6ebe6bc75f4525, 0xbf28f8d74d24bce4247004ed136470, 0x003a9b ] } , - BigNum { limbs: [ 0xf92ae474cef12d5145aca500592c77, 0x9d1eaf1c0b155b90729187a8961bf7, 0x000c7c ] } , - BigNum { limbs: [ 0xc4791e8b2f6ad1aeba5359ffa6d38a, 0x0a347a817232d7a9657681f941e95b, 0x006771 ] } , - BigNum { limbs: [ 0x97eb526090f342f807dc397d6d14ee, 0x13ef0677dcd750c7a1520e76702560, 0x00627c ] } , - BigNum { limbs: [ 0x25b8b09f6d68bc07f823c58292eb13, 0x93642325a070e27236b5fb2b67dff3, 0x001171 ] } , - BigNum { limbs: [ 0x94ea7f998e3036d6bed2498a5d8638, 0x448b1d5cbea6dfc72166834e512278, 0x003922 ] } , - BigNum { limbs: [ 0x28b98366702bc829412db575a279c9, 0x62c80c40bea15372b6a1865386e2db, 0x003acb ] } , - BigNum { limbs: [ 0xff614331a1c5ee416c0cec37d6d1e3, 0x358697a1948bdde939ccba7d1a0b56, 0x006912 ] } , - BigNum { limbs: [ 0xbe42bfce5c9610be93f312c8292e1e, 0x71cc91fbe8bc55509e3b4f24bdf9fc, 0x000adb ] } , - BigNum { limbs: [ 0xf453443751352cd5ec27c20801dd0c, 0xe39b16faf7c46cc7ac221e46db195c, 0x005428 ] } , - BigNum { limbs: [ 0xc950bec8ad26d22a13d83cf7fe22f5, 0xc3b812a28583c6722be5eb5afcebf6, 0x001fc4 ] } , - BigNum { limbs: [ 0x55db26760dbddac00db50a8b455478, 0xd94bd5ed9311a8d9ff5e4d8aea5817, 0x001b03 ] } , - BigNum { limbs: [ 0x67c8dc89f09e243ff24af474baab89, 0xce0753afea368a5fd8a9bc16edad3c, 0x0058e9 ] } , - BigNum { limbs: [ 0x49b65c7d1fed03f5b384a538296000, 0x7c3942fa7cfd9aed68d099c5eb4e62, 0x006288 ] } , - BigNum { limbs: [ 0x73eda682de6efb0a4c7b59c7d6a001, 0x2b19e6a3004a984c6f376fdbecb6f1, 0x001165 ] } , - BigNum { limbs: [ 0x3a5b42deb5e4c1b66d42eea88ef658, 0xd75572234819e092ac4898119b265f, 0x0020b2 ] } , - BigNum { limbs: [ 0x8348c02148773d4992bd10577109a9, 0xcffdb77a352e52a72bbf71903cdef4, 0x00533a ] } , - BigNum { limbs: [ 0x9789fe6f5e6d87ec21011e1910e3f6, 0xddfe267b290a0c6b6dbfa5a338e877, 0x0062a3 ] } , - BigNum { limbs: [ 0x261a04909fee7713defee0e6ef1c0b, 0xc9550322543e26ce6a4863fe9f1cdc, 0x001149 ] } , - BigNum { limbs: [ 0x4759df07c81cf588e130df905786d7, 0xe1eeb4fc8bcd8ed5ffac85a790ec7a, 0x000af2 ] } , - BigNum { limbs: [ 0x764a23f8363f09771ecf1f6fa8792a, 0xc56474a0f17aa463d85b83fa4718d9, 0x0068fa ] } , - BigNum { limbs: [ 0x5186929cb753ce8a84298fd3ddf34c, 0xba25714e3e69008fab821a3ee08d64, 0x006086 ] } , - BigNum { limbs: [ 0x6c1d7063470830757bd66f2c220cb5, 0xed2db84f3edf32aa2c85ef62f777ef, 0x001366 ] } , - BigNum { limbs: [ 0xe7a0348b8faec254f0afb89d963fea, 0x64ab3a29297f3027fbcec0f933fe6b, 0x003eee ] } , - BigNum { limbs: [ 0xd603ce746ead3cab0f50466269c017, 0x42a7ef7453c90311dc3948a8a406e7, 0x0034ff ] } , - BigNum { limbs: [ 0x3b845b65ff13ce04b81c740d89cb54, 0xd4ceaa3502758601997f45fa4a4b00, 0x0049b8 ] } , - BigNum { limbs: [ 0x821fa799ff4830fb47e38af27634ad, 0xd2847f687ad2ad383e88c3a78dba53, 0x002a34 ] } , - BigNum { limbs: [ 0xe365db905d5bbf2f11ec355270b1d7, 0x6c686f4d606c07c39a15c300ab83e5, 0x004b5f ] } , - BigNum { limbs: [ 0xda3e276fa1003fd0ee13c9ad8f4e2a, 0x3aeaba501cdc2b763df246a12c816d, 0x00288e ] } , - BigNum { limbs: [ 0xe2d540a29e52cd9cab5805fc609431, 0xba317c9334f608b7a43373d7cd3962, 0x006450 ] } , - BigNum { limbs: [ 0xdacec25d6009316354a7f9039f6bd0, 0xed21ad0a48522a8233d495ca0acbf0, 0x000f9c ] } , - BigNum { limbs: [ 0x2b493a84dfb36896b6a5c9464cd413, 0x24db15ec7c17375f6988a630da2245, 0x006eb6 ] } , - BigNum { limbs: [ 0x925ac87b1ea89669495a35b9b32bee, 0x827813b10130fbda6e7f6370fde30e, 0x000537 ] } , - BigNum { limbs: [ 0x9b4d224b0528c83d046a082716bcad, 0x86515fbcd4407b19ef363b2e531257, 0x002064 ] } , - BigNum { limbs: [ 0x2256e0b4f93336c2fb95f6d8e94354, 0x2101c9e0a907b81fe8d1ce7384f2fc, 0x005389 ] } , - BigNum { limbs: [ 0xeb12eb2761d20c77841793f2e1f3bd, 0xf7216cd9a914d05c53c86f28bcf1f1, 0x00683d ] } , - BigNum { limbs: [ 0xd29117d89c89f2887be86b0d1e0c44, 0xb031bcc3d43362dd843f9a791b1361, 0x000baf ] } , - BigNum { limbs: [ 0x8beb6ddae7129a65bf313b1012d3c3, 0x6543cac258cb9e754890fcc1363893, 0x003e2d ] } , - BigNum { limbs: [ 0x31b895251749649a40cec3efed2c3e, 0x420f5edb247c94c48f770ce0a1ccc0, 0x0035c0 ] } , - BigNum { limbs: [ 0xedd3f0704fcd8f277505ba720effe1, 0xa8a8ede82d0fb1e20890ceda6f1723, 0x0043a3 ] } , - BigNum { limbs: [ 0xcfd0128fae8e6fd88afa448df10020, 0xfeaa3bb550388157cf773ac768ee2f, 0x003049 ] } , - BigNum { limbs: [ 0xd1ce9ac4ad54c9e879678fda473b16, 0xae4c1953da0602d3749c19fa0c5093, 0x0056cb ] } , - BigNum { limbs: [ 0xebd5683b5107351786986f25b8c4eb, 0xf9071049a3423066636befa7cbb4bf, 0x001d21 ] } , - BigNum { limbs: [ 0xa589adcd54196cf6b1a5c2e3dca6d2, 0xfd08c1065f9bee4333f2689c749b27, 0x000dba ] } , - BigNum { limbs: [ 0x181a5532aa4292094e5a3c1c23592f, 0xaa4a68971dac44f6a415a105636a2c, 0x006632 ] } , - BigNum { limbs: [ 0x2f8dfa512822d59b3f666708cf6ab9, 0xd0072ac754cfe2a8f07114efb1bbae, 0x002c53 ] } , - BigNum { limbs: [ 0x8e1608aed6392964c09997f7309548, 0xd74bfed628785090e796f4b22649a5, 0x004799 ] } , - BigNum { limbs: [ 0xc31a16ae503a1dbb4d3aef9624f018, 0xe6e12b03a3ac400f72460d090590de, 0x004c37 ] } , - BigNum { limbs: [ 0xfa89ec51ae21e144b2c50f69db0fe9, 0xc071fe99d99bf32a65c1fc98d27474, 0x0027b5 ] } , - BigNum { limbs: [ 0x8cd6fdc62b7832b8bc7c0276b4eb5c, 0x0c57398282e4d2ba7b1aeab16b3187, 0x004445 ] } , - BigNum { limbs: [ 0x30cd0539d2e3cc474383fc894b14a5, 0x9afbf01afa63607f5ced1ef06cd3cc, 0x002fa8 ] } , - BigNum { limbs: [ 0x56f9dc800d97f131c91d435c7c321f, 0xe64eb0a6f68528607cdf9e439ef7d2, 0x00469d ] } , - BigNum { limbs: [ 0x66aa267ff0c40dce36e2bba383cde2, 0xc10478f686c30ad95b286b5e390d81, 0x002d4f ] } , - BigNum { limbs: [ 0x4b10df195a1e62c5f3a1fed8434f96, 0x7b876a5c766a1e9f60b772f6f9d3e6, 0x000afd ] } , - BigNum { limbs: [ 0x729323e6a43d9c3a0c5e0027bcb06b, 0x2bcbbf4106de149a775096aade316d, 0x0068f0 ] } , - BigNum { limbs: [ 0xfbd130f283c5b69e922efa201850aa, 0x6ccf34bf27600b6ce3857940d09152, 0x001f8c ] } , - BigNum { limbs: [ 0xc1d2d20d7a9648616dd104dfe7af57, 0x3a83f4de55e827ccf4829061077400, 0x005461 ] } , - BigNum { limbs: [ 0xa6a757eea27f2fa9af23aa807c2be1, 0x059ee3a1b642e96a613abae5c1d9bc, 0x005306 ] } , - BigNum { limbs: [ 0x16fcab115bdccf5650dc547f83d420, 0xa1b445fbc70549cf76cd4ebc162b97, 0x0020e7 ] } , - BigNum { limbs: [ 0xec67bec93ed7b8fcc288eadc69885e, 0xb2024f06f16a517e48c887951e3cc8, 0x004547 ] } , - BigNum { limbs: [ 0xd13c4436bf8446033d7714239677a3, 0xf550da968bdde1bb8f3f820cb9c88a, 0x002ea5 ] } , - BigNum { limbs: [ 0x2257110db62c1989285663ad98ee1f, 0x5151c6756d96e98d0ff23a9eb5a0ae, 0x0020d4 ] } , - BigNum { limbs: [ 0x9b4cf1f2482fe576d7a99b526711e2, 0x560163280fb149acc815cf032264a5, 0x005319 ] } , - BigNum { limbs: [ 0x0edb74177d38a4ad4cd59e471baa4d, 0x9e2545372c7b28f86f4786ee953296, 0x006cfe ] } , - BigNum { limbs: [ 0xaec88ee881235a52b32a60b8e455b4, 0x092de46650cd0a4168c082b342d2bd, 0x0006ef ] } , - BigNum { limbs: [ 0x412dab573abf941818f477fd67a800, 0x9584c239f193a789079521925a487d, 0x00439b ] } , - BigNum { limbs: [ 0x7c7657a8c39c6ae7e70b8702985801, 0x11ce67638bb48bb0d072e80f7dbcd6, 0x003052 ] } , - BigNum { limbs: [ 0x7f2231c95ebaaa709feba3bd78dc6b, 0xca0f0381c911ddb1b93891f3063039, 0x0057ce ] } , - BigNum { limbs: [ 0x3e81d1369fa1548f60145b42872396, 0xdd44261bb43655881ecf77aed1d51a, 0x001c1e ] } , - BigNum { limbs: [ 0xde10ef35c170a32825b20112cdd5e9, 0xcd1b39a42a351e4dedee0a80e57d26, 0x002bd5 ] } , - BigNum { limbs: [ 0xdf9313ca3ceb5bd7da4dfded322a18, 0xda37eff9531314ebea19ff20f2882c, 0x004817 ] } , - BigNum { limbs: [ 0xdd1684a82174337180d4984f1ebc40, 0x3177280da2870d25a01bec21dfa01e, 0x002abe ] } , - BigNum { limbs: [ 0xe08d7e57dce7cb8e7f2b66b0e143c1, 0x75dc018fdac1261437ec1d7ff86534, 0x00492f ] } , - BigNum { limbs: [ 0x3d7f2a56a5a89fc8a744a668a546f7, 0x302ac56ea9dfeb1198dd3db79ebe10, 0x000a71 ] } , - BigNum { limbs: [ 0x8024d8a958b35f3758bb58975ab90a, 0x7728642ed36848283f2acbea394743, 0x00697c ] } , - BigNum { limbs: [ 0x052f439346a8b05b12288d994b4771, 0xb9bad3328e426f695c45a377ddfd7e, 0x00682e ] } , - BigNum { limbs: [ 0xb874bf6cb7b34ea4edd77166b4b890, 0xed98566aef05c3d07bc26629fa07d5, 0x000bbe ] } , - BigNum { limbs: [ 0xba62b0c4e030ef1f583b87d6ade6f9, 0x014d6c8e9858d2bbd398ad664ee592, 0x002257 ] } , - BigNum { limbs: [ 0x0341523b1e2b0fe0a7c47729521908, 0xa605bd0ee4ef607e046f5c3b891fc1, 0x005196 ] } , - BigNum { limbs: [ 0x21e6561a1920b10c72391c8a1cc159, 0x16faab48860710a81440947ef47c01, 0x0003e6 ] } , - BigNum { limbs: [ 0x9bbdace5e53b4df38dc6e275e33ea8, 0x90587e54f7412291c3c77522e38952, 0x007007 ] } , - BigNum { limbs: [ 0x8aa947145e5a1fec90dd2dde7b5bef, 0x1560147bf3b782cd30aa038c9c0d6a, 0x00520e ] } , - BigNum { limbs: [ 0x32fabbeba001df136f22d12184a412, 0x91f315218990b06ca75e06153bf7e9, 0x0021df ] } , - BigNum { limbs: [ 0x29f6779cbe3cee50df9925dcf2a32c, 0x5c422ae049929893a83fe0e4945804, 0x006de1 ] } , - BigNum { limbs: [ 0x93ad8b63401f10af2066d9230d5cd5, 0x4b10febd33b59aa62fc828bd43ad4f, 0x00060c ] } , - BigNum { limbs: [ 0x1c29ca120a5e788da46467972393bf, 0x37a599bc3caad9f3d4cbc2d492945a, 0x006d29 ] } , - BigNum { limbs: [ 0xa17a38edf3fd86725b9b9768dc6c42, 0x6fad8fe1409d5946033c46cd4570f9, 0x0006c4 ] } , - BigNum { limbs: [ 0x8bdc93a30df3b872ba7cd748c22385, 0x0d6b5a03665f72c462365d4b3dd6b5, 0x0015a8 ] } , - BigNum { limbs: [ 0x31c76f5cf068468d458327b73ddc7c, 0x99e7cf9a16e8c07575d1ac569a2e9e, 0x005e45 ] } , - BigNum { limbs: [ 0x594d11234a23b7fd8eaaee8a4332e5, 0x6bbb0c03c90c1fc1bd3e89411619ec, 0x00539f ] } , - BigNum { limbs: [ 0x6456f1dcb438470271551075bccd1c, 0x3b981d99b43c13781ac98060c1eb67, 0x00204e ] } , - BigNum { limbs: [ 0xbe36f366cdac04fe33f22717ae9a38, 0x1bf270758c7cedda892c24b801fffa, 0x001fcf ] } , - BigNum { limbs: [ 0xff6d0f9930affa01cc0dd7e85165c9, 0x8b60b927f0cb455f4edbe4e9d60558, 0x00541e ] } , - BigNum { limbs: [ 0xa2bc16d1f444dd3d8631f87a66bd9b, 0xb86c4fe25686801afb3bb037c2a2a3, 0x006d81 ] } , - BigNum { limbs: [ 0x1ae7ec2e0a1721c279ce0685994266, 0xeee6d9bb26c1b31edccc596a1562b0, 0x00066b ] } , - BigNum { limbs: [ 0x429fc4b615dc88fbaeb3bdb102cf18, 0x62c9a6820e51c2d5d0d5ef27c7e4d5, 0x003b8b ] } , - BigNum { limbs: [ 0x7b043e49e87f7604514c414efd30e9, 0x4489831b6ef6706407321a7a10207e, 0x003862 ] } , - BigNum { limbs: [ 0xf771c7881bf39e9792c9e792201cec, 0xf49510f16df834c2564b0fa575d528, 0x000708 ] } , - BigNum { limbs: [ 0xc6323b77e26860686d36176ddfe315, 0xb2be18ac0f4ffe7781bcf9fc62302a, 0x006ce4 ] } , - BigNum { limbs: [ 0x032279af1aaeba30316f6a5cbe727c, 0xe71dd75bc2ecd64c8f0c367f618e97, 0x000c66 ] } , - BigNum { limbs: [ 0xba818950e3ad44cfce9094a3418d85, 0xc0355241ba5b5ced48fbd3227676bc, 0x006786 ] } , - BigNum { limbs: [ 0x95285f31f3aad9c2b862b5a29aa404, 0x4aebd7d15d91b9f6a3756239a7394f, 0x005c5c ] } , - BigNum { limbs: [ 0x287ba3ce0ab1253d479d495d655bfd, 0x5c6751cc1fb679433492a76830cc04, 0x001791 ] } , - BigNum { limbs: [ 0x5e256b68b3e8a4cd3a2a932e00323d, 0x168e51f06071676c71539cd85de38c, 0x001e97 ] } , - BigNum { limbs: [ 0x5f7e97974a735a32c5d56bd1ffcdc4, 0x90c4d7ad1cd6cbcd66b46cc97a21c7, 0x005556 ] } , - BigNum { limbs: [ 0x87e437986d307d92538c02aa2f6e16, 0xb672f7fb05252c5e0d6a5b267af071, 0x006080 ] } , - BigNum { limbs: [ 0x35bfcb67912b816dac73fc55d091eb, 0xf0e031a2782306dbca9dae7b5d14e2, 0x00136c ] } , - BigNum { limbs: [ 0x0c2482681b3eecc7d230d176d2502b, 0xd166744e9433dbc0ece48bd069c490, 0x005a31 ] } , - BigNum { limbs: [ 0xb17f8097e31d12382dcf2d892dafd6, 0xd5ecb54ee9145778eb237dd16e40c3, 0x0019bb ] } , - BigNum { limbs: [ 0x86b8b99e949a02a08d6542914ee68a, 0x2a3b847f9576527c4feb08776b8971, 0x001129 ] } , - BigNum { limbs: [ 0x36eb496169c1fc5f729abc6eb11977, 0x7d17a51de7d1e0bd881d012a6c7be2, 0x0062c4 ] } , - BigNum { limbs: [ 0x4dcb7d01ac2baaa6a808ecba9ac50b, 0x596e3a73a678b5b2804924315b5201, 0x002545 ] } , - BigNum { limbs: [ 0x6fd885fe5230545957f71245653af6, 0x4de4ef29d6cf7d8757bee5707cb352, 0x004ea8 ] } , - BigNum { limbs: [ 0xac76cc4049dd79650254e725ec2473, 0x0e33010313dbc8d859f57cc1de01fe, 0x005030 ] } , - BigNum { limbs: [ 0x112d36bfb47e859afdab17da13db8e, 0x9920289a696c6a617e128cdffa0355, 0x0023bd ] } , - BigNum { limbs: [ 0x998959ee6be9e2410139dd5d09fffd, 0xf17cbc4b985729a80acaddf2df26ce, 0x001503 ] } , - BigNum { limbs: [ 0x241aa91192721cbefec621a2f60004, 0xb5d66d51e4f10991cd3d2baef8de85, 0x005ee9 ] } , - BigNum { limbs: [ 0x71139ca7d67729c5bde460a2bdde47, 0x104a66cf8ad94927833498c5a6b856, 0x002bf7 ] } , - BigNum { limbs: [ 0x4c90665827e4d53a421b9e5d4221ba, 0x9708c2cdf26eea1254d370dc314cfd, 0x0047f6 ] } , - BigNum { limbs: [ 0x8b90011d36f27ab1f8b0fada34ec97, 0xa849a2a72f072104cea55f96f8dc55, 0x0036a4 ] } , - BigNum { limbs: [ 0x321401e2c769844e074f0425cb136a, 0xff0986f64e4112350962aa0adf28fe, 0x003d48 ] } , - BigNum { limbs: [ 0xefe96b3eb765c50b865660e5468565, 0xdc08604089a07e4077bf84d06c3ecf, 0x007390 ] } , - BigNum { limbs: [ 0xcdba97c146f639f479a99e1ab97a9c, 0xcb4ac95cf3a7b4f9604884d16bc683, 0x00005c ] } , - BigNum { limbs: [ 0xdefcb7f945a2551e66a066094d7636, 0x02f3870607e14fa3bbdd211d8337d4, 0x004421 ] } , - BigNum { limbs: [ 0xdea74b06b8b9a9e1995f98f6b289cb, 0xa45fa2977566e3961c2ae88454cd7e, 0x002fcc ] } , - BigNum { limbs: [ 0x5822b64e0b9b26373a682660761944, 0xa7eef5328e8818fe26781cf3ff9137, 0x001c36 ] } , - BigNum { limbs: [ 0x65814cb1f2c0d8c8c597d89f89e6bd, 0xff64346aeec01a3bb18fecadd8741c, 0x0057b6 ] } , - BigNum { limbs: [ 0xfb335a0dcf92b2fc5c7a8d9430e9cb, 0xa76183551e88d8097dcb514c5654dd, 0x005f25 ] } , - BigNum { limbs: [ 0xc270a8f22ec94c03a385716bcf1636, 0xfff1a6485ebf5b305a3cb85581b075, 0x0014c7 ] } , - BigNum { limbs: [ 0x31363172d494c26fb839a9faf8188e, 0x2c9f639a3a5ab566a93088cd7eb1c4, 0x006c1a ] } , - BigNum { limbs: [ 0x8c6dd18d29c73c9047c6550507e773, 0x7ab3c60342ed7dd32ed780d459538f, 0x0007d3 ] } , - BigNum { limbs: [ 0xaa1c87567b5903e83915b2035faea7, 0x57b15ac7081ca9b60f8f2c9fb54863, 0x0048b0 ] } , - BigNum { limbs: [ 0x13877ba98302fb17c6ea4cfca0515a, 0x4fa1ced6752b8983c878dd0222bcf0, 0x002b3d ] } , - BigNum { limbs: [ 0xafbb716bbc387cca1310530cc044fa, 0x5601643b2882d8a0074dfb20e2d164, 0x00211f ] } , - BigNum { limbs: [ 0x0de8919442238235ecefabf33fbb07, 0x5151c56254c55a99d0ba0e80f533ef, 0x0052ce ] } , - BigNum { limbs: [ 0x10e1a8f2f64bf41a2ef73c66cbb7c6, 0x8f02f37c8d2455ee9f580df9527030, 0x00173a ] } , - BigNum { limbs: [ 0xacc25a0d08100ae5d108c29934483b, 0x18503620f023dd4b38affba8859523, 0x005cb3 ] } , - BigNum { limbs: [ 0xa6122f655c997c2d3f94e98ca49bbb, 0xde0653949e912e81c1c7698c577526, 0x00143d ] } , - BigNum { limbs: [ 0x1791d39aa1c282d2c06b15735b6446, 0xc94cd608deb704b81640a01580902d, 0x005faf ] } , - BigNum { limbs: [ 0x1124d405bf7aabdf8d55151ef4f9ec, 0xc3c3bed53d882ad9387c916f12854a, 0x002055 ] } , - BigNum { limbs: [ 0xac7f2efa3ee1532072aae9e10b0615, 0xe38f6ac83fc008609f8b7832c58009, 0x005397 ] } , - BigNum { limbs: [ 0x2c74299a10e7c95e09090a764f6390, 0xbfebc2782a92610f3e639653fe3c1c, 0x006efc ] } , - BigNum { limbs: [ 0x912fd965ed7435a1f6f6f489b09c71, 0xe767672552b5d22a99a4734dd9c937, 0x0004f0 ] } , - BigNum { limbs: [ 0x886bbc04a47c4088112f52fe2c4432, 0x3dfdc5b94c147f938adf9e252d8003, 0x006eef ] } , - BigNum { limbs: [ 0x353846fb59dfbe77eed0ac01d3bbcf, 0x695563e43133b3a64d286b7caa8550, 0x0004fe ] } , - BigNum { limbs: [ 0xbd0f5c286ae03a2c5fd0ee29a61068, 0x4b0ce3eea8ca794fdc040507aba85a, 0x003012 ] } , - BigNum { limbs: [ 0x0094a6d7937bc4d3a02f10d659ef99, 0x5c4645aed47db9e9fc04049a2c5cf9, 0x0043db ] } , - BigNum { limbs: [ 0x36b7edd690eb355bbdd1528660c72d, 0x4bd9de921697a1e738e2f329ab8e0b, 0x001152 ] } , - BigNum { limbs: [ 0x86ec15296d70c9a4422eac799f38d4, 0x5b794b0b66b091529f2516782c7748, 0x00629b ] } , - BigNum { limbs: [ 0xd72ad65f46d726783ee4e9030b121d, 0x4f5a2a19f612bc5b54bb9d04899f77, 0x0032ec ] } , - BigNum { limbs: [ 0xe6792ca0b784d887c11b15fcf4ede4, 0x57f8ff83873576de834c6c9d4e65db, 0x004101 ] } , - BigNum { limbs: [ 0xc38dc29ee64919bd5b0d2da1fdb04f, 0xadda3175e8ed6509386b35e64b9e42, 0x005508 ] } , - BigNum { limbs: [ 0xfa1640611812e542a4f2d15e024fb2, 0xf978f827945ace309f9cd3bb8c6710, 0x001ee4 ] } , - BigNum { limbs: [ 0x8e7c5ddb1443d706f0db8c7121f9f3, 0x81191b6befa46edbc381958375eb7d, 0x001666 ] } , - BigNum { limbs: [ 0x2f27a524ea1827f90f24728ede060e, 0x263a0e318da3c45e1486741e6219d6, 0x005d87 ] } , - BigNum { limbs: [ 0x362129fcf80f3a0c35fe1ecc54fea6, 0x7330eb7307e28a976c40c41df52101, 0x00446d ] } , - BigNum { limbs: [ 0x8782d903064cc4f3ca01e033ab015b, 0x34223e2a7565a8a26bc74583e2e452, 0x002f80 ] } , - BigNum { limbs: [ 0x896469b6669563c15ccddff613e6c3, 0x5ad7346c2a74d501f59804e685491d, 0x0045ad ] } , - BigNum { limbs: [ 0x343f994997c69b3ea3321f09ec193e, 0x4c7bf53152d35e37e27004bb52bc36, 0x002e40 ] } , - BigNum { limbs: [ 0x71eca35d5272bc11b2b030ee121117, 0xac36dbd7d8ed6f40d43527acf89d16, 0x004c3a ] } , - BigNum { limbs: [ 0x4bb75fa2abe942ee4d4fce11edeeea, 0xfb1c4dc5a45ac3f903d2e1f4df683d, 0x0027b2 ] } , - BigNum { limbs: [ 0x02b20f5415c8edfd3888c1a912f735, 0x7dd6b49f8d01590557dbc7ff3a72c5, 0x007263 ] } , - BigNum { limbs: [ 0xbaf1f3abe8931102c7773d56ed08cc, 0x297c74fdf046da34802c41a29d928e, 0x00018a ] } , - BigNum { limbs: [ 0x07af22564f84f8f83aecc92580b8aa, 0x5a42aef9c0269ffb74496a8aa8d45f, 0x004f6e ] } , - BigNum { limbs: [ 0xb5f4e0a9aed70607c51335da7f4757, 0x4d107aa3bd21933e63be9f172f30f4, 0x00247f ] } , - BigNum { limbs: [ 0x9c70269bbd114690350f4e3f8df6a5, 0x89e17d7aec42fb14952aba78db9462, 0x0017ca ] } , - BigNum { limbs: [ 0x2133dc64414ab86fcaf0b0c072095c, 0x1d71ac229105382542dd4f28fc70f1, 0x005c23 ] } , - BigNum { limbs: [ 0x5984f698b67a4f84e0147535fc4cc7, 0x9fb480cf1962424ccc9781abb5d4bd, 0x005cc5 ] } , - BigNum { limbs: [ 0x641f0c6747e1af7b1feb89ca03b33a, 0x079ea8ce63e5f0ed0b7087f6223096, 0x001728 ] } , - BigNum { limbs: [ 0xcc3eb7bca53cba14e4436934073cf8, 0xa29cc0a9b176bab082cf14139ca439, 0x000be1 ] } , - BigNum { limbs: [ 0xf1654b43591f44eb1bbc95cbf8c309, 0x04b668f3cbd178895538f58e3b6119, 0x00680c ] } , - BigNum { limbs: [ 0x577ec3fec64b94ffa0768034358069, 0x2f0427377bf2559ffc5a62719e22db, 0x001c74 ] } , - BigNum { limbs: [ 0x66253f0138106a005f897ecbca7f98, 0x784f02660155dd99dbada73039e278, 0x005779 ] } , - BigNum { limbs: [ 0x336422fb2484bea951fae8db934564, 0x8cfc63f4ce5809a7f4331ef665f6ff, 0x002060 ] } , - BigNum { limbs: [ 0x8a3fe004d9d74056ae0516246cba9d, 0x1a56c5a8aef02991e3d4eaab720e54, 0x00538d ] } , - BigNum { limbs: [ 0x2fee58775d07250cdf6a3a35ecf57f, 0x5f739bcb6b817b150a3d799a20a549, 0x001e1e ] } , - BigNum { limbs: [ 0x8db5aa88a154d9f32095c4ca130a82, 0x47df8dd211c6b824cdca9007b7600a, 0x0055cf ] } , - BigNum { limbs: [ 0xacd165ded9ee4bee85bd9f44eadafc, 0x8c66cae96230cc8ca46d95273f8560, 0x0043aa ] } , - BigNum { limbs: [ 0x10d29d21246db3117a425fbb152505, 0x1aec5eb41b1766ad339a747a987ff3, 0x003043 ] } , - BigNum { limbs: [ 0xa62701b792b4b927428087510b4690, 0x4dfbddaa0f7018a5f6c9d6ee753c3a, 0x000c3e ] } , - BigNum { limbs: [ 0x177d01486ba745d8bd7f77aef4b971, 0x59574bf36dd81a93e13e32b362c919, 0x0067af ] } , - BigNum { limbs: [ 0x2bb8a6efad1e27f723ac02bc953aad, 0x19512cc16fca078fe779deb9655e56, 0x0027db ] } , - BigNum { limbs: [ 0x91eb5c10513dd708dc53fc436ac554, 0x8e01fcdc0d7e2ba9f08e2ae872a6fd, 0x004c12 ] } , - BigNum { limbs: [ 0x4b2cfa769fd7090da3400381fcc74e, 0x37ba404a0d987ba20ac46f869f0e03, 0x002a5f ] } , - BigNum { limbs: [ 0x727708895e84f5f25cbffb7e0338b3, 0x6f98e9536fafb797cd439a1b38f750, 0x00498e ] } , - BigNum { limbs: [ 0x4c63965a705ecf9e985c7e18ed3d94, 0x676f45ec4c4be580c83d05f64c7819, 0x00641b ] } , - BigNum { limbs: [ 0x71406ca58dfd2f6167a380e712c26d, 0x3fe3e3b130fc4db90fcb03ab8b8d3a, 0x000fd2 ] } , - BigNum { limbs: [ 0x40a5a6bee95b75b0a24612e823d13d, 0xb243df1e9853a678f914d4d20ec0cd, 0x004d3d ] } , - BigNum { limbs: [ 0x7cfe5c411500894f5db9ec17dc2ec4, 0xf50f4a7ee4f48cc0def334cfc94486, 0x0026af ] } , - BigNum { limbs: [ 0xe486ab9c1d181d325a4c24c7ca7cc7, 0x380a113e0de0bb589129ecd866e89a, 0x0004e7 ] } , - BigNum { limbs: [ 0xd91d5763e143e1cda5b3da3835833a, 0x6f49185f6f6777e146de1cc9711cb8, 0x006f06 ] } , - BigNum { limbs: [ 0xdad8d7196fb3f65c1941863d1168cd, 0x90308f169ce69e837a858ba1f4dbec, 0x0014da ] } , - BigNum { limbs: [ 0xe2cb2be68ea808a3e6be78c2ee9734, 0x17229a86e06194b65d827dffe32966, 0x005f13 ] } , - BigNum { limbs: [ 0x74bd923dc36a592cc0d7becb4f8876, 0x61262f282dcae92f7171df3b47edda, 0x005b1b ] } , - BigNum { limbs: [ 0x48e670c23af1a5d33f284034b0778b, 0x462cfa754f7d4a0a66962a66901779, 0x0018d2 ] } , - BigNum { limbs: [ 0x6d7db0e788ca47358d0356fe5c9dd1, 0x3bf5a632c343afe3c67ccb9bc555d5, 0x004101 ] } , - BigNum { limbs: [ 0x502652187591b7ca72fca801a36230, 0x6b5d836aba048356118b3e0612af7e, 0x0032ec ] } , - BigNum { limbs: [ 0x8478c058ba081aa9a5318b553b5055, 0x204b4d180e5fafaf710124fe64cc2f, 0x00303b ] } , - BigNum { limbs: [ 0x392b42a74453e4565ace73aac4afac, 0x8707dc856ee8838a6706e4a3733924, 0x0043b2 ] } , - BigNum { limbs: [ 0xdedeaa3d44c908d6481057712b62db, 0xae5fdb8f2f3d6ddcbaedc9453e96d0, 0x001bb7 ] } , - BigNum { limbs: [ 0xdec558c2b992f629b7efa78ed49d26, 0xf8f34e0e4e0ac55d1d1a405c996e82, 0x005835 ] } , - BigNum { limbs: [ 0xc6be59ee6c4978fab7b69fb529b7e3, 0x6c09a50cc22023fa498ade54827584, 0x006aeb ] } , - BigNum { limbs: [ 0xf6e5a9119212860548495f4ad6481e, 0x3b498490bb280f3f8e7d2b4d558fce, 0x000902 ] } , - BigNum { limbs: [ 0x8f864a71161064a192553890378d77, 0x17ee086c6e073fd463744dfe796c4c, 0x004698 ] } , - BigNum { limbs: [ 0x2e1db88ee84b9a5e6daac66fc8728a, 0x8f6521310f40f3657493bba35e9907, 0x002d55 ] } , - BigNum { limbs: [ 0x9a9969bef61c7030607eed4e106241, 0xd1f0e3ff52986368034091730c6b9d, 0x000b2c ] } , - BigNum { limbs: [ 0x230a9941083f8ecf9f8111b1ef9dc0, 0xd562459e2aafcfd1d4c7782ecb99b6, 0x0068c0 ] } , - BigNum { limbs: [ 0x507e6d99ae9fb5cf3f5b54b4aec959, 0x04f0408c123beba4f8ff3b7a8c1be7, 0x00027f ] } , - BigNum { limbs: [ 0x6d2595664fbc4930c0a4aa4b5136a8, 0xa262e9116b0c4794df08ce274be96c, 0x00716e ] } , - BigNum { limbs: [ 0xd9ded9e5b846364876072015b5eb65, 0xf33c820d1972523c36cb307c474c66, 0x002c3d ] } , - BigNum { limbs: [ 0xe3c5291a4615c8b789f8deea4a149c, 0xb416a79063d5e0fda13cd92590b8ec, 0x0047af ] } , - BigNum { limbs: [ 0xeb1be306684058ab89474dafefa2eb, 0xad8e0aff72fddd5f394035f10efc55, 0x004171 ] } , - BigNum { limbs: [ 0xd2881ff9961ba65476b8b150105d16, 0xf9c51e9e0a4a55da9ec7d3b0c908fd, 0x00327b ] } , - BigNum { limbs: [ 0x254f5541ef7930a331a41b73f7abaa, 0xc571ec70792379996efebe4f0acfa9, 0x002115 ] } , - BigNum { limbs: [ 0x9854adbe0ee2ce5cce5be38c085457, 0xe1e13d2d0424b9a069094b52cd35aa, 0x0052d7 ] } , - BigNum { limbs: [ 0xb41f6fa66c6185499dc9307637db4e, 0x33aa2adfa3d536b7641585985e553c, 0x000617 ] } , - BigNum { limbs: [ 0x0984935991fa79b66236ce89c824b3, 0x73a8febdd972fc8273f2840979b017, 0x006dd6 ] } , - BigNum { limbs: [ 0xf9ceeec6dcc80182ea775599840a35, 0xfeed9f0db0a00b8ee40fc17a7860b4, 0x00597c ] } , - BigNum { limbs: [ 0xc3d514392193fd7d1588a9667bf5cc, 0xa8658a8fcca827aaf3f848275fa49e, 0x001a70 ] } , - BigNum { limbs: [ 0x7c3afc63865e0d5abea05493f97fa6, 0x8700c692c174b22a86412d8ed07cee, 0x0040a9 ] } , - BigNum { limbs: [ 0x4169069c77fdf1a5415faa6c06805b, 0x2052630abbd3810f51c6dc13078865, 0x003344 ] } , - BigNum { limbs: [ 0x6fce9cfc06ce536b61e1f83655b4f5, 0xd69266a9fcde925a42a6d3f34fed4c, 0x0040d7 ] } , - BigNum { limbs: [ 0x4dd56603f78dab949e1e06c9aa4b0c, 0xd0c0c2f38069a0df956135ae881807, 0x003315 ] } , - BigNum { limbs: [ 0x6da96883a873462ccc2c2cf47c63df, 0x9ad5a4f61993a52471a84bb496a6c3, 0x0007f6 ] } , - BigNum { limbs: [ 0x4ffa9a7c55e8b8d333d3d20b839c22, 0x0c7d84a763b48e15665fbded415e90, 0x006bf7 ] } , - BigNum { limbs: [ 0xcdadabd0b38af56c035d9eab203dbe, 0x7ca455960f91959b712aca7c881bfe, 0x0021b1 ] } , - BigNum { limbs: [ 0xeff6572f4ad10993fca26054dfc243, 0x2aaed4076db69d9e66dd3f254fe954, 0x00523c ] } , - BigNum { limbs: [ 0xe00594924fb402d6cd14fd27e25700, 0x44261676fcc9f3bc3df6273fd94bd1, 0x003186 ] } , - BigNum { limbs: [ 0xdd9e6e6daea7fc2932eb01d81da901, 0x632d1326807e3f7d9a11e261feb981, 0x004267 ] } , - BigNum { limbs: [ 0x0ee7d30e12b23d1ab447818017f222, 0xc6b854445b5ea6798aa04ee79bdb41, 0x0068aa ] } , - BigNum { limbs: [ 0xaebc2ff1eba9c1e54bb87d7fe80ddf, 0xe09ad55921e98cc04d67baba3c2a12, 0x000b42 ] } , - BigNum { limbs: [ 0xfea3e5c0c9365a897755321979df0f, 0x1526811d79ccb36c6e20369d140fc1, 0x00306c ] } , - BigNum { limbs: [ 0xbf001d3f3525a47688aacce68620f2, 0x922ca880037b7fcd69e7d304c3f591, 0x004381 ] } , - BigNum { limbs: [ 0x749a7cd475fcba89e3a03ed602252d, 0x3d4724f28a112be91e58eee71d4355, 0x006a7a ] } , - BigNum { limbs: [ 0x4909862b885f44761c5fc029fddad4, 0x6a0c04aaf3370750b9af1ababac1fe, 0x000973 ] } , - BigNum { limbs: [ 0x0f1173523113cd28d02344081ebd9c, 0x6aa34cdcd1600752f686c03aab1979, 0x0072a9 ] } , - BigNum { limbs: [ 0xae928fadcd4831d72fdcbaf7e14265, 0x3cafdcc0abe82be6e18149672cebda, 0x000144 ] } , - BigNum { limbs: [ 0x19809deb59fb23d7cd720d549ab2eb, 0x7b346cc7e5c436afd1adf36438b891, 0x001f2d ] } , - BigNum { limbs: [ 0xa4236514a460db28328df1ab654d16, 0x2c1ebcd59783fc8a065a163d9f4cc2, 0x0054c0 ] } , - BigNum { limbs: [ 0x61c74f88aecaa3f8518c32a0f5203d, 0x2e03ec6552ab659ae7550d5fbfbdcb, 0x001264 ] } , - BigNum { limbs: [ 0x5bdcb3774f915b07ae73cc5f0adfc4, 0x794f3d382a9ccd9ef0b2fc42184788, 0x006189 ] } , - BigNum { limbs: [ 0x0f7509eb12bf7a12d6b6c03800e954, 0xd14a7eea8bf2615934146cd481131e, 0x006ced ] } , - BigNum { limbs: [ 0xae2ef914eb9c84ed29493ec7ff16ad, 0xd608aab2f155d1e0a3f39ccd56f235, 0x0006ff ] } , - BigNum { limbs: [ 0x5972f0c64c836900ff94c5632452fe, 0xb39695b0958edb6e036992fd59a041, 0x000050 ] } , - BigNum { limbs: [ 0x64311239b1d895ff006b399cdbad03, 0xf3bc93ece7b957cbd49e76a47e6512, 0x00739c ] } , - BigNum { limbs: [ 0x82918a1275e4859be951ce740d7fdb, 0xba9bb0ed7d9163545d0bf99fcaa395, 0x0056d7 ] } , - BigNum { limbs: [ 0x3b1278ed8877796416ae308bf28026, 0xecb778afffb6cfe57afc10020d61be, 0x001d15 ] } , - BigNum { limbs: [ 0x1601a76229c1adfbecb0a04cff1fd5, 0x7a5cdde8aca2e66faae39b39c088f7, 0x00292f ] } , - BigNum { limbs: [ 0xa7a25b9dd49a5104134f5eb300e02c, 0x2cf64bb4d0a54cca2d246e68177c5c, 0x004abe ] } , - BigNum { limbs: [ 0xb612d30c081aabf34e05525f877021, 0x4bfe667932157f92916e86d96b6930, 0x004bf2 ] } , - BigNum { limbs: [ 0x07912ff3f641530cb1faaca0788fe0, 0x5b54c3244b32b3a7469982c86c9c23, 0x0027fb ] } , - BigNum { limbs: [ 0xd5ea380ce32e6b2dd42bd931d880fa, 0xe427c36951f6d473cff7407c6dcfb4, 0x006e88 ] } , - BigNum { limbs: [ 0xe7b9caf31b2d93d22bd425ce277f07, 0xc32b66342b515ec60810c9256a359e, 0x000564 ] } , - BigNum { limbs: [ 0x0f84475022fe939470465bee013097, 0x58bad03c9dbd58155a83a8ea6c3390, 0x002cda ] } , - BigNum { limbs: [ 0xae1fbbafdb5d6b6b8fb9a311fecf6a, 0x4e985960df8adb247d8460b76bd1c3, 0x004713 ] } , - BigNum { limbs: [ 0xa16ef813f31e5f83b68b581d21fd33, 0xd5284c1600d347aae07d7872a6391a, 0x005202 ] } , - BigNum { limbs: [ 0x1c350aec0b3d9f7c4974a6e2de02ce, 0xd22add877c74eb8ef78a912f31cc39, 0x0021ea ] } , - BigNum { limbs: [ 0x48051e0746d4d27634d53c101b484f, 0x274c05b653d0979001b1a9c1802b67, 0x00425b ] } , - BigNum { limbs: [ 0x759ee4f8b7872c89cb2ac2efe4b7b2, 0x800723e729779ba9d6565fe057d9ec, 0x003192 ] } , - BigNum { limbs: [ 0x8503100bf4f456b35f7bf5575c7b23, 0x45cdf7a9ba4cf1bf9c0b78cfea72b9, 0x006f01 ] } , - BigNum { limbs: [ 0x38a0f2f40967a84ca08409a8a384de, 0x618531f3c2fb417a3bfc90d1ed929a, 0x0004ec ] } , - BigNum { limbs: [ 0xf49d1fef18fe446a96b2f8aba94ca5, 0x0381d5637adbe052493f508ebbd64e, 0x005062 ] } , - BigNum { limbs: [ 0xc906e310e55dba95694d065456b35c, 0xa3d1543a026c52e78ec8b9131c2f04, 0x00238b ] } , - BigNum { limbs: [ 0xe70398715625d1fe45dab729efaea5, 0x48d147f9e07b866b74814bbc6fc20e, 0x00284b ] } , - BigNum { limbs: [ 0xd6a06a8ea8362d01ba2547d610515c, 0x5e81e1a39cccacce6386bde5684344, 0x004ba2 ] } , - BigNum { limbs: [ 0x43e19212b8aa4df3a5ad5791a994d8, 0x540c98122505b6ecd0eb892cffb184, 0x000dd3 ] } , - BigNum { limbs: [ 0x79c270ed45b1b10c5a52a76e566b29, 0x5346918b58427c4d071c8074d853cf, 0x00661a ] } , - BigNum { limbs: [ 0x6bc6576070693cb7d4f57ca8e234d2, 0x78031812872bf13558bc3f0560e2d7, 0x00695a ] } , - BigNum { limbs: [ 0x51ddab9f8df2c2482b0a82571dcb2f, 0x2f50118af61c42047f4bca9c77227c, 0x000a93 ] } , - BigNum { limbs: [ 0xfe1703fe711c29b80e538fb0db8eac, 0xdb43a94f5b7bb38f39714deeb1ae8a, 0x0014bd ] } , - BigNum { limbs: [ 0xbf8cff018d3fd547f1ac6f4f247155, 0xcc0f804e21cc7faa9e96bbb32656c8, 0x005f2f ] } , - BigNum { limbs: [ 0x24660d2d313d631f591af96e8a7fee, 0xc197a37224f76ca24d962e9700475f, 0x00347c ] } , - BigNum { limbs: [ 0x993df5d2cd1e9be0a6e50591758013, 0xe5bb862b5850c6978a71db0ad7bdf4, 0x003f70 ] } , - BigNum { limbs: [ 0x88d41415a9d2b7905e2d22cc47814f, 0x81307e7897487efc9679d3ae6717af, 0x0029a4 ] } , - BigNum { limbs: [ 0x34cfeeea5489476fa1d2dc33b87eb2, 0x2622ab24e5ffb43d418e35f370eda4, 0x004a49 ] } , - BigNum { limbs: [ 0xf108e4ee1b6fb6162787b451688c10, 0x962e55e3bd5fbe8f28ffbc2667540c, 0x000c3d ] } , - BigNum { limbs: [ 0xcc9b1e11e2ec48e9d8784aae9773f1, 0x1124d3b9bfe874aaaf084d7b70b146, 0x0067b0 ] } , - BigNum { limbs: [ 0x206cf9748b83dd96d828215664721a, 0xe83969d643cbcec6ec3b08bdf75cb5, 0x006a6b ] } , - BigNum { limbs: [ 0x9d37098b72d8216927d7dda99b8de7, 0xbf19bfc7397c6472ebcd00e3e0a89e, 0x000981 ] } , - BigNum { limbs: [ 0x44895d478fa9ddd1291c9619ff853a, 0x8c88d24405c2e8c071ee884d75d3a4, 0x004ef4 ] } , - BigNum { limbs: [ 0x791aa5b86eb2212ed6e368e6007ac7, 0x1aca575977854a79661981546231af, 0x0024f9 ] } , - BigNum { limbs: [ 0x5a424237cbda19892e38be9f062611, 0x11bc8052d3e3f0c732b4b9a2d2ebd0, 0x000a94 ] } , - BigNum { limbs: [ 0x6361c0c83281e576d1c74060f9d9f0, 0x9596a94aa9644272a5534fff051983, 0x006959 ] } , - BigNum { limbs: [ 0x7d89921705901e5de06a0b012d0243, 0x594fdeb2e307f3e1fb2deb76f3bb71, 0x006c45 ] } , - BigNum { limbs: [ 0x401a70e8f8cbe0a21f95f3fed2fdbe, 0x4e034aea9a403f57dcda1e2ae449e2, 0x0007a8 ] } , - BigNum { limbs: [ 0xa788bc6d17181423c79bd954755494, 0x0481d07a7e9f35032fbef532789ce5, 0x00611b ] } , - BigNum { limbs: [ 0x161b4692e743eadc386425ab8aab6d, 0xa2d15922fea8fe36a849146f5f686e, 0x0012d2 ] } , - BigNum { limbs: [ 0x1653d1c1bc6e308ea22d6694856daa, 0xb4cc459331ab514ca0d0085bb39e9d, 0x005068 ] } , - BigNum { limbs: [ 0xa750313e41edce715dd2986b7a9257, 0xf286e40a4b9ce1ed373801462466b6, 0x002384 ] } , - BigNum { limbs: [ 0x054f3e075b729d81098d794dea5701, 0x6abf41700b9842a65fa559497c8810, 0x004f9d ] } , - BigNum { limbs: [ 0xb854c4f8a2e9617ef67285b215a900, 0x3c93e82d71aff0937862b0585b7d43, 0x002450 ] } , - BigNum { limbs: [ 0x5057d57703f9a87e126235ecd43026, 0x74affe564b7a8b3844deac9ea56431, 0x001736 ] } , - BigNum { limbs: [ 0x6d4c2d88fa625681ed9dc9132bcfdb, 0x32a32b4731cda80193295d0332a122, 0x005cb7 ] } , - BigNum { limbs: [ 0xb47dbca9cae90afbe221bbe8b0070f, 0x1707ef01055ae713812af75c3ce340, 0x006e6d ] } , - BigNum { limbs: [ 0x092646563372f4041dde43174ff8f2, 0x904b3a9c77ed4c2656dd12459b2213, 0x000580 ] } , - BigNum { limbs: [ 0x6f364ee6ca599e2a57e7c2e3829f5d, 0xbff09ddfad632d741d8ddfa5d583ef, 0x0061f4 ] } , - BigNum { limbs: [ 0x4e6db419340260d5a8183c1c7d60a4, 0xe7628bbdcfe505c5ba7a29fc028164, 0x0011f8 ] } , - BigNum { limbs: [ 0x0b303e3b187bfe2d29236b4aba2c30, 0x7d686e321ed7e2bf66e7d85fbbf104, 0x004f5a ] } , - BigNum { limbs: [ 0xb273c4c4e5e000d2d6dc93b545d3d1, 0x29eabb6b5e70507a712031421c144f, 0x002493 ] } , - BigNum { limbs: [ 0x8af5568bee084eafc9284dc5c825b3, 0x1e8cce6557ae443ba5d28686f073a4, 0x001c5b ] } , - BigNum { limbs: [ 0x32aeac741053b05036d7b13a37da4e, 0x88c65b382599eefe3235831ae791af, 0x005792 ] } , - BigNum { limbs: [ 0x7e09e82f1c3e9d4efb199435cf1951, 0x5d7839b1fcfcf9503d8f57a4d6614e, 0x003b14 ] } , - BigNum { limbs: [ 0x3f9a1ad0e21d61b104e66aca30e6b0, 0x49daefeb804b39e99a78b1fd01a405, 0x0038d9 ] } , - BigNum { limbs: [ 0x55d107b1c203eab17bd0bb5bad1182, 0x9c8b5342ec1d44944d3f7324eb7480, 0x001cb9 ] } , - BigNum { limbs: [ 0x67d2fb4e3c58144e842f43a452ee7f, 0x0ac7d65a912aeea58ac8967cec90d3, 0x005734 ] } , - BigNum { limbs: [ 0xcc98e5c7db5187d8c1d40bb10adc59, 0xc0675265fa2dfc519755c087a32876, 0x003c33 ] } , - BigNum { limbs: [ 0xf10b1d38230a77273e2bf34ef523a8, 0xe6ebd737831a36e840b2491a34dcdc, 0x0037b9 ] } , - BigNum { limbs: [ 0xc2ff3e383faedce4a93fcddb1211f4, 0x208ddf82338cb12eca28a2ee1691e3, 0x0035c4 ] } , - BigNum { limbs: [ 0xfaa4c4c7bead221b56c03124edee0d, 0x86c54a1b49bb820b0ddf66b3c1736f, 0x003e29 ] } , - BigNum { limbs: [ 0x770750a3295ce013845fe3e81af4a9, 0x5e069cf1ffd4b20beea0d3d2717cab, 0x0040d6 ] } , - BigNum { limbs: [ 0x469cb25cd4ff1eec7ba01b17e50b58, 0x494c8cab7d73812de96735cf6688a8, 0x003317 ] } , - BigNum { limbs: [ 0x4b6d768688f6163f7aef5a8d5a484b, 0xc4e0a34ac8817ca0911d55cb959127, 0x003367 ] } , - BigNum { limbs: [ 0x72368c797565e8c08510a472a5b7b6, 0xe2728652b4c6b69946eab3d642742c, 0x004085 ] } , - BigNum { limbs: [ 0x0454e65c549e730c28faecaf1e8d22, 0x56b81cdb2573eb5e4c7cc761dd4520, 0x005d92 ] } , - BigNum { limbs: [ 0xb94f1ca3a9bd8bf3d7051250e172df, 0x509b0cc257d447db8b8b423ffac033, 0x00165b ] } , - BigNum { limbs: [ 0x51ee0472a016488c27b766a60882f9, 0x11507fe896a5498eb71d7559be4c99, 0x0052c2 ] } , - BigNum { limbs: [ 0x6bb5fe8d5e45b673d8489859f77d08, 0x9602a9b4e6a2e9ab20ea944819b8ba, 0x00212b ] } , - BigNum { limbs: [ 0xc5bca14681745c76d754972b0417a7, 0x2f86c9d8d39011f0f8130ff3be0f88, 0x0018f0 ] } , - BigNum { limbs: [ 0xf7e761b97ce7a28928ab67d4fbe85a, 0x77cc5fc4a9b82148dff4f9ae19f5ca, 0x005afd ] } , - BigNum { limbs: [ 0x638559361842718ac62a5b6e5ad517, 0x6fb41d42210a721065e2d58541d8ed, 0x004100 ] } , - BigNum { limbs: [ 0x5a1ea9c9e6198d7539d5a391a52aea, 0x379f0c5b5c3dc1297225341c962c66, 0x0032ed ] } , - BigNum { limbs: [ 0x1950751921323a56171b04b937cdaf, 0x937ddeaca07bc012d70246b27dc065, 0x0024ee ] } , - BigNum { limbs: [ 0xa4538de6dd29c4a9e8e4fa46c83252, 0x13d54af0dccc73270105c2ef5a44ee, 0x004eff ] } , - BigNum { limbs: [ 0x2a319f1febe961d72e9ae3be101d4a, 0x9c3f07698480401ec4aa8199861df1, 0x004b05 ] } , - BigNum { limbs: [ 0x937263e012729d28d1651b41efe2b7, 0x0b142233f8c7f31b135d880851e762, 0x0028e8 ] } , - BigNum { limbs: [ 0x6741faefb9fa2d5aa8609bb6978a8a, 0x21978e244f9d146d95e0e0022b3e03, 0x001a07 ] } , - BigNum { limbs: [ 0x566208104461d1a5579f6349687577, 0x85bb9b792dab1ecc4227299facc750, 0x0059e6 ] } , - BigNum { limbs: [ 0x45ddc7c4867210129ed5dca288fdad, 0xda03c2eccc63b00e689f35ee7c4f17, 0x000145 ] } , - BigNum { limbs: [ 0x77c63b3b77e9eeed612a225d770254, 0xcd4f66b0b0e4832b6f68d3b35bb63c, 0x0072a7 ] } , - BigNum { limbs: [ 0xb74b780ee14bd5ffd348ed4368ea6b, 0xe856ea5ac03fc0e50bf8399e8a372b, 0x0030c0 ] } , - BigNum { limbs: [ 0x06588af11d1029002cb711bc971596, 0xbefc3f42bd087254cc0fd0034dce28, 0x00432c ] } , - BigNum { limbs: [ 0xb180cc06183fdc238b0dcafb1476da, 0x9abcdc6fffbff88b8ccd41b6fe9072, 0x006dae ] } , - BigNum { limbs: [ 0x0c2336f9e61c22dc74f23404eb8927, 0x0c964d2d7d883aae4b3ac7ead974e1, 0x00063f ] } , - BigNum { limbs: [ 0xa0aa4b47b65a9aa9b9e943288d1377, 0x1a344d6f5983ebaddafe1ce61a3e55, 0x002139 ] } , - BigNum { limbs: [ 0x1cf9b7b8480164564616bbd772ec8a, 0x8d1edc2e23c4478bfd09ecbbbdc6fe, 0x0052b4 ] } , - BigNum { limbs: [ 0xda2c1965bb0e4df3f081d760a857c1, 0x717dde8a10fab09cc8a6d690d6d975, 0x002b2c ] } , - BigNum { limbs: [ 0xe377e99a434db10c0f7e279f57a840, 0x35d54b136c4d829d0f613311012bdd, 0x0048c1 ] } , - BigNum { limbs: [ 0x4b18da6a0cb40d9f323ea3d74cb3ed, 0xd903bc2a828e0a910beaf7801c3c4a, 0x0068a3 ] } , - BigNum { limbs: [ 0x728b2895f1a7f160cdc15b28b34c14, 0xce4f6d72faba28a8cc1d1221bbc909, 0x000b49 ] } , - BigNum { limbs: [ 0xdbfda03b545ae6d8953347b71b2763, 0x4045701c2afdeb6b10d0ae8fdb6702, 0x004e58 ] } , - BigNum { limbs: [ 0xe1a662c4aa0118276accb748e4d89e, 0x670db981524a47cec7375b11fc9e50, 0x002595 ] } , - BigNum { limbs: [ 0x29f1a50e3889f85141aa86a2a5ecfe, 0xb7b08d8f15ade18c576cea199d2fa8, 0x000189 ] } , - BigNum { limbs: [ 0x93b25df1c5d206aebe55785d5a1303, 0xefa29c0e679a51ad809b1f883ad5ab, 0x007263 ] } , - BigNum { limbs: [ 0xb6ef0eb662097c3848f25bc12e55e5, 0x0f09621ec698c303dcd2525aa8e1d5, 0x00207c ] } , - BigNum { limbs: [ 0x06b4f4499c5282c7b70da33ed1aa1c, 0x9849c77eb6af7035fb35b7472f237e, 0x005371 ] } , - BigNum { limbs: [ 0xfee96131f8a2c92461b61f8c172710, 0x3925f9b4c85b4d19a6dc30bd3cf9de, 0x0034d0 ] } , - BigNum { limbs: [ 0xbebaa1ce05b935db9e49df73e8d8f1, 0x6e2d2fe8b4ece620312bd8e49b0b74, 0x003f1d ] } , - BigNum { limbs: [ 0x141e3d346407c47189304e56429ad5, 0xb91199af6c50c47d1bfcf63d8da28f, 0x0056f5 ] } , - BigNum { limbs: [ 0xa985c5cb9a543a8e76cfb0a9bd652c, 0xee418fee10f76ebcbc0b13644a62c4, 0x001cf7 ] } , - BigNum { limbs: [ 0x8bc773e8f76ec48f6d8cad9a860cd0, 0x8ac912456e1d8865c216fafad6f949, 0x004228 ] } , - BigNum { limbs: [ 0x31dc8f1706ed3a709273516579f331, 0x1c8a17580f2aaad415f10ea7010c0a, 0x0031c5 ] } , - BigNum { limbs: [ 0x0738e3b14d3321adc2f5fb7a0f9779, 0xe3491835bf37c77b9884e9951f09f5, 0x001285 ] } , - BigNum { limbs: [ 0xb66b1f4eb128dd523d0a0385f06888, 0xc40a1167be106bbe3f83200cb8fb5e, 0x006167 ] } , - BigNum { limbs: [ 0xede3c44914fead6b72120c1df2a4b7, 0xe8be4df796d59f6c51b91a1bb80965, 0x0057f2 ] } , - BigNum { limbs: [ 0xcfc03eb6e95d51948dedf2e20d5b4a, 0xbe94dba5e67293cd864eef861ffbed, 0x001bfa ] } , - BigNum { limbs: [ 0x02db433ead26c61eff4e410f51f541, 0xac8c4cf028e96b55b53b85b3aaaf65, 0x004f11 ] } , - BigNum { limbs: [ 0xbac8bfc1513538e100b1bdf0ae0ac0, 0xfac6dcad545ec7e422cc83ee2d55ee, 0x0024db ] } , - BigNum { limbs: [ 0xcdd406650e46c8d98b75fb7861f2ca, 0x7cbfb59eea4ac9eaecdc39624a74d6, 0x00337d ] } , - BigNum { limbs: [ 0xefcffc9af0153626748a03879e0d37, 0x2a9373fe92fd694eeb2bd03f8d907c, 0x004070 ] } , - BigNum { limbs: [ 0xa5bc30f24fec3acc3d6f4f809b0a53, 0x6ed642e8c59a514c846d5f0e44976d, 0x002013 ] } , - BigNum { limbs: [ 0x17e7d20dae6fc433c290af7f64f5ae, 0x387ce6b4b7ade1ed539aaa93936de6, 0x0053da ] } , - BigNum { limbs: [ 0xdeb7a80902a9c5efdf3ccfe8e53a24, 0x1a50f8bb8a7d92a4ae617d426c9358, 0x0070ba ] } , - BigNum { limbs: [ 0xdeec5af6fbb2391020c32f171ac5dd, 0x8d0230e1f2caa09529a68c5f6b71fa, 0x000333 ] } , - BigNum { limbs: [ 0x682f007f22bb81fdd7ada825dfd8e9, 0xba432991de5065a9a51a6b3c1aee25, 0x003c87 ] } , - BigNum { limbs: [ 0x55750280dba07d02285256da202718, 0xed10000b9ef7cd9032ed9e65bd172e, 0x003765 ] } , - BigNum { limbs: [ 0xdc15430c03b1e93f800f008fb12ae6, 0xab089b07419bb6f14d619c69d89866, 0x00665b ] } , - BigNum { limbs: [ 0xe18ebff3faaa15c07ff0fe704ed51b, 0xfc4a8e963bac7c488aa66d37ff6cec, 0x000d91 ] } , - BigNum { limbs: [ 0x9e920fb609ba358d5ceacfe1dffb42, 0x817f573e38be9b763b9e8a078d875c, 0x004094 ] } , - BigNum { limbs: [ 0x1f11f349f4a1c972a3152f1e2004bf, 0x25d3d25f448997c39c697f9a4a7df7, 0x003359 ] } , - BigNum { limbs: [ 0x5f4c56d978347b10decd73542a05fd, 0x12ef8c4b82539a2ef0ffba88222629, 0x005c58 ] } , - BigNum { limbs: [ 0x5e57ac26862783ef21328babd5fa04, 0x94639d51faf4990ae7084f19b5df2a, 0x001795 ] } , - BigNum { limbs: [ 0x1a0584cc517b2805c42dc5891560a9, 0x9d33e7931ce4ecbc30602b356bce70, 0x0016b0 ] } , - BigNum { limbs: [ 0xa39e7e33ace0d6fa3bd23976ea9f58, 0x0a1f420a6063467da7a7de6c6c36e3, 0x005d3d ] } , - BigNum { limbs: [ 0x628e600a788e04ab750b85650ebd1b, 0x45839982795b2e6635a42125b2c691, 0x004faf ] } , - BigNum { limbs: [ 0x5b15a2f585cdfa548af4799af142e6, 0x61cf901b03ed04d3a263e87c253ec2, 0x00243e ] } , - BigNum { limbs: [ 0x5fd0a3184059075334c20cef94dd35, 0x069a3f7275ed6f16b28321f60d75c3, 0x001a8e ] } , - BigNum { limbs: [ 0x5dd35fe7be02f7accb3df2106b22cc, 0xa0b8ea2b075ac4232584e7abca8f90, 0x00595f ] } , - BigNum { limbs: [ 0x5321e5ff1832016c9ec31e57800535, 0x6fde6d9f8cf58100484127999969e6, 0x0058d2 ] } , - BigNum { limbs: [ 0x6a821d00e629fd93613ce0a87ffacc, 0x3774bbfdf052b2398fc6e2083e9b6d, 0x001b1b ] } , - BigNum { limbs: [ 0x24e42aa8d5aec08ce356eec0b581c3, 0x96482f24fb2a6806482acecf123181, 0x004ad6 ] } , - BigNum { limbs: [ 0x98bfd85728ad3e731ca9103f4a7e3e, 0x110afa78821dcb338fdd3ad2c5d3d2, 0x002917 ] } , - BigNum { limbs: [ 0x346f499430ac3e8834e343be816ade, 0x1c7a1e79b28af076c80674fbea502b, 0x003324 ] } , - BigNum { limbs: [ 0x8934b96bcdafc077cb1cbb417e9523, 0x8ad90b23cabd42c3100194a5edb528, 0x0040c9 ] } , - BigNum { limbs: [ 0x57918f034022d6713037f8b64415e9, 0x19fd78f51a8800de167d51cdd33239, 0x0000b2 ] } , - BigNum { limbs: [ 0x661273fcbe39288ecfc80649bbea18, 0x8d55b0a862c0325bc18ab7d404d31a, 0x00733b ] } , - BigNum { limbs: [ 0xf59be099efbbbf1e9ee7f422718376, 0x28cf3247eb4450669afedabf51d50f, 0x006d6b ] } , - BigNum { limbs: [ 0xc80822660ea03fe161180add8e7c8b, 0x7e83f7559203e2d33d092ee2863043, 0x000682 ] } , - BigNum { limbs: [ 0x717496b394e228bde1fcdaa1e27c0c, 0xc92134ed8fe810bde4e31b054a62bd, 0x001f39 ] } , - BigNum { limbs: [ 0x4c2f6c4c6979d6421e03245e1d83f5, 0xde31f4afed60227bf324ee9c8da296, 0x0054b3 ] } , - BigNum { limbs: [ 0x7d09d03af59770f1d0fcc7934e784a, 0xe258d964b59394e25115d08b5a107a, 0x005651 ] } , - BigNum { limbs: [ 0x409a32c508c48e0e2f03376cb187b7, 0xc4fa5038c7b49e5786f239167df4d9, 0x001d9b ] } , - BigNum { limbs: [ 0xaaeb71ec0f716e68b025c69346bf09, 0x88ac099cc542dbc85d2e72f3dee770, 0x0004ca ] } , - BigNum { limbs: [ 0x12b89113eeea90974fda386cb940f8, 0x1ea72000b80557717ad996adf91de3, 0x006f23 ] } , - BigNum { limbs: [ 0x3f0ed736ba61d95846912ad0cd72e8, 0xa976934ab9259ff3085d4c741c88b3, 0x00184a ] } , - BigNum { limbs: [ 0x7e952bc943fa25a7b96ed42f328d19, 0xfddc9652c4229346cfaabd2dbb7ca0, 0x005ba2 ] } , - BigNum { limbs: [ 0x62b291c828ec3ebaf26067815711fc, 0xbb8260b46d2c51e40cbf75a7ee58fd, 0x0062e0 ] } , - BigNum { limbs: [ 0x5af17137d56fc0450d9f977ea8ee05, 0xebd0c8e9101be155cb4893f9e9ac56, 0x00110c ] } , - BigNum { limbs: [ 0xf1944f8062e2362fd7908ad327998c, 0xfae10609ac308c560763e9b339ee02, 0x005d20 ] } , - BigNum { limbs: [ 0xcc0fb37f9b79c8d0286f742cd86675, 0xac722393d117a6e3d0a41fee9e1750, 0x0016cc ] } , - BigNum { limbs: [ 0x238124a0db2fb18fbde3dcc5b9f194, 0x2223c6d14ff1cf5fcb7416a05e18ff, 0x002605 ] } , - BigNum { limbs: [ 0x9a22de5f232c4d70421c223a460e6d, 0x852f62cc2d5663da0c93f30179ec54, 0x004de8 ] } , - BigNum { limbs: [ 0x2f181b14aed10ff6e67eefaeab0cff, 0xa75b010005d75274ac3b3a23333006, 0x004d09 ] } , - BigNum { limbs: [ 0x8e8be7eb4f8aef0919810f5154f302, 0xfff8289d7770e0c52bcccf7ea4d54d, 0x0026e3 ] } , - BigNum { limbs: [ 0x84f64a6ba25a938975fe3c072f5f5c, 0xbd52dee2d5f7a21bae96e51a32d19d, 0x005087 ] } , - BigNum { limbs: [ 0x38adb8945c016b768a01c2f8d0a0a5, 0xea004abaa750911e29712487a533b6, 0x002365 ] } , - BigNum { limbs: [ 0x2ae0e11e73c3f16ca52fc81438540d, 0x08c778383129c0429531c4dd5df66d, 0x001ebd ] } , - BigNum { limbs: [ 0x92c321e18a980d935ad036ebc7abf4, 0x9e8bb1654c1e72f742d644c47a0ee6, 0x005530 ] } , - BigNum { limbs: [ 0xe7fa646df251b192383683e59ecc6a, 0xc7fe5a5827024c14c0e444da9cff88, 0x000ef4 ] } , - BigNum { limbs: [ 0xd5a99e920c0a4d6dc7c97b1a613397, 0xdf54cf455645e7251723c4c73b05ca, 0x0064f8 ] } , - BigNum { limbs: [ 0xeef0bcd91847d841253cc2a928d6be, 0x37718307eb1a9579e0bf9778e20bdc, 0x005a0c ] } , - BigNum { limbs: [ 0xceb34626e61426bedac33c56d72943, 0x6fe1a695922d9dbff7487228f5f976, 0x0019e1 ] } , - BigNum { limbs: [ 0xa701b8e3a721e0fefce536fb906424, 0x78afcd6fbd8fcad332db11efc5f13f, 0x00420e ] } , - BigNum { limbs: [ 0x16a24a1c573a1e01031ac8046f9bdd, 0x2ea35c2dbfb86866a52cf7b2121414, 0x0031df ] } , - BigNum { limbs: [ 0x2703973a98577b707f616b8ee5bc69, 0x35a38c635602c55fbb5a72a5dee0a8, 0x002220 ] } , - BigNum { limbs: [ 0x96a06bc56604838f809e93711a4398, 0x71af9d3a27456dda1cad96fbf924ab, 0x0051cd ] } , - BigNum { limbs: [ 0xd426ce3bc379cebaa02908f78226c1, 0x3b64fc8a8d3697b57a95d72f49a7ec, 0x006531 ] } , - BigNum { limbs: [ 0xe97d34c43ae230455fd6f6087dd940, 0x6bee2d12f0119b845d7232728e5d66, 0x000ebc ] } , - BigNum { limbs: [ 0x1aee8a70a157bc3db5dce28b3ecf15, 0xa940ed13adc86207c5cca3e248bbea, 0x0066a7 ] } , - BigNum { limbs: [ 0xa2b5788f5d0442c24a231c74c130ec, 0xfe123c89cf7fd132123b65bf8f4969, 0x000d45 ] } , - BigNum { limbs: [ 0x8d825a7d11480cdc99619927e24871, 0x40afc2350d54fc80dd3fde8f89eaed, 0x0012b8 ] } , - BigNum { limbs: [ 0x3021a882ed13f223669e65d81db790, 0x66a367686ff336b8fac82b124e1a66, 0x006135 ] } , - BigNum { limbs: [ 0x6d89d1cf521a52f9730ea6ccca6aa9, 0x874736ffd05944b37a5bdf5fc29b8e, 0x00017a ] } , - BigNum { limbs: [ 0x501a3130ac41ac068cf15833359558, 0x200bf29daceeee865dac2a421569c5, 0x007273 ] } , - BigNum { limbs: [ 0x2ebb72dd507ad3e370ae5c9d88c367, 0xcad2981271db38af49782c25cc6a83, 0x002982 ] } , - BigNum { limbs: [ 0x8ee89022ade12b1c8f51a262773c9a, 0xdc80918b0b6cfa8a8e8fdd7c0b9ad0, 0x004a6a ] } , - BigNum { limbs: [ 0x40bb9966258c7e444ef5bf9f9eaf5d, 0x50d0cd0a9c9ad02239843d3a7238d0, 0x00238a ] } , - BigNum { limbs: [ 0x7ce86999d8cf80bbb10a3f606150a4, 0x56825c92e0ad63179e83cc6765cc83, 0x005063 ] } , - BigNum { limbs: [ 0xd860053850eb383390d76bb3f42bd6, 0x4a15cbfaab68c4280ae7caa60cf1aa, 0x003f5e ] } , - BigNum { limbs: [ 0xe543fdc7ad70c6cc6f28934c0bd42b, 0x5d3d5da2d1df6f11cd203efbcb13a8, 0x00348f ] } , - BigNum { limbs: [ 0xaef4419c79da6004e08d670c53a44e, 0xf7bd11fb6ad2133b0600858128f29b, 0x0069fc ] } , - BigNum { limbs: [ 0x0eafc16384819efb1f7297f3ac5bb3, 0xaf9617a212761ffed2078420af12b8, 0x0009f0 ] } , - BigNum { limbs: [ 0x7f907f020a14b917b055c5dfbd2d5c, 0xe05ec31861f5674bdaf8e72b8709a1, 0x006927 ] } , - BigNum { limbs: [ 0x3e1383fdf44745e84faa392042d2a5, 0xc6f466851b52cbedfd0f227650fbb2, 0x000ac5 ] } , - BigNum { limbs: [ 0xebc1bad8e840c2ad13f6bbb95ec8ec, 0xcb2b258381423a47594a3ac9ba80ed, 0x000ba4 ] } , - BigNum { limbs: [ 0xd1e24827161b3c52ec094346a13715, 0xdc280419fc05f8f27ebdced81d8465, 0x006848 ] } , - BigNum { limbs: [ 0x2b07db533eecf717c095e63014ae72, 0x14ee8e4ee0069beb9bd9e5a49c9517, 0x002bbf ] } , - BigNum { limbs: [ 0x929c27acbf6f07e83f6a18cfeb518f, 0x92649b4e9d41974e3c2e23fd3b703c, 0x00482e ] } , - BigNum { limbs: [ 0xfce3f1ae16e1352f27668740f423f4, 0x53b32e18eb883962e4267ad3b836c2, 0x000776 ] } , - BigNum { limbs: [ 0xc0c01151e77ac9d0d89977bf0bdc0d, 0x539ffb8491bff9d6f3e18ece1fce90, 0x006c77 ] } , - BigNum { limbs: [ 0x0cb139b40f4c25efde2d1e3d91bdd7, 0x607ce8d23ffed09655e7bf9bbb56a0, 0x002fac ] } , - BigNum { limbs: [ 0xb0f2c94bef0fd91021d2e0c26e422a, 0x46d640cb3d4962a382204a061caeb3, 0x004441 ] } , - BigNum { limbs: [ 0x9056c4e381145f218592573596e4e9, 0x1da7c6d8816a814bffbf8d20cef142, 0x000e09 ] } , - BigNum { limbs: [ 0x2d4d3e1c7d479fde7a6da7ca691b18, 0x89ab62c4fbddb1edd8487c81091411, 0x0065e4 ] } , - BigNum { limbs: [ 0x85d191ac75223523bb85f2da7f3e51, 0xb26339d05091e20e765bc6522c3d49, 0x0023fb ] } , - BigNum { limbs: [ 0x37d271538939c9dc447a0c2580c1b0, 0xf4efefcd2cb6512b61ac434fabc80a, 0x004ff1 ] } , - BigNum { limbs: [ 0x42dd56d39e955417d408cfe1efe0da, 0x6dd7b2cf3c059a45ee2eabefd88d8d, 0x001286 ] } , - BigNum { limbs: [ 0x7ac6ac2c5fc6aae82bf72f1e101f27, 0x397b76ce414298f3e9d95db1ff77c6, 0x006167 ] } , - BigNum { limbs: [ 0x8ff68b2704622d8db3b98e4423fc50, 0x8734ba95974fe0a610e2a9cc4f55cf, 0x0021c7 ] } , - BigNum { limbs: [ 0x2dad77d8f9f9d1724c4670bbdc03b1, 0x201e6f07e5f85293c7255fd588af84, 0x005226 ] } , - BigNum { limbs: [ 0x8beba55b423887eb9775afe0580eb6, 0xc6493ca6f7bafdd94ab18c03456354, 0x00021f ] } , - BigNum { limbs: [ 0x31b85da4bc237714688a4f1fa7f14b, 0xe109ecf6858d35608d567d9e92a1ff, 0x0071cd ] } , - BigNum { limbs: [ 0xddf65cfc1c7f198f6e446f0ba80111, 0xfc3367b27efadae203a5d04d12b33b, 0x00547e ] } , - BigNum { limbs: [ 0xdfada603e1dce57091bb8ff457fef0, 0xab1fc1eafe4d5857d4623954c55217, 0x001f6e ] } , - BigNum { limbs: [ 0xb2111259c0e6827b9f2d0dfbe1fda0, 0xea46adb91f8909429055d788c6ef35, 0x0045e8 ] } , - BigNum { limbs: [ 0x0b92f0a63d757c8460d2f1041e0261, 0xbd0c7be45dbf29f747b2321911161e, 0x002e04 ] } , - BigNum { limbs: [ 0xd451939d2efc7530d247f9f1b06a9d, 0x723488ddb269aa2a0bb898bac279da, 0x002e0f ] } , - BigNum { limbs: [ 0xe9526f62cf5f89cf2db8050e4f9564, 0x351ea0bfcade890fcc4f70e7158b78, 0x0045de ] } , - BigNum { limbs: [ 0xcdfd800f910da40d61b57cc139d00a, 0x6f4e20fb2f20f36c5be4373da4ad3e, 0x002436 ] } , - BigNum { limbs: [ 0xefa682f06d4e5af29e4a823ec62ff7, 0x380508a24e273fcd7c23d264335814, 0x004fb7 ] } , - BigNum { limbs: [ 0xad59732db132de9f70a3a4625a28a2, 0x30d35a07976b6f22eeb847e6a4c2c5, 0x000455 ] } , - BigNum { limbs: [ 0x104a8fd24d2920608f5c5a9da5d75f, 0x767fcf95e5dcc416e94fc1bb33428e, 0x006f98 ] } , - BigNum { limbs: [ 0xa83f0d64199428796ae7ed987e3031, 0x66c481043d84ce7b5b9a58967a125a, 0x006e11 ] } , - BigNum { limbs: [ 0x1564f59be4c7d6869518116781cfd0, 0x408ea8993fc364be7c6db10b5df2f9, 0x0005dc ] } , - BigNum { limbs: [ 0xfeec51f753cc687c69d6ae5df2c7e5, 0x01672a864c45dae541d1fd7ab0cf3b, 0x00252a ] } , - BigNum { limbs: [ 0xbeb7b108aa8f9683962950a20d381c, 0xa5ebff173102585496360c27273617, 0x004ec3 ] } , - BigNum { limbs: [ 0x3737709114df79354b1b9355e6a54e, 0x4098bda9ad6a6469757c2498b0fd99, 0x006a78 ] } , - BigNum { limbs: [ 0x866c926ee97c85cab4e46baa195ab3, 0x66ba6bf3cfddced0628be5092707ba, 0x000975 ] } , - BigNum { limbs: [ 0x51ed8769fd01bf945fda78a7f367d9, 0x753bf1d2a62039f1517d74049b890e, 0x004fe3 ] } , - BigNum { limbs: [ 0x6bb67b96015a3f6ba02586580c9828, 0x321737cad727f948868a959d3c7c45, 0x00240a ] } , - BigNum { limbs: [ 0x3fe7cabd0b23e5bf705eba460abe55, 0x3151de041923e02a79c24740b9cac2, 0x0008cf ] } , - BigNum { limbs: [ 0x7dbc3842f33819408fa144b9f541ac, 0x76014b996424530f5e45c2611e3a91, 0x006b1e ] } , - BigNum { limbs: [ 0x66c55dea845e4933d0b97dedcbec39, 0xbe534af38fff28cbbe5b58d6539c1a, 0x002362 ] } , - BigNum { limbs: [ 0x56dea51579fdb5cc2f4681123413c8, 0xe8ffdea9ed490a6e19acb0cb846939, 0x00508a ] } , - BigNum { limbs: [ 0xe74ce466f28a996afd86c991620276, 0x6a14aab731397177349c6cb97b7c51, 0x005ffd ] } , - BigNum { limbs: [ 0xd6571e990bd165950279356e9dfd8b, 0x3d3e7ee64c0ec1c2a36b9ce85c8901, 0x0013f0 ] } , - BigNum { limbs: [ 0xfc885d40f73760387ca37368ee6036, 0xfdacb64f6dcef359c6db5d8d487fc5, 0x003810 ] } , - BigNum { limbs: [ 0xc11ba5bf07249ec7835c8b97119fcb, 0xa9a6734e0f793fe0112cac148f858d, 0x003bdc ] } , - BigNum { limbs: [ 0xe66d78cb626cc03ccda280ddf7c676, 0xaa5aa0b483b385f66bd08a1d249b53, 0x006a97 ] } , - BigNum { limbs: [ 0xd7368a349bef3ec3325d7e2208398b, 0xfcf888e8f994ad436c377f84b369ff, 0x000955 ] } , - BigNum { limbs: [ 0xe73f7a50c5aaeb5db85ae6ebfcb38d, 0xbca65083b25f7ee89ab1508940ca94, 0x001c15 ] } , - BigNum { limbs: [ 0xd66488af38b113a247a51814034c74, 0xeaacd919cae8b4513d56b918973abe, 0x0057d7 ] } , - BigNum { limbs: [ 0x3041d38fa295c8677f529da0db3616, 0x61b3e4c04bcf4cc051000148d5479a, 0x006b8b ] } , - BigNum { limbs: [ 0x8d622f705bc6369880ad615f24c9eb, 0x459f44dd3178e6798708085902bdb9, 0x000862 ] } , - BigNum { limbs: [ 0x36ba5d59a1fdb3918b8ff2657cb799, 0x73141aa50ce8e0448856303668e326, 0x001a6f ] } , - BigNum { limbs: [ 0x86e9a5a65c5e4b6e74700c9a834868, 0x343f0ef8705f52f54fb1d96b6f222d, 0x00597e ] } , - BigNum { limbs: [ 0x6ccba57529ef3a2e69b325f8c2d10e, 0x4d647a8586116f35f254c16ac4e2e8, 0x000d42 ] } , - BigNum { limbs: [ 0x50d85d8ad46cc4d1964cd9073d2ef3, 0x59eeaf17f736c403e5b3483713226b, 0x0066ab ] } , - BigNum { limbs: [ 0xd6a430a0bc13faa1c38e986fed60b7, 0xce5eedbb83c74a15db11a3b554b5d3, 0x006858 ] } , - BigNum { limbs: [ 0xe6ffd25f4248045e3c716690129f4a, 0xd8f43be1f980e923fcf665ec834f7f, 0x000b94 ] } , - BigNum { limbs: [ 0xbb69b1e997262c5f8b75eb59322015, 0xada1e5d0b6bf2aca0bb3f1eaef08eb, 0x0038e8 ] } , - BigNum { limbs: [ 0x023a51166735d2a0748a13a6cddfec, 0xf9b143ccc689086fcc5417b6e8fc68, 0x003b04 ] } , - BigNum { limbs: [ 0xb9c653a69df49edefa7c37d09c36a2, 0xadf904b0681b511569231f5f35c687, 0x0049b2 ] } , - BigNum { limbs: [ 0x03ddaf59606760210583c72f63c95f, 0xf95a24ed152ce2246ee4ea42a23ecc, 0x002a3a ] } , - BigNum { limbs: [ 0x544e0eef300ebb6922152d741da680, 0xf4657f7341d681f7a80461466d15fc, 0x00633f ] } , - BigNum { limbs: [ 0x6955f410ce4d4396ddead18be25981, 0xb2edaa2a3b71b1423003a85b6aef57, 0x0010ad ] } , - BigNum { limbs: [ 0x3cb7a69485ca0129ceb6ef8030b2de, 0x6468a2d46ee05d32b857f28457a44c, 0x00702f ] } , - BigNum { limbs: [ 0x80ec5c6b7891fdd631490f7fcf4d23, 0x42ea86c90e67d6071fb0171d806107, 0x0003be ] } , - BigNum { limbs: [ 0x690adce0d4559ad0bab5f02b35aea3, 0x8d7a680f4f615969a24f8e2106f81a, 0x005dc7 ] } , - BigNum { limbs: [ 0x5499261f2a06642f454a0ed4ca515e, 0x19d8c18e2de6d9d035b87b80d10d39, 0x001626 ] } , - BigNum { limbs: [ 0xbf6566f761bbaaa58ea51a15cb2a93, 0xa436bbf70ebc9a481043f60ec7964f, 0x0042fa ] } , - BigNum { limbs: [ 0xfe3e9c089ca0545a715ae4ea34d56e, 0x031c6da66e8b98f1c7c41393106f03, 0x0030f3 ] } , - BigNum { limbs: [ 0x3c61e635e16ea6e68378ad80a7bb00, 0x1824c50aa16fccd46c8c0a5d9be527, 0x004d3d ] } , - BigNum { limbs: [ 0x81421cca1ced58197c87517f584501, 0x8f2e6492dbd866656b7bff443c202c, 0x0026b0 ] } , - BigNum { limbs: [ 0x32055cd6e43a26efe507326576562d, 0x3a3febc19c74e00c852874294fe1a0, 0x006623 ] } , - BigNum { limbs: [ 0x8b9ea6291a21d8101af8cc9a89a9d4, 0x6d133ddbe0d3532d52df95788823b3, 0x000dca ] } , - BigNum { limbs: [ 0x920cdabfd84a8600c41c7ed4c36731, 0xe4e20eda21e3bc795bd8f25ded6ef3, 0x000937 ] } , - BigNum { limbs: [ 0x2b972840261178ff3be3802b3c98d0, 0xc2711ac35b6476c07c2f1743ea9660, 0x006ab5 ] } , - BigNum { limbs: [ 0xca1d8869e45cb67ef2f5436db89ce5, 0x428cd15fec9829f4d52d022a11c056, 0x003d18 ] } , - BigNum { limbs: [ 0xf3867a9619ff48810d0abb9247631c, 0x64c6583d90b0094502db0777c644fc, 0x0036d5 ] } , - BigNum { limbs: [ 0xc512d0ba6e3f20da7810f90a14ed63, 0xe965ba4aab15753bb87fe847a6e84a, 0x001400 ] } , - BigNum { limbs: [ 0xf8913245901cde2587ef05f5eb129e, 0xbded6f52d232bdfe1f88215a311d08, 0x005fec ] } , - BigNum { limbs: [ 0xb385262d0e06a7bf046f046933915c, 0x2fcbe3d8e169f25d115b2909df5fae, 0x0070a5 ] } , - BigNum { limbs: [ 0x0a1edcd2f0555740fb90fa96cc6ea5, 0x778745c49bde40dcc6ace097f8a5a5, 0x000348 ] } , - BigNum { limbs: [ 0x8d607f4ee699ae051d64216ef65230, 0xb7a8f24647997c6daa193db1745c67, 0x003466 ] } , - BigNum { limbs: [ 0x304383b117c250fae29bdd9109add1, 0xefaa375735aeb6cc2deecbf063a8ec, 0x003f86 ] } , - BigNum { limbs: [ 0xd5f7ce03dd2713a624911665fba78b, 0x63171cfd358f14986d8c2b99885009, 0x002862 ] } , - BigNum { limbs: [ 0xe7ac34fc2134eb59db6ee89a045876, 0x443c0ca047b91ea16a7bde084fb549, 0x004b8b ] } , - BigNum { limbs: [ 0xfe70a1a000bdeededa81868d68b00a, 0xd7c52f795ab5a3cbe846b833307b38, 0x0063a9 ] } , - BigNum { limbs: [ 0xbf33615ffd9e1021257e7872974ff7, 0xcf8dfa2422928f6defc1516ea78a1a, 0x001043 ] } , - BigNum { limbs: [ 0xe211b10f8f4244573cc1221781e0bc, 0xa9ee4fed8c9defe5bf47c589849963, 0x0002ca ] } , - BigNum { limbs: [ 0xdb9251f06f19baa8c33edce87e1f45, 0xfd64d9aff0aa435418c04418536bef, 0x007122 ] } , - BigNum { limbs: [ 0x377cbd2bf36fcc3ec268ec688da522, 0x1c5a67a005fe6aef4b6396adfc608c, 0x004310 ] } , - BigNum { limbs: [ 0x862745d40aec32c13d971297725adf, 0x8af8c1fd7749c84a8ca472f3dba4c7, 0x0030dd ] } , - BigNum { limbs: [ 0x258de8ab7c6bf6492d72265c8bb286, 0x12dd6a762ba5433ae5253027a86d6c, 0x001e57 ] } , - BigNum { limbs: [ 0x98161a5481f008b6d28dd8a3744d7b, 0x9475bf2751a2effef2e2d97a2f97e7, 0x005596 ] } , - BigNum { limbs: [ 0xfc6245c2276cfe52b9e2e3d8e363f5, 0x8f91391224f82d1509ea7380eb432e, 0x006724 ] } , - BigNum { limbs: [ 0xc141bd3dd6ef00ad461d1b271c9c0c, 0x17c1f08b58500624ce1d9620ecc224, 0x000cc9 ] } , - BigNum { limbs: [ 0xab98917739772b3fcea5a50aafcbdb, 0x2bbc74577df8687bcc2850f602ddf5, 0x002b9d ] } , - BigNum { limbs: [ 0x120b7188c4e4d3c0315a59f5503426, 0x7b96b545ff4fcabe0bdfb8abd5275e, 0x004850 ] } , - BigNum { limbs: [ 0x59749fab0ea4f5cad4d5192ef12ff5, 0xf00a1aaafd469e2d6961368dca2476, 0x002787 ] } , - BigNum { limbs: [ 0x642f6354efb709352b2ae5d10ed00c, 0xb7490ef28001950c6ea6d3140de0dd, 0x004c65 ] } , - BigNum { limbs: [ 0xc74b9514983765d71e1882e1dd7f28, 0x927973e027868355da437798fef908, 0x00730c ] } , - BigNum { limbs: [ 0xf6586deb66249928e1e77c1e2280d9, 0x14d9b5bd55c1afe3fdc49208d90c4a, 0x0000e1 ] } , - BigNum { limbs: [ 0xe18a0dbf32e81b22ac28512f733ac0, 0x88e2477fbf79aba7460fd9c360ec14, 0x006684 ] } , - BigNum { limbs: [ 0xdc19f540cb73e3dd53d7add08cc541, 0x1e70e21dbdce879291f82fde77193e, 0x000d69 ] } , - BigNum { limbs: [ 0x67f6c836862ed38368bc3ff9fe041d, 0x3f6664ca78be793846d6244234b80d, 0x005e13 ] } , - BigNum { limbs: [ 0x55ad3ac9782d2b7c9743bf0601fbe4, 0x67ecc4d30489ba019131e55fa34d46, 0x0015da ] } , - BigNum { limbs: [ 0x95610ecb9899c53b6ead007648781c, 0xf6f4afb976d236fa3357bfa851e961, 0x0022da ] } , - BigNum { limbs: [ 0x2842f43465c239c49152fe89b787e5, 0xb05e79e40675fc3fa4b049f9861bf2, 0x005112 ] } , - BigNum { limbs: [ 0xaa1b5e34bb77878b236035fa24c486, 0x954412900ed54088745ec1f2c16631, 0x0050d0 ] } , - BigNum { limbs: [ 0x1388a4cb42e47774dc9fc905db3b7b, 0x120f170d6e72f2b163a947af169f22, 0x00231d ] } , - BigNum { limbs: [ 0x8a241be93dc8974e02b11bd3a217c2, 0x84a58f018d4c9b113b0587c1e3580c, 0x005870 ] } , - BigNum { limbs: [ 0x337fe716c09367b1fd4ee32c5de83f, 0x22ad9a9beffb98289d0281dff4ad47, 0x001b7d ] } , - BigNum { limbs: [ 0x8dba7176a3140438e61a2bdb947cfb, 0x7d36756abfa6e6de4760c9223ca35d, 0x006d9b ] } , - BigNum { limbs: [ 0x2fe991895b47fac719e5d3246b8306, 0x2a1cb432bda14c5b90a7407f9b61f6, 0x000652 ] } , - BigNum { limbs: [ 0x7a93ae34c98803cc138ce5decb272f, 0x9d92ac58ff78ea09ac3f1bdf706976, 0x002877 ] } , - BigNum { limbs: [ 0x431054cb34d3fb33ec73192134d8d2, 0x09c07d447dcf49302bc8edc2679bdd, 0x004b76 ] } , - BigNum { limbs: [ 0xf0341a13b3565ad286345e7ac747d6, 0x7c023d791f0bdc6832ada0a4abdbb2, 0x001473 ] } , - BigNum { limbs: [ 0xcd6fe8ec4b05a42d79cba08538b82b, 0x2b50ec245e3c56d1a55a68fd2c29a0, 0x005f7a ] } , - BigNum { limbs: [ 0x4c4fa5f5263d07bfb59bd6f3e3410f, 0x1ddc11c537cbfe3ed86585643677f4, 0x00641b ] } , - BigNum { limbs: [ 0x71545d0ad81ef7404a64280c1cbef2, 0x897717d8457c34faffa2843da18d5f, 0x000fd2 ] } , - BigNum { limbs: [ 0x2144b16886b434df3737d784288d49, 0x98ef059d3185cc257d69e121cd84b3, 0x006755 ] } , - BigNum { limbs: [ 0x9c5f519777a7ca20c8c8277bd772b8, 0x0e6424004bc267145a9e28800a80a0, 0x000c98 ] } , - BigNum { limbs: [ 0xdad8f147195417f8e3b085a77afbf2, 0xd402f8d47177c758c7a4112d4a8bea, 0x003aff ] } , - BigNum { limbs: [ 0xe2cb11b8e507e7071c4f795885040f, 0xd35030c90bd06be11063f8748d7968, 0x0038ed ] } , - BigNum { limbs: [ 0x13b822085973279feb3060dee77336, 0xec04bf19f89eb75b9bf5262d598072, 0x002dd3 ] } , - BigNum { limbs: [ 0xa9ebe0f7a4e8d76014cf9e21188ccb, 0xbb4e6a8384a97bde3c12e3747e84e1, 0x004619 ] } , - BigNum { limbs: [ 0xce316d93c6b00bb50855547902c03e, 0x97ca4d2c7b6a0c1945109c1f1e9c3a, 0x006ce3 ] } , - BigNum { limbs: [ 0xef72956c37abf34af7aaaa86fd3fc3, 0x0f88dc7101de272092f76d82b96918, 0x00070a ] } , - BigNum { limbs: [ 0x694267eeda9311b9bc81d1e5f516e1, 0x5846cd4336b188de7c8b11604d8ff0, 0x006fb0 ] } , - BigNum { limbs: [ 0x54619b1123c8ed46437e2d1a0ae920, 0x4f0c5c5a4696aa5b5b7cf8418a7563, 0x00043d ] } , - BigNum { limbs: [ 0x24f213c919d43d562e491138e601de, 0xe28f29fa7cfa57c3839a0140d9f2bb, 0x0007dd ] } , - BigNum { limbs: [ 0x98b1ef36e487c1a9d1b6edc719fe23, 0xc4c3ffa3004ddb76546e0860fe1298, 0x006c0f ] } , - BigNum { limbs: [ 0x6b7e5ff4d425ec22ae86624a026d8f, 0xf1287fe086b18251211dc7db069146, 0x00583a ] } , - BigNum { limbs: [ 0x5225a30b2a3612dd51799cb5fd9272, 0xb62aa9bcf696b0e8b6ea41c6d1740d, 0x001bb2 ] } , - BigNum { limbs: [ 0x80b253331456f274067e67d28a7bf9, 0xe5fb6401d35e8b476c3d92001ca186, 0x000d83 ] } , - BigNum { limbs: [ 0x3cf1afccea050c8bf981972d758408, 0xc157c59ba9e9a7f26bca77a1bb63cd, 0x006669 ] } , - BigNum { limbs: [ 0xd98dbcb16d6b2bc8c4f400030cd5c1, 0x16f7a347bb978b3074eb9fb6094903, 0x0047b1 ] } , - BigNum { limbs: [ 0xe416464e90f0d3373b0bfefcf32a40, 0x905b8655c1b0a809631c69ebcebc4f, 0x002c3c ] } , - BigNum { limbs: [ 0xb330e761da3be1436d1d98942671d5, 0xa5e3e36a9bf331e93cc37de09f5274, 0x006d89 ] } , - BigNum { limbs: [ 0x0a731b9e24201dbc92e2666bd98e2c, 0x016f4632e15501509b448bc138b2df, 0x000664 ] } , - BigNum { limbs: [ 0x3fb3867287d861038cb90b5f9e2564, 0x2156aa8bb80679fa31d23cd3c210ae, 0x0014ef ] } , - BigNum { limbs: [ 0x7df07c8d76839dfc7346f3a061da9d, 0x85fc7f11c541b93fa635ccce15f4a5, 0x005efe ] } , - BigNum { limbs: [ 0x32317a2cdbea65c58c12f0eb455e6b, 0x4698b9e42244abdd2198bdf7fde562, 0x00244b ] } , - BigNum { limbs: [ 0x8b7288d32271993a73ed0e14baa196, 0x60ba6fb95b03875cb66f4ba9da1ff1, 0x004fa2 ] } , - BigNum { limbs: [ 0x8ed195331b98672808faa3ccaafe7d, 0xa34e6b5142c7e48095cf2e1b9d09fa, 0x00138f ] } , - BigNum { limbs: [ 0x2ed26dcce2c397d7f7055b33550184, 0x0404be4c3a804eb94238db863afb59, 0x00605e ] } , - BigNum { limbs: [ 0x6ce50ce8631ddc37c974247e893e37, 0xbafc2e8182867d9f8711636eb28e84, 0x004348 ] } , - BigNum { limbs: [ 0x50bef6179b3e22c8368bda8176c1ca, 0xec56fb1bfac1b59a50f6a6332576cf, 0x0030a4 ] } , - BigNum { limbs: [ 0xdb3d1d363620c7059279cc46720e88, 0x4bc4b85d0584dfd6b5fa91067e76e4, 0x000d5b ] } , - BigNum { limbs: [ 0xe266e5c9c83b37fa6d8632b98df179, 0x5b8e714077c35363220d789b598e6e, 0x006692 ] } , - BigNum { limbs: [ 0x6ad7cae3c87627c98f6b3a48df5a28, 0xd4863b46a956c8dcee098ed888b038, 0x0029fb ] } , - BigNum { limbs: [ 0x52cc381c35e5d7367094c4b720a5d9, 0xd2ccee56d3f16a5ce9fe7ac94f551b, 0x0049f1 ] } , - BigNum { limbs: [ 0xc9b512172293bb81396ff313d3bb80, 0x1736abd6d04b4739c52b4fabaab4dd, 0x005da9 ] } , - BigNum { limbs: [ 0xf3eef0e8dbc8437ec6900bec2c4481, 0x901c7dc6acfcec0012dcb9f62d5075, 0x001644 ] } , - BigNum { limbs: [ 0x977a45ccd1f4913ff0793ba434977c, 0x8bcb0af58a52192a995975d7064454, 0x003af5 ] } , - BigNum { limbs: [ 0x2629bd332c676dc00f86c35bcb6885, 0x1b881ea7f2f61a0f3eae93cad1c0ff, 0x0038f8 ] } , - BigNum { limbs: [ 0xef2fb42e82a91c3aaf009278b4b454, 0xef630dea07dd87c170f9a2a01856a4, 0x00038b ] } , - BigNum { limbs: [ 0xce744ed17bb2e2c550ff6c874b4bad, 0xb7f01bb3756aab78670e6701bfaeae, 0x007061 ] } , - BigNum { limbs: [ 0xc8e73f1fb0956aac66e8dafc81fe1e, 0x059efabd9ae1387d443ddded77add3, 0x00321c ] } , - BigNum { limbs: [ 0xf4bcc3e04dc69453991724037e01e3, 0xa1b42edfe266fabc93ca2bb460577f, 0x0041d1 ] } , - BigNum { limbs: [ 0x3933c1beda8052e1a0aa54ab584031, 0xe11c874ac1ff523154d2355e4e4176, 0x000605 ] } , - BigNum { limbs: [ 0x8470414123dbac1e5f55aa54a7bfd0, 0xc636a252bb48e1088335d44389c3dd, 0x006de7 ] } , - BigNum { limbs: [ 0x434bad0898bac4640aa66581465d9a, 0xaf57ad62903dde30dfbc088a2d14cc, 0x002840 ] } , - BigNum { limbs: [ 0x7a5855f765a13a9bf559997eb9a267, 0xf7fb7c3aed0a5508f84c0117aaf087, 0x004bac ] } , - BigNum { limbs: [ 0xa295c7dfe550262e424716d6fbaa2d, 0xd989cae69b749be1ba8e713c6bf63c, 0x000224 ] } , - BigNum { limbs: [ 0x1b0e3b20190bd8d1bdb8e8290455d4, 0xcdc95eb6e1d397581d7998656c0f17, 0x0071c8 ] } , - BigNum { limbs: [ 0x027b481a99f8d7f13eed8a7afc59cc, 0x1cc9790e8f2c1db924e35b38caf6b5, 0x00086c ] } , - BigNum { limbs: [ 0xbb28bae56463270ec112748503a635, 0x8a89b08eee1c1580b324ae690d0e9e, 0x006b81 ] } , - BigNum { limbs: [ 0x2f35aea290ac55b604c24be38ed2f2, 0xaa61fc26cd5f4c7a8318ba28706e7c, 0x004bf1 ] } , - BigNum { limbs: [ 0x8e6e545d6dafa949fb3db31c712d0f, 0xfcf12d76afe8e6bf54ef4f796796d7, 0x0027fb ] } , - BigNum { limbs: [ 0x44c8d9317399ddb4c3351d1f85a494, 0x5c08fdb7b5f58ca2789772dc1ee600, 0x00527c ] } , - BigNum { limbs: [ 0x78db29ce8ac2214b3ccae1e07a5b6d, 0x4b4a2be5c752a6975f7096c5b91f53, 0x002171 ] } , - BigNum { limbs: [ 0xacd8c18fd788b79108eb0359f985a8, 0xa5fb219c39b3597fd7cdb7cb9ec359, 0x0020c5 ] } , - BigNum { limbs: [ 0x10cb417026d3476ef714fba6067a59, 0x015808014394d9ba003a51d63941fa, 0x005328 ] } , - BigNum { limbs: [ 0x336e8b0eaa01fdee91311271ee45a3, 0x6b1c12f87566ddd0bf944a8e6d750a, 0x003ee3 ] } , - BigNum { limbs: [ 0x8a3577f1545a01116eceec8e11ba5e, 0x3c3716a507e155691873bf136a9049, 0x00350a ] } , - BigNum { limbs: [ 0x0e3a4a2c1307877112e3fc3d4ace71, 0x75e2c927a7c9d2046ce027a513df74, 0x001ada ] } , - BigNum { limbs: [ 0xaf69b8d3eb54778eed1c02c2b53190, 0x31706075d57e61356b27e1fcc425df, 0x005913 ] } , - BigNum { limbs: [ 0x531d011069710c1aadbdf0d9becb26, 0xfe392258bd3c57b360a745e7386083, 0x005264 ] } , - BigNum { limbs: [ 0x6a8701ef94eaf2e552420e264134db, 0xa91a0744c00bdb867760c3ba9fa4d0, 0x002188 ] } , - BigNum { limbs: [ 0xe9187454698944ac775919154154c1, 0x8c85aab132d3f04ce0af0a60f99468, 0x001dba ] } , - BigNum { limbs: [ 0xd48b8eab94d2ba5388a6e5eabeab40, 0x1acd7eec4a7442ecf758ff40de70ea, 0x005633 ] } , - BigNum { limbs: [ 0x6c1604b24820a3770340790d55dc4c, 0x70485191eb56fc775110f342bec6f3, 0x003e60 ] } , - BigNum { limbs: [ 0x518dfe4db63b5b88fcbf85f2aa23b5, 0x370ad80b91f136c286f7165f193e60, 0x00358d ] } , - BigNum { limbs: [ 0xeafb428e38a30928c22245d72bb2a3, 0xce32f7e962fa2b3e31afd97e204be3, 0x004902 ] } , - BigNum { limbs: [ 0xd2a8c071c5b8f5d73dddb928d44d5e, 0xd92031b41a4e07fba6583023b7b96f, 0x002aea ] } , - BigNum { limbs: [ 0x3a451584a96e0ef35f980490fcc053, 0xd4e5faca74e951f07361d72a49f4b1, 0x00173b ] } , - BigNum { limbs: [ 0x835eed7b54edf00ca067fa6f033fae, 0xd26d2ed3085ee14964a632778e10a2, 0x005cb1 ] } , - BigNum { limbs: [ 0x2e15a71ff3bb6b1793eb9057fda39b, 0x6d1eafc21e45b97be27adfc8bad8f1, 0x00170c ] } , - BigNum { limbs: [ 0x8f8e5be00aa093e86c146ea8025c66, 0x3a3479db5f0279bdf58d29d91d2c62, 0x005ce1 ] } , - BigNum { limbs: [ 0x91a01cb11e1d388fbbb51771aacdbc, 0x5543e381889b38beaaccd6ea72786b, 0x003dcd ] } , - BigNum { limbs: [ 0x2c03e64ee03ec670444ae78e553245, 0x520f461bf4acfa7b2d3b32b7658ce8, 0x003620 ] } , - BigNum { limbs: [ 0x1b2c2bf57e2ffa8bff0d76e779efd8, 0x136e7973448a6e8452d09af6d4fe0b, 0x002579 ] } , - BigNum { limbs: [ 0xa277d70a802c047400f28818861029, 0x93e4b02a38bdc4b585376eab030748, 0x004e74 ] } , - BigNum { limbs: [ 0x965114af80d5f237b8489e744cdb6a, 0x34a8111b5e6c4c02091f65cedfc07a, 0x000798 ] } , - BigNum { limbs: [ 0x2752ee507d860cc847b7608bb32497, 0x72ab18821edbe737cee8a3d2f844d9, 0x006c55 ] } , - BigNum { limbs: [ 0xe7ccd1f49218bcde0a39b54757baf4, 0x55b1570da586ba40c31e363e1506aa, 0x006c6a ] } , - BigNum { limbs: [ 0xd5d7310b6c434221f5c649b8a8450d, 0x51a1d28fd7c178f914e9d363c2fea8, 0x000783 ] } , - BigNum { limbs: [ 0xd75a4c1d0a47bc8a57f67a92771886, 0xf7e713a14f663701ec08b9515cc1d4, 0x00504d ] } , - BigNum { limbs: [ 0xe649b6e2f4144275a809846d88e77b, 0xaf6c15fc2de1fc37ebff50507b437e, 0x00239f ] } , - BigNum { limbs: [ 0x4a6f5157ee66feed092f02034b4427, 0x089313ebbb63ab112c6e47f651c56b, 0x004f80 ] } , - BigNum { limbs: [ 0x7334b1a80ff50012f6d0fcfcb4bbda, 0x9ec015b1c1e48828ab99c1ab863fe8, 0x00246d ] } , - BigNum { limbs: [ 0x960a2dbf6b89282bb928b6c2bc3afc, 0x9de0cb3644273fde5012c262290cdd, 0x000f2b ] } , - BigNum { limbs: [ 0x2799d54092d2d6d446d7483d43c505, 0x09725e673920f35b87f5473faef876, 0x0064c2 ] } , - BigNum { limbs: [ 0xd8f900e407b7f428bce7e30c66a081, 0xa99e4a437b505d95dfd1630242422e, 0x005a1e ] } , - BigNum { limbs: [ 0xe4ab021bf6a40ad743181bf3995f80, 0xfdb4df5a01f7d5a3f836a69f95c324, 0x0019ce ] } , - BigNum { limbs: [ 0x7d648cf9f44e1804ceeaa511f4fae9, 0x69d70232147b3a090bcaa59c776b2b, 0x0041e4 ] } , - BigNum { limbs: [ 0x403f76060a0de6fb311559ee0b0518, 0x3d7c276b68ccf930cc3d6405609a28, 0x003209 ] } , - BigNum { limbs: [ 0x25da2e047033fefbbcff900fcc827f, 0x02ebc6464d846f98cb09f9865d83d0, 0x004d59 ] } , - BigNum { limbs: [ 0x97c9d4fb8e28000443006ef0337d82, 0xa46763572fc3c3a10cfe101b7a8183, 0x002694 ] } , - BigNum { limbs: [ 0xee0ffdf718781e60b137ab482066e4, 0xbc8d78d3c3cc9173a7c9c3c994b807, 0x001459 ] } , - BigNum { limbs: [ 0xcf940508e5e3e09f4ec853b7df991d, 0xeac5b0c9b97ba1c6303e45d8434d4b, 0x005f93 ] } , - BigNum { limbs: [ 0x525bc3d1cd03ba13854305ef54b104, 0x6d82f16d68853bf7bb74b643ac07c9, 0x000956 ] } , - BigNum { limbs: [ 0x6b483f2e315844ec7abcf910ab4efd, 0x39d0383014c2f7421c93535e2bfd8a, 0x006a97 ] } , - BigNum { limbs: [ 0x5e2f10a51b5409e93521dc76f14b89, 0x6a17ed37cedbd2dff79cd54a6ea067, 0x000beb ] } , - BigNum { limbs: [ 0x5f74f25ae307f516cade22890eb478, 0x3d3b3c65ae6c6059e06b34576964ec, 0x006802 ] } , - BigNum { limbs: [ 0x55735e16b82bb0a2073fb0e02a7667, 0x7f1df880e7c227e024663dc027bae4, 0x006a70 ] } , - BigNum { limbs: [ 0x6830a4e946304e5df8c04e1fd5899a, 0x2835311c95860b59b3a1cbe1b04a6f, 0x00097d ] } , - BigNum { limbs: [ 0x3c367ca1d1ffe6e2ae57afb246966b, 0xe0e87f964513f8ddba3c5316c7ec75, 0x0013e7 ] } , - BigNum { limbs: [ 0x816d865e2c5c181d51a84f4db96996, 0xc66aaa0738343a5c1dcbb68b1018de, 0x006005 ] } , - BigNum { limbs: [ 0xb3e11681c510a6dd5a6a3e91095dc7, 0x32d749c30d1dc4895811317d780782, 0x004019 ] } , - BigNum { limbs: [ 0x09c2ec7e394b5822a595c06ef6a23a, 0x747bdfda702a6eb07ff6d8245ffdd1, 0x0033d4 ] } , - BigNum { limbs: [ 0xbd453fb132b4682cdfe9db0ff4374b, 0x9c9a35f12409aee55906ba0e6f2ed2, 0x003225 ] } , - BigNum { limbs: [ 0x005ec34ecba796d3201623f00bc8b6, 0x0ab8f3ac593e84547f014f9368d681, 0x0041c8 ] } , - BigNum { limbs: [ 0xc6f53956b47ef98c1e4633a1e79a90, 0xf8a65c0009dce5d7361d5906eb273a, 0x002444 ] } , - BigNum { limbs: [ 0xf6aec9a949dd0573e1b9cb5e186571, 0xaeaccd9d736b4d62a1eab09aecde18, 0x004fa8 ] } , - BigNum { limbs: [ 0x73a69a942f840ad1d45960e9d626dc, 0xfe77b2223aa587ca2ddd92f73d486e, 0x001875 ] } , - BigNum { limbs: [ 0x49fd686bced7f42e2ba69e1629d925, 0xa8db777b42a2ab6faa2a76aa9abce5, 0x005b77 ] } , - BigNum { limbs: [ 0x880501279a899bcee868ce8587a13b, 0x8f1b04bfd10c7250976724baad776d, 0x0018f1 ] } , - BigNum { limbs: [ 0x359f01d863d263311797307a785ec6, 0x183824ddac3bc0e940a0e4e72a8de6, 0x005afc ] } , - BigNum { limbs: [ 0xb3d3b950311f02a824f0ba9a8f2963, 0x7cb97acb4245d1566d60c3a6ba5720, 0x0036d4 ] } , - BigNum { limbs: [ 0x09d049afcd3cfc57db0f446570d69e, 0x2a99aed23b0261e36aa745fb1dae33, 0x003d19 ] } , - BigNum { limbs: [ 0x8992a0b4aebe62c3176cafbba6ece2, 0x3e3e42733334ed43caff7cac4fa484, 0x005665 ] } , - BigNum { limbs: [ 0x3411624b4f9d9c3ce8934f4459131f, 0x6914e72a4a1345f60d088cf58860cf, 0x001d88 ] } , - BigNum { limbs: [ 0x3e333e731c6d86ea2f0310654c1c69, 0x45e320a61c7930dd4640b8259046fa, 0x0072e0 ] } , - BigNum { limbs: [ 0x7f70c48ce1ee7815d0fcee9ab3e398, 0x617008f760cf025c91c7517c47be59, 0x00010d ] } , - BigNum { limbs: [ 0xb4fac3c927f6e90d16741ca2ea19f3, 0x2ea688ce95690fb3e7765ded195901, 0x005fc4 ] } , - BigNum { limbs: [ 0x08a93f36d66515f2e98be25d15e60e, 0x78aca0cee7df2385f091abb4beac52, 0x001429 ] } , - BigNum { limbs: [ 0x38250aebdfea19439e2c0f3fec014c, 0x0c68a0cd2567ed61c7c501f9cc757c, 0x005f62 ] } , - BigNum { limbs: [ 0x857ef8141e71e5bc61d3efc013feb5, 0x9aea88d057e045d8104307a80b8fd7, 0x00148b ] } , - BigNum { limbs: [ 0x315044d26ab11b7f5d7bffe0b305c8, 0x73d2528c3d883247ea42471dd1c0ed, 0x006381 ] } , - BigNum { limbs: [ 0x8c53be2d93aae380a283ff1f4cfa39, 0x3380d7113fc000f1edc5c284064466, 0x00106c ] } , - BigNum { limbs: [ 0x80ec4b796d3c1fa24716c0654b3fca, 0x7624f7423ea31f36512a3c42e181bd, 0x006902 ] } , - BigNum { limbs: [ 0x3cb7b786911fdf5db8e93e9ab4c037, 0x312e325b3ea5140386ddcd5ef68396, 0x000aeb ] } , - BigNum { limbs: [ 0xd55c9043bd712ec2374a085a04cf77, 0x4dce95290db96dbc6e981c87cc0d39, 0x0039dd ] } , - BigNum { limbs: [ 0xe84772bc40ead03dc8b5f6a5fb308a, 0x598494746f8ec57d696fed1a0bf819, 0x003a10 ] } , - BigNum { limbs: [ 0xbf7472dae4da3860bf9e6bf6e31812, 0xb2cbafa33fb884780e7c68542c3f12, 0x006bd1 ] } , - BigNum { limbs: [ 0xfe2f90251981c69f406193091ce7ef, 0xf48779fa3d8faec1c98ba14dabc640, 0x00081b ] } , - BigNum { limbs: [ 0xdd1b58249906be9ff079ce58af3199, 0xcedb6916a28c6ca682e24066db3c86, 0x001c77 ] } , - BigNum { limbs: [ 0xe088aadb655540600f8630a750ce68, 0xd877c086dabbc6935525c93afcc8cc, 0x005775 ] } , - BigNum { limbs: [ 0xb2c473d5eff1b216b4e9b27e7dd10b, 0x04f3b5c0b97878d28972a2a650511c, 0x0052f6 ] } , - BigNum { limbs: [ 0x0adf8f2a0e6a4ce94b164c81822ef6, 0xa25f73dcc3cfba674e9566fb87b437, 0x0020f7 ] } , - BigNum { limbs: [ 0x8ad7d4ab3b17b51f1f8779e781781b, 0x9112fa9f6cf5817199711eebb68441, 0x00416b ] } , - BigNum { limbs: [ 0x32cc2e54c34449e0e07885187e87e6, 0x16402efe1052b1c83e96eab6218112, 0x003282 ] } , - BigNum { limbs: [ 0x388900a081efcebb6ed1c6d5c49f1c, 0xb4fd14ec51aeca9da4521c768d51ec, 0x001d1d ] } , - BigNum { limbs: [ 0x851b025f7c6c3044912e382a3b60e5, 0xf25614b12b99689c33b5ed2b4ab367, 0x0056cf ] } , - BigNum { limbs: [ 0x7bc9af0716769144464acf1f36c0d2, 0xf594e8c1b0eaeb8fc60143a855ad12, 0x006cdf ] } , - BigNum { limbs: [ 0x41da53f8e7e56dbbb9b52fe0c93f2f, 0xb1be40dbcc5d47aa1206c5f9825841, 0x00070d ] } , - BigNum { limbs: [ 0x9c31869ce1406981ccf144abd15da6, 0x3ce0bc31b687d449f891cf11c7f71e, 0x0032a7 ] } , - BigNum { limbs: [ 0x21727c631d1b957e330eba542ea25b, 0x6a726d6bc6c05eefdf763a90100e35, 0x004146 ] } , - BigNum { limbs: [ 0x3287e1eea50550f6cff67feb0214a3, 0x2edb568a00aaae9ef31c7368529f7b, 0x001469 ] } , - BigNum { limbs: [ 0x8b1c21115956ae0930097f14fdeb5e, 0x7877d3137c9d849ae4eb96398565d8, 0x005f84 ] } , - BigNum { limbs: [ 0x1765e37219c59a01744eaf22f61cd5, 0xa5ee072d800a1ddf4a71f83fdd1ad2, 0x005ac1 ] } , - BigNum { limbs: [ 0xa63e1f8de49664fe8bb14fdd09e32c, 0x0165226ffd3e155a8d961161faea81, 0x00192c ] } , - BigNum { limbs: [ 0x9cafd3f14593be08db6cfdab4f5cbc, 0x28b7d9ee0088d8fd5273b9e4c23a8a, 0x0057b4 ] } , - BigNum { limbs: [ 0x20f42f0eb8c840f724930154b0a345, 0x7e9b4faf7cbf5a3c85944fbd15cac9, 0x001c39 ] } , - BigNum { limbs: [ 0x1d9eb5efde33ed0116fc035b9ef1e4, 0xbde86d834a067c0302160fb86d4f84, 0x00151e ] } , - BigNum { limbs: [ 0xa0054d10202811fee903fba4610e1d, 0xe96abc1a3341b736d5f1f9e96ab5cf, 0x005ece ] } , - BigNum { limbs: [ 0x6855f02b9c14d37b254b4c16aecf49, 0xebabeb3d7ef48c4988b6f7e98663fa, 0x0034ca ] } , - BigNum { limbs: [ 0x554e12d462472b84dab4b2e95130b8, 0xbba73e5ffe53a6f04f5111b851a159, 0x003f22 ] } , - BigNum { limbs: [ 0x018d3725a347a231aef389d1650159, 0xe15e3ad0ea849dd9032a8990ebcab4, 0x00055b ] } , - BigNum { limbs: [ 0xbc16cbda5b145cce510c752e9afea8, 0xc5f4eecc92c39560d4dd8010ec3a9f, 0x006e91 ] } , - BigNum { limbs: [ 0x291cf291adb45adf4f59597e92099f, 0x5f789f1b1294ee932d062fe4dad38d, 0x0016a6 ] } , - BigNum { limbs: [ 0x9487106e50a7a420b0a6a5816df662, 0x47da8a826ab344a6ab01d9bcfd31c6, 0x005d47 ] } , - BigNum { limbs: [ 0x6c7c3031e114547e10569404305b4e, 0x0bfd1bdf8a97e9ebe9b3a7f47018b5, 0x005d66 ] } , - BigNum { limbs: [ 0x5127d2ce1d47aa81efa96afbcfa4b3, 0x9b560dbdf2b0494dee5461ad67ec9e, 0x001687 ] } , - BigNum { limbs: [ 0xd91b48dadb210c247b1a81979f35c0, 0x6ac519183e52453eabbc8a1e13a637, 0x0065d5 ] } , - BigNum { limbs: [ 0xe488ba25233af2db84e57d6860ca41, 0x3c8e10853ef5edfb2c4b7f83c45f1b, 0x000e18 ] } , - BigNum { limbs: [ 0xf9c0f86360276418f827bbe6225400, 0xde0c2c3ab91f997809bf4d6d1952fa, 0x0026db ] } , - BigNum { limbs: [ 0xc3e30a9c9e349ae707d84319ddac01, 0xc946fd62c42899c1ce48bc34beb258, 0x004d11 ] } , - BigNum { limbs: [ 0x80d9b39a09327511be38f00fe0e15b, 0x0ed0b718d075007221b4e63392be47, 0x006b81 ] } , - BigNum { limbs: [ 0x3cca4f65f52989ee41c70ef01f1ea6, 0x98827284acd332c7b653236e45470c, 0x00086c ] } , - BigNum { limbs: [ 0x37d5f8a16c4f0f051e1aa4af01a637, 0x04ef549725e3a992bf6d27f26ad9a0, 0x006706 ] } , - BigNum { limbs: [ 0x85ce0a5e920ceffae1e55a50fe59ca, 0xa263d506576489a7189ae1af6d2bb3, 0x000ce7 ] } , - BigNum { limbs: [ 0xd3148a4e36e3f07250f3cf33f08243, 0x11b3253731a2f1970b62d2eeb13eaf, 0x001c8e ] } , - BigNum { limbs: [ 0xea8f78b1c7780e8daf0c2fcc0f7dbe, 0x95a004664ba541a2cca536b326c6a3, 0x00575f ] } , - BigNum { limbs: [ 0xd921850e3e933c628e568582ec954a, 0x63d8ead24230b1313472e590e57dc9, 0x0010ec ] } , - BigNum { limbs: [ 0xe4827df1bfc8c29d71a9797d136ab7, 0x437a3ecb3b178208a3952410f28789, 0x006301 ] } , - BigNum { limbs: [ 0xca58916c4689cf7045743933f004c4, 0x0c8b650b839487fbfdffef881252a8, 0x0025e5 ] } , - BigNum { limbs: [ 0xf34b7193b7d22f8fba8bc5cc0ffb3d, 0x9ac7c491f9b3ab3dda081a19c5b2aa, 0x004e08 ] } , - BigNum { limbs: [ 0x98a02aabd7ff53948a74e7d72a06cd, 0x3cd150debfd777dd0e7b4cd77e3590, 0x006129 ] } , - BigNum { limbs: [ 0x2503d854265cab6b758b1728d5f934, 0x6a81d8bebd70bb5cc98cbcca59cfc3, 0x0012c4 ] } , - BigNum { limbs: [ 0x8d3c5d8e2ae3c2772ae3260559361e, 0x29d913bae95cd300eb8ed538a67baf, 0x006233 ] } , - BigNum { limbs: [ 0x3067a571d3783c88d51cd8faa6c9e3, 0x7d7a15e293eb6038ec7934693189a4, 0x0011ba ] } , - BigNum { limbs: [ 0x7cb9e132d2958e4a821d18d001905b, 0x4d1e9a0e31c08c8b929e83caa601f1, 0x0042c1 ] } , - BigNum { limbs: [ 0x40ea21cd2bc670b57de2e62ffe6fa6, 0x5a348f8f4b87a6ae456985d7320362, 0x00312c ] } , - BigNum { limbs: [ 0xb6a6109f87dc09a945ddfd3194d6d4, 0x6a5b221a98193db17c13a115ad244a, 0x006b90 ] } , - BigNum { limbs: [ 0x06fdf260767ff556ba2201ce6b292d, 0x3cf80782e52ef5885bf4688c2ae109, 0x00085d ] } , - BigNum { limbs: [ 0xb409a53b4e735b3e20998093f034d1, 0x4132904aebad93d405cac07f33f025, 0x002dcc ] } , - BigNum { limbs: [ 0x099a5dc4afe8a3c1df667e6c0fcb30, 0x66209952919a9f65d23d4922a4152e, 0x004621 ] } , - BigNum { limbs: [ 0x347967c3bc6e57d128b5e565be28ca, 0xd7c469a307201e75fc005a4b76b707, 0x0040d8 ] } , - BigNum { limbs: [ 0x892a9b3c41eda72ed74a199a41d737, 0xcf8ebffa762814c3dc07af56614e4c, 0x003314 ] } , - BigNum { limbs: [ 0xe64499b0d7caec0b00709d16ad9a83, 0xb54c8d72e98d795445bdfc60240f61, 0x00365f ] } , - BigNum { limbs: [ 0xd75f694f269112f4ff8f61e952657e, 0xf2069c2a93bab9e5924a0d41b3f5f1, 0x003d8d ] } , - BigNum { limbs: [ 0xd7a3987f769bcdcca9e87f5a7f1839, 0x28c04a0ebb7cef135ae7b8e3362098, 0x000aaf ] } , - BigNum { limbs: [ 0xe6006a8087c0313356177fa580e7c8, 0x7e92df8ec1cb44267d2050bea1e4ba, 0x00693e ] } , - BigNum { limbs: [ 0x46526f56e933837b9a7281e045bece, 0xca3c7024fc860c906c9a837e1ef6c9, 0x0051c3 ] } , - BigNum { limbs: [ 0x775193a915287b84658d7d1fba4133, 0xdd16b97880c226a96b6d8623b90e8a, 0x002229 ] } , - BigNum { limbs: [ 0x7bf2539257c17e7aad249861212753, 0x694837b9391d085fa60b9f017e7069, 0x0036a0 ] } , - BigNum { limbs: [ 0x41b1af6da69a808552db669eded8ae, 0x3e0af1e4442b2ada31fc6aa05994ea, 0x003d4d ] } , - BigNum { limbs: [ 0x08ab2a2ad21968eec3c5de94bad69d, 0xc186cf00b349406509fe76f63710de, 0x0054c8 ] } , - BigNum { limbs: [ 0xb4f8d8d52c4296113c3a206b452964, 0xe5cc5a9cc9fef2d4ce0992aba0f475, 0x001f24 ] } , - BigNum { limbs: [ 0x944f00370ccf4f13fb91c643fb2d66, 0x95a692611ba92c8972a756f96cb36c, 0x003bbe ] } , - BigNum { limbs: [ 0x295502c8f18cafec046e38bc04d29b, 0x11ac973c619f06b06560b2a86b51e7, 0x00382f ] } , - BigNum { limbs: [ 0x272c6068d63114246a617ab5b1d7c1, 0xc9ed81babb1d1bd763ca4d6bdfd295, 0x005026 ] } , - BigNum { limbs: [ 0x9677a297282aeadb959e844a4e2840, 0xdd65a7e2c22b1762743dbc35f832be, 0x0023c6 ] } , - BigNum { limbs: [ 0x951e797897dba86fdf5cf1dc0d5e2d, 0xeff498b8905fcb05b3a6dd0acdcfa0, 0x00328e ] } , - BigNum { limbs: [ 0x288589876680569020a30d23f2a1d4, 0xb75e90e4ece8683424612c970a35b3, 0x00415e ] } , - BigNum { limbs: [ 0x6c51f4dd49bc1edfaec8846128af8c, 0xec951e59e820a34667352ae9d5dc49, 0x00565e ] } , - BigNum { limbs: [ 0x51520e22b49fe02051377a9ed75075, 0xbabe0b4395278ff370d2deb802290a, 0x001d8e ] } , - BigNum { limbs: [ 0x564a7da1b902e56caf3d28aac9a3c4, 0xb58e63be683db556ce006a3e0689cf, 0x0032f3 ] } , - BigNum { limbs: [ 0x6759855e4559199350c2d655365c3d, 0xf1c4c5df150a7de30a079f63d17b84, 0x0040f9 ] } , - BigNum { limbs: [ 0xc813f4bdbc74d2b530d23b962f2a33, 0xdc158b69f2a11da67680a3c4d0af46, 0x004500 ] } , - BigNum { limbs: [ 0xf5900e4241e72c4acf2dc369d0d5ce, 0xcb3d9e338aa71593618765dd07560c, 0x002eec ] } , - BigNum { limbs: [ 0x5b041f5f9708988f8dae3158baa4f0, 0xfeb5f831eb4b4062055dbcce3169b1, 0x00257e ] } , - BigNum { limbs: [ 0x629fe3a0675366707251cda7455b11, 0xa89d316b91fcf2d7d2aa4cd3a69ba2, 0x004e6e ] } , - BigNum { limbs: [ 0xd87eea1587a122a77fcdb6e01fc805, 0xddb0d6f819ff9a970fd511c11cc817, 0x005111 ] } , - BigNum { limbs: [ 0xe52518ea76badc588032481fe037fc, 0xc9a252a5634898a2c832f7e0bb3d3b, 0x0022db ] } , - BigNum { limbs: [ 0xcbb32eecd136f3bd36b91fbcc4d9b6, 0x5004d39bdc27c60b52058c6a5d992c, 0x0036d5 ] } , - BigNum { limbs: [ 0xf1f0d4132d250b42c946df433b264b, 0x574e5601a1206d2e86027d377a6c26, 0x003d18 ] } , - BigNum { limbs: [ 0x31775507138bf4d55710af424be9d8, 0xced1d9e77067fa868a71c6f77de16d, 0x006ab5 ] } , - BigNum { limbs: [ 0x8c2cadf8ead00a2aa8ef4fbdb41629, 0xd8814fb60ce038b34d9642aa5a23e6, 0x000937 ] } , - BigNum { limbs: [ 0x22be3aea24e089a73c2d0794e42fd6, 0x2e20bfe4966c7b20ecd45027f90dba, 0x002641 ] } , - BigNum { limbs: [ 0x9ae5c815d97b7558c3d2f76b1bd02b, 0x793269b8e6dbb818eb33b979def799, 0x004dac ] } , - BigNum { limbs: [ 0x44e9ca24af3f23db594c625e551d2f, 0xaa708ba0d9387fc2ea6188ea73aeba, 0x005797 ] } , - BigNum { limbs: [ 0x78ba38db4f1cdb24a6b39ca1aae2d2, 0xfce29dfca40fb376eda680b7645699, 0x001c55 ] } , - BigNum { limbs: [ 0x1a389fbb63a04a5f354e65971de4d9, 0x55f4c40d039d403ad68fd45a57b606, 0x00422e ] } , - BigNum { limbs: [ 0xa36b63449abbb4a0cab19968e21b28, 0x515e659079aaf2ff01783547804f4d, 0x0031bf ] } , - BigNum { limbs: [ 0xb6cdeb0f626ed00651b1676d885461, 0x33380951bff039cc3eca9b8f12386f, 0x0033f6 ] } , - BigNum { limbs: [ 0x06d617f09bed2ef9ae4e979277aba0, 0x741b204bbd57f96d993d6e12c5cce4, 0x003ff7 ] } , - BigNum { limbs: [ 0xda6ff3d514cd34f981d24464db09e3, 0x09b0db598773f7ce184aa37ed63aa3, 0x0007f7 ] } , - BigNum { limbs: [ 0xe3340f2ae98eca067e2dba9b24f61e, 0x9da24e43f5d43b6bbfbd662301caaf, 0x006bf6 ] } , - BigNum { limbs: [ 0xd1f0ef63638923521de4c4c32db9ab, 0xbf2f35a097b959e1e80e2b91530396, 0x0021cc ] } , - BigNum { limbs: [ 0xebb3139c9ad2dbade21b3a3cd24656, 0xe823f3fce58ed957eff9de108501bc, 0x005220 ] } , - BigNum { limbs: [ 0xd4938d032e32e3680c16c5a25aa156, 0x3cf7027be69cc607157d64fd6ad8aa, 0x007110 ] } , - BigNum { limbs: [ 0xe91075fcd0291b97f3e9395da55eab, 0x6a5c272196ab6d32c28aa4a46d2ca8, 0x0002dd ] } , - BigNum { limbs: [ 0x49f11bcd26167e652046ce1ccb0b04, 0x0ab5a536a2bc4ae3bc899b9f299d3d, 0x006f24 ] } , - BigNum { limbs: [ 0x73b2e732d845809adfb930e334f4fd, 0x9c9d8466da8be8561b7e6e02ae6816, 0x0004c9 ] } , - BigNum { limbs: [ 0x86d07b2a764c768bf2bded30b49e55, 0x35c886192d15cdecb2b5626ba1982a, 0x001d5e ] } , - BigNum { limbs: [ 0x36d387d5880f88740d4211cf4b61ac, 0x718aa3845032654d2552a736366d29, 0x00568f ] } , - BigNum { limbs: [ 0x741dccc9d3b837864148660c5ff769, 0x674a258c9a5f5df0c9cf432b619672, 0x0044a4 ] } , - BigNum { limbs: [ 0x498636362aa3c779beb798f3a00898, 0x40090410e2e8d5490e38c676766ee1, 0x002f49 ] } , - BigNum { limbs: [ 0xf349c07945e5e0edb443dca4bddafd, 0xb2d557f9bc8f70459aa181f5b2c711, 0x00091a ] } , - BigNum { limbs: [ 0xca5a4286b8761e124bbc225b422504, 0xf47dd1a3c0b8c2f43d6687ac253e41, 0x006ad2 ] } , - BigNum { limbs: [ 0x00d055d2a9b0bc6d8a5054451ad0e3, 0x34fba2e3d54058c59b99b8084fe171, 0x007059 ] } , - BigNum { limbs: [ 0xbcd3ad2d54ab429275afaabae52f1e, 0x725786b9a807da743c6e51998823e2, 0x000394 ] } , - BigNum { limbs: [ 0xdf38bbada9907b5c19b4d0ea2cf552, 0xe3137f39dc7cc1b70fdd68b0c23c3a, 0x0064a0 ] } , - BigNum { limbs: [ 0xde6b475254cb83a3e64b2e15d30aaf, 0xc43faa63a0cb7182c82aa0f115c918, 0x000f4c ] } , - BigNum { limbs: [ 0xf33e0433d82ab9c8eb3ce41f9b3865, 0x856912a85c660aad656ffeb6c2bf63, 0x006c1f ] } , - BigNum { limbs: [ 0xca65fecc2631453714c31ae064c79c, 0x21ea16f520e2288c72980aeb1545ef, 0x0007ce ] } , - BigNum { limbs: [ 0xa761ed7f56302d96809abbf18276db, 0xe1596b71f9bc589a263dde7e697951, 0x005505 ] } , - BigNum { limbs: [ 0x16421580a82bd1697f65430e7d8926, 0xc5f9be2b838bda9fb1ca2b236e8c02, 0x001ee7 ] } , - BigNum { limbs: [ 0x4999895b894e7b3bcce44cd25431fe, 0x099c42c3c3a0f3e1f8c910f610b39b, 0x00349e ] } , - BigNum { limbs: [ 0x740a79a4750d83c4331bb22dabce03, 0x9db6e6d9b9a73f57df3ef8abc751b8, 0x003f4f ] } , - BigNum { limbs: [ 0xef365d8f564d8665d97d20da8a4880, 0x019e35705d3df95a130822cd786187, 0x005d09 ] } , - BigNum { limbs: [ 0xce6da570a80e789a2682de2575b781, 0xa5b4f42d200a39dfc4ffe6d45fa3cb, 0x0016e4 ] } , - BigNum { limbs: [ 0xbc1a689171d2cf978fe23164f37571, 0xf0e9d4f0de132b3dd8b8c5ad4beab0, 0x0073cf ] } , - BigNum { limbs: [ 0x01899a6e8c892f68701dcd9b0c8a90, 0xb66954ac9f3507fbff4f43f48c1aa3, 0x00001d ] } , - BigNum { limbs: [ 0x3ffb8f77520ffff2a23b550a4ab2db, 0x0b24e9dfe12818744d82593f6f34d6, 0x0057cf ] } , - BigNum { limbs: [ 0x7da87388ac4bff0d5dc4a9f5b54d26, 0x9c2e3fbd9c201ac58a85b06268d07d, 0x001c1e ] } , - BigNum { limbs: [ 0x997826bfc8ad389e25e3fe6cef99eb, 0x78749cc708a949a477553bc2f4fc33, 0x000ab3 ] } , - BigNum { limbs: [ 0x242bdc4035aec661da1c0093106616, 0x2ede8cd6749ee99560b2cddee30920, 0x00693a ] } , - BigNum { limbs: [ 0x586184211e1e67d4f1c280878dd156, 0xde92b22d5da44740e70657943af37e, 0x0059db ] } , - BigNum { limbs: [ 0x65427edee03d972b0e3d7e78722eab, 0xc8c077701fa3ebf8f101b20d9d11d5, 0x001a11 ] } , - BigNum { limbs: [ 0xcda463a8d1c74bd10369bd08096f25, 0xee4c927ff242f2211ffa4190c7122f, 0x0005f6 ] } , - BigNum { limbs: [ 0xefff9f572c94b32efc9641f7f690dc, 0xb906971d8b054118b80dc81110f323, 0x006df6 ] } , - BigNum { limbs: [ 0x064b923b363ae2563bf5faa91ed24b, 0xba6d9970e394849ed4fd6170ed5c48, 0x0061b0 ] } , - BigNum { limbs: [ 0xb75870c4c8211ca9c40a0456e12db6, 0xece5902c99b3ae9b030aa830eaa90b, 0x00123c ] } , - BigNum { limbs: [ 0xac287e54e95f83e124da9b67220f6a, 0x9a86ccaef3e24ca64c8224be01c20b, 0x005fe6 ] } , - BigNum { limbs: [ 0x117b84ab14fc7b1edb256398ddf097, 0x0ccc5cee8965e6938b85e4e3d64348, 0x001407 ] } , - BigNum { limbs: [ 0xbdc8bec4ca55090a1159e33226fddc, 0x01452a43350e9ccd0a8ad0d9ab6b1b, 0x004ded ] } , - BigNum { limbs: [ 0xffdb443b3406f5f5eea61bcdd90225, 0xa60dff5a4839966ccd7d38c82c9a37, 0x002600 ] } , - BigNum { limbs: [ 0x5e1c54792bce639cc1766f87d12b83, 0xfc8a65c7f929a997bfdd4f35e3ed22, 0x003339 ] } , - BigNum { limbs: [ 0x5f87ae86d28d9b633e898f782ed47e, 0xaac8c3d5841e89a2182aba6bf41831, 0x0040b3 ] } , - BigNum { limbs: [ 0xa43adf717e6f5462df3334e6f50603, 0x78efac810f398ebea89d164fda7eb5, 0x00194a ] } , - BigNum { limbs: [ 0x1969238e7fecaa9d20ccca190af9fe, 0x2e637d1c6e0ea47b2f6af351fd869e, 0x005aa3 ] } , - BigNum { limbs: [ 0xc24e588eeaf243b62ac02fe31ee32e, 0x8a30a21a1e10ea55f945e2ab111301, 0x004765 ] } , - BigNum { limbs: [ 0xfb55aa711369bb49d53fcf1ce11cd3, 0x1d2287835f3748e3dec226f6c6f251, 0x002c88 ] } , - BigNum { limbs: [ 0xc6c68d42f47a67560dced4fdd1fa58, 0x7540ddef6d67d1f5d35735e4bd5e3b, 0x002f01 ] } , - BigNum { limbs: [ 0xf6dd75bd09e197a9f2312a022e05a9, 0x32124bae0fe0614404b0d3bd1aa717, 0x0044ec ] } , - BigNum { limbs: [ 0xca9e3b165ffd945b504b3bb34e64db, 0x5e2e8b0cfbfa61bd24d49a89618b24, 0x0012ad ] } , - BigNum { limbs: [ 0xf305c7e99e5e6aa4afb4c34cb19b26, 0x49249e90814dd17cb3336f18767a2e, 0x006140 ] } , - BigNum { limbs: [ 0x96f2f1c97a5e1a3a3e804ffc87763e, 0xbb98eb7f7419a70793f2a8652ad8ed, 0x002c07 ] } , - BigNum { limbs: [ 0x26b1113683fde4c5c17faf037889c3, 0xebba3e1e092e8c324415613cad2c66, 0x0047e5 ] } , - BigNum { limbs: [ 0x140327f4c971e021cd8ea769a094a8, 0xaaff762d242c005f3353a3f16a497c, 0x002959 ] } , - BigNum { limbs: [ 0xa9a0db0b34ea1ede327157965f6b59, 0xfc53b370591c32daa4b465b06dbbd7, 0x004a93 ] } , - BigNum { limbs: [ 0x0f71e5bc71e446fdc1747a63ca7ac3, 0x9afc610afa905bd996a93f88b570c4, 0x002c32 ] } , - BigNum { limbs: [ 0xae321d438c77b8023e8b849c35853e, 0x0c56c89282b7d760415eca1922948f, 0x0047bb ] } , - BigNum { limbs: [ 0xf4cfbb63e2c54e74aa45a97409d198, 0x989b5812a14b95b3455dc1fc4ccd45, 0x00472e ] } , - BigNum { limbs: [ 0xc8d4479c1b96b08b55ba558bf62e69, 0x0eb7d18adbfc9d8692aa47a58b380d, 0x002cbf ] } , - BigNum { limbs: [ 0x93cc71925057864dbe0415c94990ca, 0xc088a84a78536f2265c88b14e72ab3, 0x0036e4 ] } , - BigNum { limbs: [ 0x29d7916dae0478b241fbe936b66f37, 0xe6ca815304f4c417723f7e8cf0daa0, 0x003d08 ] } , - BigNum { limbs: [ 0x84298ae8c5a849168f04747c6dd5f6, 0xafa0841de6392d45266b5073cdd55a, 0x002780 ] } , - BigNum { limbs: [ 0x397a781738b3b5e970fb8a83922a0b, 0xf7b2a57f970f05f4b19cb92e0a2ff9, 0x004c6c ] } , - BigNum { limbs: [ 0x3e0b597663520df89d77764e3c697d, 0x98e3d7cffb2883fe05d75d187fb448, 0x000e2d ] } , - BigNum { limbs: [ 0x7f98a9899b09f107628888b1c39684, 0x0e6f51cd821faf3bd230ac8958510b, 0x0065c0 ] } , - BigNum { limbs: [ 0x19ce40ca252a482fa108ef1d9fd883, 0xa5be459b5d08fae658577ea875bd85, 0x0053b2 ] } , - BigNum { limbs: [ 0xa3d5c235d931b6d05ef70fe260277e, 0x0194e402203f38537fb08af96247ce, 0x00203b ] } , - BigNum { limbs: [ 0x8e834b9d101cc30553818f08ec3792, 0x732ccb933eb66f82430836ca2cb22d, 0x002a8a ] } , - BigNum { limbs: [ 0x2f20b762ee3f3bfaac7e6ff713c86f, 0x34265e0a3e91c3b794ffd2d7ab5326, 0x004963 ] } , - BigNum { limbs: [ 0x578c6d4d68ed7dca98bd685bd2aadb, 0xcf54a97840df560670b0af632fe115, 0x0002a8 ] } , - BigNum { limbs: [ 0x661795b2956e8135674296a42d5526, 0xd7fe80253c68dd3367575a3ea8243e, 0x007144 ] } , - BigNum { limbs: [ 0x34d2b570c678cbc0cb94250c958ba6, 0x1552c8b68e2f38b6e13590d0570de6, 0x0025a8 ] } , - BigNum { limbs: [ 0x88d14d8f37e3333f346bd9f36a745b, 0x920060e6ef18fa82f6d278d180f76d, 0x004e45 ] } , - BigNum { limbs: [ 0x1184a5a8c9d0c61c94431cded59c35, 0x120f1f2bdbbd7a988914f8099e95c1, 0x00607e ] } , - BigNum { limbs: [ 0xac1f5d57348b38e36bbce2212a63cc, 0x95440a71a18ab8a14ef31198396f92, 0x00136f ] } , - BigNum { limbs: [ 0xd6fefe5e71e4af3ce5516b5b587650, 0x34b9a353074fe5db498087c0b30bec, 0x002f22 ] } , - BigNum { limbs: [ 0xe6a504a18c774fc31aae93a4a789b1, 0x7299864a75f84d5e8e8781e124f966, 0x0044cb ] } , - BigNum { limbs: [ 0x7afe2f33b2d29c01e3f791190a25d7, 0x177195db06ee6206cad3f8f8edd20f, 0x000ffe ] } , - BigNum { limbs: [ 0x42a5d3cc4b8962fe1c086de6f5da2a, 0x8fe193c27659d1330d3410a8ea3344, 0x0063ef ] } , - BigNum { limbs: [ 0x5406346f9e88c9af3e5868ce1e4fa4, 0xf3250b114352a07bbae29228324286, 0x0037a1 ] } , - BigNum { limbs: [ 0x699dce905fd33550c1a79631e1b05d, 0xb42e1e8c39f592be1d257779a5c2cd, 0x003c4b ] } , - BigNum { limbs: [ 0x32052ccde9b4a9e6681bf64684319d, 0x21267ce32c4122aea787e30b9f31d8, 0x005561 ] } , - BigNum { limbs: [ 0x8b9ed63214a7551997e408b97bce64, 0x862cacba5107108b3080269638d37b, 0x001e8c ] } , - BigNum { limbs: [ 0x7297ee3889650ac76cad1646b4761b, 0x3c8ebc9a02da5d2bc85bcb435da336, 0x00018a ] } , - BigNum { limbs: [ 0x4b0c14c774f6f4389352e8b94b89e6, 0x6ac46d037a6dd60e0fac3e5e7a621d, 0x007263 ] } , - BigNum { limbs: [ 0x254665e6c64ce581eae2c4dce4c189, 0x28fa32bbdcdfe1800790e64116d4ae, 0x006d41 ] } , - BigNum { limbs: [ 0x985d9d19380f197e151d3a231b3e78, 0x7e58f6e1a06851b9d0772360c130a5, 0x0006ac ] } , - BigNum { limbs: [ 0xf3441dca163541a496c81e00ff1276, 0xbde858c524939b5eade1d86f47824f, 0x00678d ] } , - BigNum { limbs: [ 0xca5fe535e826bd5b6937e0ff00ed8b, 0xe96ad0d858b497db2a263132908303, 0x000c5f ] } , - BigNum { limbs: [ 0xe51ebc10b57b63a5e9eab8152b4839, 0xee15d6617551bb90e37cb272360e41, 0x004f8c ] } , - BigNum { limbs: [ 0xd88546ef48e09b5a161546ead4b7c8, 0xb93d533c07f677a8f48b572fa1f711, 0x002460 ] } , - BigNum { limbs: [ 0x22cebc18e0dfea53811fb238fd2814, 0x90a3cef9da73ce6a4f2099a0af14fb, 0x0021bb ] } , - BigNum { limbs: [ 0x9ad546e71d7c14ac7ee04cc702d7ed, 0x16af5aa3a2d464cf88e7700128f058, 0x005232 ] } , - BigNum { limbs: [ 0xfa1af59c87e3c79575577ad3edf1cb, 0x27562b6a9a47cd994218dfd57859ef, 0x00061a ] } , - BigNum { limbs: [ 0xc3890d637678376a8aa8842c120e36, 0x7ffcfe32e30065a095ef29cc5fab63, 0x006dd3 ] } , - BigNum { limbs: [ 0x82dfab906848c79c3c62b3f1e99da1, 0x28bbc7ee1bd43b6c686683ad41bf33, 0x0012d8 ] } , - BigNum { limbs: [ 0x3ac4576f96133763c39d4b0e166260, 0x7e9761af6173f7cd6fa185f4964620, 0x006115 ] } , - BigNum { limbs: [ 0x55abba30f4c41cd573721eba4465da, 0x1de7a6c125e8339bd6dd4c22a7b59c, 0x0014b0 ] } , - BigNum { limbs: [ 0x67f848cf0997e22a8c8de045bb9a27, 0x896b82dc575fff9e012abd7f304fb7, 0x005f3d ] } , - BigNum { limbs: [ 0x2d52cdfd0b98891cc466c414f63fc0, 0x2c10967cc466405960131e7988212b, 0x00237a ] } , - BigNum { limbs: [ 0x90513502f2c375e33b993aeb09c041, 0x7b429320b8e1f2e077f4eb284fe428, 0x005073 ] } , - BigNum { limbs: [ 0x1c1e85d06fe60186a9252bd472f5c3, 0xa8ec47f5c95bf245914235998e63d5, 0x003282 ] } , - BigNum { limbs: [ 0xa1857d2f8e75fd7956dad32b8d0a3e, 0xfe66e1a7b3ec40f446c5d40849a17e, 0x00416a ] } , - BigNum { limbs: [ 0x020c89ecc0849375daa8809864b9c9, 0xcb5137860e4d96b953a9110b8bc722, 0x0047e3 ] } , - BigNum { limbs: [ 0xbb9779133dd76b8a25577e679b4638, 0xdc01f2176efa9c80845ef8964c3e31, 0x002c09 ] } , - BigNum { limbs: [ 0xdc61fcccb02913fc394ee9057469b2, 0x555589c733ab00def2f546ab11bdb3, 0x006841 ] } , - BigNum { limbs: [ 0xe14206334e32eb03c6b115fa8b964f, 0x51fd9fd6499d325ae512c2f6c6479f, 0x000bac ] } , - BigNum { limbs: [ 0x726e23ee95bde2252d6661602d7435, 0x26d40fbaeeb2b594020b8675359421, 0x0060ae ] } , - BigNum { limbs: [ 0x4b35df11689e1cdad2999d9fd28bcc, 0x807f19e28e957da5d5fc832ca27132, 0x00133f ] } , - BigNum { limbs: [ 0x9a0662c6b842dae4bdeee08a005d23, 0x5a11d5a09148a256aa11611dc01ba3, 0x001d34 ] } , - BigNum { limbs: [ 0x239da0394619241b42111e75ffa2de, 0x4d4153fcebff90e32df6a88417e9b0, 0x0056b9 ] } , - BigNum { limbs: [ 0xac53ac97accee001ed731a05753b82, 0x2e90157bd61796b1028e1af5170f0b, 0x000a2c ] } , - BigNum { limbs: [ 0x11505668518d1efe128ce4fa8ac47f, 0x78c31421a7309c88d579eeacc0f648, 0x0069c1 ] } , - BigNum { limbs: [ 0xb6f5ee2e46bfbbca14e7c13bdd9bf7, 0x1801a4e66be3bb20514a762a99af1c, 0x00441c ] } , - BigNum { limbs: [ 0x06ae14d1b79c4335eb183dc422640a, 0x8f5184b71164781986bd93773e5637, 0x002fd1 ] } , - BigNum { limbs: [ 0x439ad148d806a7ccdf8183b63ed567, 0x8c89b8e828873394d984953e9c4dc3, 0x0010e4 ] } , - BigNum { limbs: [ 0x7a0931b726555733207e7b49c12a9a, 0x1ac970b554c0ffa4fe8374633bb790, 0x006309 ] } , - BigNum { limbs: [ 0x3e07bd495b317f1e77078e4a922207, 0x5c0d57961afe92b25ed1032a82f445, 0x0041c9 ] } , - BigNum { limbs: [ 0x7f9c45b6a32a7fe188f870b56dddfa, 0x4b45d2076249a0877937067755110e, 0x003224 ] } , - BigNum { limbs: [ 0x3ab0758cbe037ad272322f2e9b1d0f, 0xce3c4a3cd9a490a6c43e4346125662, 0x000ae3 ] } , - BigNum { limbs: [ 0x82f38d734058842d8dcdcfd164e2f2, 0xd916df60a3a3a29313c9c65bc5aef1, 0x006909 ] } , - BigNum { limbs: [ 0x466a99fb5f7bef1e6017af6230182b, 0x7eb0960434809577da230e2c88260c, 0x0003df ] } , - BigNum { limbs: [ 0x773969049ee00fe19fe84f9dcfe7d6, 0x28a2939948c79dc1fde4fb754fdf47, 0x00700e ] } , - BigNum { limbs: [ 0x6ed968e5c09240096c2d089156eaed, 0x5fefa464baa254d980d9d59b1f65bd, 0x005bb3 ] } , - BigNum { limbs: [ 0x4eca9a1a3dc9bef693d2f66ea91514, 0x47638538c2a5de60572e3406b89f96, 0x00183a ] } , - BigNum { limbs: [ 0x999c758ec8080ab8e9e36ceea971b7, 0x146d0722977916eed0bc549904aba0, 0x002254 ] } , - BigNum { limbs: [ 0x24078d713653f447161c9211568e4a, 0x92e6227ae5cf1c4b074bb508d359b3, 0x005199 ] } , - BigNum { limbs: [ 0x4d72814a2d66d08895e916b75c0586, 0x130e3be6e721dff06413633821356e, 0x0023c2 ] } , - BigNum { limbs: [ 0x703181b5d0f52e776a16e848a3fa7b, 0x9444edb69626534973f4a669b6cfe5, 0x00502b ] } , - BigNum { limbs: [ 0x4f3dcab708c5c68b54a44d5eb5f239, 0xafacdf20a18221d002ebd6d577c87d, 0x004b6e ] } , - BigNum { limbs: [ 0x6e663848f5963874ab5bb1a14a0dc8, 0xf7a64a7cdbc61169d51c32cc603cd6, 0x00287e ] } , - BigNum { limbs: [ 0x3cd85a008ad190414dbdcb15d0dac0, 0x18c3495bb2a9b4c1265d710a862f5f, 0x006749 ] } , - BigNum { limbs: [ 0x80cba8ff738a6ebeb24233ea2f2541, 0x8e8fe041ca9e7e78b1aa989751d5f4, 0x000ca4 ] } , - BigNum { limbs: [ 0xfc5bbb5fe6d85bf135c083512c9fe8, 0xfacd0f29438dc279c735326262a715, 0x00443c ] } , - BigNum { limbs: [ 0xc14847a01783a30eca3f7baed36019, 0xac861a7439ba70c010d2d73f755e3d, 0x002fb0 ] } , - BigNum { limbs: [ 0xddd69a355f5807ccd7ce20289e7057, 0xc73dd7b7381292525534a336790988, 0x0021bd ] } , - BigNum { limbs: [ 0xdfcd68ca9f03f7332831ded7618faa, 0xe01551e64535a0e782d3666b5efbca, 0x00522f ] } , - BigNum { limbs: [ 0x2e72025de4a0c712a4159d38ee7edf, 0x93133a3a6b7193b0142074a447361e, 0x00210f ] } , - BigNum { limbs: [ 0x8f3200a219bb37ed5bea61c7118122, 0x143fef6311d69f89c3e794fd90cf35, 0x0052de ] } , - BigNum { limbs: [ 0x668bb61eabbf26efe8b7c5f4cdbb8a, 0x8055f6f56ceef2a6ba04234203090d, 0x005169 ] } , - BigNum { limbs: [ 0x57184ce1529cd8101748390b324477, 0x26fd32a8105940931e03e65fd4fc46, 0x002284 ] } , - BigNum { limbs: [ 0x151dff81d368d532dbe75201147c74, 0xf563dca47733442fccebb3b272904a, 0x0015aa ] } , - BigNum { limbs: [ 0xa886037e2af329cd2418acfeeb838d, 0xb1ef4cf90614ef0a0b1c55ef657509, 0x005e42 ] } , - BigNum { limbs: [ 0x0a8dbfebab4f06748e13419b319c10, 0x1d7727add9dd135d2ad0956ba98d78, 0x00528e ] } , - BigNum { limbs: [ 0xb3164314530cf88b71ecbd64ce63f1, 0x89dc01efa36b1fdcad3774362e77db, 0x00215f ] } , - BigNum { limbs: [ 0x9f0e6768335b1d2b9a21f44b8839df, 0xcffa24a5ed86e22b586a2e37e5b16a, 0x0039b5 ] } , - BigNum { limbs: [ 0x1e959b97cb00e1d465de0ab477c622, 0xd75904f78fc1510e7f9ddb69f253e9, 0x003a37 ] } , - BigNum { limbs: [ 0xe12f618a02f52636e22842492675f1, 0x1578dddc06904031a5b1f1d0e35a2d, 0x00465a ] } , - BigNum { limbs: [ 0xdc74a175fb66d8c91dd7bcb6d98a10, 0x91da4bc176b7f308325617d0f4ab25, 0x002d93 ] } , - BigNum { limbs: [ 0xfc7593aacae8f0048c998c718b18fa, 0xb132aace436810593938764cd2873c, 0x005e9f ] } , - BigNum { limbs: [ 0xc12e6f5533730efb7366728e74e707, 0xf6207ecf39e022e09ecf9355057e16, 0x00154d ] } , - BigNum { limbs: [ 0x855c98f03e4ec9bbc878488ea71ba8, 0x4f4d80e421236231f3707b9d46a099, 0x005765 ] } , - BigNum { limbs: [ 0x38476a0fc00d35443787b67158e459, 0x5805a8b95c24d107e4978e049164ba, 0x001c88 ] } , - BigNum { limbs: [ 0xa9e6457cbef76d1fccde66fc588d7d, 0x6964e2c2128178dec9a67d6bf69ab1, 0x004c6b ] } , - BigNum { limbs: [ 0x13bdbd833f6491e033219803a77284, 0x3dee46db6ac6ba5b0e618c35e16aa2, 0x002782 ] } , - BigNum { limbs: [ 0x0ab900fdd04ba0c27a1a12d0f2c7b4, 0x958f86d2b38d13cebad18da8de97be, 0x004fe1 ] } , - BigNum { limbs: [ 0xb2eb02022e105e3d85e5ec2f0d384d, 0x11c3a2cac9bb1f6b1d367bf8f96d95, 0x00240c ] } , - BigNum { limbs: [ 0xfec709676525a283ae887be3b065d2, 0x31dc646483ada7ec9b7504f5c08d9a, 0x004ea3 ] } , - BigNum { limbs: [ 0xbedcf99899365c7c5177831c4f9a2f, 0x7576c538f99a8b4d3c9304ac1777b8, 0x00254a ] } , - BigNum { limbs: [ 0x6236400ce1a035463b81e35706dc93, 0x794174efafe9bbb1da00479695453e, 0x0008ab ] } , - BigNum { limbs: [ 0x5b6dc2f31cbbc9b9c47e1ba8f9236e, 0x2e11b4adcd5e7787fe07c20b42c015, 0x006b42 ] } , - BigNum { limbs: [ 0xac3ff58faca4e3edadb1101621f8bf, 0x844c97b849b37e115e7879e5fe85de, 0x003d52 ] } , - BigNum { limbs: [ 0x11640d7051b71b12524eeee9de0742, 0x230691e53394b528798f8fbbd97f75, 0x00369b ] } , - BigNum { limbs: [ 0x7c85bcff563e231e8623e352e51c35, 0xcdffedfad78d5fe87ca61ae9abc08f, 0x002b43 ] } , - BigNum { limbs: [ 0x411e4600a81ddbe179dc1bad1ae3cc, 0xd9533ba2a5bad3515b61eeb82c44c4, 0x0048a9 ] } , - BigNum { limbs: [ 0xa804027c23b9f95376802e91e05be8, 0xe9c4cef6cbefe6c9741d8956584aee, 0x001cdb ] } , - BigNum { limbs: [ 0x15a00083daa205ac897fd06e1fa419, 0xbd8e5aa6b1584c7063ea804b7fba65, 0x005711 ] } , - BigNum { limbs: [ 0x0e0cd54bd4aa61826d2d37f94a447f, 0x63512d6507eff7e74e36ebb406ab4a, 0x0065c6 ] } , - BigNum { limbs: [ 0xaf972db429b19d7d92d2c706b5bb82, 0x4401fc3875583b5289d11dedd15a09, 0x000e27 ] } , - BigNum { limbs: [ 0x1d8f59d2e0d8f517d1f555defa4965, 0xce0a6cf41e04d1f37da3193dc2f7e1, 0x000e39 ] } , - BigNum { limbs: [ 0xa014a92d1d8309e82e0aa92105b69c, 0xd948bca95f4361465a64f064150d72, 0x0065b3 ] } , - BigNum { limbs: [ 0xe9debb01a73a7d2d2fd8f2b8879fa4, 0x9ddf450c9503f6d1e86fff13f87f5a, 0x0010af ] } , - BigNum { limbs: [ 0xd3c547fe572181d2d0270c4778605d, 0x0973e490e8443c67ef980a8ddf85f8, 0x00633e ] } , - BigNum { limbs: [ 0x82a869b076061adec6750f6279f487, 0xe06fd1d55ed610877582a2642dfdc9, 0x0052c8 ] } , - BigNum { limbs: [ 0x3afb994f8855e421398aef9d860b7a, 0xc6e357c81e7222b26285673daa078a, 0x002124 ] } , - BigNum { limbs: [ 0xcd0477f8b300e2e8072dcdffa22a4b, 0x0427dc1ed46b959d6213b9fb9ca34b, 0x006cfb ] } , - BigNum { limbs: [ 0xf09f8b074b5b1c17f8d231005dd5b6, 0xa32b4d7ea8dc9d9c75f44fa63b6207, 0x0006f2 ] } , - BigNum { limbs: [ 0x6e9b05922fb4ca4db6496c5f476610, 0x7f60ea83e3914376d6422502433719, 0x004ee5 ] } , - BigNum { limbs: [ 0x4f08fd6dcea734b249b692a0b899f1, 0x27f23f1999b6efc301c5e49f94ce3a, 0x002508 ] } , - BigNum { limbs: [ 0xa62fc0089b634dbf2aac25d7d75fee, 0xdb944f0c588276cb7f8865b7d9ba3e, 0x0035ed ] } , - BigNum { limbs: [ 0x177442f762f8b140d553d92828a013, 0xcbbeda9124c5bc6e587fa3e9fe4b15, 0x003dff ] } , - BigNum { limbs: [ 0x98290aa8b6ad53f2043aa3f401dfdc, 0x09673fc03acedd09ac836e1ca7736a, 0x0053e1 ] } , - BigNum { limbs: [ 0x257af85747aeab0dfbc55b0bfe2025, 0x9debe9dd427956302b849b853091e9, 0x00200c ] } , - BigNum { limbs: [ 0x647448c7b0afb7ec1c61775ab7abdd, 0x889ebec7d61b637217c82c971d9e4f, 0x005239 ] } , - BigNum { limbs: [ 0x592fba384dac4713e39e87a5485424, 0x1eb46ad5a72ccfc7c03fdd0aba6704, 0x0021b4 ] } , - BigNum { limbs: [ 0xfdccab18b6ef1df95145ce9d220f41, 0xae5fde2b4f5827052bda8626455524, 0x0033b2 ] } , - BigNum { limbs: [ 0xbfd757e7476ce106aeba3062ddf0c0, 0xf8f34b722df00c34ac2d837b92b02e, 0x00403a ] } , - BigNum { limbs: [ 0x48364c6d02ded0006ae02ab74add69, 0x07e0704b0c97aead5c4e44e64375c3, 0x000c8d ] } , - BigNum { limbs: [ 0x756db692fb7d2eff951fd448b52298, 0x9f72b95270b0848c7bb9c4bb948f90, 0x006760 ] } , - BigNum { limbs: [ 0x0fa82de7378c5647041bcb6bd46fcc, 0x5e373ec8ee1bbc8c8f5360d1f7b0e5, 0x00450a ] } , - BigNum { limbs: [ 0xadfbd518c6cfa8b8fbe433942b9035, 0x491bead48f2c76ad48b4a8cfe0546e, 0x002ee3 ] } , - BigNum { limbs: [ 0xd7924989f5052ba483ec3b98206641, 0xa817449255ff6eb0398da5372b4151, 0x0008d0 ] } , - BigNum { limbs: [ 0xe611b9760956d35b7c13c367df99c0, 0xff3be50b2748c4899e7a646aacc401, 0x006b1c ] } , - BigNum { limbs: [ 0xcaad5df72cd49bbe86414d32e186de, 0xdad728f81f15d7ed9ff23c94d4b3e1, 0x00493c ] } , - BigNum { limbs: [ 0xf2f6a508d187634179beb1cd1e7923, 0xcc7c00a55e325b4c3815cd0d035171, 0x002ab0 ] } , - BigNum { limbs: [ 0x1247f31227b7d49e32a2c19d55f8d3, 0xded3eebc215ddeea461ee0cd7d94d6, 0x001f0e ] } , - BigNum { limbs: [ 0xab5c0fedd6a42a61cd5d3d62aa072e, 0xc87f3ae15bea544f91e928d45a707d, 0x0054de ] } , - BigNum { limbs: [ 0xdc89075d67ed7e317050f884ca576b, 0x281b92bda8a01a3a778c086ff4e1ad, 0x0001ed ] } , - BigNum { limbs: [ 0xe11afba2966e80ce8faf067b35a896, 0x7f3796dfd4a818ff607c0131e323a5, 0x007200 ] } , - BigNum { limbs: [ 0xcdb87cb712877e0bf60e7c63c2437b, 0x4efb2363ab2f1ff78cb0023480e8f9, 0x001a6f ] } , - BigNum { limbs: [ 0xefeb8648ebd480f409f1829c3dbc86, 0x58580639d21913424b58076d571c59, 0x00597e ] } , - BigNum { limbs: [ 0xd45c8361c9f7297117194176b34fcd, 0xabbd11933f13d0bd028d2df1d8d2ea, 0x00657c ] } , - BigNum { limbs: [ 0xe9477f9e3464d58ee8e6bd894cb034, 0xfb96180a3e34627cd57adbafff3268, 0x000e70 ] } , - BigNum { limbs: [ 0xf77a7bafa8af3673a70628281b1030, 0x37b660a6007a671cd104321d3da423, 0x00523d ] } , - BigNum { limbs: [ 0xc629875055acc88c58f9d6d7e4efd1, 0x6f9cc8f77ccdcc1d0703d7849a612f, 0x0021b0 ] } , - BigNum { limbs: [ 0xa5adf88739a7bd9d7f8fd7d5e17d4c, 0xa451b990fd38ff18af03ba072d922e, 0x0030ed ] } , - BigNum { limbs: [ 0x17f60a78c4b441628070272a1e82b5, 0x0301700c800f342129044f9aaa7325, 0x004300 ] } , - BigNum { limbs: [ 0xd55f49d6b5a1fa4a715cef814e4239, 0x8cd22f924921ab164cf3cbcd563e6d, 0x005b3b ] } , - BigNum { limbs: [ 0xe844b92948ba04b58ea30f7eb1bdc8, 0x1a80fa0b342688238b143dd481c6e5, 0x0018b2 ] } , - BigNum { limbs: [ 0xaa756712f2bc015611aad4215f6c1d, 0x446d71965b3a8e20c5aa738a332574, 0x001a1a ] } , - BigNum { limbs: [ 0x132e9bed0b9ffda9ee552adea093e4, 0x62e5b807220da519125d9617a4dfdf, 0x0059d3 ] } , - BigNum { limbs: [ 0xdf1a3727fd721d20a3252151ac98a0, 0x0d63de7126601d7386b1d14b886090, 0x001c40 ] } , - BigNum { limbs: [ 0xde89cbd800e9e1df5cdaddae536761, 0x99ef4b2c56e815c6515638564fa4c2, 0x0057ad ] } , - BigNum { limbs: [ 0xfb22b17b1b8fce193fef7af0333d31, 0x8d54f1ac8eda45244257bc7eed74d0, 0x001373 ] } , - BigNum { limbs: [ 0xc2815184e2cc30e6c010840fccc2d0, 0x19fe37f0ee6dee1595b04d22ea9082, 0x00607a ] } , - BigNum { limbs: [ 0xd94eb86ff1ed3c7833cda901f237d1, 0x6cac58e7d4d227ece7306d1ad0f73b, 0x003446 ] } , - BigNum { limbs: [ 0xe4554a900c6ec287cc3255fe0dc830, 0x3aa6d0b5a8760b4cf0d79c87070e17, 0x003fa7 ] } , - BigNum { limbs: [ 0x0a0b6dc3344e9740aa98279de1d272, 0x396f0bbba2006c10dffbc6e2ccfd1f, 0x0043ce ] } , - BigNum { limbs: [ 0xb398953cca0d67bf5567d7621e2d8f, 0x6de41de1db47c728f80c42bf0b0834, 0x00301f ] } , - BigNum { limbs: [ 0x2774aacbd8e5410e990b7ea6099539, 0x0ff19575c66a5d823a24eadcf44034, 0x00013a ] } , - BigNum { limbs: [ 0x962f58342576bdf166f48059f66ac8, 0x97619427b6ddd5b79de31ec4e3c51f, 0x0072b3 ] } , - BigNum { limbs: [ 0x98cfc228cdac64c0f4b12f26fbee10, 0x608230bf89f522f30a822df80cebab, 0x006bbe ] } , - BigNum { limbs: [ 0x24d440d730af9a3f0b4ecfd90411f1, 0x46d0f8ddf3531046cd85dba9cb19a8, 0x00082f ] } , - BigNum { limbs: [ 0xfcae5ba09e0c9e7936dad504dd20d8, 0xd14ad990c5d94abc61794fedbb7b37, 0x0004fd ] } , - BigNum { limbs: [ 0xc0f5a75f604f6086c92529fb22df29, 0xd608500cb76ee87d768eb9b41c8a1b, 0x006eef ] } , - BigNum { limbs: [ 0x2dd2cd0d439bf99df86a7b583e6a7a, 0x334ff56b12c0fe4d544102494ce813, 0x000313 ] } , - BigNum { limbs: [ 0x8fd135f2bac00562079583a7c19587, 0x740334326a8734ec83c707588b1d40, 0x0070da ] } , - BigNum { limbs: [ 0x012acc92ab4930bd516cd62ba82664, 0xc77d512a5bc54b53c2020e1531be45, 0x0008b1 ] } , - BigNum { limbs: [ 0xbc79366d5312ce42ae9328d457d99d, 0xdfd5d8732182e7e61605fb8ca6470e, 0x006b3b ] } , - BigNum { limbs: [ 0xa0896f1080c1eee49d3bc9f665878a, 0x46f8c3bf1cc0a4b9f13d221641f726, 0x0029aa ] } , - BigNum { limbs: [ 0x1d1a93ef7d9a101b62c435099a7877, 0x605a65de60878e7fe6cae78b960e2d, 0x004a43 ] } , - BigNum { limbs: [ 0x53929cdf5d53f68046a0338d19eb21, 0x4ecf71c935ff0ddb58cba88e385eb4, 0x00701c ] } , - BigNum { limbs: [ 0x6a116620a108087fb95fcb72e614e0, 0x5883b7d44749255e7f3c61139fa69f, 0x0003d1 ] } , - BigNum { limbs: [ 0x4d116daf42538b08c8845e74a76e3c, 0x3df169bd66227d167a1aa89fd1bf92, 0x006073 ] } , - BigNum { limbs: [ 0x70929550bc0873f7377ba08b5891c5, 0x6961bfe01725b6235ded61020645c1, 0x00137a ] } , - BigNum { limbs: [ 0x7ec84bcbd1676791088fac0c4f9032, 0x2f32a44ea3b5e5353491392eb969f1, 0x004928 ] } , - BigNum { limbs: [ 0x3edbb7342cf4976ef77052f3b06fcf, 0x7820854ed9924e04a376d0731e9b62, 0x002ac5 ] } , - BigNum { limbs: [ 0x9fefa0239bcb3e8a28db7c68591369, 0xab965ee2dd62dc7f696be9aa0ec978, 0x0028e0 ] } , - BigNum { limbs: [ 0x1db462dc6290c075d7248297a6ec98, 0xfbbccaba9fe556ba6e9c1ff7c93bdb, 0x004b0c ] } , - BigNum { limbs: [ 0xb1df0d7f11055f353f8e344469d5db, 0xee2957ec3250ae111cfbdc4970ab0d, 0x006a85 ] } , - BigNum { limbs: [ 0x0bc4f580ed569fcac071cabb962a26, 0xb929d1b14af78528bb0c2d58675a46, 0x000967 ] } , - BigNum { limbs: [ 0xcaf14f19ed7d03a0f0d6fddf65ab78, 0x1d09b8983f31effc399a99a0f0774b, 0x001ce3 ] } , - BigNum { limbs: [ 0xf2b2b3e610defb5f0f2901209a5489, 0x8a4971053e16433d9e6d7000e78e07, 0x00570a ] } , - BigNum { limbs: [ 0x0eb926614be1a588cdfcb063137ed0, 0xde7ab1959c4bc6a2ed06d37f167a03, 0x00407f ] } , - BigNum { limbs: [ 0xaeeadc9eb27a597732034e9cec8131, 0xc8d87807e0fc6c96eb013622c18b50, 0x00336d ] } , - BigNum { limbs: [ 0x7ea24c2e5ec8f8aa638667dde3590d, 0x5373bf1e91d9fef178082e44ecc0c7, 0x002ce4 ] } , - BigNum { limbs: [ 0x3f01b6d19f9306559c7997221ca6f4, 0x53df6a7eeb6e34485fffdb5ceb448c, 0x004709 ] } , - BigNum { limbs: [ 0x908be130f926723ad61f87d207308f, 0xd1772f77e6a8eea341e88434f19304, 0x004a4c ] } , - BigNum { limbs: [ 0x2d1821cf05358cc529e0772df8cf72, 0xd5dbfa25969f4496961f856ce6724f, 0x0029a0 ] } , - BigNum { limbs: [ 0xe8222d4428fff63a9a7c5389c73e8f, 0x6f9d1eeb0abdf3bac4d64a36538a64, 0x007363 ] } , - BigNum { limbs: [ 0xd581d5bbd55c08c56583ab7638c172, 0x37b60ab2728a3f7f1331bf6b847aee, 0x00008a ] } , - BigNum { limbs: [ 0x931b5f8b6cbdcc7974730b5c3ba924, 0x64469d1accc8fc62eef966d0253b7f, 0x003675 ] } , - BigNum { limbs: [ 0x2a88a374919e32868b8cf3a3c456dd, 0x430c8c82b07f36d6e90ea2d1b2c9d4, 0x003d78 ] } , - BigNum { limbs: [ 0x67e34e22abef508c9d7369401c9ce9, 0x6cd186a4d1bf23bfab53572bc8e62a, 0x007179 ] } , - BigNum { limbs: [ 0x55c0b4dd526cae73628c95bfe36318, 0x3a81a2f8ab890f7a2cb4b2760f1f29, 0x000274 ] } , - BigNum { limbs: [ 0x523efd9a4034293bcb639a86de8161, 0x70e5bd7314ec89710171d3095acded, 0x002dc3 ] } , - BigNum { limbs: [ 0x6b650565be27d5c4349c6479217ea0, 0x366d6c2a685ba9c8d69636987d3766, 0x00462a ] } , - BigNum { limbs: [ 0xdc86cb3ee5aeda0dc44788191c6694, 0x85025f6fc6b635ee1289a4af9cc708, 0x000a03 ] } , - BigNum { limbs: [ 0xe11d37c118ad24f23bb876e6e3996d, 0x2250ca2db691fd4bc57e64f23b3e4a, 0x0069ea ] } , - BigNum { limbs: [ 0xfb20b8ec99d14e44d969247a3b9ea0, 0x8d984cf2bbe3e84864fbbaf6ca1a19, 0x003a17 ] } , - BigNum { limbs: [ 0xc2834a13648ab0bb2696da85c46161, 0x19badcaac1644af1730c4eab0deb39, 0x0039d6 ] } , - BigNum { limbs: [ 0x3e4ce9b0b4d29e8ddb46c387d94289, 0x9c0f10c48a5ee2c04f5308e4117c29, 0x006e01 ] } , - BigNum { limbs: [ 0x7f57194f4989607224b93b7826bd78, 0x0b4418d8f2e9507988b500bdc6892a, 0x0005ec ] } , - BigNum { limbs: [ 0x0843767d0372343f1f18f7ffc6877b, 0x6f733cc9941e4d1f292459f8fcb93b, 0x000f19 ] } , - BigNum { limbs: [ 0xb5608c82fae9cac0e0e70700397886, 0x37dfecd3e929e61aaee3afa8db4c18, 0x0064d4 ] } , - BigNum { limbs: [ 0x88b0025d0d21897a73822ebdcd10f4, 0xad7c3cd1771ded6b0d595d2df89be8, 0x00255b ] } , - BigNum { limbs: [ 0x34f400a2f13a75858c7dd04232ef0d, 0xf9d6eccc062a45cecaaeac73df696b, 0x004e91 ] } , - BigNum { limbs: [ 0x33a0cc91de22b00210a61427617e32, 0xf107893997a09e1935feb8328692f2, 0x003e5f ] } , - BigNum { limbs: [ 0x8a03366e20394efdef59ead89e81cf, 0xb64ba063e5a79520a209516f517261, 0x00358d ] } , - BigNum { limbs: [ 0xaba4806747cbbb3ed3c6695778c414, 0x6b7fc7d64506fd4c8ab2f0d9a0c2ef, 0x001fd5 ] } , - BigNum { limbs: [ 0x11ff8298b69043c12c3995a8873bed, 0x3bd361c7384135ed4d5518c8374264, 0x005418 ] } , - BigNum { limbs: [ 0x9793cdc553268fdb8c8c9df25f113f, 0xc8b8a6bed3ce2e4295f13884893e82, 0x00569a ] } , - BigNum { limbs: [ 0x2610353aab356f247373610da0eec2, 0xde9a82dea97a04f74216d11d4ec6d1, 0x001d52 ] } , - BigNum { limbs: [ 0x48c725f84f95c141afaf92fc44c150, 0x2ec90d8645b8541c402b6099de87a6, 0x006430 ] } , - BigNum { limbs: [ 0x74dcdd07aec63dbe50506c03bb3eb1, 0x788a1c17378fdf1d97dca907f97dad, 0x000fbd ] } , - BigNum { limbs: [ 0x3d298b3fdcee949d23158904db414e, 0x5b2f0cdcb97b5ef4890c09efc1b9e8, 0x002c4a ] } , - BigNum { limbs: [ 0x807a77c0216d6a62dcea75fb24beb3, 0x4c241cc0c3ccd4454efbffb2164b6b, 0x0047a3 ] } , - BigNum { limbs: [ 0x54bc8d5e005d10a64eed6a5818a4bf, 0x165bdc32edd97d8cc8889c8a298881, 0x005ab7 ] } , - BigNum { limbs: [ 0x68e775a1fdfeee59b11294a7e75b42, 0x90f74d6a8f6eb5ad0f7f6d17ae7cd2, 0x001936 ] } , - BigNum { limbs: [ 0x5d543983bbd49126324200928abe0a, 0x82d48a57fa1bf0d2b13a179c103085, 0x005e68 ] } , - BigNum { limbs: [ 0x604fc97c42876dd9cdbdfe6d7541f7, 0x247e9f45832c426726cdf205c7d4ce, 0x001585 ] } , - BigNum { limbs: [ 0x4959e25753f8727e4cddf5bbcf9e2e, 0x0e9ae069d4854261fc6d52cd9f472f, 0x001c9a ] } , - BigNum { limbs: [ 0x744a20a8aa638c81b32209443061d3, 0x98b84933a8c2f0d7db9ab6d438be24, 0x005753 ] } , - BigNum { limbs: [ 0xfb52a4a4084049b64635a1fca37cd4, 0x97060617002b139d9e55125fd6a0da, 0x0006a1 ] } , - BigNum { limbs: [ 0xc2515e5bf61bb549b9ca5d035c832d, 0x104d23867d1d1f9c39b2f742016478, 0x006d4c ] } , - BigNum { limbs: [ 0x46b757d37646ad5f6ed9d54ebc7dfd, 0x115e1973082b57191cb038744d3fda, 0x0059ad ] } , - BigNum { limbs: [ 0x76ecab2c881551a0912629b1438204, 0x95f5102a751cdc20bb57d12d8ac579, 0x001a40 ] } , - BigNum { limbs: [ 0x3a3fdb27ce4620c9037884585beeed, 0x7ba852c1b35fd6ee452a97c16ac388, 0x004c29 ] } , - BigNum { limbs: [ 0x836427d83015de36fc877aa7a41114, 0x2baad6dbc9e85c4b92dd71e06d41cb, 0x0027c4 ] } , - BigNum { limbs: [ 0x5007e38c90bf5a1406a9e74470eb1c, 0x2d7256bac7644923c535f42197488e, 0x0059a7 ] } , - BigNum { limbs: [ 0x6d9c1f736d9ca4ebf95617bb8f14e5, 0x79e0d2e2b5e3ea1612d2158040bcc5, 0x001a46 ] } , - BigNum { limbs: [ 0x58596cd9180f6351eeda0bf1f9d15c, 0xdbac48ffd83b5b50fba542ee045f2d, 0x000cc1 ] } , - BigNum { limbs: [ 0x654a9626e64c9bae1125f30e062ea5, 0xcba6e09da50cd7e8dc62c6b3d3a626, 0x00672b ] } , - BigNum { limbs: [ 0xda385259825e8ff7de74762844b59b, 0x8d1d32ee41ea7fa57c0bb07ba2861e, 0x004a07 ] } , - BigNum { limbs: [ 0xe36bb0a67bfd6f08218b88d7bb4a66, 0x1a35f6af3b5db3945bfc5926357f34, 0x0029e6 ] } , - BigNum { limbs: [ 0x663b19281ecf204a13c9090a5de344, 0x6cb1b8029d0f4ea7520a9e1f45fed2, 0x000264 ] } , - BigNum { limbs: [ 0x5768e9d7df8cdeb5ec36f5f5a21cbd, 0x3aa1719ae038e49285fd6b82920681, 0x007189 ] } , - BigNum { limbs: [ 0x424c5b7c97a6d27d1881b7fb2a11e6, 0x8b263946eb224cb0fea682711f56cf, 0x000526 ] } , - BigNum { limbs: [ 0x7b57a78366b52c82e77e4704d5ee1b, 0x1c2cf0569225e688d9618730b8ae84, 0x006ec7 ] } , - BigNum { limbs: [ 0xbf61c5f3d0832796c52d21fbc61f0f, 0xb379c9183ffc813bcf1073aceca325, 0x000ef4 ] } , - BigNum { limbs: [ 0xfe423d0c2dd8d7693ad2dd0439e0f2, 0xf3d960853d4bb1fe08f795f4eb622d, 0x0064f8 ] } , - BigNum { limbs: [ 0xe3a6cd55d29c43736afc498dd8c1d1, 0xa19828da9aab0564b5a8d1072ba42b, 0x00445e ] } , - BigNum { limbs: [ 0xd9fd35aa2bbfbb8c9503b572273e30, 0x05bb00c2e29d2dd5225f389aac6127, 0x002f8f ] } , - BigNum { limbs: [ 0xead8a0448ecebabcdf1235752b0ef3, 0xe8ee9237909732d4a06d7aa57eb71b, 0x006bcb ] } , - BigNum { limbs: [ 0xd2cb62bb6f8d444320edc98ad4f10e, 0xbe649765ecb10065379a8efc594e37, 0x000821 ] } , - BigNum { limbs: [ 0x4119ad873614884d66efb4fed2279a, 0xd9900b7ae25a95dfadf106e3f002de, 0x005ae6 ] } , - BigNum { limbs: [ 0x7c8a5578c84776b299104a012dd867, 0xcdc31e229aed9d5a2a1702bde80275, 0x001906 ] } , - BigNum { limbs: [ 0xb4f7967f7e42a5fda4841718420054, 0x2f3fb51cf0a715d27b6251fc311c17, 0x0062fb ] } , - BigNum { limbs: [ 0x08ac6c80801959025b7be7e7bdffad, 0x781374808ca11d675ca5b7a5a6e93c, 0x0010f2 ] } , - BigNum { limbs: [ 0x180e0e8b24f12309f239f760b82267, 0xba636d174692ad5a534045625d9514, 0x0058c3 ] } , - BigNum { limbs: [ 0xa595f474d96adbf60dc6079f47dd9a, 0xecefbc8636b585df84c7c43f7a703f, 0x001b29 ] } , - BigNum { limbs: [ 0xc7e8901137ff0153a93b55b4fea0eb, 0xc4a69476d9fc4bb6f34c1c58a0568e, 0x000e7c ] } , - BigNum { limbs: [ 0xf5bb72eec65cfdac56c4a94b015f16, 0xe2ac9526a34be782e4bbed4937aec4, 0x006570 ] } , - BigNum { limbs: [ 0x72a5c3f51c283524eb6f79660ba729, 0x4cc8ec848f9932f96660e46b8b0362, 0x00548e ] } , - BigNum { limbs: [ 0x4afe3f0ae233c9db14908599f458d8, 0x5a8a3d18edaf004071a725364d01f1, 0x001f5f ] } , - BigNum { limbs: [ 0xb69e5da3889e1b2613fb0ba0d0c8b9, 0x48f2bdc1f969a35750fccdbd565adc, 0x0045f4 ] } , - BigNum { limbs: [ 0x0705a55c75bde3d9ec04f35f2f3748, 0x5e606bdb83de8fe2870b3be481aa77, 0x002df9 ] } , - BigNum { limbs: [ 0xeeae11e7bccf3f082cf84eeb77b539, 0xd3cae75d7dcbb02266098876489699, 0x006a92 ] } , - BigNum { limbs: [ 0xcef5f118418cbff7d307b014884ac8, 0xd388423fff7c831771fe812b8f6eb9, 0x00095a ] } , - BigNum { limbs: [ 0x9edcfa443aea1905a885cb88412fc6, 0x71fcb801d5d5172aa6aa52827f4c0e, 0x00140c ] } , - BigNum { limbs: [ 0x1ec708bbc371e5fa577a3377bed03b, 0x3556719ba7731c0f315db71f58b945, 0x005fe1 ] } , - BigNum { limbs: [ 0x2c95af5bc18faa930fa010bc171746, 0x7dc1d3176b166ae305e12c0d0f3845, 0x003659 ] } , - BigNum { limbs: [ 0x910e53a43ccc546cf05fee43e8e8bb, 0x299156861231c856d226dd94c8cd0e, 0x003d94 ] } , - BigNum { limbs: [ 0x85a508df2452feef976635fc779c0c, 0x54744d4336448dd7a2cb1fe4cabc60, 0x00509e ] } , - BigNum { limbs: [ 0x37fefa20da0900106899c9038863f5, 0x52dedc5a4703a562353ce9bd0d48f3, 0x00234f ] } , - BigNum { limbs: [ 0x2a457ac1b1515e66caf0bfe0dc71bd, 0xde54f97535615e9a245b3b982d893b, 0x007033 ] } , - BigNum { limbs: [ 0x935e883e4d0aa099350f3f1f238e44, 0xc8fe302847e6d49fb3acce09aa7c18, 0x0003b9 ] } , - BigNum { limbs: [ 0xe681ffa04fd14425cd201433440674, 0xde62396f17618541eba544010dc6e2, 0x0031d2 ] } , - BigNum { limbs: [ 0xd722035fae8abada32dfeaccbbf98d, 0xc8f0f02e65e6adf7ec62c5a0ca3e70, 0x00421a ] } , - BigNum { limbs: [ 0x52dc972de8dd1ae0ef5504d0804371, 0xd7d00aa6d47ea06254fd521a05e75b, 0x0063c3 ] } , - BigNum { limbs: [ 0x6ac76bd2157ee41f10aafa2f7fbc90, 0xcf831ef6a8c992d7830ab787d21df8, 0x001029 ] } , - BigNum { limbs: [ 0x4804de0259a52492093ce6634374ea, 0x74a1cf96403463f289036f16b94858, 0x002037 ] } , - BigNum { limbs: [ 0x759f24fda4b6da6df6c3189cbc8b17, 0x32b15a073d13cf474f049a8b1ebcfb, 0x0053b6 ] } , - BigNum { limbs: [ 0x0b4a6523f47a1ff8e0b04c3b1af356, 0x83b623d916a3ad6c4c7ac3494271a8, 0x005a8d ] } , - BigNum { limbs: [ 0xb2599ddc09e1df071f4fb2c4e50cab, 0x239d05c466a485cd8b8d46589593ab, 0x001960 ] } , - BigNum { limbs: [ 0x3acd5edbf5700358a7bfe4303c5b1e, 0xb52b913e7460fc8fc271fb692c97c4, 0x0021a2 ] } , - BigNum { limbs: [ 0x82d6a42408ebfba758401acfc3a4e3, 0xf227985f08e736aa15960e38ab6d8f, 0x00524a ] } , - BigNum { limbs: [ 0x751f4f8dda18c726694b3c0708989b, 0x74e808084266d6dc71af08a18e5f03, 0x000d2f ] } , - BigNum { limbs: [ 0x4884b372244337d996b4c2f8f76766, 0x326b21953ae15c5d6659010049a650, 0x0066be ] } , - BigNum { limbs: [ 0x4d9b4898d2ec0030ad1815af2831cb, 0xb9b40807616a9227838f3a3ed300cf, 0x003d4c ] } , - BigNum { limbs: [ 0x7008ba672b6ffecf52e7e950d7ce36, 0xed9f21961bdda1125478cf63050484, 0x0036a0 ] } , - BigNum { limbs: [ 0x5661caa9b88f7bc99c409c32cbe93c, 0x81febdfe94276a8aad8807a5d7050b, 0x006767 ] } , - BigNum { limbs: [ 0x6742385645cc833663bf62cd3416c5, 0x25546b9ee920c8af2a8001fc010048, 0x000c86 ] } , - BigNum { limbs: [ 0xe1b8db4b0c6ea3ab3dcd74abc0acc5, 0x518f26f7d15431ab14182ee5361144, 0x003309 ] } , - BigNum { limbs: [ 0xdbeb27b4f1ed5b54c2328a543f533c, 0x55c402a5abf4018ec3efdabca1f40e, 0x0040e4 ] } , - BigNum { limbs: [ 0xef2afdb60852031c3f34a887d3c3e1, 0xcb3506e60a81f0394c93a42b5b72e9, 0x00064c ] } , - BigNum { limbs: [ 0xce790549f609fbe3c0cb56782c3c20, 0xdc1e22b772c643008b7465767c9269, 0x006da0 ] } , - BigNum { limbs: [ 0x8cdb76a42676ccb187cd4b5130698f, 0x41db3bd37280e077b68e7eab756cb8, 0x006959 ] } , - BigNum { limbs: [ 0x30c88c5bd7e5324e7832b3aecf9672, 0x6577edca0ac752c221798af662989b, 0x000a94 ] } , - BigNum { limbs: [ 0xb80be01829aa6e6b4e1dd7a6e41adf, 0x6de1daf8905fb9f70b105865f3b1cf, 0x004c84 ] } , - BigNum { limbs: [ 0x059822e7d4b19094b1e227591be522, 0x39714ea4ece87942ccf7b13be45384, 0x002769 ] } , - BigNum { limbs: [ 0xcad3633089749adf4e63d01af609aa, 0x0be46010a6b28fce2e90dce28a6db3, 0x003d3e ] } , - BigNum { limbs: [ 0xf2d09fcf74e76420b19c2ee509f657, 0x9b6ec98cd695a36ba9772cbf4d979f, 0x0036af ] } , - BigNum { limbs: [ 0x3fe56d15f19fd9d3a88f9769d85682, 0xa2628ede060eab8f2d5800a8be3b0f, 0x006281 ] } , - BigNum { limbs: [ 0x7dbe95ea0cbc252c5770679627a97f, 0x04f09abf773987aaaab008f919ca44, 0x00116c ] } , - BigNum { limbs: [ 0x33b77d2d66205cd6436789acd58a6a, 0x0e51924a73f486c6d515c6dbbd56d8, 0x00661d ] } , - BigNum { limbs: [ 0x89ec85d2983ba229bc9875532a7597, 0x990197530953ac7302f242c61aae7b, 0x000dd0 ] } , - BigNum { limbs: [ 0xbbd52b782f347dae0408970b4aab1a, 0x678caa916b48f296454a57be9a3dd2, 0x000554 ] } , - BigNum { limbs: [ 0x01ced787cf278151fbf767f4b554e7, 0x3fc67f0c11ff40a392bdb1e33dc781, 0x006e99 ] } , - BigNum { limbs: [ 0x7fe07d8d824b70a6b05f18a33c32b1, 0x4018a4fba9970315f7d6239cfdfbbe, 0x004ea9 ] } , - BigNum { limbs: [ 0x3dc385727c108e594fa0e65cc3cd50, 0x673a84a1d3b13023e031e604da0995, 0x002544 ] } , - BigNum { limbs: [ 0x50bf4dbafd02920d87e416425a1f5b, 0x43b8831183496fc9fedba1ca177ecf, 0x004c47 ] } , - BigNum { limbs: [ 0x6ce4b54501596cf2781be8bda5e0a6, 0x639aa68bf9fec36fd92c67d7c08684, 0x0027a6 ] } , - BigNum { limbs: [ 0x9c92782418d9a6f68d125f81344d2e, 0x3ae417d106a4752a779731a01e141a, 0x0005a4 ] } , - BigNum { limbs: [ 0x21118adbe582580972ed9f7ecbb2d3, 0x6c6f11cc76a3be0f6070d801b9f139, 0x006e49 ] } , - BigNum { limbs: [ 0xa9568098dc13297c139a093efa1190, 0x1f8538db87179f115b32fd34f9e257, 0x0044e7 ] } , - BigNum { limbs: [ 0x144d82672248d583ec65f5c105ee71, 0x87cdf0c1f63094287cd50c6cde22fc, 0x002f06 ] } , - BigNum { limbs: [ 0xdb59a295eea1fad891f7ce48c338da, 0x0bc19af45832cd3e67ec475459da28, 0x001a56 ] } , - BigNum { limbs: [ 0xe24a606a0fba04276e0830b73cc727, 0x9b918ea9251565fb701bc24d7e2b2a, 0x005997 ] } , - BigNum { limbs: [ 0x7cc816a910521c8f7f77012d9d64d2, 0xfd5789c0e146b081e9cf98bbfed9d6, 0x00483a ] } , - BigNum { limbs: [ 0x40dbec56ee09e2708088fdd2629b2f, 0xa9fb9fdc9c0182b7ee3870e5d92b7d, 0x002bb2 ] } , - BigNum { limbs: [ 0xc356be3d0f029aa409d9ee00585213, 0xb147452598293eb810c81a72553cb7, 0x0025b3 ] } , - BigNum { limbs: [ 0xfa4d44c2ef59645bf62610ffa7adee, 0xf60be477e51ef481c73fef2f82c89b, 0x004e39 ] } , - BigNum { limbs: [ 0xb871097a9f0c6f53f1742ce989b5a2, 0xdd8280effb6326d76b58b9434f6ec5, 0x00686f ] } , - BigNum { limbs: [ 0x0532f9855f4f8fac0e8bd216764a5f, 0xc9d0a8ad81e50c626caf505e88968e, 0x000b7d ] } , - BigNum { limbs: [ 0x1a129e137f0039c2fcba24fbaa6740, 0xaf9519ca80d68d67bc688c2a21ffa8, 0x0046ea ] } , - BigNum { limbs: [ 0xa39164ec7f5bc53d0345da045598c1, 0xf7be0fd2fc71a5d21b9f7d77b605ab, 0x002d02 ] } , - BigNum { limbs: [ 0x077dddb5761a734e2a017e4ffb6836, 0xe1e4f08eb7ec1e23d4338ba1fdbc33, 0x00099a ] } , - BigNum { limbs: [ 0xb626254a88418bb1d5fe80b00497cb, 0xc56e390ec55c151603d47dffda4920, 0x006a52 ] } , - BigNum { limbs: [ 0xc00f384e56df5ab098af553e858ddc, 0x772639e0f2e0bdf93ce28c12b17e9a, 0x003d4d ] } , - BigNum { limbs: [ 0xfd94cab1a77ca44f6750a9c17a7225, 0x302cefbc8a6775409b257d8f2686b8, 0x0036a0 ] } , - BigNum { limbs: [ 0xbbcd0457572ea4ba6f047a391e07cd, 0xdb9969605428e20283d330193c8c22, 0x00227d ] } , - BigNum { limbs: [ 0x01d6fea8a72d5a4590fb84c6e1f834, 0xcbb9c03d291f51375434d9889b7931, 0x00516f ] } , - BigNum { limbs: [ 0x3d78a715d35e675f5607600ebe8e85, 0x45bcd7037c97ac5bec5d064c7b2fa1, 0x0068c0 ] } , - BigNum { limbs: [ 0x802b5bea2afd97a0a9f89ef141717c, 0x6196529a00b086ddebab03555cd5b2, 0x000b2d ] } , - BigNum { limbs: [ 0x5255f97b2f5f8a3aab39c40d504e47, 0x3931c4e8a3365aa19c692fd480ceff, 0x0022e9 ] } , - BigNum { limbs: [ 0x6b4e0984cefc74c554c63af2afb1ba, 0x6e2164b4da11d8983b9ed9cd573654, 0x005104 ] } , - BigNum { limbs: [ 0xe8628b87c4717f74298e4f1f6b05b8, 0x86ffd6389f469bbcecee7941985189, 0x006d89 ] } , - BigNum { limbs: [ 0xd541777839ea7f8bd671afe094fa49, 0x20535364de01977ceb1990603fb3c9, 0x000664 ] } , - BigNum { limbs: [ 0xc4b3dde8d99b1da59b819134b83579, 0x3f3b319dd1b9a8cc0754083d8a76de, 0x001476 ] } , - BigNum { limbs: [ 0xf8f0251724c0e15a647e6dcb47ca88, 0x6817f7ffab8e8a6dd0b401644d8e74, 0x005f77 ] } , - BigNum { limbs: [ 0x5e5d72ca14bf355b2c4072b03330aa, 0xfcb9bed9a1d0c039e6a24828a4d111, 0x0044cb ] } , - BigNum { limbs: [ 0x5f469035e99cc9a4d3bf8c4fcccf57, 0xaa996ac3db7772fff165c179333442, 0x002f21 ] } , - BigNum { limbs: [ 0xa6b76707616830fca70889363d0810, 0x474a16a937608616f4669de6d37aa6, 0x004100 ] } , - BigNum { limbs: [ 0x16ec9bf89cf3ce0358f775c9c2f7f1, 0x600912f445e7ad22e3a16bbb048aad, 0x0032ed ] } , - BigNum { limbs: [ 0x034ce5f2a0e16cc71a57258e59e205, 0x4a3b69d18144f376ca920c31a41df2, 0x005d4a ] } , - BigNum { limbs: [ 0xba571d0d5d7a9238e5a8d971a61dfc, 0x5d17bfcbfc033fc30d75fd7033e761, 0x0016a3 ] } , - BigNum { limbs: [ 0x479c06b64c620e54913a5fad66493e, 0xe8eccb401e43ab35fb17c2ef06e1ff, 0x004f0e ] } , - BigNum { limbs: [ 0x7607fc49b1f9f0ab6ec59f5299b6c3, 0xbe665e5d5f048803dcf046b2d12354, 0x0024de ] } , - BigNum { limbs: [ 0x8301162f9b026bdf8f0a899f9ee419, 0x8d97e4ea5441615140b6e155e9ab76, 0x001aa6 ] } , - BigNum { limbs: [ 0x3aa2ecd06359932070f57560611be8, 0x19bb44b32906d1e89751284bee59dd, 0x005947 ] } , - BigNum { limbs: [ 0x9c1028848c11d02b0801fe4d03f4b3, 0xddace4e38717b5fc4d667f921f06b3, 0x001110 ] } , - BigNum { limbs: [ 0x2193da7b724a2ed4f7fe00b2fc0b4e, 0xc9a644b9f6307d3d8aa18a0fb8fea0, 0x0062dc ] } , - BigNum { limbs: [ 0x3288fa993675c6b000ebfccd728a11, 0x3393fe4edec850a6b9493521aaddad, 0x006be2 ] } , - BigNum { limbs: [ 0x8b1b0866c7e6384fff1402328d75f0, 0x73bf2b4e9e7fe2931ebed4802d27a6, 0x00080b ] } , - BigNum { limbs: [ 0x199a38673d1c784644f6e6d10cdb65, 0x5763a14834a7853a33904d076ea499, 0x0005fe ] } , - BigNum { limbs: [ 0xa409ca98c13f86b9bb09182ef3249c, 0x4fef885548a0adffa477bc9a6960ba, 0x006def ] } , - BigNum { limbs: [ 0x50d9ce6be8ab7e9afd17ae1c79b3cc, 0x6f3c81d65abe294532501559ab8009, 0x003e12 ] } , - BigNum { limbs: [ 0x6cca349415b0806502e850e3864c35, 0x3816a7c7228a09f4a5b7f4482c854a, 0x0035db ] } , - BigNum { limbs: [ 0x2086a26309099ab289450a2c8c785c, 0x78639fbbfa1a19c8f6a5547ef0cb37, 0x005cae ] } , - BigNum { limbs: [ 0x9d1d609cf552644d76baf4d37387a5, 0x2eef89e1832e1970e162b522e73a1c, 0x00173f ] } , - BigNum { limbs: [ 0x726a6f11fd5d1e41a26186d0f7d95a, 0x480ded0b0a2522ed236d0d4ec5e8bf, 0x005b39 ] } , - BigNum { limbs: [ 0x4b3993ee00fee0be5d9e782f0826a7, 0x5f453c927323104cb49afc53121c94, 0x0018b4 ] } , - BigNum { limbs: [ 0xac9edb793129a56d2a3526d2c2e46a, 0x40f093ad57bc107ae64b724aae15f9, 0x006831 ] } , - BigNum { limbs: [ 0x11052786cd325992d5cad82d3d1b97, 0x666295f0258c22bef1bc975729ef5a, 0x000bbc ] } , - BigNum { limbs: [ 0x6a7dd7ea6053089d718125b7898a67, 0xf96ecc6b5153abf178d66922bda5cb, 0x005b3c ] } , - BigNum { limbs: [ 0x53262b159e08f6628e7ed94876759a, 0xade45d322bf487485f31a07f1a5f88, 0x0018b0 ] } , - BigNum { limbs: [ 0xa04848fde48575abf74fde099c325f, 0x7857f96a44b11675db3747d3d791a7, 0x003395 ] } , - BigNum { limbs: [ 0x1d5bba0219d6895408b020f663cda2, 0x2efb303338971cc3fcd0c1ce0073ac, 0x004058 ] } , - BigNum { limbs: [ 0x69b1ce32ce51fbe4282ad9e2553334, 0x6ea21fc2a195c87adc4b385e8304b6, 0x005bd0 ] } , - BigNum { limbs: [ 0x53f234cd300a031bd7d5251daacccd, 0x38b109dadbb26abefbbcd14355009d, 0x00181d ] } , - BigNum { limbs: [ 0x5f6c03f0f179646b0b935e5c78f259, 0x287edbd07e2b04b4c968ebc0152690, 0x005995 ] } , - BigNum { limbs: [ 0x5e37ff0f0ce29a94f46ca0a3870da8, 0x7ed44dccff1d2e850e9f1de1c2dec3, 0x001a58 ] } , - BigNum { limbs: [ 0x5ed2cf19172e412e59452c2173c6ea, 0xb895c01840aecfda8e31c5ff001739, 0x005656 ] } , - BigNum { limbs: [ 0x5ed133e6e72dbdd1a6bad2de8c3917, 0xeebd69853c99635f49d643a2d7ee1a, 0x001d96 ] } , - BigNum { limbs: [ 0x9dcb7f92ea6a9b8d444a5beec3aaaf, 0x07e606bceb10c1d6263b3c797138ff, 0x00654d ] } , - BigNum { limbs: [ 0x1fd8836d13f16372bbb5a3113c5552, 0x9f6d22e092377163b1cccd2866cc54, 0x000ea0 ] } , - BigNum { limbs: [ 0xb9b3a0749e60cb8768c9f875b63680, 0x291981e1a6ffd922ef4010fd623046, 0x003a9e ] } , - BigNum { limbs: [ 0x03f0628b5ffb33789736068a49c981, 0x7e39a7bbd6485a16e8c7f8a475d50d, 0x00394f ] } , - BigNum { limbs: [ 0xf2172bc7473892459629b66ba900be, 0xeb28f1112e24ae07a577ed5adb9833, 0x003ec2 ] } , - BigNum { limbs: [ 0xcb8cd738b7236cba69d6489456ff43, 0xbc2a388c4f23853232901c46fc6d1f, 0x00352a ] } , - BigNum { limbs: [ 0x6c73629eb540ea3f9554aa5ac511e9, 0xba428345abaac34c773123acc36bcc, 0x004a8a ] } , - BigNum { limbs: [ 0x5130a061491b14c06aab54a53aee18, 0xed10a657d19d6fed60d6e5f5149987, 0x002962 ] } , - BigNum { limbs: [ 0xd2b29f89691c73686d7450c33d5a33, 0x95c67b9ea2efa1729a4994ac329b4c, 0x0057b5 ] } , - BigNum { limbs: [ 0xeaf16376953f8b97928bae3cc2a5ce, 0x118cadfeda5891c73dbe74f5a56a06, 0x001c38 ] } , - BigNum { limbs: [ 0x0da05f62a2205a038764a74650d0c5, 0x264ed896f8869866cb67d02650f974, 0x00192c ] } , - BigNum { limbs: [ 0xb003a39d5c3ba4fc789b57b9af2f3c, 0x8104510684c19ad30ca0397b870bdf, 0x005ac1 ] } , - BigNum { limbs: [ 0x07f2b8fe1b995c6f51caab160744d9, 0x45b7ef86f69047659707080c8273d8, 0x00724c ] } , - BigNum { limbs: [ 0xb5b14a01e2c2a290ae3553e9f8bb28, 0x619b3a1686b7ebd44101019555917b, 0x0001a1 ] } , - BigNum { limbs: [ 0xe6a93079ee7cccc934e486ecc125c0, 0x355dce7eaf368f76379c2c28653e10, 0x002031 ] } , - BigNum { limbs: [ 0xd6fad2860fdf3236cb1b78133eda41, 0x71f55b1ece11a3c3a06bdd7972c742, 0x0053bc ] } , - BigNum { limbs: [ 0xf79fc3d741bf226521696c6179297c, 0x9ae2c216552207600419c3f6115aeb, 0x0063bc ] } , - BigNum { limbs: [ 0xc6043f28bc9cdc9ade96929e86d685, 0x0c70678728262bd9d3ee45abc6aa67, 0x001031 ] } , - BigNum { limbs: [ 0xc4ded9ffbba24056e5deedda27244b, 0x8f8601768ac3bbb9b61429944d0c24, 0x00213e ] } , - BigNum { limbs: [ 0xf8c5290042b9bea91a211125d8dbb6, 0x17cd2826f284778021f3e00d8af92e, 0x0052af ] } , - BigNum { limbs: [ 0xf518b492651ba347ad66c74d7bca64, 0x5064e14b100a32e73c0848a259cce0, 0x004409 ] } , - BigNum { limbs: [ 0xc88b4e6d99405bb8529937b284359d, 0x56ee48526d3e00529bffc0ff7e3872, 0x002fe4 ] } , - BigNum { limbs: [ 0x31564fda741ade70b774835f62ee3c, 0x1ce4194322964607884498bbcb8c71, 0x001e85 ] } , - BigNum { limbs: [ 0x8c4db3258a41208f488b7ba09d11c5, 0x8a6f105a5ab1ed324fc370e60c78e2, 0x005568 ] } , - BigNum { limbs: [ 0xddec933364680fd1c931b0f7188c6e, 0x2e92d9ce55819bcfd2af02a07aa006, 0x000456 ] } , - BigNum { limbs: [ 0xdfb76fcc99f3ef2e36ce4e08e77393, 0x78c04fcf27c6976a055907015d654c, 0x006f97 ] } , - BigNum { limbs: [ 0x960fc9c499955198e1e535f0666860, 0x5f24e19b3eee4df7efe5f71e0abf44, 0x0054a5 ] } , - BigNum { limbs: [ 0x2794393b64c6ad671e1ac90f9997a1, 0x482e48023e59e541e8221283cd460f, 0x001f48 ] } , - BigNum { limbs: [ 0x1bc63ba1f12ba86a96e7321bc04210, 0x5ec81887c4f43e877567664189754e, 0x0045df ] } , - BigNum { limbs: [ 0xa1ddc75e0d3056956918cce43fbdf1, 0x488b1115b853f4b262a0a3604e9005, 0x002e0e ] } , - BigNum { limbs: [ 0x7c81ae1d87699d225d35c86477d58b, 0x400e38958dc7f5783bcc2a7ca18b18, 0x004293 ] } , - BigNum { limbs: [ 0x412254e276f261dda2ca369b882a76, 0x6744f107ef803dc19c3bdf25367a3b, 0x00315a ] } , - BigNum { limbs: [ 0x2611cec67dd54be518be27e7093f4e, 0x9743b4e0d46958698576f11c4a2e78, 0x0011ea ] } , - BigNum { limbs: [ 0x979234398086b31ae741d718f6c0b3, 0x100f74bca8dedad0529118858dd6db, 0x006203 ] } , - BigNum { limbs: [ 0x0223751b720a0cf2dab1c8c4a189ff, 0xdcb7690555b9127b1606420ade2a86, 0x002ac9 ] } , - BigNum { limbs: [ 0xbb808de48c51f20d254e363b5e7602, 0xca9bc098278f20bec201c796f9dacd, 0x004923 ] } , - BigNum { limbs: [ 0xa5dd527cd71fb7976ac7f5f6c72a88, 0x6117fe37a234a60a47cec5cb1a85e6, 0x001f1c ] } , - BigNum { limbs: [ 0x17c6b083273c47689538090938d579, 0x463b2b65db138d2f903943d6bd7f6d, 0x0054d1 ] } , - BigNum { limbs: [ 0x8b12057546a348bd571c059c104014, 0xb61776734f89d0fc55508e07bb7098, 0x00699c ] } , - BigNum { limbs: [ 0x3291fd8ab7b8b642a8e3f963efbfed, 0xf13bb32a2dbe623d82b77b9a1c94bb, 0x000a50 ] } , - BigNum { limbs: [ 0x9e8b72db6f1e2653fd29142d3819a2, 0xd3f9439750aa38a37afc68b0fafae2, 0x0054a1 ] } , - BigNum { limbs: [ 0x1f1890248f3dd8ac02d6ead2c7e65f, 0xd359e6062c9dfa965d0ba0f0dd0a71, 0x001f4b ] } , - BigNum { limbs: [ 0xd7c1a278ec608700a9be0299817ca4, 0x55532c1abbaf9ef11dfefbb02e5e62, 0x0007a0 ] } , - BigNum { limbs: [ 0xe5e2608711fb77ff5641fc667e835d, 0x51fffd82c1989448ba090df1a9a6f0, 0x006c4d ] } , - BigNum { limbs: [ 0x1fd547be4b6ce2b275fb29418f4c5d, 0x428c158ed643f84e55b954bddacbef, 0x003076 ] } , - BigNum { limbs: [ 0x9dcebb41b2ef1c4d8a04d5be70b3a4, 0x64c7140ea7043aeb824eb4e3fd3964, 0x004377 ] } , - BigNum { limbs: [ 0xc86ad30700ce774a3b8d2e0f596020, 0xba2fd3948857eb766ca2207244f211, 0x006a3e ] } , - BigNum { limbs: [ 0xf5392ff8fd8d87b5c472d0f0a69fe1, 0xed235608f4f047c36b65e92f931341, 0x0009ae ] } , - BigNum { limbs: [ 0x855177336fb60fdca2ca5cd99ce3c3, 0xe0d6b37e59679e533b9248389fa8c1, 0x00324a ] } , - BigNum { limbs: [ 0x38528bcc8ea5ef235d35a226631c3e, 0xc67c761f23e094e69c75c169385c92, 0x0041a2 ] } , - BigNum { limbs: [ 0xa947be6ae0adca67112eaf34e9f6be, 0x377e8099fa46465283e47a582918fe, 0x001b23 ] } , - BigNum { limbs: [ 0x145c44951dae3498eed14fcb160943, 0x6fd4a9038301ece754238f49aeec55, 0x0058ca ] } , - BigNum { limbs: [ 0x1d79c870ba25b6c9e1715651f94edb, 0xe6471ba2107df5f9703e00bf2460a7, 0x002bbe ] } , - BigNum { limbs: [ 0xa02a3a8f443648361e8ea8ae06b126, 0xc10c0dfb6cca3d4067ca08e2b3a4ac, 0x00482e ] } , - BigNum { limbs: [ 0x180a97607b7b75ee0a9b7720fe18ea, 0x61caaccddcb331fc82977997ab4493, 0x003441 ] } , - BigNum { limbs: [ 0xa5996b9f82e08911f56487df01e717, 0x45887ccfa095013d5570900a2cc0c0, 0x003fac ] } , - BigNum { limbs: [ 0x7a4cdd8c345f311415ae6f648ca4c4, 0x11970ddf05c3476edefa503afd9c0a, 0x0017ae ] } , - BigNum { limbs: [ 0x43572573c9fccdebea518f9b735b3d, 0x95bc1bbe7784ebcaf90db966da6949, 0x005c3f ] } , - BigNum { limbs: [ 0x2431336dffbd3ff302032d443d58d3, 0xda94c4d882d868bd470adc88c0ecd8, 0x0026c2 ] } , - BigNum { limbs: [ 0x9972cf91fe9ebf0cfdfcd1bbc2a72e, 0xccbe64c4fa6fca7c90fd2d1917187b, 0x004d2a ] } , - BigNum { limbs: [ 0x8b73877a32f62bdfe96721a6cd7b3e, 0x0231915bdd4603e21d77f00f7c14ae, 0x004f5b ] } , - BigNum { limbs: [ 0x32307b85cb65d3201698dd593284c3, 0xa5219841a0022f57ba9019925bf0a5, 0x002492 ] } , - BigNum { limbs: [ 0xe566e43fbfb3adcaa4621ab46a4d30, 0xe4c6b3243876efd27177d6ce56ad87, 0x00583a ] } , - BigNum { limbs: [ 0xd83d1ec03ea851355b9de44b95b2d1, 0xc28c767944d14367669032d38157cb, 0x001bb2 ] } , - BigNum { limbs: [ 0x7e23dd40142c5f9422d2c34101124c, 0x9b8792f6512f934f79299c50142c3d, 0x0024ea ] } , - BigNum { limbs: [ 0x3f8025bfea2f9f6bdd2d3bbefeedb5, 0x0bcb96a72c189fea5ede6d51c3d916, 0x004f03 ] } , - BigNum { limbs: [ 0xec9c0406a08f265cce2c30333b187f, 0x6ca4e92bd0ad946fec5826cc03719d, 0x000206 ] } , - BigNum { limbs: [ 0xd107fef95dccd8a331d3ceccc4e782, 0x3aae4071ac9a9ec9ebafe2d5d493b5, 0x0071e7 ] } , - BigNum { limbs: [ 0x7f3449b8bd93686beadab96405ae3a, 0x1ab61fc3015bf5412a443f8e57f148, 0x003965 ] } , - BigNum { limbs: [ 0x3e6fb94740c896941525459bfa51c7, 0x8c9d09da7bec3df8adc3ca1380140b, 0x003a88 ] } , - BigNum { limbs: [ 0xd9c57133e56dfad3ea280c5f782f2b, 0xead5a7d140e1e3fff1c4cd5cae127b, 0x0024c2 ] } , - BigNum { limbs: [ 0xe3de91cc18ee042c15d7f2a087d0d6, 0xbc7d81cc3c664f39e6433c4529f2d7, 0x004f2a ] } , - BigNum { limbs: [ 0xa7fbcbd8c1ce86f75167878ef4c2b7, 0x118566730cb78c4efcd85ee6395889, 0x007110 ] } , - BigNum { limbs: [ 0x15a837273c8d7808ae9877710b3d4a, 0x95cdc32a7090a6eadb2faabb9eacca, 0x0002dd ] } , - BigNum { limbs: [ 0x1ffcba3c12bc2b9ee90b3d11c2dd21, 0x102ef837861bde2c7551f9dff19445, 0x0006b7 ] } , - BigNum { limbs: [ 0x9da748c3eb9fd36116f4c1ee3d22e0, 0x97243165f72c550d62b60fc1e6710e, 0x006d36 ] } , - BigNum { limbs: [ 0xd017e31cf0cb08eef8f30684ce9026, 0x8d3c8185d7d529293c2d54cc37eba5, 0x00519e ] } , - BigNum { limbs: [ 0xed8c1fe30d90f611070cf87b316fdb, 0x1a16a817a5730a109bdab4d5a019ad, 0x00224f ] } , - BigNum { limbs: [ 0x7a986565c2a5d1c9be282a115f3af5, 0x9b7c85ec9ffed0759691f8350bcf77, 0x002dfe ] } , - BigNum { limbs: [ 0x430b9d9a3bb62d3641d7d4eea0c50c, 0x0bd6a3b0dd4962c44176116ccc35dc, 0x0045ef ] } , - BigNum { limbs: [ 0xa9e37a3c78a6f03c5e8cd07ac27967, 0xa77bf4482596c40e6ea7ec15f1e470, 0x006957 ] } , - BigNum { limbs: [ 0x13c088c385b50ec3a1732e853d869a, 0xffd7355557b16f2b69601d8be620e3, 0x000a95 ] } , - BigNum { limbs: [ 0xda1d1c2ae95f6ed46bc78329689a4e, 0xd3feed71abf08747974362d7998504, 0x005f55 ] } , - BigNum { limbs: [ 0xe386e6d514fc902b94387bd69765b3, 0xd3543c2bd157abf240c4a6ca3e804e, 0x001497 ] } , - BigNum { limbs: [ 0xdc7f318ce3896129a67c58c11af270, 0x33b32d96101f50bdf12f11ba2ba3f6, 0x004407 ] } , - BigNum { limbs: [ 0xe124d1731ad29dd65983a63ee50d91, 0x739ffc076d28e27be6d8f7e7ac615c, 0x002fe6 ] } , - BigNum { limbs: [ 0x277cbb3e7a777eeeb008d78b019434, 0xfbfe7fba4f67c98d9a4ba421a74a5e, 0x006892 ] } , - BigNum { limbs: [ 0x962747c183e480114ff72774fe6bcd, 0xab54a9e32de069ac3dbc658030baf5, 0x000b5a ] } , - BigNum { limbs: [ 0x20997b1fdd66bd53ec18ed560e5c0c, 0x74a3e7e4ae661be49858d07f3e273d, 0x000bdf ] } , - BigNum { limbs: [ 0x9d0a87e020f541ac13e711a9f1a3f5, 0x32af41b8cee217553faf392299de16, 0x00680e ] } , - BigNum { limbs: [ 0xe792ae1b302effd0b0f21e5dd18de6, 0x1d8cfff841ef8c787035f36a072656, 0x0051d1 ] } , - BigNum { limbs: [ 0xd61154e4ce2cff2f4f0de0a22e721b, 0x89c629a53b58a6c167d21637d0defc, 0x00221c ] } , - BigNum { limbs: [ 0x1a01cc28fefe11f643be94ebcf7272, 0x3a3286fa30c54b3fe9256008c92553, 0x00491c ] } , - BigNum { limbs: [ 0xa3a236d6ff5ded09bc416a14308d8f, 0x6d20a2a34c82e7f9eee2a9990ee000, 0x002ad1 ] } , - BigNum { limbs: [ 0x3fdeea97c6fe196470728429de50e2, 0x0a1474f2943817443ffa79edc2405a, 0x003edc ] } , - BigNum { limbs: [ 0x7dc51868375de59b8f8d7ad621af1f, 0x9d3eb4aae9101bf5980d8fb415c4f9, 0x003511 ] } , - BigNum { limbs: [ 0xeaa5fd91eb8ad60697528e66468f8b, 0xf542a4cb0e56a928854e7f46c10779, 0x0037ca ] } , - BigNum { limbs: [ 0xd2fe056e12d128f968ad7099b97076, 0xb21084d26ef18a1152b98a5b16fdd9, 0x003c22 ] } , - BigNum { limbs: [ 0x13924feb1eeca0f1045bd496c219a4, 0x1bdcc7a762a7a1e2d45135ad7c1cf7, 0x000303 ] } , - BigNum { limbs: [ 0xaa11b314df6f5e0efba42a693de65d, 0x8b7661f61aa0915703b6d3f45be85c, 0x0070ea ] } , - BigNum { limbs: [ 0x4daa4a99dbb5b03fbacc5e6dc71317, 0x8eb4ab2df85240fdd323261f47b06d, 0x002bbf ] } , - BigNum { limbs: [ 0x6ff9b86622a64ec04533a09238ecea, 0x189e7e6f84f5f23c04e4e3829054e6, 0x00482e ] } , - BigNum { limbs: [ 0x6af2a3df55476564cabfb80ccdf965, 0xa8bb5dc5e43d9aaa551e3cb295f125, 0x006bfb ] } , - BigNum { limbs: [ 0x52b15f20a914999b354046f332069c, 0xfe97cbd7990a988f82e9ccef42142e, 0x0007f1 ] } , - BigNum { limbs: [ 0x57cb9f5410cdb13e4972bf66f482c6, 0x0a0c78d1f4e98c45d4e61e2afaf2e3, 0x006534 ] } , - BigNum { limbs: [ 0x65d863abed8e4dc1b68d3f990b7d3b, 0x9d46b0cb885ea6f40321eb76dd1270, 0x000eb9 ] } , - BigNum { limbs: [ 0x47df7ab3dcb27be44ecf3b78cfad97, 0x5daa7c9b91da67e2903db4b2328356, 0x000cb4 ] } , - BigNum { limbs: [ 0x75c4884c21a9831bb130c38730526a, 0x49a8ad01eb6dcb5747ca54efa581fd, 0x006739 ] } , - BigNum { limbs: [ 0x335495b3e381a61803b5a2380d0d30, 0xdc57672d00970d536c25c56fe7a60f, 0x0021d1 ] } , - BigNum { limbs: [ 0x8a4f6d4c1ada58e7fc4a5cc7f2f2d1, 0xcafbc2707cb125e66be24431f05f44, 0x00521b ] } , - BigNum { limbs: [ 0xb619876811f53367d96ac4dec2a7c5, 0x205c599f30a57bf990ec45bb4a8b69, 0x003ef1 ] } , - BigNum { limbs: [ 0x078a7b97ec66cb9826953a213d583c, 0x86f6cffe4ca2b740471bc3e68d79ea, 0x0034fc ] } , - BigNum { limbs: [ 0x41e2dc3cbcaa821d94f28bd2c67835, 0x1f70aeb2ebcd2b0325dad02c36de2e, 0x0014b9 ] } , - BigNum { limbs: [ 0x7bc126c341b17ce26b0d732d3987cc, 0x87e27aea917b0836b22d3975a12725, 0x005f34 ] } , - BigNum { limbs: [ 0x4afcc358f070656798b57cfe3321aa, 0xf69b92ab6fc454e75abe206844831d, 0x001654 ] } , - BigNum { limbs: [ 0x72a73fa70deb9998674a8201ccde57, 0xb0b796f20d83de527d49e939938236, 0x005d98 ] } , - BigNum { limbs: [ 0xb646d5a9ae7de4fb27d64d21924534, 0x29fc62fee1ef3730c5466a640457fe, 0x003c13 ] } , - BigNum { limbs: [ 0x075d2d564fde1a04d829b1de6dbacd, 0x7d56c69e9b58fc0912c19f3dd3ad55, 0x0037da ] } , - BigNum { limbs: [ 0x89d821e1ae06b63c3d590cd42f742e, 0x63ad8b42d73f52437581fc31b4cb3b, 0x0045cb ] } , - BigNum { limbs: [ 0x33cbe11e505548c3c2a6f22bd08bd3, 0x43a59e5aa608e0f662860d70233a18, 0x002e22 ] } , - BigNum { limbs: [ 0xd7c6c5de7c9c7598942eff1093543f, 0x475a4ded008f25944c39b09897e604, 0x006e29 ] } , - BigNum { limbs: [ 0xe5dd3d2181bf89676bd0ffef6cabc2, 0x5ff8dbb07cb90da58bce5909401f4e, 0x0005c4 ] } , - BigNum { limbs: [ 0xac5823be4c981f8af00971a8493ef2, 0x1d363d4b2f15805a9b50ec0d2d83c6, 0x003175 ] } , - BigNum { limbs: [ 0x114bdf41b1c3df750ff68d57b6c10f, 0x8a1cec524e32b2df3cb71d94aa818d, 0x004278 ] } , - BigNum { limbs: [ 0x9f60bd799619a78b235e378dc9fa7c, 0x81e948ae5bc5fe101b8c580f1b2242, 0x0067b0 ] } , - BigNum { limbs: [ 0x1e43458668425774dca1c772360585, 0x2569e0ef21823529bc7bb192bce311, 0x000c3d ] } , - BigNum { limbs: [ 0xee8492ee3da22ff3e3e1962f75a6b8, 0x5dd7ff6f5999d3d22736d22e5d8107, 0x0073d3 ] } , - BigNum { limbs: [ 0xcf1f7011c0b9cf0c1c1e68d08a5949, 0x497b2a2e23ae5f67b0d137737a844b, 0x00001a ] } , - BigNum { limbs: [ 0xcec740fed7840e6dbad9a23e72f81c, 0xb9a5d59ea6535f2fce20817a78d7c3, 0x004785 ] } , - BigNum { limbs: [ 0xeedcc20126d7f09245265cc18d07e5, 0xedad53fed6f4d40a09e788275f2d8f, 0x002c67 ] } , - BigNum { limbs: [ 0x069ac76165652518b66c7d8e84b7fb, 0x6824377d54128a64cca9517059cf6b, 0x0033f1 ] } , - BigNum { limbs: [ 0xb7093b9e98f6d9e7499381717b4806, 0x3f2ef2202935a8d50b5eb8317e35e8, 0x003ffc ] } , - BigNum { limbs: [ 0x0ecd974f2a3b506efed909666fe227, 0x79afbe389bf399a8cb100ba938f0ea, 0x005eac ] } , - BigNum { limbs: [ 0xaed66bb0d420ae910126f599901dda, 0x2da36b64e15499910cf7fdf89f1469, 0x001541 ] } , - BigNum { limbs: [ 0x010631e01cbc9f572cb84cf2c5ba09, 0x861b644b42c375aa55f89169d7ad93, 0x005b59 ] } , - BigNum { limbs: [ 0xbc9dd11fe19f5fa8d347b20d3a45f8, 0x2137c5523a84bd8f820f78380057c0, 0x001894 ] } , - BigNum { limbs: [ 0x036aeea430a057753ed7c94fb0eeb9, 0x421b969856edaeada54c5497aad2cf, 0x002aa4 ] } , - BigNum { limbs: [ 0xba39145bcdbba78ac12835b04f1148, 0x65379305265a848c32bbb50a2d3284, 0x004949 ] } , - BigNum { limbs: [ 0x27f1e0971010d57a3c81696a211fdf, 0xa91f129e2638b0ee8a91eb8b9e25cb, 0x0065f1 ] } , - BigNum { limbs: [ 0x95b22268ee4b2985c37e9595dee022, 0xfe3416ff570f824b4d761e1639df88, 0x000dfb ] } , - BigNum { limbs: [ 0xb6b627c983a9d2e73458ac79b074ee, 0x26f9a1f2fb63a902b699f27a42bda3, 0x0066ae ] } , - BigNum { limbs: [ 0x06eddb367ab22c18cba752864f8b13, 0x805987aa81e48a37216e17279547b0, 0x000d3f ] } , - BigNum { limbs: [ 0x2345c5177d051a336503a91e97e5d7, 0xe82a9d82d223e607676361fe30e365, 0x002b64 ] } , - BigNum { limbs: [ 0x9a5e3de88156e4cc9afc55e1681a2a, 0xbf288c1aab244d3270a4a7a3a721ee, 0x004888 ] } , - BigNum { limbs: [ 0xb5d08955ff9e20e0480ab0fd9a31fa, 0x67c5369459aa472ce39066e706af49, 0x005bf5 ] } , - BigNum { limbs: [ 0x07d379a9febdde1fb7f54e0265ce07, 0x3f8df309239dec0cf477a2bad1560a, 0x0017f8 ] } , - BigNum { limbs: [ 0x21a614ccdb8d0356d6ec5ed1e118ad, 0x4cbaa9097311544f0b99685cfd7fc2, 0x003715 ] } , - BigNum { limbs: [ 0x9bfdee3322cefba92913a02e1ee754, 0x5a9880940a36deeacc6ea144da8591, 0x003cd8 ] } , - BigNum { limbs: [ 0x4004660ebbfc8136ef495f9fe8668d, 0xd2acd3b1314f047d8c5e8e943d7b0f, 0x00158c ] } , - BigNum { limbs: [ 0x7d9f9cf1425f7dc910b69f60179974, 0xd4a655ec4bf92ebc4ba97b0d9a8a44, 0x005e60 ] } , - BigNum { limbs: [ 0xef7cb95c169e236f344925d273570b, 0xed4d89397e65a1e265fc1fb2d6cb41, 0x0039d6 ] } , - BigNum { limbs: [ 0xce2749a3e7bddb90cbb6d92d8ca8f6, 0xba05a063fee29157720be9ef013a11, 0x003a16 ] } , - BigNum { limbs: [ 0xbfd8fb21c9bc312aafa84a8f32c4c3, 0x725ed9887c0d76a737cfb9ec903271, 0x006fd9 ] } , - BigNum { limbs: [ 0xfdcb07de349fcdd55057b470cd3b3e, 0x34f45015013abc92a0384fb547d2e1, 0x000414 ] } , - BigNum { limbs: [ 0xac5555ad914c92614850e921b50b55, 0x888e1bc2c0f01f01546fd8631e66e8, 0x0027fc ] } , - BigNum { limbs: [ 0x114ead526d0f6c9eb7af15de4af4ac, 0x1ec50ddabc5814388398313eb99e6b, 0x004bf1 ] } , - BigNum { limbs: [ 0x54fbc08c604c0bc827edff9f54ca63, 0xdddc6facd3a427840b4f6a4b3ffe3c, 0x0000cc ] } , - BigNum { limbs: [ 0x68a842739e0ff337d811ff60ab359e, 0xc976b9f0a9a40bb5ccb89f56980717, 0x007320 ] } , - BigNum { limbs: [ 0xf4f876d5d1189994dd945218bdbbc2, 0xfb376ec72a786796c6567f5b161232, 0x005e8f ] } , - BigNum { limbs: [ 0xc8ab8c2a2d43656b226bace742443f, 0xac1bbad652cfcba311b18a46c1f320, 0x00155d ] } , - BigNum { limbs: [ 0x33fc05de37b96a5c092cddae2df4ca, 0x946abc676c5ed913df0b62773d4fbd, 0x000822 ] } , - BigNum { limbs: [ 0x89a7fd21c6a294a3f6d32151d20b37, 0x12e86d3610e95a25f8fca72a9ab596, 0x006bcb ] } , - BigNum { limbs: [ 0x9d80b5ada11a750907a4e8b7d58e6a, 0x3c12226705777b23957d3889bcbf4d, 0x005b5e ] } , - BigNum { limbs: [ 0x20234d525d4189f6f85b16482a7197, 0x6b41073677d0b816428ad1181b4606, 0x00188f ] } , - BigNum { limbs: [ 0xdeb374606e7481ab9cb369c352cef9, 0x386f0661f1a7f25ded5a7525beba19, 0x0030c6 ] } , - BigNum { limbs: [ 0xdef08e9f8fe77d54634c953cad3108, 0x6ee4233b8ba040dbeaad947c194b39, 0x004327 ] } , - BigNum { limbs: [ 0x5b1a2164b6dd1896e6c704e507a68c, 0xa11049970467d95853e14bf970d3fc, 0x00736a ] } , - BigNum { limbs: [ 0x6289e19b477ee6691938fa1af85975, 0x0642e00678e059e18426bda8673157, 0x000083 ] } , - BigNum { limbs: [ 0xa0c3b85cc1625c18889dbb4c8fc93f, 0x554ad434a3a77303d14549438829dd, 0x002db8 ] } , - BigNum { limbs: [ 0x1ce04aa33cf9a2e7776243b37036c2, 0x52085568d9a0c03606c2c05e4fdb76, 0x004635 ] } , - BigNum { limbs: [ 0x495a3f68e907e71bb3e6377c8ca828, 0x42dcd31ae38aaeeb020aab9a427042, 0x00136d ] } , - BigNum { limbs: [ 0x7449c397155417e44c19c7837357d9, 0x6476568299bd844ed5fd5e07959511, 0x006080 ] } , - BigNum { limbs: [ 0x03fca33ae80a7fc83b37a3b9e12e68, 0x42747c135aee51c1f421f069545a96, 0x0016f8 ] } , - BigNum { limbs: [ 0xb9a75fc516517f37c4c85b461ed199, 0x64dead8a2259e177e3e6193883aabd, 0x005cf5 ] } , - BigNum { limbs: [ 0x2e14681c99205c3efbab2e58a9a902, 0xd98628e0476857354101f90fd89fc1, 0x002975 ] } , - BigNum { limbs: [ 0x8f8f9ae3653ba2c10454d0a75656ff, 0xcdcd00bd35dfdc0497061091ff6592, 0x004a77 ] } , - BigNum { limbs: [ 0x8b8205eb6bd64213c2c46305798d57, 0xc8a83119f25dcd4785621a77f02003, 0x0029a8 ] } , - BigNum { limbs: [ 0x3221fd149285bcec3d3b9bfa8672aa, 0xdeaaf8838aea65f252a5ef29e7e550, 0x004a44 ] } , - BigNum { limbs: [ 0x3a7975240c453467f53af052532623, 0x65af92d4f70159b29ee57bf65f7f96, 0x00622b ] } , - BigNum { limbs: [ 0x832a8ddbf216ca980ac50eadacd9de, 0x41a396c88646d98739228dab7885bd, 0x0011c2 ] } , - BigNum { limbs: [ 0x63e200e9d8e2e5305f74f884460d5a, 0xf96b57d1fb5374dfde2f880fa03f19, 0x0023a8 ] } , - BigNum { limbs: [ 0x59c20216257919cfa08b067bb9f2a7, 0xade7d1cb81f4be59f9d8819237c63a, 0x005044 ] } , - BigNum { limbs: [ 0xe6f3a7aa7aa027d5ef58fc555a6545, 0xc3a26d8d2d0b63363c75ac7b61fa06, 0x001efe ] } , - BigNum { limbs: [ 0xd6b05b5583bbd72a10a702aaa59abc, 0xe3b0bc10503cd0039b925d26760b4c, 0x0054ee ] } , - BigNum { limbs: [ 0x8cc4e59271bc254675e44de9acb089, 0x90622d1b33952336df41aa60d8fd88, 0x002a16 ] } , - BigNum { limbs: [ 0x30df1d6d8c9fd9b98a1bb116534f78, 0x16f0fc8249b31002f8c65f40ff07cb, 0x0049d7 ] } , - BigNum { limbs: [ 0x5a4984bd3033326a314c573c060e79, 0x4308610110d950309e5d6881371a44, 0x00251f ] } , - BigNum { limbs: [ 0x635a7e42ce28cc95ceb3a7c3f9f188, 0x644ac89c6c6ee30939aaa120a0eb0f, 0x004ece ] } , - BigNum { limbs: [ 0x6261dae436c20e1ae655f9c67cb4ee, 0x22db31ab8d36fc199e379693433fef, 0x00590d ] } , - BigNum { limbs: [ 0x5b42281bc799f0e519aa0539834b13, 0x8477f7f1f011372039d0730e94c564, 0x001ae0 ] } , - BigNum { limbs: [ 0x97df7b82540d7f520fa375ce78b879, 0xd257d52cc247f82e1823a6a0a604df, 0x0013e4 ] } , - BigNum { limbs: [ 0x25c4877daa4e7fadf05c8931874788, 0xd4fb5470bb003b0bbfe46301320074, 0x006008 ] } , - BigNum { limbs: [ 0x27e28d07b063a01ddcc828594b2606, 0x18800771dd7f441b5c5cba7e08c60a, 0x006e7a ] } , - BigNum { limbs: [ 0x95c175f84df85ee22337d6a6b4d9fb, 0x8ed3222b9fc8ef1e7bab4f23cf3f49, 0x000573 ] } , - BigNum { limbs: [ 0x122a6bda001d781a1d628b12064a8f, 0xbef1ee380b4c3884583970d8ed1f28, 0x000d69 ] } , - BigNum { limbs: [ 0xab799725fe3e86e5e29d73edf9b572, 0xe8613b6571fbfab57fce98c8eae62b, 0x006683 ] } , - BigNum { limbs: [ 0x4109d826db2ff20301669f731697cb, 0xefe5327bd2b34713d04cbf2d404699, 0x005999 ] } , - BigNum { limbs: [ 0x7c9a2ad9232c0cfcfe995f8ce96836, 0xb76df721aa94ec2607bb4a7497beba, 0x001a53 ] } , - BigNum { limbs: [ 0x279b87d2e6b387fcf5fe3b045dd181, 0x1fd88f51bc49ee62c37382b0353690, 0x004f16 ] } , - BigNum { limbs: [ 0x96087b2d17a877030a01c3fba22e80, 0x877a9a4bc0fe44d7149486f1a2cec3, 0x0024d7 ] } , - BigNum { limbs: [ 0xb5d2af6411c8553712b61b70f50fdc, 0xfef871d9d6648a833323701f1e4282, 0x003dba ] } , - BigNum { limbs: [ 0x07d1539bec93a9c8ed49e38f0af025, 0xa85ab7c3a6e3a8b6a4e49982b9c2d1, 0x003632 ] } , - BigNum { limbs: [ 0x15c80f017c9aa2a069d1dc9b7042bc, 0xa5269bf2095fdaa09ca8fc7421e5f7, 0x0019e0 ] } , - BigNum { limbs: [ 0xa7dbf3fe81c15c5f962e22648fbd45, 0x022c8dab73e858993b5f0d2db61f5c, 0x005a0d ] } , - BigNum { limbs: [ 0x62db18feb3e506f88c9f388c0677df, 0x3b9eaedc5bb79b6f2492431540cb08, 0x005385 ] } , - BigNum { limbs: [ 0x5ac8ea014a76f8077360c673f98822, 0x6bb47ac1219097cab375c68c973a4b, 0x002068 ] } , - BigNum { limbs: [ 0x655490bf2eb5c842ba9cf6eeeeae9b, 0xd2474b10f54a9e3e5c6ba11db18f5c, 0x003d7f ] } , - BigNum { limbs: [ 0x584f7240cfa636bd45630811115166, 0xd50bde8c87fd94fb7b9c68842675f7, 0x00366d ] } , - BigNum { limbs: [ 0xdbd2559a884245d72951864d8fa8da, 0x1375b8c0af7b737efcd5f01ebdb95c, 0x001fb6 ] } , - BigNum { limbs: [ 0xe1d1ad657619b928d6ae78b2705727, 0x93dd70dccdccbfbadb3219831a4bf6, 0x005437 ] } , - BigNum { limbs: [ 0x5879432fea7a51222aedd803cfa5cb, 0x4886f803ad1dad27b4014dedfaed14, 0x001b15 ] } , - BigNum { limbs: [ 0x652abfd013e1adddd51226fc305a36, 0x5ecc3199d02a86122406bbb3dd183f, 0x0058d8 ] } , - BigNum { limbs: [ 0xc99defc2a29159bca5d0ce219b4711, 0x7214004ab09d69632374d00f8a2e91, 0x001737 ] } , - BigNum { limbs: [ 0xf406133d5bcaa5435a2f30de64b8f0, 0x353f2952ccaac9d6b49339924dd6c1, 0x005cb6 ] } , - BigNum { limbs: [ 0x4901bbd26428fd3608266993cc1060, 0xf73cd3a330df9a39086a6948da8562, 0x004f39 ] } , - BigNum { limbs: [ 0x74a2472d9a3301c9f7d9956c33efa1, 0xb01655fa4c689900cf9da058fd7ff1, 0x0024b3 ] } , - BigNum { limbs: [ 0x077d669930bd57b515ba906dbfc129, 0x63cbfdc3672250f2476c3902b234c3, 0x0025eb ] } , - BigNum { limbs: [ 0xb6269c66cd9ea74aea456e92403ed8, 0x43872bda1625e247909bd09f25d090, 0x004e02 ] } , - BigNum { limbs: [ 0x63a3ef0a0dc0eda56e5338c1cb228f, 0x4dcd2085462924021dd09c3abc78e7, 0x003d7c ] } , - BigNum { limbs: [ 0x5a0013f5f09b115a91acc63e34dd72, 0x59860918371f0f37ba376d671b8c6c, 0x003671 ] } , - BigNum { limbs: [ 0x17f78b09396083ed9be33e30f62aaa, 0xb650aa0b473d0bd9e6a77fb9d5d6ca, 0x007369 ] } , - BigNum { limbs: [ 0xa5ac77f6c4fb7b12641cc0cf09d557, 0xf1027f92360b275ff16089e8022e89, 0x000083 ] } , - BigNum { limbs: [ 0xb3ac610f977e33a5d11204dfbed99d, 0xbb4b42cf1f3a9b0feb4704453bb48b, 0x0046df ] } , - BigNum { limbs: [ 0x09f7a1f066ddcb5a2eedfa20412664, 0xec07e6ce5e0d9829ecc1055c9c50c8, 0x002d0d ] } , - BigNum { limbs: [ 0x55ad625c181f556065bcd7a01c30f2, 0x781a7c2239ae887a36503010401e36, 0x004f5b ] } , - BigNum { limbs: [ 0x67f6a0a3e63ca99f9a43275fe3cf0f, 0x2f38ad7b4399aabfa1b7d99197e71d, 0x002492 ] } , - BigNum { limbs: [ 0x41edb4801671b387553452e7d61777, 0xd29ba4c63ee76548d5a502b249e7f1, 0x006dc9 ] } , - BigNum { limbs: [ 0x7bb64e7fe7ea4b78aacbac1829e88a, 0xd4b784d73e60cdf1026306ef8e1d62, 0x000623 ] } , - BigNum { limbs: [ 0xc3fa6b12b3b74ec8b70acd9cf0d865, 0x2c1755de706dc08e3aa03315ca7a63, 0x003b64 ] } , - BigNum { limbs: [ 0xf9a997ed4aa4b03748f531630f279c, 0x7b3bd3bf0cda72ab9d67d68c0d8aef, 0x003889 ] } , - BigNum { limbs: [ 0xef690241dfa3963ce8fa61277fed1a, 0x4b9f0b721eb1bf8908719fe1ec6949, 0x005e90 ] } , - BigNum { limbs: [ 0xce3b00be1eb868c317059dd88012e7, 0x5bb41e2b5e9673b0cf9669bfeb9c09, 0x00155d ] } , - BigNum { limbs: [ 0xe791c9632c5ea306ce63b513ad4ce0, 0xe3baa6b4f02c0689adb2f9082fb65f, 0x004e36 ] } , - BigNum { limbs: [ 0xd612399cd1fd5bf9319c49ec52b321, 0xc39882e88d1c2cb02a551099a84ef3, 0x0025b6 ] } , - BigNum { limbs: [ 0x0cde3a17cbf71e5f622b1f50d9fdd2, 0x2cf1d0e1dadb041561a5e218abee3e, 0x002002 ] } , - BigNum { limbs: [ 0xb0c5c8e83264e0a09dd4dfaf26022f, 0x7a6158bba26d2f24766227892c1715, 0x0053eb ] } , - BigNum { limbs: [ 0x537e43d8e58b2372f85bc98bc40e5a, 0xeaa7d4663a5035d056852237c9d923, 0x002481 ] } , - BigNum { limbs: [ 0x6a25bf2718d0db8d07a435743bf1a7, 0xbcab553742f7fd698182e76a0e2c30, 0x004f6b ] } , - BigNum { limbs: [ 0x47b2f144954b140bbd1890bb6705e7, 0xff7adae82fa6558f5be8e50b86a696, 0x001707 ] } , - BigNum { limbs: [ 0x75f111bb6910eaf442e76e4498fa1a, 0xa7d84eb54da1ddaa7c1f2496515ebd, 0x005ce5 ] } , - BigNum { limbs: [ 0xe680f5dafc6153a131aa10fd632e00, 0x134c2edfd8640e2f577d0ff387b8a5, 0x005ff3 ] } , - BigNum { limbs: [ 0xd7230d2501faab5ece55ee029cd201, 0x9406fabda4e4250a808af9ae504cad, 0x0013fa ] } , - BigNum { limbs: [ 0x52d122bd538957e4cb00352c21f113, 0x6b967a02c84b89d12a87006d579ea1, 0x0027d8 ] } , - BigNum { limbs: [ 0x6ad2e042aad2a71b34ffc9d3de0eee, 0x3bbcaf9ab4fca968ad8109348066b2, 0x004c15 ] } , - BigNum { limbs: [ 0x6069bbc672bcd63fc6e7f37a5b26a1, 0x12f82c0988ef81ca254da703f317b7, 0x002c4a ] } , - BigNum { limbs: [ 0x5d3a47398b9f28c039180b85a4d960, 0x945afd93f458b16fb2ba629de4ed9c, 0x0047a3 ] } , - BigNum { limbs: [ 0x550d70148336689facaa64d3610ad5, 0x07745a6b893c3d980cdab38ca1760a, 0x0002f8 ] } , - BigNum { limbs: [ 0x689692eb7b25966053559a2c9ef52c, 0x9fdecf31f40bf5a1cb2d5615368f49, 0x0070f5 ] } , - BigNum { limbs: [ 0xca0410a1c9a10a62c107092a653563, 0x89b5205c01ad36eb0ad3b74e021dec, 0x002aa8 ] } , - BigNum { limbs: [ 0xf39ff25e34baf49d3ef8f5d59aca9e, 0x1d9e09417b9afc4ecd345253d5e766, 0x004945 ] } , - BigNum { limbs: [ 0x0607c9bc523c31742ddf5eef4d4eaa, 0x891e1db52597a9c0b4d6e6ac40094a, 0x00155d ] } , - BigNum { limbs: [ 0xb79c3943ac1fcd8bd220a010b2b157, 0x1e350be857b08979233122f597fc09, 0x005e90 ] } , - BigNum { limbs: [ 0xdadda702f99ca6235747e7245ca8f3, 0x989c317709ce3761dca398879864ee, 0x0067f5 ] } , - BigNum { limbs: [ 0xe2c65bfd04bf58dca8b817dba3570e, 0x0eb6f8267379fbd7fb64711a3fa064, 0x000bf8 ] } , - BigNum { limbs: [ 0x26cb392f9cd37aa223717637b2a39a, 0x7bac12ba0cc14923b1de5d054ff5cd, 0x0008ac ] } , - BigNum { limbs: [ 0x96d8c9d06188845ddc8e88c84d5c67, 0x2ba716e37086ea162629ac9c880f86, 0x006b41 ] } , - BigNum { limbs: [ 0xcc5d3b6c2f14c021e5adbdd7b45b67, 0xa957448e60fb4ed489c94adbeee64a, 0x004438 ] } , - BigNum { limbs: [ 0xf146c793cf473ede1a5241284ba49a, 0xfdfbe50f1c4ce4654e3ebec5e91f08, 0x002fb4 ] } , - BigNum { limbs: [ 0xbd422a206f6b6a21a0019cde8aa342, 0x4dfd3ba86f2050548384249ecf71c4, 0x00178c ] } , - BigNum { limbs: [ 0x0061d8df8ef094de5ffe6221755cbf, 0x5955edf50e27e2e55483e50308938f, 0x005c61 ] } , - BigNum { limbs: [ 0xcc4b7382a961c6042cdc510b610c75, 0x371b67e5b1e369b3acd7001093f4a1, 0x00431e ] } , - BigNum { limbs: [ 0xf1588f7d54fa38fbd323adf49ef38c, 0x7037c1b7cb64c9862b3109914410b1, 0x0030cf ] } , - BigNum { limbs: [ 0x6fd201e8f5cc40a3afe5b2094fc128, 0xfe671be7bb3770be381d1d554a5b40, 0x0018bf ] } , - BigNum { limbs: [ 0x4dd20117088fbe5c501a4cf6b03ed9, 0xa8ec0db5c210c27b9feaec4c8daa13, 0x005b2d ] } , - BigNum { limbs: [ 0xf025db383b07030c5949b99fe0cf18, 0x293af972bc06e684d71edb9b48c8fb, 0x005514 ] } , - BigNum { limbs: [ 0xcd7e27c7c354fbf3a6b645601f30e9, 0x7e18302ac1414cb500e92e068f3c57, 0x001ed9 ] } , - BigNum { limbs: [ 0x3562ca05a2228a61650d680b8a6595, 0x9add509bfeb324c70882829c954881, 0x003f8f ] } , - BigNum { limbs: [ 0x884138fa5c39749e9af296f4759a6c, 0x0c75d9017e950e72cf85870542bcd2, 0x00345e ] } , - BigNum { limbs: [ 0x6b3c313aa95aee82f6451c0ffd9e4b, 0x6d8766a0943a502e6324c3508a3d5d, 0x001de8 ] } , - BigNum { limbs: [ 0x5267d1c55501107d09bae2f00261b6, 0x39cbc2fce90de30b74e346514dc7f6, 0x005605 ] } , - BigNum { limbs: [ 0x654ce80fe96082a1e43aaa7b821ea8, 0xf72b923064c0be698f7263e18fd0b9, 0x002cc7 ] } , - BigNum { limbs: [ 0x58571af014fb7c5e1bc554847de159, 0xb027976d188774d04895a5c048349a, 0x004725 ] } , - BigNum { limbs: [ 0x54ae98f2436032489a67c9866dd8ad, 0xe4d12bf37061256021f248c7908c5b, 0x005e75 ] } , - BigNum { limbs: [ 0x68f56a0dbafbccb765983579922754, 0xc281fdaa0ce70dd9b615c0da4778f8, 0x001577 ] } , - BigNum { limbs: [ 0x8497fcc49d0aa40b429d38e35259ba, 0x99a26cd1eb74403a1340a2d6a1bb64, 0x003475 ] } , - BigNum { limbs: [ 0x390c063b61515af4bd62c61cada647, 0x0db0bccb91d3f2ffc4c766cb3649ef, 0x003f78 ] } , - BigNum { limbs: [ 0x3be6ce0d94c6fa2af3b166edf32104, 0xdd86f64b2b584cdc6ccbf204e89982, 0x00386c ] } , - BigNum { limbs: [ 0x81bd34f2699504d50c4e98120cdefd, 0xc9cc335251efe65d6b3c179cef6bd1, 0x003b80 ] } , - BigNum { limbs: [ 0xfe230845799344541d2d22e8741f95, 0xb81eac8a6b93f11de21f95fdc20639, 0x0019a3 ] } , - BigNum { limbs: [ 0xbf80faba84c8baabe2d2dc178be06c, 0xef347d1311b4421bf5e873a415ff19, 0x005a49 ] } , - BigNum { limbs: [ 0xfe8d642079b117e2b984147df9fa0c, 0x54602f81f7daddb4495985ce8faabc, 0x00268a ] } , - BigNum { limbs: [ 0xbf169edf84aae71d467bea820605f5, 0x52f2fa1b856d55858eae83d3485a96, 0x004d63 ] } , - BigNum { limbs: [ 0xac10045770c08b8c60ff7cd1cb44b7, 0x548cbf1cc89059674f9cea35a7984c, 0x002455 ] } , - BigNum { limbs: [ 0x1193fea88d9b73739f00822e34bb4a, 0x52c66a80b4b7d9d2886b1f6c306d07, 0x004f98 ] } , - BigNum { limbs: [ 0x3682e1dd8e09eea1bf6608e5f02061, 0x4966d963f03feefe5024fc878e21d5, 0x007052 ] } , - BigNum { limbs: [ 0x872121227052105e4099f61a0fdfa0, 0x5dec50398d08443b87e30d1a49e37e, 0x00039b ] } , - BigNum { limbs: [ 0x2e052cb748d5c0c04adf434b4e09ff, 0xf2bbe685dbe29aa1cac699a261938d, 0x00218a ] } , - BigNum { limbs: [ 0x8f9ed648b5863e3fb520bbb4b1f602, 0xb4974317a16598980d416fff7671c6, 0x005262 ] } , - BigNum { limbs: [ 0x6d28a175fac82773be83cb00213581, 0x05a1a5d4698d5ee9e090bc999a0261, 0x002710 ] } , - BigNum { limbs: [ 0x507b618a0393d78c417c33ffdeca80, 0xa1b183c913bad44ff7774d083e02f2, 0x004cdd ] } , - BigNum { limbs: [ 0xc71ad10f1cb57ed38797c866a2d324, 0x5a3fce4392a5b6641cef26ddbb1e10, 0x00543a ] } , - BigNum { limbs: [ 0xf68931f0e1a6802c786836995d2cdd, 0x4d135b59eaa27cd5bb18e2c41ce742, 0x001fb3 ] } , - BigNum { limbs: [ 0x3b0e7eef22839ee457f3a8335b7c95, 0x7dc08530f7efe3a32515bfe9049360, 0x000a3e ] } , - BigNum { limbs: [ 0x82958410dbd8601ba80c56cca4836c, 0x2992a46c85584f96b2f249b8d371f3, 0x0069af ] } , - BigNum { limbs: [ 0x010d11ad78e67deb7dbe225750689c, 0xc1ce8fe57512b096e947760ffd71d2, 0x001478 ] } , - BigNum { limbs: [ 0xbc96f152857581148241dca8af9765, 0xe58499b8083582a2eec09391da9381, 0x005f74 ] } , - BigNum { limbs: [ 0x0d7b400461dcb7a69e3537d4ebbcf1, 0xf8671d4058336373dcdb72a544f8c7, 0x000aab ] } , - BigNum { limbs: [ 0xb028c2fb9c7f475961cac72b144310, 0xaeec0c5d2514cfc5fb2c96fc930c8c, 0x006941 ] } , - BigNum { limbs: [ 0xbcb5780f8ed96932b18098666562a4, 0xbd71f2c2ea600d38d4f3d4ea6f549f, 0x004256 ] } , - BigNum { limbs: [ 0x00ee8af06f8295cd4e7f66999a9d5d, 0xe9e136da92e82601031434b768b0b4, 0x003196 ] } , - BigNum { limbs: [ 0x38d17454846f3841f49d74735570ea, 0x165fbd58c5a8755dc5938773609f0e, 0x0003ed ] } , - BigNum { limbs: [ 0x84d28eab79ecc6be0b628a8caa8f17, 0x90f36c44b79fbddc1274822e776645, 0x007000 ] } , - BigNum { limbs: [ 0xfcb916c626e0e9bc29f6173ab70b65, 0x3d073a9c55cdd85ea2235bfe4d4804, 0x005b5b ] } , - BigNum { limbs: [ 0xc0eaec39d77b1543d609e7c548f49c, 0x6a4bef01277a5adb35e4ada38abd4e, 0x001892 ] } , - BigNum { limbs: [ 0xc37b9a1dfaaf4193724cef26d4b27a, 0x9c2994f61e115e9f0991476ba4f346, 0x004ae3 ] } , - BigNum { limbs: [ 0xfa2868e203acbd6c8db30fd92b4d87, 0x0b2994a75f36d49ace76c23633120c, 0x00290a ] } , - BigNum { limbs: [ 0x377a276c1c5329c1018e5e8284261e, 0xd80ac1ce9fe1755c33da05a269c910, 0x0053fd ] } , - BigNum { limbs: [ 0x8629db93e208d53efe71a07d7bd9e3, 0xcf4867cedd66bddda42e03ff6e3c43, 0x001fef ] } , - BigNum { limbs: [ 0x45dc24dbfdb880c6163bc865dd8bfa, 0x904b30cf1672d3253aaf3beeedf700, 0x0032fe ] } , - BigNum { limbs: [ 0x77c7de2400a37e39e9c4369a227407, 0x1707f8ce66d560149d58cdb2ea0e53, 0x0040ef ] } , - BigNum { limbs: [ 0xba16207a4ed9735b36b24c6dd788a9, 0x460aee018137df4643f06e17e34196, 0x001af7 ] } , - BigNum { limbs: [ 0x038de285af828ba4c94db292287758, 0x61483b9bfc1053f394179b89f4c3bd, 0x0058f6 ] } , - BigNum { limbs: [ 0x5051b124a48d44acceb7bbce4cc395, 0x49a9f4f29b3a002bc0adb6fdc0f664, 0x006fcb ] } , - BigNum { limbs: [ 0x6d5251db59ceba5331484331b33c6c, 0x5da934aae20e330e175a52a4170eef, 0x000422 ] } , - BigNum { limbs: [ 0xdce6f23222f777c94bdd9d3ac706d2, 0x815b057415a7e25cd2e9271b27153d, 0x000455 ] } , - BigNum { limbs: [ 0xe0bd10cddb648736b42261c538f92f, 0x25f8242967a050dd051ee286b0f015, 0x006f98 ] } , - BigNum { limbs: [ 0x66373acc16d886ceddaf21e77fc517, 0xa9919ec5166a85cf008f30e27fbec0, 0x0010b0 ] } , - BigNum { limbs: [ 0x576cc833e78378312250dd18803aea, 0xfdc18ad866ddad6ad778d8bf584693, 0x00633c ] } , - BigNum { limbs: [ 0xcf5dfbcdebe183e6e206d7bdffab49, 0x14f3cf6874649b5de195f3b709f16f, 0x000d09 ] } , - BigNum { limbs: [ 0xee460732127a7b191df927420054b8, 0x925f5a3508e397dbf67215eace13e3, 0x0066e4 ] } , - BigNum { limbs: [ 0x620e2e04af3cb774d607ae86c135cd, 0x379a5ac72106a7f3d9eeeea2803ed8, 0x002032 ] } , - BigNum { limbs: [ 0x5b95d4fb4f1f478b29f850793eca34, 0x6fb8ced65c418b45fe191aff57c67b, 0x0053bb ] } , - BigNum { limbs: [ 0xbe8983b787f09a3fda16b703ae79d7, 0xc42675dd613b3489b26bb21f6c258f, 0x0056da ] } , - BigNum { limbs: [ 0xff1a7f48766b64c025e947fc51862a, 0xe32cb3c01c0cfeb0259c57826bdfc3, 0x001d12 ] } , - BigNum { limbs: [ 0x4e939154c03c580acc2b5ef5216f61, 0x9334769b3974daaf8d6debc056151e, 0x001ead ] } , - BigNum { limbs: [ 0x6f1071ab3e1fa6f533d4a00ade90a0, 0x141eb30243d3588a4a9a1de181f035, 0x005540 ] } , - BigNum { limbs: [ 0x6b31e32115dd92996c19a5568c67f4, 0x5347f1132f4d1e57fcce6b05f90380, 0x0036c7 ] } , - BigNum { limbs: [ 0x52721fdee87e6c6693e659a973980d, 0x540b388a4dfb14e1db399e9bdf01d3, 0x003d26 ] } , - BigNum { limbs: [ 0xf2bdccb70a6ef709cbca5b7a65aab2, 0xbd04f7f6b469d3ddff14a41bbd9dd2, 0x0036f1 ] } , - BigNum { limbs: [ 0xcae63648f3ed07f63435a3859a554f, 0xea4e31a6c8de5f5bd8f365861a6780, 0x003cfb ] } , - BigNum { limbs: [ 0x66f13b1ab5685cd8cdc7146b807204, 0x9469afda287a4012a1a3ae0c60acc9, 0x004fd2 ] } , - BigNum { limbs: [ 0x56b2c7e548f3a2273238ea947f8dfd, 0x12e979c354cdf32736645b9577588a, 0x00241b ] } , - BigNum { limbs: [ 0x7853b66b61d5200372e53f548f8ce3, 0x87ce2ad498442d5e019288a337976e, 0x003b03 ] } , - BigNum { limbs: [ 0x45504c949c86defc8d1abfab70731e, 0x1f84fec8e50405dbd67580fea06de5, 0x0038ea ] } , - BigNum { limbs: [ 0x70bff3af461bc0ca31c421a753efa0, 0xa63dfd84ffaec090ac87917778335b, 0x0056b5 ] } , - BigNum { limbs: [ 0x4ce40f50b8403e35ce3bdd58ac1061, 0x01152c187d9972a92b80782a5fd1f8, 0x001d38 ] } , - BigNum { limbs: [ 0xc5373ec9c8343b1e4ca4d8ce229e36, 0x5d229a04387d9c5d5a214d0488f0ef, 0x00455e ] } , - BigNum { limbs: [ 0xf86cc4363627c3e1b35b2631dd61cb, 0x4a308f9944ca96dc7de6bc9d4f1463, 0x002e8f ] } , - BigNum { limbs: [ 0x5dcdee102c3ba87f2f48f3eb5d88d3, 0xa72bf8109fde405a5c49fdd0824580, 0x0013de ] } , - BigNum { limbs: [ 0x5fd614efd2205680d0b70b14a2772e, 0x0027318cdd69f2df7bbe0bd155bfd3, 0x00600f ] } , - BigNum { limbs: [ 0xd2826073fe1c3d9541142e4bebfa33, 0x8b9ab81f31622738fb770b6f7db0fd, 0x006321 ] } , - BigNum { limbs: [ 0xeb21a28c003fc16abeebd0b41405ce, 0x1bb8717e4be60c00dc90fe325a5455, 0x0010cc ] } , - BigNum { limbs: [ 0x2655a4f2a71153bc164249c8f6ae4c, 0xed9f7c0b36665bc1b21db066728eec, 0x00230a ] } , - BigNum { limbs: [ 0x974e5e0d574aab43e9bdb5370951b5, 0xb9b3ad9246e1d77825ea593b657667, 0x0050e2 ] } , - BigNum { limbs: [ 0x47c28ba9fd6add445358152fe9e30e, 0x4d75bff8bc844cda745819c6a69193, 0x000182 ] } , - BigNum { limbs: [ 0x75e1775600f121bbaca7e9d0161cf3, 0x59dd69a4c0c3e65f63afefdb3173c0, 0x00726b ] } , - BigNum { limbs: [ 0xeccbd814da06896454b1247b57539e, 0xde70f6f89e7b9b7862421542c6ade1, 0x002cc2 ] } , - BigNum { limbs: [ 0xd0d82aeb2455759bab4eda84a8ac63, 0xc8e232a4decc97c175c5f45f115771, 0x00472a ] } , - BigNum { limbs: [ 0x94d9614b087f3c1980045ae4b78723, 0xd97a1ce103e07e6e65b246bd533015, 0x0044dd ] } , - BigNum { limbs: [ 0x28caa1b4f5dcc2e67ffba41b4878de, 0xcdd90cbc7967b4cb7255c2e484d53e, 0x002f0f ] } , - BigNum { limbs: [ 0x51fbc98b29ffba9c5a4354bbba58aa, 0x3cb2c5f57ea5b26b1d49f27a08e557, 0x003f3d ] } , - BigNum { limbs: [ 0x6ba83974d45c4463a5bcaa4445a757, 0x6aa063a7fea280cebabe1727cf1ffc, 0x0034b0 ] } , - BigNum { limbs: [ 0x61db1d1b9c0b08cb773551758ecaa4, 0xe37eb8a506acf1f91c7b55db3a8be4, 0x00593a ] } , - BigNum { limbs: [ 0x5bc8e5e46250f63488caad8a71355d, 0xc3d470f8769b4140bb8cb3c69d796f, 0x001ab2 ] } , - BigNum { limbs: [ 0x444d8a302c8da96e37bfb94751e58e, 0x6690ae243ef976f6b24227dd5cb253, 0x005ec0 ] } , - BigNum { limbs: [ 0x795678cfd1ce5591c84045b8ae1a73, 0x40c27b793e4ebc4325c5e1c47b5300, 0x00152d ] } , - BigNum { limbs: [ 0x3dfdc600984107cda32780a77f8f5f, 0xa1529986e0edb5dd9e2d3dd12687a9, 0x002eb2 ] } , - BigNum { limbs: [ 0x7fa63cff661af7325cd87e588070a2, 0x060090169c5a7d5c39dacbd0b17daa, 0x00453b ] } , - BigNum { limbs: [ 0x2489344a456b47cae21e3bd7150af7, 0xea05243f47f6f7db687fb68d902acb, 0x005750 ] } , - BigNum { limbs: [ 0x991aceb5b8f0b7351de1c328eaf50a, 0xbd4e055e35513b5e6f88531447da88, 0x001c9c ] } , - BigNum { limbs: [ 0xca05a65a819a818d65f283960c64f6, 0xfcc67803f85a9d91f530887530a761, 0x004c36 ] } , - BigNum { limbs: [ 0xf39e5ca57cc17d729a0d7b69f39b0b, 0xaa8cb19984ed95a7e2d7812ca75df1, 0x0027b6 ] } , - BigNum { limbs: [ 0x5c3a002f47ebc42d07692bea45f396, 0xa5fa42eabba5613a5c9f9b3231c3b6, 0x007192 ] } , - BigNum { limbs: [ 0x616a02d0b6703ad2f896d315ba0c6b, 0x0158e6b2c1a2d1ff7b686e6fa6419d, 0x00025b ] } , - BigNum { limbs: [ 0xeceaad029bec7ce943f9b1660bb1a9, 0x59ff4eddaac6fee6711ca11606eba0, 0x001658 ] } , - BigNum { limbs: [ 0xd0b955fd626f8216bc064d99f44e58, 0x4d53dabfd281345366eb688bd119b2, 0x005d95 ] } , - BigNum { limbs: [ 0x218f1dd4394b56b4953e423b9c04e0, 0x87019792e16ae4979dbd6023b97478, 0x004970 ] } , - BigNum { limbs: [ 0x9c14e52bc510a84b6ac1bcc463fb21, 0x2051920a9bdd4ea23a4aa97e1e90db, 0x002a7d ] } , - BigNum { limbs: [ 0x37f73343b719ecede15ecd60b3df65, 0x624c06087cb6ad30ccd8f447ed080a, 0x0059ba ] } , - BigNum { limbs: [ 0x85accfbc474212121ea1319f4c209c, 0x45072395009186090b2f1559eafd49, 0x001a33 ] } , - BigNum { limbs: [ 0x467cc6e972110032c5ece8b055e8a9, 0x62d2f2b315a015393dcc435c95bf3a, 0x000274 ] } , - BigNum { limbs: [ 0x77273c168c4afecd3a13164faa1758, 0x448036ea67a81e009a3bc645424619, 0x007179 ] } , - BigNum { limbs: [ 0xc2941dbdeb3eff86bbc2821a7c954d, 0x4e5fe188f49e4f87f802ec2872f93e, 0x0043c8 ] } , - BigNum { limbs: [ 0xfb0fe542131cff79443d7ce5836ab4, 0x58f3481488a9e3b1e0051d79650c14, 0x003025 ] } , - BigNum { limbs: [ 0x5315b31507ceb8d2aa93f770b9c8e1, 0x9106ee3a43fd12880e5eefdbae2ab6, 0x004b9b ] } , - BigNum { limbs: [ 0x6a8e4feaf68d462d556c078f463720, 0x164c3b63394b20b1c9a919c629da9d, 0x002852 ] } , - BigNum { limbs: [ 0xcbd2211181fe944077e77ff3104df5, 0xaa51988e575837557c3b5ebdfea8e8, 0x0060c6 ] } , - BigNum { limbs: [ 0xf1d1e1ee7c5d6abf88187f0cefb20c, 0xfd01910f25effbe45bccaae3d95c6a, 0x001326 ] } , - BigNum { limbs: [ 0xe7ea60eb7cbec10bffa78086fdf997, 0xf61c4bca67ebd5e3fdd1c6dc2cea86, 0x005f7c ] } , - BigNum { limbs: [ 0xd5b9a214819d3df400587e7902066a, 0xb136ddd3155c5d55da3642c5ab1acc, 0x001470 ] } , - BigNum { limbs: [ 0xade32f51e3b92db7b324b4eaa555a9, 0xf91f5315f9552e1b95e6b724cde4ee, 0x0008b5 ] } , - BigNum { limbs: [ 0x0fc0d3ae1aa2d1484cdb4a155aaa58, 0xae33d68783f3051e4221527d0a2065, 0x006b37 ] } , - BigNum { limbs: [ 0xf8a4660d27320008b429fd878ffa9e, 0x7d7b53ab5425e3b013ebe22d4afdb4, 0x003702 ] } , - BigNum { limbs: [ 0xc4ff9cf2d729fef74bd60178700563, 0x29d7d5f229224f89c41c27748d079e, 0x003ceb ] } , - BigNum { limbs: [ 0xd3a1081b7dc34879cad7e40b802754, 0xb1694de1defdc9b305be4031baafd7, 0x004d4c ] } , - BigNum { limbs: [ 0xea02fae48098b68635281af47fd8ad, 0xf5e9dbbb9e4a6986d249c9701d557b, 0x0026a0 ] } , - BigNum { limbs: [ 0xbb4de382da6cec9b679276f6e92cd5, 0x81b1b3b9f48d763ed728d201436845, 0x004de2 ] } , - BigNum { limbs: [ 0x02561f7d23ef1264986d880916d32c, 0x25a175e388babcfb00df37a0949d0e, 0x00260b ] } , - BigNum { limbs: [ 0xfea794c0e0d6b46940f19dbc185b43, 0xe9cede62c18b938f1b083fb184c56e, 0x000168 ] } , - BigNum { limbs: [ 0xbefc6e3f1d854a96bf0e6143e7a4be, 0xbd844b3abbbc9faabcffc9f0533fe4, 0x007284 ] } , - BigNum { limbs: [ 0xadf465bebef8ccebfad58878130b3d, 0xc395d5f911b303cec6f905265aae1a, 0x00446a ] } , - BigNum { limbs: [ 0x0faf9d413f633214052a7687ecf4c4, 0xe3bd53a46b952f6b110f047b7d5739, 0x002f82 ] } , - BigNum { limbs: [ 0x9f1ddab1d4fa82932aebc0965a4202, 0xf36fa2b47ddb5a73c6e65398047a50, 0x000364 ] } , - BigNum { limbs: [ 0x1e86284e29617c6cd5143e69a5bdff, 0xb3e386e8ff6cd8c61121b609d38b03, 0x007088 ] } , - BigNum { limbs: [ 0xc769faa4402f293c314964fd4408c9, 0x849c98537bacc5b2f69cad1dade64b, 0x00177b ] } , - BigNum { limbs: [ 0xf63a085bbe2cd5c3ceb69a02bbf738, 0x22b6914a019b6d86e16b5c842a1f07, 0x005c72 ] } , - BigNum { limbs: [ 0x79365f811d5769926a3c0cfe4005c3, 0x79a31835c7e2ccb2e5196d0deb2ba5, 0x003864 ] } , - BigNum { limbs: [ 0x446da37ee104956d95c3f201bffa3e, 0x2db01167b5656686f2ee9c93ecd9ae, 0x003b89 ] } , - BigNum { limbs: [ 0x6df44639124f2ba81be6d8edda7638, 0x668413c019df4374af12eabf982893, 0x006f87 ] } , - BigNum { limbs: [ 0x4fafbcc6ec0cd357e41926122589c9, 0x40cf15dd6368efc528f51ee23fdcc0, 0x000466 ] } , - BigNum { limbs: [ 0x43a907c09f060427d329827aa98fff, 0xb856c1b52cf9492d043c2e74cf231b, 0x00354b ] } , - BigNum { limbs: [ 0x79fafb3f5f55fad82cd67c85567002, 0xeefc67e8504eea0cd3cbdb2d08e238, 0x003ea1 ] } , - BigNum { limbs: [ 0xb9bf92bae7e7fe896a2d7f2d01187c, 0x0f53d6c54c0941a9861e5c72b0d523, 0x000277 ] } , - BigNum { limbs: [ 0x03e470451674007695d27fd2fee785, 0x97ff52d8313ef19051e9ad2f273030, 0x007176 ] } , - BigNum { limbs: [ 0x1b0da0ac3997d798ff94a498f96017, 0x732533ddaf1a10b0beb4fee8a1769d, 0x006801 ] } , - BigNum { limbs: [ 0xa2966253c4c42767006b5a67069fea, 0x342df5bfce2e228919530ab9368eb6, 0x000bec ] } , - BigNum { limbs: [ 0x26c30fdbf9ba3500c4ee9032afcc94, 0x105c8329a6955caccf15dda0d8ad03, 0x002fff ] } , - BigNum { limbs: [ 0x96e0f32404a1c9ff3b116ecd50336d, 0x96f6a673d6b2d68d08f22c00ff5850, 0x0043ee ] } , - BigNum { limbs: [ 0x236a92397b76349a0f0a5f9fbb73b7, 0x6e8046dfa7d7b0dba6fd299e303d1d, 0x000cc2 ] } , - BigNum { limbs: [ 0x9a3970c682e5ca65f0f59f60448c4a, 0x38d2e2bdd570825e310ae003a7c836, 0x00672b ] } , - BigNum { limbs: [ 0x3b84c03955634d9dafd3593bc10665, 0x7aa88f051d3d6e47e7481dbd70b738, 0x004f3a ] } , - BigNum { limbs: [ 0x821f42c6a8f8b162502ca5c43ef99c, 0x2caa9a98600ac4f1f0bfebe4674e1b, 0x0024b3 ] } , - BigNum { limbs: [ 0x0a98ca924c9853cdf99d946705e265, 0xb82069c37ab55ff8776e9d4b000112, 0x002b67 ] } , - BigNum { limbs: [ 0xb30b386db1c3ab3206626a98fa1d9c, 0xef32bfda0292d34160996c56d80441, 0x004885 ] } , - BigNum { limbs: [ 0x50631ef088678db03b789302413b7c, 0xcd6afbf40e773e053844b1d7c4c0ec, 0x00455e ] } , - BigNum { limbs: [ 0x6d40e40f75f4714fc4876bfdbec485, 0xd9e82da96ed0f5349fc357ca134467, 0x002e8e ] } , - BigNum { limbs: [ 0x1279da43e3f45b1ede5de981ebf8f8, 0xce9f04a28d115ecc4f16874611b142, 0x000db4 ] } , - BigNum { limbs: [ 0xab2a28bc1a67a3e121a2157e140709, 0xd8b424faf036d46d88f1825bc65411, 0x006638 ] } , - BigNum { limbs: [ 0x91e47e376c2e5b6ff7d691b3198b23, 0xe821190696fc5d6ecc9a8405e05629, 0x005133 ] } , - BigNum { limbs: [ 0x2bbf84c8922da39008296d4ce674de, 0xbf321096e64bd5cb0b6d859bf7af2a, 0x0022b9 ] } , - BigNum { limbs: [ 0xc528e11bb8f362bbb3efec893f294f, 0x10302a2f39be6d2099caa9324c56d8, 0x005679 ] } , - BigNum { limbs: [ 0xf87b21e445689c444c101276c0d6b2, 0x9722ff6e4389c6193e3d606f8bae7a, 0x001d74 ] } , - BigNum { limbs: [ 0xd83c84ed265e50977e9c4587dfe508, 0x739e84003bec789aed56b517a468ea, 0x000076 ] } , - BigNum { limbs: [ 0xe5677e12d7fdae688163b978201af9, 0x33b4a59d415bba9eeab1548a339c68, 0x007377 ] } , - BigNum { limbs: [ 0x235c660dcd47d87bf14d05ce8047ea, 0xef848d536f6afc0071a614f0a4770c, 0x00643c ] } , - BigNum { limbs: [ 0x9a479cf2311426840eb2f9317fb817, 0xb7ce9c4a0ddd37396661f4b1338e47, 0x000fb0 ] } , - BigNum { limbs: [ 0x7f1ed0313f9e0fe150bea48f8d1dea, 0xe117dc9238c29fb9c14a0e4d763a00, 0x0024c9 ] } , - BigNum { limbs: [ 0x3e8532cebebdef1eaf415a7072e217, 0xc63b4d0b4485938016bdfb5461cb53, 0x004f23 ] } , - BigNum { limbs: [ 0x81791f3a6308454c51bb17349f0783, 0xe041d03cc117b367e019a720931783, 0x001d2d ] } , - BigNum { limbs: [ 0x3c2ae3c59b53b9b3ae44e7cb60f87e, 0xc7115960bc307fd1f7ee628144edd0, 0x0056bf ] } , - BigNum { limbs: [ 0xc3ba13d252c0e88f18500f83965a8e, 0x641539037f771f1b83b02e67527a4d, 0x0055b6 ] } , - BigNum { limbs: [ 0xf9e9ef2dab9b1670e7afef7c69a573, 0x433df099fdd1141e5457db3a858b05, 0x001e37 ] } , - BigNum { limbs: [ 0x5502a77ae6332fa6600254a7d754be, 0x4cdc36f88410f5d7bfef36de3b7834, 0x00027e ] } , - BigNum { limbs: [ 0x68a15b851828cf599ffdaa5828ab43, 0x5a76f2a4f9373d621818d2c39c8d1f, 0x00716f ] } , - BigNum { limbs: [ 0x8d41cd7ab1753ea7303c63152c1640, 0x4a2297423679aee4b37190faa6c7d5, 0x004f91 ] } , - BigNum { limbs: [ 0x306235854ce6c058cfc39bead3e9c1, 0x5d30925b46ce8455249678a7313d7e, 0x00245c ] } , - BigNum { limbs: [ 0x87cba345c1658b64271241619da532, 0x46ae7297a21a8f4310cd2220399c88, 0x0037d2 ] } , - BigNum { limbs: [ 0x35d85fba3cf6739bd8edbd9e625acf, 0x60a4b705db2da3f6c73ae7819e68cb, 0x003c1b ] } , - BigNum { limbs: [ 0x2651d853c9eca95343e645167ee188, 0x1331dca429aad2f2eb5255c656c902, 0x00258b ] } , - BigNum { limbs: [ 0x97522aac346f55acbc19b9e9811e79, 0x94214cf9539d6046ecb5b3db813c51, 0x004e62 ] } , - BigNum { limbs: [ 0x5390d0e60bdfb3b93907b7592ea586, 0xe4164e07f2ab58063db3959fe0ef23, 0x003596 ] } , - BigNum { limbs: [ 0x6a133219f27c4b46c6f847a6d15a7b, 0xc33cdb958a9cdb339a547401f71630, 0x003e56 ] } , - BigNum { limbs: [ 0xb8b209e98b7e0f2fa61198c7de7bd4, 0x75e0a5e4145fb34bad5f4e9cfdb6f3, 0x003811 ] } , - BigNum { limbs: [ 0x04f1f91672ddefd059ee663821842d, 0x317283b968e87fee2aa8bb04da4e60, 0x003bdc ] } , - BigNum { limbs: [ 0x6e76cf4f775ba9242cce972bd82d65, 0x812b15a0625c3583f1f0c36ae9d2f5, 0x0011d0 ] } , - BigNum { limbs: [ 0x4f2d33b0870055dbd33167d427d29c, 0x262813fd1aebfdb5e6174636ee325e, 0x00621d ] } , - BigNum { limbs: [ 0x7524de9c02b81cf5045a21462659cf, 0x5fa6f3c3db8efc130759d8cd8c1f9d, 0x0017bf ] } , - BigNum { limbs: [ 0x487f2463fba3e20afba5ddb9d9a632, 0x47ac35d9a1b93726d0ae30d44be5b6, 0x005c2e ] } , - BigNum { limbs: [ 0x66175e422e5e04509c353c559ce0e4, 0xc2a34bbcc1de81c01f6a38e43c7150, 0x0028ff ] } , - BigNum { limbs: [ 0x578ca4bdcffdfaaf63cac2aa631f1d, 0xe4afdde0bb69b179b89dd0bd9b9403, 0x004aed ] } , - BigNum { limbs: [ 0xc17fed2efa16c0bf255236c073301f, 0x95c68591a521990ffbee982e626b47, 0x00713f ] } , - BigNum { limbs: [ 0xfc2415d104453e40daadc83f8ccfe2, 0x118ca40bd8269a29dc197173759a0b, 0x0002ae ] } , - BigNum { limbs: [ 0x37692cb91745a591e0a5ec1dbb4517, 0x2b1236ce1f78bd6f986d418b46797f, 0x006418 ] } , - BigNum { limbs: [ 0x863ad646e716596e1f5a12e244baea, 0x7c40f2cf5dcf75ca3f9ac816918bd4, 0x000fd5 ] } , - BigNum { limbs: [ 0x743adadff7878293e97ac2c7bf5f23, 0x47fe2645c3ccca5cf55c4cee43e80b, 0x005d20 ] } , - BigNum { limbs: [ 0x4969282006d47c6c16853c3840a0de, 0x5f550357b97b68dce2abbcb3941d48, 0x0016cd ] } , - BigNum { limbs: [ 0x1f5b434515524094eb42b26bd7cec8, 0x5d84c1e11520848c1259d579deff61, 0x006ae4 ] } , - BigNum { limbs: [ 0x9e48bfbae909be6b14bd4c94283139, 0x49ce67bc6827aeadc5ae3427f905f2, 0x000909 ] } , - BigNum { limbs: [ 0x7a83f4b3620a8bc1ab543280174b65, 0x4fe4101d764247b839b40665b9ab31, 0x004d4e ] } , - BigNum { limbs: [ 0x43200e4c9c51733e54abcc7fe8b49c, 0x576f19800705eb819e54033c1e5a22, 0x00269f ] } , - BigNum { limbs: [ 0x16e6f88f393313659ed34f1ba7c758, 0x479f6d036dbe156e6d5f1cd1d95835, 0x004f05 ] } , - BigNum { limbs: [ 0xa6bd0a70c528eb9a612cafe45838a9, 0x5fb3bc9a0f8a1dcb6aa8eccffead1e, 0x0024e8 ] } , - BigNum { limbs: [ 0xb4744f8cf411c654449ec24eff1d4a, 0xae41472c7c0e590ce3fe74cee9cc36, 0x0061df ] } , - BigNum { limbs: [ 0x092fb3730a4a38abbb613cb100e2b7, 0xf911e2710139da2cf40994d2ee391d, 0x00120d ] } , - BigNum { limbs: [ 0x1b7ec3a436588065b8118cdf67b4c8, 0x457a8a468be812b6b2973fbcaa7c77, 0x003d49 ] } , - BigNum { limbs: [ 0xa2253f5bc8037e9a47ee7220984b39, 0x61d89f56f16020832570c9e52d88dc, 0x0036a4 ] } , - BigNum { limbs: [ 0x3412c9cd2a9b3731e9ab2413ce6403, 0x8dc1af53e39e07ae39bf50998fa407, 0x004686 ] } , - BigNum { limbs: [ 0x89913932d3c0c7ce1654daec319bfe, 0x19917a4999aa2b8b9e48b90848614c, 0x002d67 ] } , - BigNum { limbs: [ 0x89c1bd2dd357cf20f00f1e8819ff37, 0x2f0c9a6585b33115765c3d23d4949e, 0x003fb7 ] } , - BigNum { limbs: [ 0x33e245d22b042fdf0ff0e077e600ca, 0x78468f37f795022461abcc7e0370b5, 0x003436 ] } , - BigNum { limbs: [ 0xdd464b1c886d78042cef5c92e33195, 0x557b73b7e48b242355a680b717f586, 0x0025de ] } , - BigNum { limbs: [ 0xe05db7e375ee86fbd310a26d1cce6c, 0x51d7b5e598bd0f16826188eac00fcc, 0x004e0f ] } , - BigNum { limbs: [ 0xedf499ef3076be4475c4d42b7a4b38, 0x602954fc0ca6ba46042c3d326406d9, 0x0054de ] } , - BigNum { limbs: [ 0xcfaf6910cde540bb8a3b2ad485b4c9, 0x4729d4a170a178f3d3dbcc6f73fe79, 0x001f0f ] } , - BigNum { limbs: [ 0xfcd31b702dd686c47e6812cda15c19, 0xf2d45a69922bb0a0d0c53a6b502bef, 0x005861 ] } , - BigNum { limbs: [ 0xc0d0e78fd085783b8197ec325ea3e8, 0xb47ecf33eb1c82990742cf3687d963, 0x001b8b ] } , - BigNum { limbs: [ 0x8425612ae7e671237bffd304e4fe50, 0xf9f2176adc1d48e923008e61d9c58e, 0x004067 ] } , - BigNum { limbs: [ 0x397ea1d516758ddc84002bfb1b01b1, 0xad611232a12aea50b5077b3ffe3fc5, 0x003385 ] } , - BigNum { limbs: [ 0xba411117fb1be0bb14f4f365c1b600, 0x58bcb55478df34740bade3183ade28, 0x000335 ] } , - BigNum { limbs: [ 0x0362f1e803401e44eb0b0b9a3e4a01, 0x4e9674490468fec5cc5a26899d272b, 0x0070b8 ] } , - BigNum { limbs: [ 0x9fcc4cdb6f0c10a87049c0b5897879, 0x9424325317c08c97b1f14e6a7312cd, 0x006329 ] } , - BigNum { limbs: [ 0x1dd7b6248f4fee578fb63e4a768788, 0x132ef74a6587a6a22616bb3764f286, 0x0010c4 ] } , - BigNum { limbs: [ 0x9f899703062de0d3baa1acb4e5b0f5, 0x090a68110f9092a633fc64cef521ba, 0x0065eb ] } , - BigNum { limbs: [ 0x1e1a6bfcf82e1e2c455e524b1a4f0c, 0x9e48c18c6db7a093a40ba4d2e2e399, 0x000e02 ] } , - BigNum { limbs: [ 0xd96ff2cd8b2f2e472cb619daac4bd2, 0x0f2dbc497381f411d51f076e4466de, 0x00573a ] } , - BigNum { limbs: [ 0xe4341032732cd0b8d349e52553b42f, 0x98256d5409c63f2802e90233939e74, 0x001cb3 ] } , - BigNum { limbs: [ 0xb84c544876a9c789aa8cb2686396ce, 0xa3313c8414b9bdb48d3a72566086b0, 0x006dbc ] } , - BigNum { limbs: [ 0x0557aeb787b2377655734c979c6933, 0x0421ed19688e75854acd974b777ea3, 0x000631 ] } , - BigNum { limbs: [ 0xe7613894a9b5c86333defbe1eafec8, 0xecb3aff7822dc90fd38cadbdeab57e, 0x0051a0 ] } , - BigNum { limbs: [ 0xd642ca6b54a6369ccc21031e150139, 0xba9f79a5fb1a6a2a047b5be3ed4fd4, 0x00224c ] } , - BigNum { limbs: [ 0xbd99d6f7d72c9825c9330c166c32b6, 0x656984a80d04d77f485529026c165c, 0x0008f3 ] } , - BigNum { limbs: [ 0x000a2c08272f66da36ccf2e993cd4b, 0x41e9a4f570435bba8fb2e09f6beef7, 0x006afa ] } , - BigNum { limbs: [ 0x00ac7d231f0dcc77f716ad84ec3f4e, 0x66b749227bc79c2b526b533ce6736d, 0x001236 ] } , - BigNum { limbs: [ 0xbcf785dcdf4e328808e9517b13c0b3, 0x409be07b0180970e859cb664f191e6, 0x0061b7 ] } , - BigNum { limbs: [ 0x44df453062977b35a87e2790b1aa63, 0x70a52543032792c60337c3de194e28, 0x004ca4 ] } , - BigNum { limbs: [ 0x78c4bdcf9bc483ca5781d76f4e559e, 0x36ae045a7a20a073d4d045c3beb72b, 0x002749 ] } , - BigNum { limbs: [ 0x009c43f83b178b774638c79cf5dc1f, 0x3f6e8235ecae3905159358e0d38ebb, 0x0010c4 ] } , - BigNum { limbs: [ 0xbd07bf07c3447388b9c737630a23e2, 0x67e4a7679099fa34c274b0c1047698, 0x006329 ] } , - BigNum { limbs: [ 0x2a876351c2a2215759eb2f01eda387, 0xcb3d2bb78a0443275a5062c289ae5a, 0x0051ae ] } , - BigNum { limbs: [ 0x931c9fae3bb9dda8a614cffe125c7a, 0xdc15fde5f343f0127db7a6df4e56f9, 0x00223e ] } , - BigNum { limbs: [ 0xa8a3a7f2912453021ed75861bf15b2, 0xb5e368fea545ec1883b4b3c9abedbf, 0x0052cb ] } , - BigNum { limbs: [ 0x15005b0d6d37abfde128a69e40ea4f, 0xf16fc09ed8024721545355d82c1794, 0x002121 ] } , - BigNum { limbs: [ 0x99bf3cadf47500466419f0acda4132, 0x0fab03bda4f931faf27e04e17cf31b, 0x004831 ] } , - BigNum { limbs: [ 0x23e4c65209e6feb99be60e5325becf, 0x97a825dfd84f013ee58a04c05b1238, 0x002bbc ] } , - BigNum { limbs: [ 0x2af33beac6f68086ebdd53f2e05b8c, 0x18dfadf4968e6c38c06e52f5b19228, 0x003f52 ] } , - BigNum { limbs: [ 0x92b0c71537657e791422ab0d1fa475, 0x8e737ba8e6b9c7011799b6ac26732b, 0x00349b ] } , - BigNum { limbs: [ 0x532ae018561e10623432bc97e66621, 0x7d758178f8009d3d7a7ff033103d20, 0x003c40 ] } , - BigNum { limbs: [ 0x6a7922e7a83dee9dcbcd42681999e0, 0x29dda824854795fc5d88196ec7c833, 0x0037ad ] } , - BigNum { limbs: [ 0x5fdb8562ecaee38095506aaf2ed4e8, 0x40fa9e92971b3b44484802d2908ee1, 0x005327 ] } , - BigNum { limbs: [ 0x5dc87d9d11ad1b7f6aaf9450d12b19, 0x66588b0ae62cf7f58fc006cf477672, 0x0020c6 ] } , - BigNum { limbs: [ 0xc00587548157407cc2c1b551422388, 0x2433aacc79664fd54b05535ed75859, 0x0006c4 ] } , - BigNum { limbs: [ 0xfd9e7bab7d04be833d3e49aebddc79, 0x831f7ed103e1e3648d02b64300acf9, 0x006d29 ] } , - BigNum { limbs: [ 0xabf9af77e7e83655b9012175a8cc3b, 0xe87fd6b51c9c4226a334d73bebcb2b, 0x000b72 ] } , - BigNum { limbs: [ 0x11aa53881673c8aa46fedd8a5733c6, 0xbed352e860abf11334d33265ec3a28, 0x00687a ] } , - BigNum { limbs: [ 0x1fbcdb53444abbab0181bccc152b72, 0xedc455355287c6bf314728f7672064, 0x0068e3 ] } , - BigNum { limbs: [ 0x9de727acba114354fe7e4233ead48f, 0xb98ed4682ac06c7aa6c0e0aa70e4ef, 0x000b09 ] } , - BigNum { limbs: [ 0x5603226dcddca5147d1e72d2b5d06e, 0xc12baea83c091f5a39e548082c8807, 0x0064a3 ] } , - BigNum { limbs: [ 0x67a0e092307f59eb82e18c2d4a2f93, 0xe6277af5413f13df9e22c199ab7d4c, 0x000f49 ] } , - BigNum { limbs: [ 0x2ed8500386c76648c8e50cb39616ec, 0xef6739da92bc569aa8da7c3ebc2a85, 0x005a31 ] } , - BigNum { limbs: [ 0x8ecbb2fc779498b7371af24c69e915, 0xb7ebefc2ea8bdc9f2f2d8d631bdace, 0x0019bb ] } , - BigNum { limbs: [ 0xfe3a2e7b95c6469630cf3b08b533d4, 0x2a8f2e2a85919ad23e75d282b2d3b6, 0x006802 ] } , - BigNum { limbs: [ 0xbf69d4846895b869cf30c3f74acc2d, 0x7cc3fb72f7b698679992371f25319c, 0x000beb ] } , - BigNum { limbs: [ 0xcae90dfb3c0064c6123fa45fb28c2e, 0xd4cb52a34e3d7519670d09634336d4, 0x0023ce ] } , - BigNum { limbs: [ 0xf2baf504c25b9a39edc05aa04d73d3, 0xd287d6fa2f0abe2070fb003e94ce7e, 0x00501e ] } , - BigNum { limbs: [ 0x5ca0f385906331980144927341bf91, 0xe145a4a45855dd7ae283294477734f, 0x006964 ] } , - BigNum { limbs: [ 0x61030f7a6df8cd67febb6c8cbe4070, 0xc60d84f924f255bef584e05d609204, 0x000a88 ] } , - BigNum { limbs: [ 0xa47df0bc824e8ea22755dfe7bb9750, 0xfb32f90ffda0d607ced8ce69bc11a9, 0x0046cf ] } , - BigNum { limbs: [ 0x192612437c0d705dd8aa1f184468b1, 0xac20308d7fa75d32092f3b381bf3aa, 0x002d1d ] } , - BigNum { limbs: [ 0xec958cdc54a63cc7a96c1c03278845, 0x14461e4a1131fa3b366dda348f3893, 0x000791 ] } , - BigNum { limbs: [ 0xd10e7623a9b5c2385693e2fcd877bc, 0x930d0b536c1638fea19a2f6d48ccbf, 0x006c5c ] } , - BigNum { limbs: [ 0xb5abf8c3e544b7cec40dd9d4019abd, 0xe3e21a204627ca43fa39cf3715caad, 0x002b0f ] } , - BigNum { limbs: [ 0x07f80a3c191747313bf2252bfe6544, 0xc3710f7d372068f5ddce3a6ac23aa6, 0x0048dd ] } , - BigNum { limbs: [ 0x40722db5a2fdf30997af02bca933c9, 0x56c300383c82d6ab35ba4d5db3f1f7, 0x00688a ] } , - BigNum { limbs: [ 0x7d31d54a5b5e0bf66850fc4356cc38, 0x5090296540c55c8ea24dbc4424135c, 0x000b63 ] } , - BigNum { limbs: [ 0x564fcbc247d6d6ac9cc344a8cfff5a, 0xeb803c23772e9c6afb16ff55ea304f, 0x004b12 ] } , - BigNum { limbs: [ 0x6754373db6852853633cba573000a7, 0xbbd2ed7a061996cedcf10a4bedd504, 0x0028da ] } , - BigNum { limbs: [ 0xcdd1364d8cfacb93f88bc67b7b3721, 0x665f2b83a6deb7fdceb13345570e65, 0x0022a4 ] } , - BigNum { limbs: [ 0xefd2ccb27161336c0774388484c8e0, 0x40f3fe19d6697b3c0956d65c80f6ed, 0x005149 ] } , - BigNum { limbs: [ 0x0e9d35b6ed76adf7713ef284c069ff, 0xcf43948b469bcd431486dfe074f000, 0x002d69 ] } , - BigNum { limbs: [ 0xaf06cd4910e551088ec10c7b3f9602, 0xd80f951236ac65f6c38129c1631553, 0x004683 ] } , - BigNum { limbs: [ 0x67d80e0380c9dd297e9abd55f848ed, 0x70bfd3999432941131a1638c47aaf6, 0x002ffb ] } , - BigNum { limbs: [ 0x55cbf4fc7d9221d6816541aa07b714, 0x36935603e9159f28a666a615905a5d, 0x0043f2 ] } , - BigNum { limbs: [ 0x8032cefe4d368500c64cd40384f439, 0xe7910a9571c7e580abd9bdea663091, 0x001d7f ] } , - BigNum { limbs: [ 0x3d713401b12579ff39b32afc7b0bc8, 0xbfc21f080b804db92c2e4bb771d4c2, 0x00566d ] } , - BigNum { limbs: [ 0x121d901c68c49123c031d18d8c2649, 0xd8bc987365098ce1593a825ad83ef5, 0x006fc8 ] } , - BigNum { limbs: [ 0xab8672e395976ddc3fce2d7273d9b8, 0xce96912a183ea6587ecd8746ffc65e, 0x000424 ] } , - BigNum { limbs: [ 0xe9d91c5935fd49f4b6cc71968e9630, 0xab942a7f28f2aeb5acc56ef4dd0686, 0x003414 ] } , - BigNum { limbs: [ 0xd3cae6a6c85eb50b49338d697169d1, 0xfbbeff1e545584842b429aacfafecc, 0x003fd8 ] } , - BigNum { limbs: [ 0x40d3a6dad17cfb58253c958a750acb, 0xd11e6709e3150b19cc92362eeaac79, 0x00503d ] } , - BigNum { limbs: [ 0x7cd05c252cdf03a7dac369758af536, 0xd634c2939a3328200b75d372ed58da, 0x0023af ] } , - BigNum { limbs: [ 0x25871b96c0742e75161473966a53f7, 0x032dedb0b892480e75bd26e4e2ccb3, 0x000e42 ] } , - BigNum { limbs: [ 0x981ce7693de7d08ae9eb8b6995ac0a, 0xa4253becc4b5eb2b624ae2bcf538a0, 0x0065ab ] } , - BigNum { limbs: [ 0x309054dce40022360156e8b623013e, 0xbaeda02a6ff092a7ec5a61b18bafed, 0x003381 ] } , - BigNum { limbs: [ 0x8d13ae231a5bdcc9fea91649dcfec3, 0xec6589730d57a091ebada7f04c5566, 0x00406b ] } , - BigNum { limbs: [ 0xa9d4bab0b502dd86edbea447c942d5, 0x0a33a25ac40a26f8483151cc7c8088, 0x0060a2 ] } , - BigNum { limbs: [ 0x13cf484f4959217912415ab836bd2c, 0x9d1f8742b93e0c418fd6b7d55b84cb, 0x00134b ] } , - BigNum { limbs: [ 0x269bddbc2b9df4ce9a534745bfd613, 0xeb58904936dbdf2b8960761678b86c, 0x001fa4 ] } , - BigNum { limbs: [ 0x97082543d2be0a3165acb7ba4029ee, 0xbbfa9954466c540e4ea7938b5f4ce7, 0x005448 ] } , - BigNum { limbs: [ 0xc4c8739d4475765bf0e8fec7a9af22, 0xd3a3929c4bb36342213767f33397b9, 0x002c4c ] } , - BigNum { limbs: [ 0xf8db8f62b9e688a40f1700385650df, 0xd3af97013194cff7b6d0a1aea46d99, 0x0047a0 ] } , - BigNum { limbs: [ 0x8c7a99da8938647073084001146f23, 0x948861351141f0f5093f56be4518ad, 0x000b04 ] } , - BigNum { limbs: [ 0x3129692575239a8f8cf7befeeb90de, 0x12cac8686c064244cec8b2e392eca6, 0x0068e9 ] } , - BigNum { limbs: [ 0xab88365b6035748de74346b283c145, 0xa824ff74aa74280674d32da105c40d, 0x004f97 ] } , - BigNum { limbs: [ 0x121bcca49e268a7218bcb84d7c3ebc, 0xff2e2a28d2d40b336334dc00d24146, 0x002455 ] } , - BigNum { limbs: [ 0x76d28a9be629fb69e5dad127abcc9f, 0x7efc6393c8cfe857780d4fc57e7f03, 0x003ad2 ] } , - BigNum { limbs: [ 0x46d17864183203961a252dd8543362, 0x2856c609b4784ae25ffab9dc598650, 0x00391b ] } + BigNum { + limbs: [0x000000000000000000000000000001, 0x000000000000000000000000000000, 0x000000], + }, + BigNum { + limbs: [0xbda402fffe5bfeffffffff00000000, 0xa753299d7d483339d80809a1d80553, 0x0073ed], + }, + BigNum { + limbs: [0x030002760300000001000000000000, 0x0000000000008d51ccce760304d0ec, 0x000000], + }, + BigNum { + limbs: [0xbaa40089fb5bfefffeffff00000001, 0xa753299d7d47a5e80b39939ed33467, 0x0073ed], + }, + BigNum { + limbs: [0x8b21c28713b7007228fd3397743f7a, 0x66f603fa66e78c0625cd70d77ce2b3, 0x003457], + }, + BigNum { + limbs: [0x32824078eaa4fe8dd702cb688bc087, 0x405d25a31660a733b23a98ca5b22a0, 0x003f96], + }, + BigNum { + limbs: [0x74903694b04fd86037fe81ae99502e, 0xb22e5ce11044babc5affca86bf658e, 0x001333], + }, + BigNum { + limbs: [0x4913cc6b4e0c269fc8017d5166afd3, 0xf524ccbc6d03787d7d083f1b189fc5, 0x0060b9], + }, + BigNum { + limbs: [0xbeb312f20b6f7653ea61d87742bcce, 0xce9140267af9dd1c0af834cec32c17, 0x0020b1], + }, + BigNum { + limbs: [0xfef0f00df2ec88ac159e2688bd4333, 0xd8c1e977024e561dcd0fd4d314d93b, 0x00533b], + }, + BigNum { + limbs: [0xf4e672ebc1e1bb95df4b360411fe73, 0x596e753e4fcc6e92a9c460afca4a1e, 0x004f2c], + }, + BigNum { + limbs: [0xc8bd90143c7a436a20b4c8fbee018e, 0x4de4b45f2d7bc4a72e43a8f20dbb34, 0x0024c1], + }, + BigNum { + limbs: [0x7a6b6cfb0faca4807b811a823f728d, 0x919ec91f38ac5ccd4631f16edba496, 0x001edc], + }, + BigNum { + limbs: [0x43389604eeaf5a7f847ee47dc08d74, 0x15b4607e449bd66c91d61832fc60bd, 0x005511], + }, + BigNum { + limbs: [0xbc96af334c36bca1abb31fb37786b9, 0xf2dd7e0c63fccabf643eda8951f257, 0x0038c7], + }, + BigNum { + limbs: [0x010d53ccb225425e544cdf4c887948, 0xb475ab91194b687a73c92f188612fc, 0x003b25], + }, + BigNum { + limbs: [0x6e88fb4c38fb8a360c60997369df4e, 0x903a157988bab4bcd40e22f55448bf, 0x0050e0], + }, + BigNum { + limbs: [0x4f1b07b3c56074c9f39f658c9620b3, 0x17191423f48d7e7d03f9e6ac83bc94, 0x00230d], + }, + BigNum { + limbs: [0xbc7f62d13a6e1c3ec50c9031a36ca3, 0xc5837cb5fca206050b5832d1099726, 0x0065f6], + }, + BigNum { + limbs: [0x0124a02ec3ede2c13af36ece5c935e, 0xe1cface780a62d34ccafd6d0ce6e2d, 0x000df6], + }, + BigNum { + limbs: [0x3dc46688b5e11768cc0c58459f155b, 0x0457c83a7d9c5aea51f540eb0c0496, 0x002c7e], + }, + BigNum { + limbs: [0x7fdf9c77487ae79733f3a6ba60eaa6, 0xa2fb6162ffabd84f8612c8b6cc00bd, 0x00476f], + }, + BigNum { + limbs: [0xe943612401899720d4ed194fccfeb9, 0xda18a9d30564a8f0cfd2438f018c01, 0x005303], + }, + BigNum { + limbs: [0xd460a1dbfcd267df2b12e5b0330148, 0xcd3a7fca77e38a490835c612d67951, 0x0020e9], + }, + BigNum { + limbs: [0x317ae6451bb89de69679532ae1234c, 0x237e58fcced486fa69d8e4e48506e3, 0x000461], + }, + BigNum { + limbs: [0x8c291cbae2a361196986abd51edcb5, 0x83d4d0a0ae73ac3f6e2f24bd52fe70, 0x006f8c], + }, + BigNum { + limbs: [0x593d6ff6dab086ee5bcecc4e7773cb, 0xb16caf96816fa3a95d2d4016e2bd45, 0x00047c], + }, + BigNum { + limbs: [0x6466930923ab7811a43132b1888c36, 0xf5e67a06fbd88f907adac98af5480e, 0x006f70], + }, + BigNum { + limbs: [0xa6d195014b641082e68bc0bc50a88f, 0x5bb8ed54ae00468b04010fa5c79f62, 0x0056f3], + }, + BigNum { + limbs: [0x16d26dfeb2f7ee7d19743e43af5772, 0x4b9a3c48cf47ecaed406f9fc1065f1, 0x001cfa], + }, + BigNum { + limbs: [0x452d43f6d5756f51cb57e0e3035d15, 0xb9c6e6797777851425ea12dcacdae7, 0x001579], + }, + BigNum { + limbs: [0x7876bf0928e68fae34a81e1cfca2ec, 0xed8c432405d0ae25b21df6c52b2a6c, 0x005e73], + }, + BigNum { + limbs: [0x967f4be2f951558140d032f0a9ee53, 0x6345ec055e4d14a1e27164d8fdbd2d, 0x0045af], + }, + BigNum { + limbs: [0x2724b71d050aa97ebf2fcc0f5611ae, 0x440d3d981efb1e97f596a4c8da4826, 0x002e3e], + }, + BigNum { + limbs: [0xf20a6f5e1709899ddf46bac40ac8e4, 0x300e9079af0b916f129332ba2dfc0b, 0x0028eb], + }, + BigNum { + limbs: [0xcb9993a1e752756220b9443bf5371d, 0x77449923ce3ca1cac574d6e7aa0947, 0x004b02], + }, + BigNum { + limbs: [0xdc0ae311f00af48469ef4d246b6883, 0xad6a79b61c1a71d544f7800a7e4ae4, 0x005391], + }, + BigNum { + limbs: [0xe1991fee0e510a7b9610b1db94977e, 0xf9e8afe7612dc1649310899759ba6e, 0x00205b], + }, + BigNum { + limbs: [0x2e4312e6011bf5d941e9338fb466f7, 0x0520cdfb5d9d6c54cb86cdf73e9123, 0x0044ed], + }, + BigNum { + limbs: [0x8f60f019fd400926be16cb704b990a, 0xa2325ba21faac6e50c813baa997430, 0x002f00], + }, + BigNum { + limbs: [0x12abf7f3a89e7acf065a270f3c324f, 0x64fb4536c4fcf6ad66524f0376d9e4, 0x0054fa], + }, + BigNum { + limbs: [0xaaf80b0c55bd8430f9a5d7f0c3cdb2, 0x4257e466b84b3c8c71b5ba9e612b6f, 0x001ef3], + }, + BigNum { + limbs: [0x2a70a615d0b8e4d2fc5e69ac5db47f, 0x40ac57f86f5e293b1d67bc8de5d9a1, 0x000e48], + }, + BigNum { + limbs: [0x93335cea2da31a2d03a19553a24b82, 0x66a6d1a50dea09febaa04d13f22bb2, 0x0065a5], + }, + BigNum { + limbs: [0x1f590ef73ba2bdc0f1357a508e5e7b, 0x00aba73798bfaf59d0fc7261da7291, 0x0058c4], + }, + BigNum { + limbs: [0x9e4af408c2b9413f0eca84af71a186, 0xa6a78265e48883e0070b973ffd92c2, 0x001b29], + }, + BigNum { + limbs: [0x02e4e461e72e18ddc3b03ea91bc267, 0x785206b5761a878d670fcb570ab3b8, 0x006358], + }, + BigNum { + limbs: [0xbabf1e9e172de6223c4fc056e43d9a, 0x2f0122e8072dabac70f83e4acd519b, 0x001095], + }, + BigNum { + limbs: [0xc3ebf43c92a949a4593e1acca2cb6c, 0x8adc7bff16bae3ee1645113940cf46, 0x0053c7], + }, + BigNum { + limbs: [0xf9b80ec36bb2b55ba6c1e4335d3495, 0x1c76ad9e668d4f4bc1c2f86897360c, 0x002026], + }, + BigNum { + limbs: [0xe74ba2b75ca477f44e14739932aa33, 0x508a14adf95959d7d47f20aa9f0259, 0x0037d3], + }, + BigNum { + limbs: [0xd6586048a1b7870bb1eb8b66cd55ce, 0x56c914ef83eed9620388e8f73902f9, 0x003c1a], + }, + BigNum { + limbs: [0x9f1f01e2bbf0ac476e05bf67d4973c, 0xcc64ae610371dcd9ce528178852eaf, 0x005a50], + }, + BigNum { + limbs: [0x1e85011d426b52b891fa3f982b68c5, 0xdaee7b3c79d6566009b5882952d6a4, 0x00199c], + }, + BigNum { + limbs: [0x1ae51df978cc3878f4ee1de45ab2f2, 0x03824bef73c976407b9926e20836d2, 0x006e57], + }, + BigNum { + limbs: [0xa2bee506858fc6870b11e11ba54d0f, 0xa3d0ddae097ebcf95c6ee2bfcfce81, 0x000596], + }, + BigNum { + limbs: [0x7493f160ce4cb729b4cb21179cfb0e, 0x79931cfdd8947f799cf20f675fde6a, 0x00036b], + }, + BigNum { + limbs: [0x4910119f300f47d64b34dde86304f3, 0x2dc00c9fa4b3b3c03b15fa3a7826e9, 0x007082], + }, + BigNum { + limbs: [0x0664a566a603f98c15c05b1901cef2, 0xed2ec80a4115f20c57f6d7dc953305, 0x000afc], + }, + BigNum { + limbs: [0xb73f5d9958580573ea3fa3e6fe310f, 0xba2461933c32412d801131c542d24e, 0x0068f0], + }, + BigNum { + limbs: [0xe20d3cfc83311c0727b36db1974ef4, 0xd5fd4e2f04c5e7caaba64af676214e, 0x0028c6], + }, + BigNum { + limbs: [0xdb96c6037b2ae2f8d84c914e68b10d, 0xd155db6e78824b6f2c61beab61e404, 0x004b26], + }, + BigNum { + limbs: [0x36750f231bcd8672d73ebbe97445d5, 0x9ddec7fa8e98e4b5243a8bda7ca378, 0x000fe0], + }, + BigNum { + limbs: [0x872ef3dce28e788d28c143168bba2c, 0x097461a2eeaf4e84b3cd7dc75b61db, 0x00640d], + }, + BigNum { + limbs: [0xd0caac87f5713c5130c2c1660125be, 0x111413588742b7c68b4d7fdd60d098, 0x006898], + }, + BigNum { + limbs: [0xecd9567808eac2aecf3d3d99feda43, 0x963f1644f6057b734cba89c47734ba, 0x000b55], + }, + BigNum { + limbs: [0x30a34e5e4c7a31a0927a327c751043, 0x983de0110e23413ff88848100458b8, 0x0030d2], + }, + BigNum { + limbs: [0x8d00b4a1b1e1cd5f6d85cc838aefbe, 0x0f15498c6f24f1f9df7fc191d3ac9b, 0x00431b], + }, + BigNum { + limbs: [0x1e0777f7ef73e32ef7664cb2440ed4, 0xf5b7cb3dee5f01fe51c5b744878f5d, 0x00510d], + }, + BigNum { + limbs: [0x9f9c8b080ee81bd10899b24dbbf12d, 0xb19b5e5f8ee9313b8642525d5075f6, 0x0022df], + }, + BigNum { + limbs: [0x608393655b6d323eae9752b92f9726, 0x1a173d90ba01c42ee040e5579a63af, 0x0015ae], + }, + BigNum { + limbs: [0x5d206f9aa2eeccc15168ac46d068db, 0x8d3bec0cc3466f0af7c7244a3da1a4, 0x005e3f], + }, + BigNum { + limbs: [0x136819ab9c98a27528d588439e5b12, 0x3ae1cc22ee66ae3320a20450eb9bbf, 0x001a8f], + }, + BigNum { + limbs: [0xaa3be95461c35c8ad72a76bc61a4ef, 0x6c715d7a8ee18506b7660550ec6994, 0x00595e], + }, + BigNum { + limbs: [0xb0deac619bda2d4000b0b3767c9928, 0x0b00588ed2cf8b98c6ffcd682aa219, 0x0035c6], + }, + BigNum { + limbs: [0x0cc5569e6281d1bfff4f4b898366d9, 0x9c52d10eaa78a7a111083c39ad633a, 0x003e27], + }, + BigNum { + limbs: [0x95392351a789a318d303a266992f63, 0x6bb22f520df225302664820cb7fbf4, 0x00058e], + }, + BigNum { + limbs: [0x286adfae56d25be72cfc5c9966d09e, 0x3ba0fa4b6f560e09b1a3879520095f, 0x006e5f], + }, + BigNum { + limbs: [0x47df05ce549e034eb4bb5cc301906f, 0xace8a4aeb40b597e225a1da4156c04, 0x007144], + }, + BigNum { + limbs: [0x75c4fd31a9bdfbb14b44a23cfe6f92, 0xfa6a84eec93cd9bbb5adebfdc2994f, 0x0002a8], + }, + BigNum { + limbs: [0x7d9fd5726f6b40ed9fa5c032ec0a23, 0xa72e47136966a4512dec6b0a03377e, 0x005f2f], + }, + BigNum { + limbs: [0x40042d8d8ef0be12605a3ecd13f5de, 0x0024e28a13e18ee8aa1b9e97d4cdd5, 0x0014be], + }, + BigNum { + limbs: [0x3accee4e32febaa4f1f87d90884c5a, 0x5f6ba59c3994a84b028e307c93637f, 0x002254], + }, + BigNum { + limbs: [0x82d714b1cb5d445b0e07816f77b3a7, 0x47e7840143b38aeed579d92544a1d4, 0x005199], + }, + BigNum { + limbs: [0x9fa49ec41505c948af25b254d71df9, 0xdf508052e8d9a67bb3d018ed258f03, 0x006c1c], + }, + BigNum { + limbs: [0x1dff643be95635b750da4cab28e208, 0xc802a94a946e8cbe2437f0b4b27650, 0x0007d0], + }, + BigNum { + limbs: [0x0af27f081250e5bddd6dacba0b1d06, 0x9b0b4fa4971529805a2b04c50efc33, 0x005b75], + }, + BigNum { + limbs: [0xb2b183f7ec0b194222925245f4e2fb, 0x0c47d9f8e63309b97ddd04dcc90920, 0x001878], + }, + BigNum { + limbs: [0xffeee172f8ac74095e328eda2f8e5c, 0x8571ac60a4ce0468b4bb2b446edda9, 0x002904], + }, + BigNum { + limbs: [0xbdb5218d05af8af6a1cd7025d071a5, 0x21e17d3cd87a2ed1234cde5d6927a9, 0x004ae9], + }, + BigNum { + limbs: [0xfd4ee83f1b2499dbe21753938adf74, 0x09b8f9797bc1d44db4c7e28c3f15cb, 0x001aa9], + }, + BigNum { + limbs: [0xc0551ac0e33765241de8ab6c75208d, 0x9d9a302401865eec2340271598ef87, 0x005944], + }, + BigNum { + limbs: [0xfb82877b46d20d3f0ffba2ea149337, 0x83626bca158c398677e14a8cb7e715, 0x005815], + }, + BigNum { + limbs: [0xc2217b84b789f1c0f0045c15eb6cca, 0x23f0bdd367bbf9b36026bf15201e3d, 0x001bd8], + }, + BigNum { + limbs: [0xf0a42ec0e52a48c009cf2b0763b3d5, 0x72b23615cf703897e487b9c664354a, 0x0054b5], + }, + BigNum { + limbs: [0xccffd43f1931b63ff630d3f89c4c2c, 0x34a0f387add7faa1f3804fdb73d008, 0x001f38], + }, + BigNum { + limbs: [0xbdbdcad82928c864e8c456229dfdef, 0xd2940967b1a207e780cc7312dd5371, 0x0067ad], + }, + BigNum { + limbs: [0xffe63827d533369b173ba8dd620212, 0xd4bf2035cba62b52573b968efab1e1, 0x000c3f], + }, + BigNum { + limbs: [0x4b0f40448ca04c44568101d845f71f, 0x150315161c3e6e8ba6f2374a655d9d, 0x005318], + }, + BigNum { + limbs: [0x7294c2bb71bbb2bba97efd27ba08e2, 0x925014876109c4ae3115d25772a7b6, 0x0020d5], + }, + BigNum { + limbs: [0xe21a225b58e59f1d3e494f87fd6d91, 0x8bf565feb0f7bdf7f8f0d267d1ae2a, 0x00249a], + }, + BigNum { + limbs: [0xdb89e0a4a5765fe2c1b6af78029270, 0x1b5dc39ecc507541df17373a065728, 0x004f53], + }, + BigNum { + limbs: [0x94a89651aca0ff810d9cff570736e9, 0x46355ac0cbecc13494e5cc0ae758c6, 0x006c43], + }, + BigNum { + limbs: [0x28fb6cae51baff7ef262ffa8f8c918, 0x611dcedcb15b720543223d96f0ac8d, 0x0007aa], + }, + BigNum { + limbs: [0x9486bb67912a2b440dab45cd1fac5b, 0x03d7743e9a0675583bdb136e9f86e1, 0x001a9d], + }, + BigNum { + limbs: [0x291d47986d31d3bbf254b932e053a6, 0xa37bb55ee341bde19c2cf633387e72, 0x005950], + }, + BigNum { + limbs: [0x6fb582ac74db12571ba2fccf28601b, 0xfa8d52f970ba51420be43501370b16, 0x001996], + }, + BigNum { + limbs: [0x4dee80538980eca8e45d0230d79fe6, 0xacc5d6a40c8de1f7cc23d4a0a0fa3d, 0x005a56], + }, + BigNum { + limbs: [0x8a65bc0f8e4d1ecdd815ee4d942bee, 0xa05ea5c70ef50d10f88231dde2f6e1, 0x003336], + }, + BigNum { + limbs: [0x333e46f0700ee03227ea10b26bd413, 0x06f483d66e532628df85d7c3f50e72, 0x0040b7], + }, + BigNum { + limbs: [0x56ab6223eff0406e175e44c490cbc0, 0x7a32e902f9e85187145dfaed820595, 0x0059dc], + }, + BigNum { + limbs: [0x66f8a0dc0e6bbe91e8a1ba3b6f3441, 0x2d20409a835fe1b2c3aa0eb455ffbe, 0x001a11], + }, + BigNum { + limbs: [0x4492b6f43bb51eca7dadda50f555e4, 0x9040823a88e7b6a42eb341ff879cb0, 0x006025], + }, + BigNum { + limbs: [0x79114c0bc2a6e035825224af0aaa1d, 0x1712a762f4607c95a954c7a25068a3, 0x0013c8], + }, + BigNum { + limbs: [0xc85f7efbd6188bb08956f964517062, 0x2b7d27b4c23e09768a7087f0cc2629, 0x001356], + }, + BigNum { + limbs: [0xf54484042843734f76a9059bae8f9f, 0x7bd601e8bb0a29c34d9781b10bdf29, 0x006097], + }, + BigNum { + limbs: [0xae4a21d39a23bee9dc91a650a90e49, 0x59d76ca02af7f2f3e98766f8c9185c, 0x0016c3], + }, + BigNum { + limbs: [0x0f59e12c64384016236e58af56f1b8, 0x4d7bbcfd52504045ee80a2a90eecf7, 0x005d2a], + }, + BigNum { + limbs: [0xc708b8b84ee699a565af7a806913be, 0x169d8ee087328d16baf2bdd5e94641, 0x002db7], + }, + BigNum { + limbs: [0xf69b4a47af75655a9a50847f96ec43, 0x90b59abcf615a6231d154bcbeebf11, 0x004636], + }, + BigNum { + limbs: [0xfb135ff413a356d5f57c79b59b2332, 0x73726e9409979c7943d6a33bc39345, 0x0061f2], + }, + BigNum { + limbs: [0xc290a30beab8a82a0a83854a64dccf, 0x33e0bb0973b096c09431666614720d, 0x0011fb], + }, + BigNum { + limbs: [0x71082d2903a1ac633d3e92c7ca8ccf, 0x59c69ed3df9941205e1bb9264c6a7c, 0x003c9f], + }, + BigNum { + limbs: [0x4c9bd5d6faba529cc2c16c38357332, 0x4d8c8ac99daef21979ec507b8b9ad7, 0x00374e], + }, + BigNum { + limbs: [0x409954448fd0a2dbcc4af4074489e8, 0xe4668304bec207238a67fd3278fde6, 0x001bce], + }, + BigNum { + limbs: [0x7d0aaebb6e8b5c2433b50af8bb7619, 0xc2eca698be862c164da00c6f5f076d, 0x00581e], + }, + BigNum { + limbs: [0x3c9d94a870e33f9df832cfdf2062ef, 0xb766f5943eadc0dcf3788fe23b2f53, 0x001325], + }, + BigNum { + limbs: [0x81066e578d78bf6207cd2f20df9d12, 0xefec34093e9a725ce48f79bf9cd600, 0x0060c7], + }, + BigNum { + limbs: [0x0865a899e8deff4935bd2f817f694b, 0x4098e2e9f12e6b368121ac0cf4ad0a, 0x004f9b], + }, + BigNum { + limbs: [0xb53e5a66157cffb6ca42cf7e8096b6, 0x66ba46b38c19c80356e65d94e35849, 0x002452], + }, + BigNum { + limbs: [0x505ce32828420562b851e3d2a34df5, 0x0aa154b7afb7604ccbce3186331764, 0x00663d], + }, + BigNum { + limbs: [0x6d471fd7d619f99d47ae1b2d5cb20c, 0x9cb1d4e5cd90d2ed0c39d81ba4edef, 0x000db0], + }, + BigNum { + limbs: [0x39e2b6fbd943d0adc24eba36b7578e, 0x29432977ae6a072570e877993c3d74, 0x005a06], + }, + BigNum { + limbs: [0x83c14c0425182e523db144c948a873, 0x7e100025cede2c14671f92089bc7df, 0x0019e7], + }, + BigNum { + limbs: [0xcc59c903893ca8829235424bc52016, 0x03442f2fb2879a8a9d78c4fed2b2ba, 0x004d35], + }, + BigNum { + limbs: [0xf14a39fc751f567d6dcabcb43adfeb, 0xa40efa6dcac098af3a8f44a3055298, 0x0026b8], + }, + BigNum { + limbs: [0x8469e061a1c6905718b817f3ccad48, 0x97adfcf78a922bf7a6f6d02f061235, 0x005335], + }, + BigNum { + limbs: [0x393a229e5c956ea8e747e70c3352b9, 0x0fa52ca5f2b6074231113972d1f31e, 0x0020b8], + }, + BigNum { + limbs: [0x275f891994324c998731ee0c78437a, 0x57052117e1e151ea52ef08f1e06c38, 0x004ba3], + }, + BigNum { + limbs: [0x964479e66a29b26678ce10f387bc87, 0x504e08859b66e14f851900aff7991b, 0x00284a], + }, + BigNum { + limbs: [0xdcd43dec9acd7108993b54226b7f93, 0x3f58561023a7fa481d537345cf6530, 0x004208], + }, + BigNum { + limbs: [0xe0cfc513638e8df766c4aadd94806e, 0x67fad38d59a038f1bab4965c08a022, 0x0031e5], + }, + BigNum { + limbs: [0xb309ae850664dec3e268216bdc4a30, 0x6d8cebced82bc53c32396daedbf90a, 0x000c11], + }, + BigNum { + limbs: [0x0a9a547af7f7203c1d97dd9423b5d1, 0x39c63dcea51c6dfda5ce9bf2fc0c49, 0x0067dc], + }, + BigNum { + limbs: [0x10ed5bae398c9c164881d4baa8a72e, 0x37284ec1415dde48a52a93151b352e, 0x004432], + }, + BigNum { + limbs: [0xacb6a751c4cf62e9b77e2a455758d3, 0x702adadc3bea54f132dd768cbcd025, 0x002fbb], + }, + BigNum { + limbs: [0x7fcad29e98164375352d72a0c9539a, 0xe61a3a2a9b39fcf3ec5eda0ddb53a0, 0x0042a2], + }, + BigNum { + limbs: [0x3dd930616645bb8acad28c5f36ac67, 0xc138ef72e20e3645eba92f93fcb1b3, 0x00314a], + }, + BigNum { + limbs: [0x72c833e4cf3499ecbf5d6f01ea2fe8, 0xdb96249a23e969ac30e42135fbc427, 0x00485a], + }, + BigNum { + limbs: [0x4adbcf1b2f27651340a28ffe15d019, 0xcbbd0503595ec98da723e86bdc412c, 0x002b92], + }, + BigNum { + limbs: [0xf67b913ee947b92fef56114b49c75d, 0x15ee4db709aa6e492ff0b0d05658b6, 0x0002b3], + }, + BigNum { + limbs: [0xc72871c1151445d010a9edb4b638a4, 0x9164dbe6739dc4f0a81758d181ac9c, 0x00713a], + }, + BigNum { + limbs: [0x576cd5a085170dfba96832adfa9266, 0x0f08c01d85df59b31745ff67db9e8b, 0x004e34], + }, + BigNum { + limbs: [0x66372d5f7944f1045697cc52056d9b, 0x984a697ff768d986c0c20a39fc66c8, 0x0025b9], + }, + BigNum { + limbs: [0x0bf5a0bea3c2ee335ab15ecceb6a2d, 0xf883ceaa889c7f2b1554800870c74e, 0x005daf], + }, + BigNum { + limbs: [0xb1ae62415a9910cca54ea0331495d4, 0xaecf5af2f4abb40ec2b38999673e05, 0x00163d], + }, + BigNum { + limbs: [0xce26afb69019f7ee3b38a3813633f1, 0xacd7204034884021f50f21b39e1d96, 0x006743], + }, + BigNum { + limbs: [0xef7d53496e420711c4c75b7ec9cc10, 0xfa7c095d48bff317e2f8e7ee39e7bc, 0x000ca9], + }, + BigNum { + limbs: [0xa0eb428f0d8dccd165b2490ec7254e, 0x4dd24ebf1658766f71f92679eccdd9, 0x000959], + }, + BigNum { + limbs: [0x1cb8c070f0ce322e9a4db5f138dab3, 0x5980dade66efbcca660ee327eb377a, 0x006a94], + }, + BigNum { + limbs: [0x8df3051d69e220022193b333c3b855, 0x287007cdc98e2e1a54f5ed6dac0e6e, 0x003683], + }, + BigNum { + limbs: [0x2fb0fde29479defdde6c4bcc3c47ac, 0x7ee321cfb3ba051f83121c342bf6e5, 0x003d6a], + }, + BigNum { + limbs: [0xafcb31434545d82efcfdaf4e265ab7, 0xb48988b9dbae9a54b1f2bebcea8bca, 0x002fb2], + }, + BigNum { + limbs: [0x0dd8d1bcb91626d103024fb1d9a54a, 0xf2c9a0e3a19998e526154ae4ed7989, 0x00443a], + }, + BigNum { + limbs: [0x730e303c173e1c090bcdd715521bb1, 0x7940ac524648faaf9f04b421b462f2, 0x0046aa], + }, + BigNum { + limbs: [0x4a95d2c3e71de2f6f43227eaade450, 0x2e127d4b36ff388a3903558023a261, 0x002d43], + }, + BigNum { + limbs: [0xa69d8f42e2c25b26dd05e4c4aec099, 0x5a6d7f643b5a2dee35b6cf12739eaf, 0x003dc4], + }, + BigNum { + limbs: [0x170673bd1b99a3d922fa1a3b513f68, 0x4ce5aa3941ee054ba2513a8f6466a4, 0x003629], + }, + BigNum { + limbs: [0x3d29335383e69a148277eef8c0a297, 0x64192e295d851bd07fc9fc34abead9, 0x00328f], + }, + BigNum { + limbs: [0x807acfac7a7564eb7d8810073f5d6a, 0x4339fb741fc31769583e0d6d2c1a7a, 0x00415e], + }, + BigNum { + limbs: [0x2c84f3154125602cabadec2fe322b8, 0xda59a33dcbf232a732ae1a3b0aef75, 0x002e95], + }, + BigNum { + limbs: [0x911f0feabd369ed3545212d01cdd49, 0xccf9865fb1560092a559ef66cd15de, 0x004557], + }, + BigNum { + limbs: [0x7570b00fca5c9a520c8c4d748fb509, 0x55665267f0974b35861cb1da153a8b, 0x003d06], + }, + BigNum { + limbs: [0x483352f033ff64adf373b18b704af8, 0x51ecd7358cb0e80451eb57c7c2cac8, 0x0036e7], + }, + BigNum { + limbs: [0x330977b7a8bfe99ca730e689c0bf9e, 0x7d2fce8520d1f5109fa0d7553d937a, 0x0000aa], + }, + BigNum { + limbs: [0x8a9a8b48559c156358cf18763f4063, 0x2a235b185c763e293867324c9a71d9, 0x007343], + }, + BigNum { + limbs: [0x4628b567af1bb4e3d5dbe0d2f73e41, 0xb74a12568801be1e72f2066186fa64, 0x006eca], + }, + BigNum { + limbs: [0x777b4d984f404a1c2a241e2d08c1c0, 0xf0091746f546751b65160340510aef, 0x000522], + }, + BigNum { + limbs: [0x5f56946340fdfc3b2bcdccf1ec7b16, 0x9e7e1c0691a3bae4d7a5261114f26f, 0x0055e2], + }, + BigNum { + limbs: [0x5e4d6e9cbd5e02c4d432320e1384eb, 0x08d50d96eba478550062e390c312e4, 0x001e0b], + }, + BigNum { + limbs: [0x01cd8bef1b22603e16064aa9a77770, 0x214dfb1c37d97fb60b67a741a4eee4, 0x006635], + }, + BigNum { + limbs: [0xbbd67710e3399ec1e9f9b456588891, 0x86052e81456eb383cca0626033166f, 0x000db8], + }, + BigNum { + limbs: [0xab3ea313c630b6754ceec2fde25881, 0x29cbca5aa4231b2b2fbdb88c0832f1, 0x002043], + }, + BigNum { + limbs: [0x12655fec382b488ab3113c021da780, 0x7d875f42d925180ea84a5115cfd262, 0x0053aa], + }, + BigNum { + limbs: [0x54e5045f96bdb5b46b6df596ba6ecf, 0xd3064ba6d18615e83527ce053b131c, 0x0055e9], + }, + BigNum { + limbs: [0x68befea0679e494b94920969459132, 0xd44cddf6abc21d51a2e03b9c9cf237, 0x001e03], + }, + BigNum { + limbs: [0x54642678ea64b7408a86452d1142b4, 0x14a479d7e1869cfafd436d7b412b06, 0x005c62], + }, + BigNum { + limbs: [0x693fdc8713f747bf7579b9d2eebd4d, 0x92aeafc59bc1963edac49c2696da4d, 0x00178b], + }, + BigNum { + limbs: [0x771d65b2ee56d3198a034b1e705c0e, 0x117113c5d5a3e04369454396c3893c, 0x00255c], + }, + BigNum { + limbs: [0x46869d4d10052be675fcb3e18fa3f3, 0x95e215d7a7a452f66ec2c60b147c17, 0x004e91], + }, + BigNum { + limbs: [0xc93f37bda7b84b0c06f42c4fa19fd3, 0xbb72051a32b8635dba604a48d7ba10, 0x003d0b], + }, + BigNum { + limbs: [0xf464cb4256a3b3f3f90bd2b05e602e, 0xebe124834a8fcfdc1da7bf59004b42, 0x0036e1], + }, + BigNum { + limbs: [0x7d52a475e8ce1152a4c44c49a49f1e, 0x1bd32e1843bc1a3ef55558b56d6d42, 0x006dee], + }, + BigNum { + limbs: [0x40515e8a158dedad5b3bb2b65b60e3, 0x8b7ffb85398c18fae2b2b0ec6a9811, 0x0005ff], + }, + BigNum { + limbs: [0x4ef4c6bf3fe0c6c7ea608db8cd652c, 0x7ca6fc96f67ff5389b96856be8b140, 0x001df5], + }, + BigNum { + limbs: [0x6eaf3c40be7b3838159f7147329ad5, 0x2aac2d0686c83e013c718435ef5413, 0x0055f8], + }, + BigNum { + limbs: [0x38cc4f07468cebd78b1ef5748164e7, 0x56c04012bb93b8a0671498f387398d, 0x005e68], + }, + BigNum { + limbs: [0x84d7b3f8b7cf132874e1098b7e9b1a, 0x5092e98ac1b47a9970f370ae50cbc6, 0x001585], + }, + BigNum { + limbs: [0x6041cee0c4bdac8586e7bf3217bc38, 0x75545a9dcb2faf33b868f0e27d4ed6, 0x000a79], + }, + BigNum { + limbs: [0x5d62341f399e527a79183fcde843c9, 0x31feceffb21884061f9f18bf5ab67d, 0x006974], + }, + BigNum { + limbs: [0x8111d9b58068eda22cb0c0043581b8, 0x5f69535823b4eea87dbd8b3e7293c0, 0x004118], + }, + BigNum { + limbs: [0x3c92294a7df3115dd34f3efbca7e49, 0x47e9d645599344915a4a7e63657193, 0x0032d5], + }, + BigNum { + limbs: [0x01fb897d05b8538dfcd4912667f55f, 0x2898a7c259a810a20368471f6635e8, 0x0064e3], + }, + BigNum { + limbs: [0xbba87982f8a3ab72032b6dd9980aa2, 0x7eba81db23a02297d49fc28271cf6b, 0x000f0a], + }, + BigNum { + limbs: [0x6cbfc87f549eb20f15758baad3fcf4, 0x7eef82a73dc4782fd931be0cba8ab0, 0x0018e1], + }, + BigNum { + limbs: [0x50e43a80a9bd4cf0ea8a73552c030d, 0x2863a6f63f83bb09fed64b951d7aa3, 0x005b0c], + }, + BigNum { + limbs: [0x04a2294bb265301622dd5a6889a8e8, 0x0e0589dd793aa51bfee012ab18ba91, 0x00362f], + }, + BigNum { + limbs: [0xb901d9b44bf6cee9dd22a497765719, 0x994d9fc0040d8e1dd927f6f6bf4ac2, 0x003dbe], + }, + BigNum { + limbs: [0x1b8dd0e729d15d3f10f3a9abb257e1, 0x83b64fd60550e6c6e2fafbc3c935b1, 0x003718], + }, + BigNum { + limbs: [0xa2163218d48aa1c0ef0c55544da820, 0x239cd9c777f74c72f50d0dde0ecfa2, 0x003cd5], + }, + BigNum { + limbs: [0xc59162052451257675b5beeb6153ca, 0x7850ce28f03eea18ac2f59bed4eb36, 0x004405], + }, + BigNum { + limbs: [0xf812a0fada0ad9898a4a40149eac37, 0x2f025b748d0949212bd8afe3031a1c, 0x002fe8], + }, + BigNum { + limbs: [0x80f5ffdc6ac2e316a9e3e795d08887, 0xba2e026f2459a189d7e4af45dab593, 0x000688], + }, + BigNum { + limbs: [0x3cae032393991be9561c176a2f777a, 0xed25272e58ee91b000235a5bfd4fc0, 0x006d64], + }, + BigNum { + limbs: [0x78af6ba70b7705f1af8f454525fd66, 0xb1110b25238c7d7128741250354861, 0x004c33], + }, + BigNum { + limbs: [0x44f49758f2e4f90e5070b9bada029b, 0xf6421e7859bbb5c8af93f751a2bcf2, 0x0027b9], + }, + BigNum { + limbs: [0x3ec884963a020ab3e6eed5afa1109b, 0xced439e3c7897f5870bc08c4081661, 0x005db4], + }, + BigNum { + limbs: [0x7edb7e69c459f44c191129505eef66, 0xd87eefb9b5beb3e1674c00ddcfeef2, 0x001638], + }, + BigNum { + limbs: [0xffa1a105df6b8a7429c1fa7a88c247, 0xe1cbced44b4c46145a561c41e22acf, 0x000701], + }, + BigNum { + limbs: [0xbe0261fa1ef0748bd63e0485773dba, 0xc5875ac931fbed257db1ed5ff5da83, 0x006ceb], + }, + BigNum { + limbs: [0x72266b93838c16cd4b696e7ea423f1, 0x1336b5ca226c34c543b8647ce9de4c, 0x000c72], + }, + BigNum { + limbs: [0x4b7d976c7acfe832b49690815bdc10, 0x941c73d35adbfe74944fa524ee2707, 0x00677b], + }, + BigNum { + limbs: [0x6a4f579172314a0ff8423daf2fdb50, 0xfcd83aa5a469524e3a763bb50b0994, 0x0054c0], + }, + BigNum { + limbs: [0x5354ab6e8c2ab4f007bdc150d024b1, 0xaa7aeef7d8dee0eb9d91cdecccfbbf, 0x001f2c], + }, + BigNum { + limbs: [0x2feb30d6711c70e95f38660e9d1536, 0xd7d20dac46ed6eae360ede81eba8db, 0x000832], + }, + BigNum { + limbs: [0x8db8d2298d3f8e16a0c798f162eacb, 0xcf811bf1365ac48ba1f92b1fec5c78, 0x006bba], + }, + BigNum { + limbs: [0x0e24ef2f570c8a24438957b3e25619, 0x0e58dcdd8ce7f82295c732d111a2b2, 0x001a66], + }, + BigNum { + limbs: [0xaf7f13d0a74f74dbbc76a74c1da9e8, 0x98fa4cbff0603b174240d6d0c662a1, 0x005987], + }, + BigNum { + limbs: [0xa33e0d6b4dc2d87ee857bf1f253512, 0x8b55856bf49320c8b3bf4746e7abf6, 0x004877], + }, + BigNum { + limbs: [0x1a65f594b099268117a83fe0dacaef, 0x1bfda43188b512712448c25af0595d, 0x002b76], + }, + BigNum { + limbs: [0x1764ae9a77652c25c83bb50749f0af, 0x7bc7ac9a877903f012dba811a16818, 0x005e0b], + }, + BigNum { + limbs: [0xa63f546586f6d2da37c449f8b60f52, 0x2b8b7d02f5cf2f49c52c6190369d3b, 0x0015e2], + }, + BigNum { + limbs: [0xca8e5c4d2dc5ffd2878366fcec15ba, 0x702dd52769aebdb6bf288d790d89bd, 0x005d19], + }, + BigNum { + limbs: [0xf315a6b2d095ff2d787c980313ea47, 0x372554761399758318df7c28ca7b95, 0x0016d4], + }, + BigNum { + limbs: [0x3d7e9803ec74e17a030cc2de5db52b, 0xdbf168716b60e5789556beff8edeb6, 0x001d12], + }, + BigNum { + limbs: [0x80256afc11e71d85fcf33c21a24ad6, 0xcb61c12c11e74dc142b14aa249269d, 0x0056da], + }, + BigNum { + limbs: [0x7d166d26d7d13fef678c866ccd32d7, 0x1642c7524b471810c6122bee51ba89, 0x00725d], + }, + BigNum { + limbs: [0x408d95d9268abf109873789332cd2a, 0x9110624b32011b2911f5ddb3864aca, 0x000190], + }, + BigNum { + limbs: [0x03788dd25be1b072994949fe8dda46, 0x315227033bb160f1e69f8f0320b088, 0x00622c], + }, + BigNum { + limbs: [0xba2b752da27a4e8d66b6b5017225bb, 0x7601029a4196d247f1687a9eb754cb, 0x0011c1], + }, + BigNum { + limbs: [0x785fd8b3542a38a4a7a41d55234864, 0x2b04f3a711b74789f746a17afd9bde, 0x00241f], + }, + BigNum { + limbs: [0x45442a4caa31c65b585be1aadcb79d, 0x7c4e35f66b90ebafe0c16826da6975, 0x004fce], + }, + BigNum { + limbs: [0xbff88c0b7e4246f003cd6e73efb611, 0x0fdde70e992d0cc516e3bb219c82aa, 0x00146d], + }, + BigNum { + limbs: [0xfdab76f48019b80ffc32908c1049f0, 0x9775428ee41b2674c1244e803b82a8, 0x005f80], + }, + BigNum { + limbs: [0x40e7eb01aad13b85caa34fd9b2b6ce, 0xb1d9346b1f74337b8c94b4e3a208e5, 0x007275], + }, + BigNum { + limbs: [0x7cbc17fe538ac37a355caf264d4933, 0xf579f5325dd3ffbe4b7354be35fc6e, 0x000177], + }, + BigNum { + limbs: [0x679941d7e3344ac1f99b485bb67d21, 0xd9e4727786c36067482e2d9445f9ef, 0x005aef], + }, + BigNum { + limbs: [0x560ac1281b27b43e0664b6a44982e0, 0xcd6eb725f684d2d28fd9dc0d920b64, 0x0018fd], + }, + BigNum { + limbs: [0xda7cb26fe41c7fe6b19f0b5eadf9cb, 0x1c67b10780e18ea3e9254dbb27ead7, 0x001c02], + }, + BigNum { + limbs: [0xe32750901a3f7f194e60f3a1520636, 0x8aeb7895fc66a495eee2bbe6b01a7b, 0x0057eb], + }, + BigNum { + limbs: [0xafd9f0df88a27eefe8ef07b5048efa, 0x742370737a124164b50a572c9c65ee, 0x000ad7], + }, + BigNum { + limbs: [0x0dca122075b980101710f74afb7107, 0x332fb92a0335f1d522fdb2753b9f65, 0x006916], + }, + BigNum { + limbs: [0xde4d06174139246cfaf4c817c13fe6, 0x0e1ec7a28bb857f5f1a3b50f2b7f30, 0x0000c5], + }, + BigNum { + limbs: [0xdf56fce8bd22da93050b36e83ec01b, 0x993461faf18fdb43e6645492ac8622, 0x007328], + }, + BigNum { + limbs: [0x42551c91b1af3382fe7994226a7881, 0x30fb21510ba3cb52d65ec3b820f174, 0x005b33], + }, + BigNum { + limbs: [0x7b4ee66e4caccb7d01866add958780, 0x7658084c71a467e701a945e9b713df, 0x0018ba], + }, + BigNum { + limbs: [0x97168a3a6000fe4541b8ff2ee0434e, 0x66525526a65439feec240d80689fd6, 0x000951], + }, + BigNum { + limbs: [0x268d78c59e5b00babe46ffd11fbcb3, 0x4100d476d6f3f93aebe3fc216f657d, 0x006a9c], + }, + BigNum { + limbs: [0xa07e9cbe5a10af2a5e7b785841a1da, 0xb67ad287bb0f9589c90d5aa47634ea, 0x00668d], + }, + BigNum { + limbs: [0x1d256641a44b4fd5a18486a7be5e27, 0xf0d85715c2389db00efaaefd61d069, 0x000d5f], + }, + BigNum { + limbs: [0x6c91b560c5b82c9b2ee1a0bf112931, 0xdc55e43f779e0eace99e48f3d3cad6, 0x00243a], + }, + BigNum { + limbs: [0x51124d9f38a3d264d11e5e40eed6d0, 0xcafd455e05aa248cee69c0ae043a7d, 0x004fb2], + }, + BigNum { + limbs: [0x424f00b1a2b32fa0eaaaa3583a6b80, 0x91a1889c6ab2045e7a34773491a611, 0x003362], + }, + BigNum { + limbs: [0x7b55024e5ba8cf5f15555ba7c59481, 0x15b1a10112962edb5dd3926d465f42, 0x00408b], + }, + BigNum { + limbs: [0x0c078154d7c539a4c94125ad9dc176, 0x0931b15c62562ce4ba2c4bf31f353e, 0x006905], + }, + BigNum { + limbs: [0xb19c81ab2696c55b36bed952623e8b, 0x9e2178411af206551ddbbdaeb8d015, 0x000ae8], + }, + BigNum { + limbs: [0x9ad324193961627372e26d5720949f, 0x2ca6312ad70d5e3ab4ed8e1c3483aa, 0x0004a4], + }, + BigNum { + limbs: [0x22d0dee6c4fa9c8c8d1d91a8df6b62, 0x7aacf872a63ad4ff231a7b85a381a9, 0x006f49], + }, + BigNum { + limbs: [0xdf8723cf6834a9b16c92903c30681c, 0x7af602a41b0e4a7055b0fa4b32af44, 0x002a33], + }, + BigNum { + limbs: [0xde1cdf309627554e936d6ec3cf97e5, 0x2c5d26f96239e8c982570f56a5560e, 0x0049ba], + }, + BigNum { + limbs: [0xa005008f5fa2fe6cd888c85ca05ae9, 0xeeb1a28cdf1a91ecc533285f28b4ad, 0x001b61], + }, + BigNum { + limbs: [0x1d9f02709eb90093277736a35fa518, 0xb8a187109e2da14d12d4e142af50a6, 0x00588b], + }, + BigNum { + limbs: [0xec083a342b6152dc6c5431b7a01194, 0x444efe927bc8a141881064cd54d304, 0x002aaf], + }, + BigNum { + limbs: [0xd19bc8cbd2faac2393abcd485fee6d, 0x63042b0b017f91f84ff7a4d483324e, 0x00493e], + }, + BigNum { + limbs: [0xbf1d8539e5c50b799bd1773c3aadf2, 0xd6eec90f1e192c0cc5b558b3509c77, 0x00455e], + }, + BigNum { + limbs: [0xfe867dc61896f386642e87c3c5520f, 0xd064608e5f2f072d1252b0ee8768db, 0x002e8e], + }, + BigNum { + limbs: [0x4148b024d3ffa61cfd232fb7ac2d01, 0x8edaee2eeaed1ac42c62e56cb955a3, 0x0058ad], + }, + BigNum { + limbs: [0x7c5b52db2a5c58e302dccf4853d300, 0x18783b6e925b1875aba524351eafb0, 0x001b40], + }, + BigNum { + limbs: [0x8bf3cd9093c0a2b6e7d38c824464d3, 0x5f24ab69299e82782d7daff3118923, 0x00223a], + }, + BigNum { + limbs: [0x31b0356f6a9b5c49182c727dbb9b2e, 0x482e7e3453a9b0c1aa8a59aec67c30, 0x0051b3], + }, + BigNum { + limbs: [0xd0cb7ff2325177578545b4e64baae6, 0x86f9eb22d5720a288c1ac768fd31db, 0x00344b], + }, + BigNum { + limbs: [0xecd8830dcc0a87a87aba4a19b4551b, 0x20593e7aa7d629114bed4238dad377, 0x003fa2], + }, + BigNum { + limbs: [0x49071f297def3c20da606ff4a3ba2b, 0x096ad9987ad9cbf93d062b4fda502a, 0x0072bf], + }, + BigNum { + limbs: [0x749ce3d6806cc2df259f8f0b5c45d6, 0x9de85005026e67409b01de51fdb529, 0x00012e], + }, + BigNum { + limbs: [0x9d3446b5219ed92c78c12b5913ffa2, 0x02082ceecbc03f01ab9eac85850baf, 0x0049e6], + }, + BigNum { + limbs: [0x206fbc4adcbd25d3873ed3a6ec005f, 0xa54afcaeb187f4382c695d1c52f9a4, 0x002a07], + }, + BigNum { + limbs: [0xb7b50e5693aeb64287ce1144fcf019, 0x4f3eb4931089c5be3aa28cfc810120, 0x00352c], + }, + BigNum { + limbs: [0x05eef4a96aad48bd7831edbb030fe8, 0x5814750a6cbe6d7b9d657ca5570433, 0x003ec1], + }, + BigNum { + limbs: [0x30d9ac186fc5451f5753e3ccc4922e, 0x33f624c17d074b024c21cfa2302540, 0x0041ae], + }, + BigNum { + limbs: [0x8cca56e78e96b9e0a8ac1b333b6dd3, 0x735d04dc0040e8378be639ffa7e013, 0x00323f], + }, + BigNum { + limbs: [0x4de56daf67ef102318f1f6844036ac, 0x01b7108f6c67604297e1df5b7fe9fe, 0x007097], + }, + BigNum { + limbs: [0x6fbe9550966ceedce70e087bbfc955, 0xa59c190e10e0d2f740262a46581b55, 0x000356], + }, + BigNum { + limbs: [0xdc15bbb51c14b8bde69ad1be866e28, 0x4d702f536f1aef56d22dab86198a12, 0x005741], + }, + BigNum { + limbs: [0xe18e474ae247464219652d417991d9, 0x59e2fa4a0e2d43e305da5e1bbe7b40, 0x001cac], + }, + BigNum { + limbs: [0x148b46fc8a9536b994f7e88da69099, 0xc54dedb0dd5c00f2b6fdeb2434990d, 0x0054a9], + }, + BigNum { + limbs: [0xa918bc0373c6c8466b081672596f68, 0xe2053bec9fec3247210a1e7da36c46, 0x001f43], + }, + BigNum { + limbs: [0xe0344c49d79b66f214cc49a9ca287b, 0x7bd852e497f37956c16f3a78ae28ee, 0x0051ec], + }, + BigNum { + limbs: [0xdd6fb6b626c0980deb33b55635d786, 0x2b7ad6b8e554b9e31698cf2929dc64, 0x002201], + }, + BigNum { + limbs: [0x29e9208281d2988e92a08175236817, 0x8c4fc8876304b7701b97622a206b2e, 0x000f79], + }, + BigNum { + limbs: [0x93bae27d7c8966716d5f7d8adc97ea, 0x1b0361161a437bc9bc70a777b79a25, 0x006474], + }, + BigNum { + limbs: [0x2d67a18dc838277b51fa789fe811c1, 0x6d59e26f95d8df3b80de686838f4c0, 0x00420a], + }, + BigNum { + limbs: [0x903c61723623d784ae05866017ee40, 0x39f9472de76f53fe5729a1399f1093, 0x0031e3], + }, + BigNum { + limbs: [0x98ce89ad3c4462f52172b7909c822f, 0x0f6f20aebd433bab579958add5d563, 0x000238], + }, + BigNum { + limbs: [0x24d57952c2179c0ade8d476f637dd2, 0x97e408eec004f78e806eb0f4022ff0, 0x0071b5], + }, + BigNum { + limbs: [0xad8bd407c8c41c02e2f94cd781d69e, 0xec60d8a45e9d074f9aa0ec1140c136, 0x0017c1], + }, + BigNum { + limbs: [0x10182ef83597e2fd1d06b2287e2963, 0xbaf250f91eab2bea3d671d9097441d, 0x005c2b], + }, + BigNum { + limbs: [0x0d246202280193fea7c33496a345f2, 0xbad21bb26cbe0156dd6f2d56b9c192, 0x0059a2], + }, + BigNum { + limbs: [0xb07fa0fdd65a6b01583cca695cba0f, 0xec810deb108a31e2fa98dc4b1e43c1, 0x001a4a], + }, + BigNum { + limbs: [0xb9bbd9b0a3590b2ee4c0317b41459b, 0x8c1a3548e372b5c82a603c67a3a3ba, 0x0016fd], + }, + BigNum { + limbs: [0x03e8294f5b02f3d11b3fcd84beba66, 0x1b38f45499d57d71ada7cd3a346199, 0x005cf0], + }, + BigNum { + limbs: [0xc58a0b042cd4dc35d1ae71abd0a54d, 0x72419d80770cd6be007959cfa1c61b, 0x001793], + }, + BigNum { + limbs: [0xf819f7fbd18722ca2e518d542f5ab4, 0x35118c1d063b5c7bd78eafd2363f37, 0x005c5a], + }, + BigNum { + limbs: [0x712f65dddcac5339a8f2d056a4027d, 0x8447f4db2f2599713674356834f476, 0x0059ac], + }, + BigNum { + limbs: [0x4c749d2221afabc6570d2ea95bfd84, 0x230b34c24e2299c8a193d439a310dd, 0x001a41], + }, + BigNum { + limbs: [0x620b99aa201e9b7554cb01f596606f, 0x550e339064cc77fc010ff1bb87e048, 0x0000de], + }, + BigNum { + limbs: [0x5b986955de3d638aab34fd0a699f92, 0x5244f60d187bbb3dd6f817e650250b, 0x00730f], + }, + BigNum { + limbs: [0x7feef21aa1455b1985e5010d1e28f9, 0xf7d7a6997c064a244131970ee26e59, 0x005cf3], + }, + BigNum { + limbs: [0x3db510e55d16a3e67a1afdf2e1d708, 0xaf7b83040141e91596d67292f596fa, 0x0016f9], + }, + BigNum { + limbs: [0xef0eef02e9618bbf1b369c0a8445b6, 0x330063d404e1d74a7534d0a5cfbcaf, 0x006be4], + }, + BigNum { + limbs: [0xce9513fd14fa7340e4c962f57bba4b, 0x7452c5c978665bef62d338fc0848a3, 0x000809], + }, + BigNum { + limbs: [0x42f05b2dd0efa96d4b3d6d88b9ec49, 0x2dcdcaf325db8a076a0804aaf03d6b, 0x005a7e], + }, + BigNum { + limbs: [0x7ab3a7d22d6c5592b4c291774613b8, 0x79855eaa576ca9326e0004f6e7c7e8, 0x00196f], + }, + BigNum { + limbs: [0x278442906cdcb997c7058ee0f32403, 0x15d0bc7ed9cb8c826031662df9e760, 0x006c7a], + }, + BigNum { + limbs: [0x961fc06f917f456838fa701f0cdbfe, 0x91826d1ea37ca6b777d6a373de1df3, 0x000773], + }, + BigNum { + limbs: [0x81b9b0030fff9b9dc2b95bda888cc3, 0x66c29c0c4d935f8efca0709e9fdc07, 0x004f0a], + }, + BigNum { + limbs: [0x3bea52fcee5c63623d46a32577733e, 0x40908d912fb4d3aadb67990338294c, 0x0024e3], + }, + BigNum { + limbs: [0xb13e62a6404a74daf6c1cc2b79b805, 0x1db2c4fc40430e536c4bf821b25948, 0x002e8d], + }, + BigNum { + limbs: [0x0c65a059be118a25093e32d48647fc, 0x89a064a13d0524e66bbc118025ac0b, 0x004560], + }, + BigNum { + limbs: [0x4ad0183cb4d23e3b9f40dc39226ef2, 0xbb8a5f91996cc7e207d405cec60f24, 0x004c63], + }, + BigNum { + limbs: [0x72d3eac34989c0c460bf22c6dd910f, 0xebc8ca0be3db6b57d03403d311f62f, 0x002789], + }, + BigNum { + limbs: [0x1d4b203d557fd3d0bd794485b1cd59, 0xff0465d7945d6b0fd286dc1624d8de, 0x001a8d], + }, + BigNum { + limbs: [0xa058e2c2a8dc2b2f4286ba7a4e32a8, 0xa84ec3c5e8eac82a05812d8bb32c75, 0x00595f], + }, + BigNum { + limbs: [0x7f4e7f70ec86ac05e2e6cb0db28404, 0x71b2bcbcebb0e07032ac4dd9f48655, 0x00222d], + }, + BigNum { + limbs: [0x3e55838f11d552fa1d1933f24d7bfd, 0x35a06ce0919752c9a55bbbc7e37efe, 0x0051c0], + }, + BigNum { + limbs: [0x31d6a3b689584dd2f0f5e5e994ff3a, 0x98eed454988b6dee792e47fe9ebe96, 0x003268], + }, + BigNum { + limbs: [0x8bcd5f497503b12d0f0a19166b00c7, 0x0e645548e4bcc54b5ed9c1a33946bd, 0x004185], + }, + BigNum { + limbs: [0xd1a69ef390c21d4a865bf20d7fe4ff, 0x7ca7fee6f701be6bd1e602f93f1e7a, 0x000a60], + }, + BigNum { + limbs: [0xebfd640c6d99e1b579a40cf2801b02, 0x2aab2ab6864674ce062206a898e6d8, 0x00698d], + }, + BigNum { + limbs: [0x62a8e248a5873997ef4c4862dac48b, 0x5edd0c55c21a756db007d73ddfd82b, 0x000083], + }, + BigNum { + limbs: [0x5afb20b758d4c56810b3b69d253b76, 0x48761d47bb2dbdcc28003263f82d28, 0x00736a], + }, + BigNum { + limbs: [0xfbf6b6977f335ccc7ee15d01f39a0d, 0x40eb8f3ff496463dea24c6c2f0113d, 0x005839], + }, + BigNum { + limbs: [0xc1ad4c687f28a233811ea1fe0c65f4, 0x66679a5d88b1ecfbede342dee7f415, 0x001bb4], + }, + BigNum { + limbs: [0xa998918baa4ee01f8dc38c14a70a7d, 0x9a0c8d46e5c1431b68c23ab353eb5a, 0x00529a], + }, + BigNum { + limbs: [0x140b7174540d1ee0723c72eb58f584, 0x0d469c569786f01e6f45ceee8419f9, 0x002153], + }, + BigNum { + limbs: [0xf5f8fb1cfd35bf416d25664132e681, 0xacd15cff4a085d468a777ba29478a8, 0x0063a1], + }, + BigNum { + limbs: [0xc7ab07e301263fbe92da98becd1980, 0xfa81cc9e333fd5f34d908dff438caa, 0x00104b], + }, + BigNum { + limbs: [0xa148a069f07e83085c098a064e640d, 0x1d433b70d20df332844e948cea8ef0, 0x0059bd], + }, + BigNum { + limbs: [0x1c5b62960ddd7bf7a3f674f9b19bf4, 0x8a0fee2cab3a400753b97514ed7663, 0x001a30], + }, + BigNum { + limbs: [0x323eed0b7541f7626cf66312dc75d4, 0xf0cfc53f02ad2cff5e64aca06bfdc0, 0x000521], + }, + BigNum { + limbs: [0x8b6515f4891a079d93099bed238a2d, 0xb683645e7a9b063a79a35d016c0793, 0x006ecb], + }, + BigNum { + limbs: [0x6d33f723b2c096edd01d1e9965d339, 0xe5c62447e6c5b903259bd01c07a223, 0x007091], + }, + BigNum { + limbs: [0x50700bdc4b9b68122fe2e0669a2cc8, 0xc18d055596827a36b26c3985d06330, 0x00035b], + }, + BigNum { + limbs: [0xced4862f3112b54a33b4ca4fa500d5, 0xe64e6e329643ccb9d7408ba4ad4f77, 0x0046d5], + }, + BigNum { + limbs: [0xeecf7cd0cd4949b5cc4b34b05aff2c, 0xc104bb6ae704668000c77dfd2ab5db, 0x002d17], + }, + BigNum { + limbs: [0xa7edc3eeb1ea0f3cd3d2e1c03a844c, 0xc7495e0793b32f9ded387ed31cf4f1, 0x001257], + }, + BigNum { + limbs: [0x15b63f114c71efc32c2d1d3fc57bb5, 0xe009cb95e995039beacf8acebb1062, 0x006195], + }, + BigNum { + limbs: [0xca9f6f63c7ee570593110cdd147867, 0x0c5a1acc4e039943b8c1f1c32bb124, 0x006d19], + }, + BigNum { + limbs: [0xf304939c366da7fa6ceef222eb879a, 0x9af90ed12f4499f61f4617deac542e, 0x0006d4], + }, + BigNum { + limbs: [0xa3138bbc3a874b460e884790b8c345, 0x8a70e4c6426c457a1f0b6f25f22f8b, 0x0049a9], + }, + BigNum { + limbs: [0x1a907743c3d4b3b9f177b76f473cbc, 0x1ce244d73adbedbfb8fc9a7be5d5c8, 0x002a44], + }, + BigNum { + limbs: [0x1169992c0dfff849ad9eda3ab2596b, 0xed13f5196adafec2c1e6f695673957, 0x006c32], + }, + BigNum { + limbs: [0xac3a69d3f05c06b6526124c54da696, 0xba3f3484126d34771621130c70cbfc, 0x0007ba], + }, + BigNum { + limbs: [0x55a2ee5f896a4409af8f18266456c5, 0xac223b8b00a756b079736230d8d1e0, 0x005356], + }, + BigNum { + limbs: [0x680114a074f1baf65070e6d99ba93c, 0xfb30ee127ca0dc895e94a770ff3373, 0x002096], + }, + BigNum { + limbs: [0x2b4bfeb55dfba683a202b9605bdc7f, 0xcd834da0dfe13d24b851b6e0e2940a, 0x005b37], + }, + BigNum { + limbs: [0x9258044aa060587c5dfd459fa42382, 0xd9cfdbfc9d66f6151fb652c0f57149, 0x0018b5], + }, + BigNum { + limbs: [0x95ffdf3831c932ebf8ff080a52e66f, 0x9145a9d644ccae7ba896e4494d8bb6, 0x00364c], + }, + BigNum { + limbs: [0x27a423c7cc92cc140700f6f5ad1992, 0x160d7fc7387b84be2f7125588a799d, 0x003da1], + }, + BigNum { + limbs: [0x548acb6d790da51557c2f3467bd1ca, 0x515b1711e6667471e199a39130b996, 0x0006b9], + }, + BigNum { + limbs: [0x69193792854e59eaa83d0bb9842e37, 0x55f8128b96e1bec7f66e6610a74bbd, 0x006d34], + }, + BigNum { + limbs: [0x0352b62f3f203eb38d064ea8444127, 0xfa03ad3c8255023718eed874887b51, 0x005aee], + }, + BigNum { + limbs: [0xba514cd0bf3bc04c72f9b057bbbeda, 0xad4f7c60faf33102bf19312d4f8a02, 0x0018fe], + }, + BigNum { + limbs: [0x6d63f8b28503442b436d7a469e3045, 0xd3a13151f5da0c095cf1e33152987a, 0x004c75], + }, + BigNum { + limbs: [0x50400a4d7958bad4bc9284b961cfbc, 0xd3b1f84b876e27307b162670856cd9, 0x002777], + }, + BigNum { + limbs: [0x62f6b763e08ab37846d9e1c754b5dc, 0x4af774526aa008078f5f1149b3a08b, 0x00327c], + }, + BigNum { + limbs: [0x5aad4b9c1dd14b87b9261d38ab4a25, 0x5c5bb54b12a82b3248a8f8582464c8, 0x004171], + }, + BigNum { + limbs: [0xe5fdb63351c0ec536a984065c92adf, 0xe30b5b7bc5bd438d2dbf46dd5590f9, 0x000898], + }, + BigNum { + limbs: [0xd7a64cccac9b12ac9567be9a36d522, 0xc447ce21b78aefacaa48c2c4827459, 0x006b54], + }, + BigNum { + limbs: [0x2db53007db7808cb26d9489265bf28, 0x370156cdae5227f2d34b0ee0bab27b, 0x006103], + }, + BigNum { + limbs: [0x8feed2f822e3f634d926b66d9a40d9, 0x7051d2cfcef60b4704bcfac11d52d8, 0x0012ea], + }, + BigNum { + limbs: [0xe92a5ff656e571e252f6a3681e0665, 0x48279a4d32928213bbd737bf0e62fa, 0x0067b7], + }, + BigNum { + limbs: [0xd479a309a7768d1dad095b97e1f99c, 0x5f2b8f504ab5b1261c30d1e2c9a258, 0x000c36], + }, + BigNum { + limbs: [0x4a3619fc303084522303685af9251f, 0xec39741c1ee0841ec896cf8d6b71cc, 0x003f80], + }, + BigNum { + limbs: [0x736de903ce2b7aaddcfc96a506dae2, 0xbb19b5815e67af1b0f713a146c9387, 0x00346c], + }, + BigNum { + limbs: [0x09b29d2aaa46f58fde839c9b10f95a, 0xf481668a98cc916653ef8ee10c3160, 0x000b47], + }, + BigNum { + limbs: [0xb3f165d554150970217c6264ef06a7, 0xb2d1c312e47ba1d384187ac0cbd3f3, 0x0068a5], + }, + BigNum { + limbs: [0x8d4f7d4f608b27831af13e1a684e43, 0xeabd406c3a9d1aaa8bc17630875b9a, 0x002669], + }, + BigNum { + limbs: [0x305485b09dd0d77ce50ec0e597b1be, 0xbc95e93142ab188f4c46937150a9b9, 0x004d83], + }, + BigNum { + limbs: [0x5f59426e561ac3a0d046361160c87d, 0xf67c9a365f924184a3278cbac76cf6, 0x001e28], + }, + BigNum { + limbs: [0x5e4ac091a8413b5f2fb9c8ee9f3784, 0xb0d68f671db5f1b534e07ce710985d, 0x0055c4], + }, + BigNum { + limbs: [0xb504c88bc20bd7cd2b2f4c41dff3cb, 0x1dab874c3d6a7726f871b0da235e08, 0x00698f], + }, + BigNum { + limbs: [0x089f3a743c502732d4d0b2be200c36, 0x89a7a2513fddbc12df9658c7b4a74b, 0x000a5e], + }, + BigNum { + limbs: [0x5f34977fa341337055b514a4510f6a, 0x373ad66cee9842076ef74d0b719d55, 0x005dd7], + }, + BigNum { + limbs: [0x5e6f6b805b1acb8faa4aea5baef097, 0x701853308eaff1326910bc966667fe, 0x001616], + }, + BigNum { + limbs: [0x6c461ae56f072df424341daddcab5d, 0x0d96bee11ebb5204f44088385855a8, 0x004aa1], + }, + BigNum { + limbs: [0x515de81a8f54d10bdbcbe1522354a4, 0x99bc6abc5e8ce134e3c781697fafab, 0x00294c], + }, + BigNum { + limbs: [0x0e8aaa2c0adab646add4de51661716, 0x17a81ec992dbd332c8edcb31b9c532, 0x006f8c], + }, + BigNum { + limbs: [0xaf1958d3f38148b9522b20ae99e8eb, 0x8fab0ad3ea6c60070f1a3e701e4021, 0x000461], + }, + BigNum { + limbs: [0x966df282c99da1552407971d6a01b3, 0xc4a1e86297dd1f72eaf592b1a5e37c, 0x001064], + }, + BigNum { + limbs: [0x2736107d34be5daadbf867e295fe4e, 0xe2b1413ae56b13c6ed1276f03221d7, 0x006388], + }, + BigNum { + limbs: [0xdf55fe0e814040452ccd3a84afddff, 0xc0bccf122cf17f89e05099b9346eb4, 0x004fc3], + }, + BigNum { + limbs: [0xde4e04f17d1bbebad332c47b502202, 0xe6965a8b5056b3aff7b76fe8a3969e, 0x002429], + }, + BigNum { + limbs: [0x9025299f9d89f8b0a40e557f4b46ae, 0xb7cf8d35960d07e1837d2ec951dce4, 0x000c0e], + }, + BigNum { + limbs: [0x2d7ed96060d2064f5bf1a980b4b953, 0xef839c67e73b2b58548adad886286f, 0x0067de], + }, + BigNum { + limbs: [0x627ca6b51d001a6f9d0064fac7137d, 0xba9652521c23efdb2f0828054b7fb3, 0x006f56], + }, + BigNum { + limbs: [0x5b275c4ae15be49062ff9a0538ec84, 0xecbcd74b6124435ea8ffe19c8c85a0, 0x000496], + }, + BigNum { + limbs: [0x57c9facced7b915f66134727f54889, 0xc12d8a6f82133cf6cd1d9efc7c146e, 0x006c0e], + }, + BigNum { + limbs: [0x65da083310e06da099ecb7d80ab778, 0xe6259f2dfb34f6430aea6aa55bf0e5, 0x0007de], + }, + BigNum { + limbs: [0x339834601eaf9df9b5ad7e3464f5a5, 0x51053381165e056f4fd9e2e5174451, 0x00510f], + }, + BigNum { + limbs: [0x8a0bce9fdfac61064a5280cb9b0a5c, 0x564df61c66ea2dca882e26bcc0c102, 0x0022de], + }, + BigNum { + limbs: [0xea1b243740a635ed1c6473b3e31cf7, 0x6e5ee340acc503a56cc8813aa331a6, 0x0022c3], + }, + BigNum { + limbs: [0xd388dec8bdb5c912e39b8b4c1ce30a, 0x38f4465cd0832f946b3f886734d3ac, 0x00512a], + }, + BigNum { + limbs: [0xa5a037f31901964ec74d66ce5ce51d, 0xd1a16317e2eef74564930e6096c055, 0x006852], + }, + BigNum { + limbs: [0x1803cb0ce55a68b138b29831a31ae4, 0xd5b1c6859a593bf47374fb414144fe, 0x000b9a], + }, + BigNum { + limbs: [0x5b9ca898999be0e41960cc8f7cf554, 0x10c103e349beeebdfa4d46a48617eb, 0x001be6], + }, + BigNum { + limbs: [0x62075a6764c01e1be69f3270830aad, 0x969225ba3389447bddbac2fd51ed68, 0x005807], + }, + BigNum { + limbs: [0xc9e646f0bc30f46b1ac0499b422b78, 0x36685571ebe59efaac6d4efab2f7a2, 0x00178c], + }, + BigNum { + limbs: [0xf3bdbc0f422b0a94e53fb564bdd489, 0x70ead42b9162943f2b9abaa7250db0, 0x005c61], + }, + BigNum { + limbs: [0x468edeb6787ad5963a9c566e8bd6b5, 0x92e90312698626747ffd80262ac35f, 0x003dfd], + }, + BigNum { + limbs: [0x7715244985e12969c563a89174294c, 0x146a268b13c20cc5580a897bad41f4, 0x0035f0], + }, + BigNum { + limbs: [0xa1f0d04b158d7aa271966e405dcffd, 0xeac8ef44b61d5e3ddfac65da256f88, 0x00378f], + }, + BigNum { + limbs: [0x1bb332b4e8ce845d8e6990bfa23004, 0xbc8a3a58c72ad4fbf85ba3c7b295cb, 0x003c5d], + }, + BigNum { + limbs: [0x719dedc145d3ee4580dba9fc46a574, 0x8c3a3826d76773a54de6e95a9de480, 0x00102b], + }, + BigNum { + limbs: [0x4c06153eb88810ba7f245503b95a8d, 0x1b18f176a5e0bf948a2120473a20d3, 0x0063c2], + }, + BigNum { + limbs: [0x6d85a7faf7c62885336974811c697a, 0xbda65519ec38a6266415c4d6ced228, 0x003b35], + }, + BigNum { + limbs: [0x501e5b050695d67acc968a7ee39687, 0xe9acd483910f8d1373f244cb09332b, 0x0038b7], + }, + BigNum { + limbs: [0x510ebfb4543a3efb350dbef02a116e, 0xa56e80f82b2df675522e37ad4eca1c, 0x001907], + }, + BigNum { + limbs: [0x6c95434baa21c004caf2400fd5ee93, 0x01e4a8a5521a3cc485d9d1f4893b37, 0x005ae6], + }, + BigNum { + limbs: [0x1102eb66f6fce55e501a6aa6138595, 0x8e203415456536060cc57d5ad557ea, 0x006d3d], + }, + BigNum { + limbs: [0xaca11799075f19a1afe59459ec7a6c, 0x1932f58837e2fd33cb428c4702ad69, 0x0006b0], + }, + BigNum { + limbs: [0x7dea6029017fdc9dac7b409d585d19, 0xc0e6aaf7c2d906dbeaab1ad525575d, 0x00634f], + }, + BigNum { + limbs: [0x3fb9a2d6fcdc22625384be62a7a2e8, 0xe66c7ea5ba6f2c5ded5ceeccb2adf6, 0x00109d], + }, + BigNum { + limbs: [0x3764a3ff5f912e67cf9ca3e9f5b1b1, 0xbee4fcf836297cc088f970ebac3ad3, 0x005f20], + }, + BigNum { + limbs: [0x863f5f009ecad09830635b160a4e50, 0xe86e2ca5471eb6794f0e98b62bca80, 0x0014cc], + }, + BigNum { + limbs: [0x738f0e49608f7fec3894fdbbc5e597, 0x6831b2c665dce522dc0df640392d0a, 0x002e91], + }, + BigNum { + limbs: [0x4a14f4b69dcc7f13c76b01443a1a6a, 0x3f2176d7176b4e16fbfa13619ed849, 0x00455c], + }, + BigNum { + limbs: [0xb1cebef9a7dbaf187a081bc020c9e9, 0x49dce1168ed72eb22d78a01a149188, 0x0048c6], + }, + BigNum { + limbs: [0x0bd5440656804fe785f7e33fdf3618, 0x5d764886ee710487aa8f6987c373cb, 0x002b27], + }, + BigNum { + limbs: [0x786c05f26d2d14072fff623d593acc, 0x4567920d7fbdd5ad1e34af8ba8297e, 0x004b0f], + }, + BigNum { + limbs: [0x4537fd0d912eeaf8d0009cc2a6c535, 0x61eb978ffd8a5d8cb9d35a162fdbd5, 0x0028de], + }, + BigNum { + limbs: [0xa08916e4882ed38e69d125b2613b98, 0x2412402056b9c587252e3f738f0291, 0x00154d], + }, + BigNum { + limbs: [0x1d1aec1b762d2b71962ed94d9ec469, 0x8340e97d268e6db2b2d9ca2e4902c2, 0x005ea0], + }, + BigNum { + limbs: [0xa44a292b2e5b2982758592725b5677, 0x3df3d2c48682ef7088ae62b6a01241, 0x004c5f], + }, + BigNum { + limbs: [0x1959d9d4d000d57d8a7a6c8da4a98a, 0x695f56d8f6c543c94f59a6eb37f312, 0x00278e], + }, + BigNum { + limbs: [0x3dc049317117871848f2442fea2cc8, 0x6e34562bbc52e204d5dce884424849, 0x002cb0], + }, + BigNum { + limbs: [0x7fe3b9ce8d4477e7b70dbad015d339, 0x391ed371c0f55135022b211d95bd0a, 0x00473d], + }, + BigNum { + limbs: [0xd2201ed10a653f0612b0fb6cc1107c, 0xcba74f737371896fb6a2fbba8ee922, 0x006c1b], + }, + BigNum { + limbs: [0xeb83e42ef3f6bff9ed4f03933eef85, 0xdbabda2a09d6a9ca21650de7491c30, 0x0007d1], + }, + BigNum { + limbs: [0xdf8a6e25303f2fd0c13b83274f45b0, 0xbb2eb5bc528c11781b3e716a0f505e, 0x002bdd], + }, + BigNum { + limbs: [0xde1994dace1ccf2f3ec47bd8b0ba51, 0xec2473e12abc21c1bcc99837c8b4f4, 0x00480f], + }, + BigNum { + limbs: [0xd22b0908293b435d970e0b0666e0d8, 0x0683301968fdb44d3b688f8492460a, 0x005b03], + }, + BigNum { + limbs: [0xeb78f9f7d520bba268f1f3f9991f29, 0xa0cff984144a7eec9c9f7a1d45bf48, 0x0018ea], + }, + BigNum { + limbs: [0xc5922e39ae0bf92ae6e2c121bfc3c3, 0x9e36de006c054af1a2d79a24d27ae1, 0x007000], + }, + BigNum { + limbs: [0xf811d4c6505005d5191d3dde403c3e, 0x091c4b9d1142e84835306f7d058a71, 0x0003ed], + }, + BigNum { + limbs: [0xe63a729649cca628f1221a8298a060, 0xe2fcb84cd789855a08d1b96d6c46b4, 0x001272], + }, + BigNum { + limbs: [0xd7699069b48f58d70edde47d675fa1, 0xc4567150a5beaddfcf3650346bbe9e, 0x00617a], + }, + BigNum { + limbs: [0x5fe456e0de774541fed1c1f077470a, 0xef9cfd0d5b9c3c011284ce2c0a5ae6, 0x0058ea], + }, + BigNum { + limbs: [0x5dbfac1f1fe4b9be012e3d0f88b8f7, 0xb7b62c9021abf738c5833b75cdaa6d, 0x001b02], + }, + BigNum { + limbs: [0x4e7bab3c93dde164936d794ecac754, 0x8efcbc9ffba397e292677efe6e684b, 0x00192d], + }, + BigNum { + limbs: [0x6f2857c36a7e1d9b6c9285b13538ad, 0x18566cfd81a49b5745a08aa3699d08, 0x005ac0], + }, + BigNum { + limbs: [0xf39aabdcbb7d0745a8d91e955983d1, 0xed933c287503e05891c9ff9c3987d4, 0x00075d], + }, + BigNum { + limbs: [0xca09572342def7ba5726e06aa67c30, 0xb9bfed75084452e1463e0a059e7d7e, 0x006c8f], + }, + BigNum { + limbs: [0x04d8e25880e9cee1d977e545af710b, 0x5fb6453833c4c973f8fca82606c27d, 0x00527d], + }, + BigNum { + limbs: [0xb8cb20a77d72301e268819ba508ef6, 0x479ce465498369c5df0b617bd142d6, 0x002170], + }, + BigNum { + limbs: [0x9741e455322d312856121a533306a0, 0xd41c2b82dcc6b2dd9a95731e9ccfab, 0x005d63], + }, + BigNum { + limbs: [0x26621eaacc2ecdd7a9ede4acccf961, 0xd336fe1aa081805c3d7296833b35a8, 0x001689], + }, + BigNum { + limbs: [0x9d89aade182224f825d2b60a32f87a, 0x4aec85b8f956e027a83558a1fa00b9, 0x001df4], + }, + BigNum { + limbs: [0x201a5821e639da07da2d48f5cd0787, 0x5c66a3e483f153122fd2b0ffde049a, 0x0055f9], + }, + BigNum { + limbs: [0x2d7dae9287cd043df47cf236da17e9, 0xf534d4599079c579b994cbef0c2ce9, 0x001306], + }, + BigNum { + limbs: [0x9026546d768efac20b830cc925e818, 0xb21e5543ecce6dc01e733db2cbd86a, 0x0060e6], + }, + BigNum { + limbs: [0xcbb1bd356f80cdcf2c53214fca9316, 0xe397c114f8f36fa873d6002f921fda, 0x003495], + }, + BigNum { + limbs: [0xf1f245ca8edb3130d3acddb0356ceb, 0xc3bb68888454c3916432097245e578, 0x003f57], + }, + BigNum { + limbs: [0x62629752f7b4ac743e6cd3f2d8b5e4, 0xb727404262a9c24956b7927d30eacb, 0x001874], + }, + BigNum { + limbs: [0x5b416bad06a7528bc1932b0d274a1d, 0xf02be95b1a9e70f081507724a71a88, 0x005b78], + }, + BigNum { + limbs: [0x0cfc2a8e76963e1cfb5b8201d3c611, 0xdbab8b1811260a0955d20478e94671, 0x0038a2], + }, + BigNum { + limbs: [0xb0a7d87187c5c0e304a47cfe2c39f0, 0xcba79e856c22293082360528eebee2, 0x003b4a], + }, + BigNum { + limbs: [0x501d116ae74916c40d56452b59c640, 0x823696c820865acd8b4a64b679a2e3, 0x0032e8], + }, + BigNum { + limbs: [0x6d86f1951712e83bf2a9b9d4a639c1, 0x251c92d55cc1d86c4cbda4eb5e6270, 0x004105], + }, + BigNum { + limbs: [0x9d714edf2c5d73e9fd3487793e0a1e, 0x777daecfbc8bf776f0b322161a54eb, 0x000c02], + }, + BigNum { + limbs: [0x2032b420d1fe8b1602cb7786c1f5e3, 0x2fd57acdc0bc3bc2e754e78bbdb068, 0x0067eb], + }, + BigNum { + limbs: [0xa019a046396b882f67888351b3aed0, 0x4490a807026fab8427037d4aaef513, 0x0000df], + }, + BigNum { + limbs: [0x1d8a62b9c4f076d098777bae4c5131, 0x62c281967ad887b5b1048c57291040, 0x00730e], + }, + BigNum { + limbs: [0xb7da58c5251abce7c952e4bd7af7d4, 0x42944aa32bee278a8c2e3d1fd8e115, 0x005e85], + }, + BigNum { + limbs: [0x05c9aa3ad941421836ad1a4285082d, 0x64bedefa515a0baf4bd9cc81ff243e, 0x001568], + }, + BigNum { + limbs: [0xb169206b7f3154077d390dd7d05b42, 0x0a68359a3f51e5084aaf8797a96f5e, 0x004197], + }, + BigNum { + limbs: [0x0c3ae2947f2aaaf882c6f1282fa4bf, 0x9ceaf4033df64e318d58820a2e95f5, 0x003256], + }, + BigNum { + limbs: [0x3c05a40dd7360af2be473f9f510696, 0x85d44e308ee97c96515b1b38427a7c, 0x004f02], + }, + BigNum { + limbs: [0x819e5ef22725f40d41b8bf60aef96b, 0x217edb6cee5eb6a386acee69958ad7, 0x0024eb], + }, + BigNum { + limbs: [0xc01d3617a563363c520c2b1a297a42, 0x1b34b95dfdc7a5455416cfcec9c93f, 0x0057d1], + }, + BigNum { + limbs: [0xfd86cce858f8c8c3adf3d3e5d685bf, 0x8c1e703f7f808df483f139d30e3c13, 0x001c1c], + }, + BigNum { + limbs: [0xd04289be4d5845428c9fe880b696f2, 0xefc99d37fe721eb3867a7d42417bfd, 0x003337], + }, + BigNum { + limbs: [0xed617941b103b9bd7360167f49690f, 0xb7898c657ed61486518d8c5f968955, 0x0040b5], + }, + BigNum { + limbs: [0x471747bfef212bcdcd38d6f117f52f, 0x873a1f951adfb6548e4a26c46cf637, 0x00260e], + }, + BigNum { + limbs: [0x768cbb400f3ad33232c7280ee80ad2, 0x20190a0862687ce549bde2dd6b0f1c, 0x004ddf], + }, + BigNum { + limbs: [0x1bd60176f653694582bcb64c16195c, 0xf7a2a21cae9a8382c4cf78190afc04, 0x0045c6], + }, + BigNum { + limbs: [0xa1ce0189080895ba7d4348b3e9e6a5, 0xafb08780ceadafb713389188cd094f, 0x002e26], + }, + BigNum { + limbs: [0x12d6dbc4da70eb9281ca5182004249, 0x6ee71fba800af7b5bc01b47b0c0cc1, 0x00524f], + }, + BigNum { + limbs: [0xaacd273b23eb136d7e35ad7dffbdb8, 0x386c09e2fd3d3b841c065526cbf892, 0x00219e], + }, + BigNum { + limbs: [0xdd88120258390fcf4a24368337be6a, 0xbc58cb5eb5c44cc9ff4bf19abce5bb, 0x0030e1], + }, + BigNum { + limbs: [0xe01bf0fda622ef30b5dbc87cc84197, 0xeafa5e3ec783e66fd8bc18071b1f97, 0x00430b], + }, + BigNum { + limbs: [0xa959dcb76fe5390c0871ffc19b100f, 0xce8ba2c48aa4894506e8611524fe2a, 0x002f73], + }, + BigNum { + limbs: [0x144a26488e76c5f3f78dff3e64eff2, 0xd8c786d8f2a3a9f4d11fa88cb30729, 0x004479], + }, + BigNum { + limbs: [0x73882ea6ce7aa9e15b2a94a295c9ad, 0x7fb3c3230d556d15603c30cffb92d1, 0x003d74], + }, + BigNum { + limbs: [0x4a1bd4592fe1551ea4d56a5d6a3654, 0x279f667a6ff2c62477cbd8d1dc7282, 0x003679], + }, + BigNum { + limbs: [0xf7ba1663b31d0376fd4001b4f824c8, 0x46853ef9fa574485c4aa168e870ab3, 0x006fbe], + }, + BigNum { + limbs: [0xc5e9ec9c4b3efb8902bffd4b07db39, 0x60cdeaa382f0eeb4135df31350fa9f, 0x00042f], + }, + BigNum { + limbs: [0x0119a77a9a472b1f0256b78db57e18, 0xf68db38f4a7b27a0943532cbc2db68, 0x00474c], + }, + BigNum { + limbs: [0xbc8a5b856414d3e0fda947724a81e9, 0xb0c5760e32cd0b9943d2d6d61529eb, 0x002ca0], + }, + BigNum { + limbs: [0x1592642caef3e5a869ecf2cc0d850a, 0xd792bef1368d6e952e48357708336a, 0x004164], + }, + BigNum { + limbs: [0xa8119ed34f68195796130c33f27af7, 0xcfc06aac46bac4a4a9bfd42acfd1e9, 0x003288], + }, + BigNum { + limbs: [0xea563e74aa3185e99ab4b0ce6c0c7c, 0xcb7ba7a1102bab1c2cbe2844a0ddd5, 0x00098b], + }, + BigNum { + limbs: [0xd34dc48b542a7916654b4e3193f385, 0xdbd781fc6d1c881dab49e15d37277d, 0x006a61], + }, + BigNum { + limbs: [0x437f9626fc085e3c28d666a5c2d854, 0xb5c3debf77a18f4de02c0f776af3ea, 0x00325d], + }, + BigNum { + limbs: [0x7a246cd90253a0c3d729985a3d27ad, 0xf18f4ade05a6a3ebf7dbfa2a6d1169, 0x00418f], + }, + BigNum { + limbs: [0x042bde9573c4ad1ff95ac74f4dd55e, 0xf518291d3e252d00a5be2412a997b6, 0x0050c8], + }, + BigNum { + limbs: [0xb978246a8a9751e006a537b0b22aa3, 0xb23b00803f2306393249e58f2e6d9d, 0x002324], + }, + BigNum { + limbs: [0xd42ce812d4161a128568bfed36d2d6, 0x61d6a24bc012a01a09222bf9650bd9, 0x006524], + }, + BigNum { + limbs: [0xe9771aed2a45e4ed7a973f12c92d2b, 0x457c8751bd35931fcee5dda872f979, 0x000ec9], + }, + BigNum { + limbs: [0x4eea3f60d8ba48352b5233bf7ba901, 0x9a5b87438c07220bc79e6b495d459f, 0x003304], + }, + BigNum { + limbs: [0x6eb9c39f25a1b6cad4adcb40845700, 0x0cf7a259f141112e10699e587abfb4, 0x0040e9], + }, + BigNum { + limbs: [0x67db8f3cd65da7c8f54ccb3906df6e, 0x385ab3740f1d0a08b8806bf140116a, 0x003ff0], + }, + BigNum { + limbs: [0x55c873c327fe57370ab333c6f92093, 0x6ef876296e2b29311f879db097f3e9, 0x0033fd], + }, + BigNum { + limbs: [0x10f133fcb8fede5de6afb9568b79d7, 0x555d2abe285e02fca0c6b9bfafb5fd, 0x00149f], + }, + BigNum { + limbs: [0xacb2cf03455d20a2195045a974862a, 0x51f5fedf54ea303d37414fe2284f56, 0x005f4e], + }, + BigNum { + limbs: [0xb769a52be75f80a78adc4c393f40fb, 0x8cf482eda4eaeba7fb8a7fa58fc5d9, 0x0007f3], + }, + BigNum { + limbs: [0x063a5dd416fc7e587523b2c6c0bf06, 0x1a5ea6afd85d4791dc7d89fc483f7a, 0x006bfa], + }, + BigNum { + limbs: [0x1d3d048e2bae51fb8bf031847f0368, 0x7d0f0c1d7fa06092d03a32cfcbe1a7, 0x004b4f], + }, + BigNum { + limbs: [0xa066fe71d2adad04740fcd7b80fc99, 0x2a441d7ffda7d2a707cdd6d20c23ac, 0x00289e], + }, + BigNum { + limbs: [0xcfc07ba26779319d6862e69abec349, 0x7fd1ffada9fb7ce80043e235fce4b6, 0x0027a5], + }, + BigNum { + limbs: [0xede3875d96e2cd62979d1865413cb8, 0x278129efd34cb651d7c4276bdb209c, 0x004c48], + }, + BigNum { + limbs: [0x2b9280b02b0f38389490a19470e8d1, 0x662f4b3bf7dd4a6b4b7925d178b97c, 0x00006c], + }, + BigNum { + limbs: [0x9211824fd34cc6c76b6f5d6b8f1730, 0x4123de61856ae8ce8c8ee3d05f4bd7, 0x007381], + }, + BigNum { + limbs: [0x626ce47a1970433653bbc394e0194f, 0x0ed3d812e1900c2d1e5df0ba7ba08d, 0x001b07], + }, + BigNum { + limbs: [0x5b371e85e4ebbbc9ac443b6b1fe6b2, 0x987f518a9bb8270cb9aa18e75c64c6, 0x0058e6], + }, + BigNum { + limbs: [0xbf59d5e64bbfa343aac380bd084cf0, 0xe70b5e0ee5d8a20cb37113cdf8a9af, 0x00534e], + }, + BigNum { + limbs: [0xfe4a2d19b29c5bbc553c7e42f7b311, 0xc047cb8e976f912d2496f5d3df5ba3, 0x00209e], + }, + BigNum { + limbs: [0x597b23df05312f8c2af61a8141cd2a, 0x0fd36013a65e8edf76cab18f8a37c7, 0x0008f6], + }, + BigNum { + limbs: [0x6428df20f92acf73d509e47ebe32d7, 0x977fc989d6e9a45a613d58124dcd8c, 0x006af7], + }, + BigNum { + limbs: [0x18d8297cc221bdb5e7ec7507841320, 0x300ff31bf898416efa2f23e851d93e, 0x00315f], + }, + BigNum { + limbs: [0xa4cbd9833c3a414a181389f87bece1, 0x7743368184aff1caddd8e5b9862c15, 0x00428e], + }, + BigNum { + limbs: [0xb9cfa13c9e7075a60c85450b7b2f47, 0x6723c0c73b43c6b58ce353a65ae24f, 0x000185], + }, + BigNum { + limbs: [0x03d461c35feb8959f37ab9f484d0ba, 0x402f68d642046c844b24b5fb7d2304, 0x007268], + }, + BigNum { + limbs: [0x4aa8865b38d3fe56375852f503eab6, 0x0a59d3076a69a11bab9cdb76c9aa34, 0x002e1d], + }, + BigNum { + limbs: [0x72fb7ca4c58800a9c8a7ac0afc154b, 0x9cf9569612de921e2c6b2e2b0e5b1f, 0x0045d0], + }, + BigNum { + limbs: [0x2f158931e7234f34277686b037a511, 0x36a53627e337d86327fa50db777aaf, 0x003bff], + }, + BigNum { + limbs: [0x8e8e79ce1738afcbd889784fc85af0, 0x70adf3759a105ad6b00db8c6608aa4, 0x0037ee], + }, + BigNum { + limbs: [0x5b11f7e8d7950307379aa242bef13a, 0x854d6e4b49d1a48d5cc9eb4b326da6, 0x003cd9], + }, + BigNum { + limbs: [0x62920b1726c6fbf8c8655cbd410ec7, 0x2205bb5233768eac7b3e1e56a597ad, 0x003714], + }, + BigNum { + limbs: [0x74c9b15c2f6c8157b9d269efd0d9fd, 0x43d2741d83a4ffa6a4d8853dc711ed, 0x00349a], + }, + BigNum { + limbs: [0x48da51a3ceef7da8462d95102f2604, 0x6380b57ff9a33393332f846410f366, 0x003f53], + }, + BigNum { + limbs: [0x922dc33e3981ed211c46be69369843, 0x792481d33f84533665b7ea0775febc, 0x004a34], + }, + BigNum { + limbs: [0x2b763fc1c4da11dee3b94096c967be, 0x2e2ea7ca3dc3e00372501f9a620697, 0x0029b9], + }, + BigNum { + limbs: [0x6fa92e866fdb2fb08e0577296c2a24, 0xadb60d8a7bf7640ac08abd3c0874ce, 0x00699a], + }, + BigNum { + limbs: [0x4dfad4798e80cf4f71fa87d693d5dd, 0xf99d1c130150cf2f177d4c65cf9085, 0x000a52], + }, + BigNum { + limbs: [0x10bc93086722d6faa75e2409644896, 0x0d36010c2912e9b9971968377e8f23, 0x0045cc], + }, + BigNum { + limbs: [0xace76ff79739280558a1daf69bb76b, 0x9a1d28915435498040eea16a597630, 0x002e21], + }, + BigNum { + limbs: [0x12974aa30cb0dbc3ad07b8488f216a, 0x599a73b32821076027ac452fa314e7, 0x0027f8], + }, + BigNum { + limbs: [0xab0cb85cf1ab233c52f846b770de97, 0x4db8b5ea55272bd9b05bc47234f06c, 0x004bf5], + }, + BigNum { + limbs: [0x07c23f803514299fe2121c20b86988, 0xb000d89ab17c3ca13436f849d0c5b7, 0x0052a3], + }, + BigNum { + limbs: [0xb5e1c37fc947d5601dede2df479679, 0xf7525102cbcbf698a3d11158073f9c, 0x002149], + }, + BigNum { + limbs: [0x54efb0bc8d997ff0498fbd3aed65cf, 0xb926e96be027edd2c44927ecd41b3a, 0x0021f9], + }, + BigNum { + limbs: [0x68b4524370c27f0fb67041c5129a32, 0xee2c40319d20456713bee1b503ea19, 0x0051f3], + }, + BigNum { + limbs: [0xc33eff3b2e005d15c92e1aac022f7a, 0x03f06c32134406419d72de2d04da5c, 0x0038dd], + }, + BigNum { + limbs: [0xfa6503c4d05ba1ea36d1e453fdd087, 0xa362bd6b6a042cf83a952b74d32af6, 0x003b10], + }, + BigNum { + limbs: [0x35e832d903d52910fc77c70f6789eb, 0x025cc14be0ad31420245361de9b12f, 0x00575f], + }, + BigNum { + limbs: [0x87bbd026fa86d5ef038837f0987616, 0xa4f668519c9b01f7d5c2d383ee5424, 0x001c8e], + }, + BigNum { + limbs: [0xb7ab8507f3920122be1a8aba702c85, 0x25e3c9a4ab06a671d938712e096896, 0x0058b6], + }, + BigNum { + limbs: [0x05f87df80ac9fddd41e574458fd37c, 0x816f5ff8d2418cc7fecf9873ce9cbd, 0x001b37], + }, + BigNum { + limbs: [0x69be7aef4c8d1ef94c14f22139573f, 0x6f3cc7d42821defa95e48ec5f0df7f, 0x004e12], + }, + BigNum { + limbs: [0x53e58810b1cee006b3eb0cdec6a8c2, 0x381661c95526543f42237adbe725d4, 0x0025db], + }, + BigNum { + limbs: [0x743ad6e2d471f5c5266f7287443e47, 0x5f70d71d12f4ac20bd03516e01a536, 0x002adc], + }, + BigNum { + limbs: [0x49692c1d29ea093ad9908c78bbc1ba, 0x47e252806a5387191b04b833d6601d, 0x004911], + }, + BigNum { + limbs: [0x2c25c55d44a0cda2c7312172f024d5, 0x856c0c995405fcbdc0f7c531d5529a, 0x004d16], + }, + BigNum { + limbs: [0x917e3da2b9bb315d38cedd8d0fdb2c, 0x21e71d042942367c1710447002b2b9, 0x0026d7], + }, + BigNum { + limbs: [0x223e998d178fb680440e833ea39b55, 0x42b69828825b5da8aa10fae01e8c0c, 0x00181c], + }, + BigNum { + limbs: [0x9b656972e6cc487fbbf17bc15c64ac, 0x649c9174faecd5912df70ec1b97947, 0x005bd1], + }, + BigNum { + limbs: [0x10989d7476cf2bc1bf28a8007ab548, 0xeb7d5ee5004ffc6c81de8478b8e220, 0x002099], + }, + BigNum { + limbs: [0xad0b658b878cd33e40d756ff854ab9, 0xbbd5cab87cf836cd562985291f2333, 0x005353], + }, + BigNum { + limbs: [0x96d79f8a3e8e0b93b28aebc303f074, 0xc9102a942d517007277851e8aec9ea, 0x0024db], + }, + BigNum { + limbs: [0x26cc6375bfcdf36c4d75133cfc0f8d, 0xde42ff094ff6c332b08fb7b9293b69, 0x004f11], + }, + BigNum { + limbs: [0x472415b0f60defaa8f3f7b31a9d713, 0x5bb263c0e75edaf8ea26346303cc91, 0x00406e], + }, + BigNum { + limbs: [0x767fed4f084e0f5570c083ce5628ee, 0x4ba0c5dc95e95840ede1d53ed438c2, 0x00337f], + }, + BigNum { + limbs: [0x22c16ba307dd3aa0d0db6053a9a3e0, 0xe0b7bf8e8c0fd7bcbd2b9d03b8b2db, 0x000042], + }, + BigNum { + limbs: [0x9ae2975cf67ec45f2f249eac565c21, 0xc69b6a0ef1385b7d1adc6c9e1f5278, 0x0073aa], + }, + BigNum { + limbs: [0xd8f9f506885a4f1784febbb03b452f, 0xd0cbdf62af6ec9809d68741ff12a30, 0x000d36], + }, + BigNum { + limbs: [0xe4aa0df97601afe87b01434fc4bad2, 0xd6874a3acdd969b93a9f9581e6db22, 0x0066b6], + }, + BigNum { + limbs: [0x657d647e701c3bc1294eb7f2f2f66d, 0x076752b9400f5ae617b0fcc5dbf9ca, 0x002887], + }, + BigNum { + limbs: [0x58269e818e3fc33ed6b1470d0d0994, 0x9febd6e43d38d853c0570cdbfc0b89, 0x004b66], + }, + BigNum { + limbs: [0xf3dc40acfe2b7256cfcec9c01c3ffe, 0xdab0be5128d795d19d03d8fd323cf7, 0x0068f0], + }, + BigNum { + limbs: [0xc9c7c25300308ca93031353fe3c003, 0xcca26b4c54709d683b0430a4a5c85b, 0x000afc], + }, + BigNum { + limbs: [0x39c74778c695afde09673bab61e898, 0xdf77f041dc9735c1728a223969d1ee, 0x0013c8], + }, + BigNum { + limbs: [0x83dcbb8737c64f21f698c3549e1769, 0xc7db395ba0b0fd78657de7686e3365, 0x006024], + }, + BigNum { + limbs: [0x16c96bf3f6890a98d0402a397d3074, 0xa203d88e626925ff7d17d595046f32, 0x0057df], + }, + BigNum { + limbs: [0xa6da970c07d2f4672fbfd4c682cf8d, 0x054f510f1adf0d3a5af0340cd39621, 0x001c0e], + }, + BigNum { + limbs: [0xd286c9c7b2f3fd967bc7d5bce1a804, 0xdd564bbe5d15ce91a6d6efc2c7ca96, 0x007073], + }, + BigNum { + limbs: [0xeb1d39384b680169843829431e57fd, 0xc9fcdddf203264a8313119df103abc, 0x000379], + }, + BigNum { + limbs: [0xe540b9c586fcea58550848d0259347, 0xba723ff8c505df9d9a8301247105a2, 0x00046c], + }, + BigNum { + limbs: [0xd863493a775f14a7aaf7b62fda6cba, 0xece0e9a4b842539c3d85087d66ffb0, 0x006f80], + }, + BigNum { + limbs: [0x97ac9b42b5bc323c3e9892b876b461, 0xd6151fc5ce2e0c824958cba91b6f97, 0x001128], + }, + BigNum { + limbs: [0x25f767bd489fccc3c1676c47894ba0, 0xd13e09d7af1a26b78eaf3df8bc95bc, 0x0062c4], + }, + BigNum { + limbs: [0xe306b538773eb4b850d2a3eabf958f, 0x7355217fce074c0bb60b247d0d6499, 0x0033dc], + }, + BigNum { + limbs: [0xda9d4dc7871d4a47af2d5b15406a72, 0x33fe081daf40e72e21fce524caa0b9, 0x004011], + }, + BigNum { + limbs: [0xd5081bd50bfe8c49ab063c9866233a, 0x8d40c2ef982f0174fd293ff31fa487, 0x00546f], + }, + BigNum { + limbs: [0xe89be72af25d72b654f9c26799dcc7, 0x1a1266ade51931c4dadec9aeb860cb, 0x001f7e], + }, + BigNum { + limbs: [0xd4dd6fb2dd1c1cec4a327b5d6681f3, 0x978bf9dde4f2a890bb7866fb5680a5, 0x00421a], + }, + BigNum { + limbs: [0xe8c6934d213fe213b5cd83a2997e0e, 0x0fc72fbf98558aa91c8fa2a68184ad, 0x0031d3], + }, + BigNum { + limbs: [0x46e6e574bb0264650613937dec903a, 0xc4fdd5553c2b935c9c3ce1c6e9f013, 0x0004e9], + }, + BigNum { + limbs: [0x76bd1d8b43599a9af9ec6b82136fc7, 0xe2555448411c9fdd3bcb27daee1540, 0x006f03], + }, + BigNum { + limbs: [0x967c6423a55ee21c6f641f5ca11dfc, 0x2962daeacf09aac3e29a57a5f0d8ef, 0x0000f1], + }, + BigNum { + limbs: [0x27279edc58fd1ce3909bdfa35ee205, 0x7df04eb2ae3e8875f56db1fbe72c64, 0x0072fc], + }, + BigNum { + limbs: [0xa48d852fc35b7c3556faf3eba03702, 0x7d9f742f652cb5537e7ab5699d8e10, 0x000a28], + }, + BigNum { + limbs: [0x19167dd03b0082caa9050b145fc8ff, 0x29b3b56e181b7de6598d54383a7743, 0x0069c5], + }, + BigNum { + limbs: [0x4ece6e79d374f7694d7d44aa42aaf2, 0x25830d537d2afc0117e00180409d8d, 0x005c98], + }, + BigNum { + limbs: [0x6ed594862ae70796b282ba55bd550f, 0x81d01c4a001d3738c02808219767c6, 0x001755], + }, + BigNum { + limbs: [0xb02312ec12eeec6e8f66fbf9b79cc1, 0xb52abbca218662fa4f9250a0361b14, 0x002c94], + }, + BigNum { + limbs: [0x0d80f013eb6d129170990306486340, 0xf2286dd35bc1d03f8875b901a1ea3f, 0x004758], + }, + BigNum { + limbs: [0x06b58844f30ad2b5006d3e54988604, 0x08e682580ff68a3ffa39d11f260543, 0x0051cb], + }, + BigNum { + limbs: [0xb6ee7abb0b512c4aff92c0ab6779fd, 0x9e6ca7456d51a8f9ddce3882b20010, 0x002222], + }, + BigNum { + limbs: [0x07e8ac00ccd608596a75b117ddfba0, 0x1c78170c4872ed5d290fa2d313f10c, 0x0021a0], + }, + BigNum { + limbs: [0xb5bb56ff3185f6a6958a4de8220461, 0x8adb129134d545dcaef866cec41447, 0x00524d], + }, + BigNum { + limbs: [0x309873a10967a45beb4be6840f3104, 0xdee51318c6e47085da8a68d064ea95, 0x005b93], + }, + BigNum { + limbs: [0x8d0b8f5ef4f45aa414b4187bf0cefd, 0xc86e1684b663c2b3fd7da0d1731abe, 0x001859], + }, + BigNum { + limbs: [0x6bccfd4eb9f5f9bac25779bd028d08, 0x4c188b40510d4553ed07dd76774c14, 0x00204e], + }, + BigNum { + limbs: [0x51d705b1446605453da88542fd72f9, 0x5b3a9e5d2c3aede5eb002c2b60b93f, 0x00539f], + }, + BigNum { + limbs: [0x9cde21536c74fac14aa34c68accbfa, 0xacabe5adc2561160383ee23ed3ba6d, 0x0017a9], + }, + BigNum { + limbs: [0x20c5e1ac91e7043eb55cb297533407, 0xfaa743efbaf221d99fc92763044ae6, 0x005c43], + }, + BigNum { + limbs: [0x0e05ddcf13a22fbd9b29beb5d8cc55, 0x7f61fc62e2a94bc3a5672aa39e4215, 0x000c58], + }, + BigNum { + limbs: [0xaf9e2530eab9cf4264d6404a2733ac, 0x27f12d3a9a9ee77632a0defe39c33e, 0x006795], + }, + BigNum { + limbs: [0x375b2142604d30f4d7712a9f7e571c, 0xcab5043cc4f48ad290c1186b578186, 0x005b3c], + }, + BigNum { + limbs: [0x8648e1bd9e0ece0b288ed46081a8e5, 0xdc9e2560b853a8674746f1368083cd, 0x0018b0], + }, + BigNum { + limbs: [0x0d311f3cdb74b04dc26f175eaf57e2, 0x9930e7bfc55513a31b5c3e627cc654, 0x00000d], + }, + BigNum { + limbs: [0xb072e3c322e74eb23d90e7a150a81f, 0x0e2241ddb7f31f96bcabcb3f5b3eff, 0x0073e0], + }, + BigNum { + limbs: [0x0a9c3e533dc34f63482f5e6ac7f5ee, 0x67bf56026f1264f3c71a7fc4285c1b, 0x001ef8], + }, + BigNum { + limbs: [0xb307c4acc098af9cb7d0a095380a13, 0x3f93d39b0e35ce4610ed89ddafa938, 0x0054f5], + }, + BigNum { + limbs: [0xf4363b42e95eb239d9acde14fb20e2, 0xa43cfc49003d2e82c238e01af647d6, 0x0034fe], + }, + BigNum { + limbs: [0xc96dc7bd14fd4cc6265320eb04df1f, 0x03162d547d0b04b715cf2986e1bd7c, 0x003eef], + }, + BigNum { + limbs: [0x537def6e0f30f92345e2553f15b27d, 0x399fdefa8ddc87f3c352e16c5500fb, 0x005ae6], + }, + BigNum { + limbs: [0x6a261391ef2b05dcba1da9c0ea4d84, 0x6db34aa2ef6bab4614b52835830458, 0x001907], + }, + BigNum { + limbs: [0x2f5049b1d0e187821f241ffda547a5, 0x8f3a988966e051b31982d33b68de07, 0x000c4e], + }, + BigNum { + limbs: [0x8e53b94e2d7a777de0dbdf025ab85c, 0x181891141667e186be8536666f274c, 0x00679f], + }, + BigNum { + limbs: [0x0f2fa24cca7e118a23f8184f67be53, 0x33bf9e5c6e898b6d5abad78fbbc311, 0x005a94], + }, + BigNum { + limbs: [0xae7460b333dded75dc07e6b09841ae, 0x73938b410ebea7cc7d4d32121c4242, 0x001959], + }, + BigNum { + limbs: [0x58b769fd60bae85dd0ba3600c21ea9, 0xcba700d5638da68d1e587fd67f193c, 0x00442a], + }, + BigNum { + limbs: [0x64ec99029da116a22f45c8ff3de158, 0xdbac28c819ba8cacb9af89cb58ec17, 0x002fc2], + }, + BigNum { + limbs: [0x49a4ab02e82f769ee500f647f7d43b, 0xb7446f10658c06ede0897762f302e9, 0x003cc1], + }, + BigNum { + limbs: [0x73ff57fd162c88611aff08b8082bc6, 0xf00eba8d17bc2c4bf77e923ee5026a, 0x00372b], + }, + BigNum { + limbs: [0x511800ae1cf2a898a5dc3fa6a50014, 0x687779a20ce0b1eeadb86ec0a240a1, 0x000f9d], + }, + BigNum { + limbs: [0x6c8c0251e16956675a23bf595affed, 0x3edbaffb7067814b2a4f9ae135c4b2, 0x006450], + }, + BigNum { + limbs: [0xa29e201b732f6dad4c4a46f5409741, 0xb39452ab3a4709599704eba189b706, 0x0017f3], + }, + BigNum { + limbs: [0x1b05e2e48b2c9152b3b5b80abf68c0, 0xf3bed6f2430129e041031e004e4e4d, 0x005bf9], + }, + BigNum { + limbs: [0x8c90ec812879e1589db18082632470, 0x0d64d5746e14f108e29cdc4cf25ab0, 0x000bd7], + }, + BigNum { + limbs: [0x3113167ed5e21da7624e7e7d9cdb91, 0x99ee54290f334230f56b2d54e5aaa3, 0x006816], + }, + BigNum { + limbs: [0xe820d586118b4a5213a84b62a68904, 0x52bba176b0cf4add1ac0d9aa0cc9d8, 0x0046e3], + }, + BigNum { + limbs: [0xd5832d79ecd0b4adec57b39d5976fd, 0x54978826cc78e85cbd472ff7cb3b7a, 0x002d0a], + }, + BigNum { + limbs: [0x285991341c908ed897ab600af26a9f, 0x4729896b3e93c2aeac62b2b1175d52, 0x006743], + }, + BigNum { + limbs: [0x954a71cbe1cb702768549ef50d9562, 0x6029a0323eb4708b2ba556f0c0a801, 0x000caa], + }, + BigNum { + limbs: [0xee64f977b0bc8213b864a44525e8e4, 0x576fae62c2747e9d59a9016efb44e8, 0x001b4d], + }, + BigNum { + limbs: [0xcf3f09884d9f7cec479b5abada171d, 0x4fe37b3abad3b49c7e5f0832dcc06a, 0x0058a0], + }, + BigNum { + limbs: [0xbb530e72b7bfc3855fca21c045e849, 0x249e0bfc4d51cc64d8b824c354c377, 0x0023d3], + }, + BigNum { + limbs: [0x0250f48d469c3b7aa035dd3fba17b8, 0x82b51da12ff666d4ff4fe4de8341dc, 0x00501a], + }, + BigNum { + limbs: [0x82849fa29e943275fe4524a3df9914, 0x4787c92fb6003ec786b72669f55ce5, 0x00043f], + }, + BigNum { + limbs: [0x3b1f635d5fc7cc8a01bada5c2066ed, 0x5fcb606dc747f4725150e337e2a86e, 0x006fae], + }, + BigNum { + limbs: [0x6b6f86bf14aefcc2338ad83cdfa657, 0xb53f58ce81940a859ee7dfedce98f1, 0x005c9d], + }, + BigNum { + limbs: [0x52347c40e9ad023dcc7526c32059aa, 0xf213d0cefbb428b4392029b4096c62, 0x00174f], + }, + BigNum { + limbs: [0xdcf47128786d2189831ce42c6138b3, 0x498eb85e702360db58e449ef2a892a, 0x0003f6], + }, + BigNum { + limbs: [0xe0af91d785eedd767ce31ad39ec74e, 0x5dc4713f0d24d25e7f23bfb2ad7c28, 0x006ff7], + }, + BigNum { + limbs: [0xf89acd6211e66705b59d4d67e78267, 0x51a561f4691450c8d1e120be501af7, 0x003dde], + }, + BigNum { + limbs: [0xc509359dec7597fa4a62b198187d9a, 0x55adc7a91433e2710626e8e387ea5b, 0x00360f], + }, + BigNum { + limbs: [0x5c622bba78e96e62ad6e618cd63fc9, 0xe604e2122797b4fc5b308c0f64c4b1, 0x006f1b], + }, + BigNum { + limbs: [0x6141d7458572909d52919d7329c038, 0xc14e478b55b07e3d7cd77d927340a2, 0x0004d1], + }, + BigNum { + limbs: [0x7e9861925f3c85728b638faa490c47, 0x8f85d4bb9c9568fd174cc19863a83f, 0x001590], + }, + BigNum { + limbs: [0x3f0ba16d9f1f798d749c6f55b6f3ba, 0x17cd54e1e0b2ca3cc0bb4809745d14, 0x005e5d], + }, + BigNum { + limbs: [0x5cc1b32b2a1950ab93f25b2906d21a, 0x69a09d5aa6587cf3f6638899a0097e, 0x00671e], + }, + BigNum { + limbs: [0x60e24fd4d442ae546c0da3d6f92de7, 0x3db28c42d6efb645e1a4810837fbd5, 0x000ccf], + }, + BigNum { + limbs: [0xc8f5dd633013028cfda586295ea84b, 0x7cce960c7027f14b86bb7c12055e83, 0x003da0], + }, + BigNum { + limbs: [0xf4ae259cce48fc73025a78d6a157b6, 0x2a8493910d2041ee514c8d8fd2a6cf, 0x00364d], + }, + BigNum { + limbs: [0x71d0d9c1e612bd99b980c752953536, 0x26c472d9a268f3d2329d2bd130b8e7, 0x005126], + }, + BigNum { + limbs: [0x4bd3293e18494166467f37ad6acacb, 0x808eb6c3dadf3f67a56addd0a74c6c, 0x0022c7], + }, + BigNum { + limbs: [0x735dfec23461fb447108a871678206, 0x593fb2d1e4796f84312c4cd1ae75c2, 0x000d82], + }, + BigNum { + limbs: [0x4a46043dc9fa03bb8ef7568e987dfb, 0x4e1376cb98cec3b5a6dbbcd0298f91, 0x00666b], + }, + BigNum { + limbs: [0x29130b18a08ed66bb7b793ab94d67d, 0xd9b87eff068a96987520a4a84e5315, 0x006d86], + }, + BigNum { + limbs: [0x9490f7e75dcd289448486b546b2984, 0xcd9aaa9e76bd9ca162e764f989b23e, 0x000666], + }, + BigNum { + limbs: [0xefd6b0570bf109d58a5af42d010ff9, 0xb09858f43cef3ed6d55a6350721d79, 0x002f27], + }, + BigNum { + limbs: [0xcdcd52a8f26af52a75a50ad2fef008, 0xf6bad0a94058f46302ada65165e7d9, 0x0044c5], + }, + BigNum { + limbs: [0x977360b30175c52dbb2cf227158434, 0x2fe0ca12c0b44b70ca6708f3104867, 0x002318], + }, + BigNum { + limbs: [0x2630a24cfce639d244d30cd8ea7bcd, 0x77725f8abc93e7c90da100aec7bcec, 0x0050d5], + }, + BigNum { + limbs: [0x835c9ca817ed357b3354fe4df74d21, 0xa535477e1384fba967880c356fda5d, 0x006d52], + }, + BigNum { + limbs: [0x3a476657e66ec984ccab00b208b2e0, 0x021de21f69c33790707ffd6c682af6, 0x00069b], + }, + BigNum { + limbs: [0x62f50c1fa01a6ebf12d1967f5228c6, 0xcccb86887bc1090ea1eafe6cd3d6f0, 0x0021c7], + }, + BigNum { + limbs: [0x5aaef6e05e419040ed2e6880add73b, 0xda87a31501872a2b361d0b35042e63, 0x005225], + }, + BigNum { + limbs: [0x783e184f0f10da4ad463040bfa6b96, 0x89d9a062ba8ff6e0797726f231b176, 0x004b12], + }, + BigNum { + limbs: [0x4565eab0ef4b24b52b9cfaf405946b, 0x1d79893ac2b83c595e90e2afa653dd, 0x0028db], + }, + BigNum { + limbs: [0x7fcbf22df21291ca782131084255da, 0xb49750ddb83253aa8f5c166504001b, 0x002164], + }, + BigNum { + limbs: [0x3dd810d20c496d3587decdf7bdaa27, 0xf2bbd8bfc515df8f48abf33cd40538, 0x005288], + }, + BigNum { + limbs: [0xeea8827f4e9ec602b926b27753b127, 0xfbbd7f20c3ced966ea577b468e20b9, 0x004f0e], + }, + BigNum { + limbs: [0xcefb8080afbd38fd46d94c88ac4eda, 0xab95aa7cb97959d2edb08e5b49e499, 0x0024de], + }, + BigNum { + limbs: [0xa933db67c24c70716d094756b66d63, 0x1aa615b346f8ebad67ddc10c732ae8, 0x0004d2], + }, + BigNum { + limbs: [0x147027983c0f8e8e92f6b7a949929e, 0x8cad13ea364f478c702a489564da6b, 0x006f1b], + }, + BigNum { + limbs: [0xf79311d4603ebe660cb35a9fa42972, 0xdb65a3240463f4216b3d286b5f60ee, 0x000b7b], + }, + BigNum { + limbs: [0xc610f12b9e1d4099f34ca4605bd68f, 0xcbed867978e43f186ccae13678a464, 0x006871], + }, + BigNum { + limbs: [0xafc701df2ef92f02a3555fc5ee25f7, 0x471ca69edd738a2bb3e93d180d6310, 0x004751], + }, + BigNum { + limbs: [0x0ddd0120cf62cffd5caa9f3a11da0a, 0x603682fe9fd4a90e241ecc89caa243, 0x002c9c], + }, + BigNum { + limbs: [0x83b10a7188a75be4d08b3a9bd95dc2, 0xc0e837c5ea1d5fd7929a9439bb000a, 0x0012c1], + }, + BigNum { + limbs: [0x39f2f88e75b4a31b2f74c46426a23f, 0xe66af1d7932ad362456d75681d0549, 0x00612b], + }, + BigNum { + limbs: [0x40d6987940175aa503ad6c44bc5ff8, 0xb1e6bfb9702607fd3c97042f2373a4, 0x005a03], + }, + BigNum { + limbs: [0x7ccd6a86be44a45afc5292bb43a009, 0xf56c69e40d222b3c9b710572b491af, 0x0019e9], + }, + BigNum { + limbs: [0x9c55f6ffe871ea5ddbbc4e9b6615b8, 0x0415d906203d93cbbee466fd232897, 0x00005c], + }, + BigNum { + limbs: [0x214e0c0015ea14a22443b06499ea49, 0xa33d50975d0a9f6e1923a2a4b4dcbc, 0x007391], + }, + BigNum { + limbs: [0xd30122c843684408d2342a11db2c67, 0xe20c7f6c968c5058ca294459777599, 0x002c14], + }, + BigNum { + limbs: [0xeaa2e037baf3baf72dcbd4ee24d39a, 0xc546aa30e6bbe2e10ddec548608fb9, 0x0047d8], + }, + BigNum { + limbs: [0xcf9853c5492f70dbe2b6ae6a65e380, 0x4b4b630bd746efffb256ee28750441, 0x000c94], + }, + BigNum { + limbs: [0xee0baf3ab52c8e241d4950959a1c81, 0x5c07c691a601433a25b11b79630111, 0x006759], + }, + BigNum { + limbs: [0xa240a2a069113c159a067743cae6c5, 0xeb7f91a0d0a7f1d0c3c19d09cf9306, 0x00585a], + }, + BigNum { + limbs: [0x1b63605f954ac2ea65f987bc35193c, 0xbbd397fcaca0416914466c9808724d, 0x001b92], + }, + BigNum { + limbs: [0xc301f4f32087447899594a115b42ec, 0xa53a04150fa19233a27cfafd0e6ca8, 0x002e4c], + }, + BigNum { + limbs: [0xfaa20e0cddd4ba8766a6b4eea4bd15, 0x021925886da6a106358b0ea4c998aa, 0x0045a1], + }, + BigNum { + limbs: [0xb12fefba555a4c968b0decdd5c8bff, 0xbdc683722a25b401681bc0a21dae2e, 0x001c50], + }, + BigNum { + limbs: [0x0c741345a901b26974f21222a37402, 0xe98ca62b53227f386fec48ffba5725, 0x00579c], + }, + BigNum { + limbs: [0xefb15e20ddffa892cbd498b8ae4748, 0x2ca691fde3753d113105a6f6224cab, 0x0037a8], + }, + BigNum { + limbs: [0xcdf2a4df205c566d342b664751b8b9, 0x7aac979f99d2f628a70262abb5b8a7, 0x003c45], + }, + BigNum { + limbs: [0xde6c81def05707ddd48b53c0632b7f, 0xb79237478ed134868d055a78d4d127, 0x006482], + }, + BigNum { + limbs: [0xdf3781210e04f7222b74ab3f9cd482, 0xefc0f255ee76feb34b02af2903342b, 0x000f6a], + }, + BigNum { + limbs: [0x905e68e892d76597534a53351aeb21, 0xc2b7e09e88cf54c6bcf61242906281, 0x001c1b], + }, + BigNum { + limbs: [0x2d459a176b849968acb5abcae514e0, 0xe49b48fef478de731b11f75f47a2d2, 0x0057d1], + }, + BigNum { + limbs: [0x3059b2dacb997091e05fa34880ee67, 0xb79d4996ad5169ae844074894dab48, 0x002374], + }, + BigNum { + limbs: [0x8d4a502532c28e6e1fa05bb77f119a, 0xefb5e006cff6c98b53c795188a5a0b, 0x005078], + }, + BigNum { + limbs: [0x81a6284dfcdcdb79aca024dfa3bea6, 0x4cf83a91c028b44b584b898ea2487e, 0x0032af], + }, + BigNum { + limbs: [0x3bfddab2017f2386535fda205c415b, 0x5a5aef0bbd1f7eee7fbc801335bcd5, 0x00413e], + }, + BigNum { + limbs: [0xe255d810db7c7ba57428937e370687, 0x2e7f20b138794741d7afe1d1739af4, 0x004cf7], + }, + BigNum { + limbs: [0xdb4e2aef22df835a8bd76b81c8f97a, 0x78d408ec44ceebf8005827d0646a5e, 0x0026f6], + }, + BigNum { + limbs: [0x2a36904e65334d504798a56d84b81b, 0x4e6452d677424619a91495c55a387a, 0x001963], + }, + BigNum { + limbs: [0x936d72b19928b1afb86759927b47e6, 0x58eed6c70605ed202ef373dc7dccd9, 0x005a8a], + }, + BigNum { + limbs: [0x892679c5bf83b3bedbfaac558c8d18, 0xe9ac49520d3dc9997bf03a451a6630, 0x003754], + }, + BigNum { + limbs: [0x347d893a3ed84b41240552aa7372e9, 0xbda6e04b700a69a05c17cf5cbd9f23, 0x003c98], + }, + BigNum { + limbs: [0xf254f66ae5ee531c14292bf0255fd5, 0x1effcfc73d5c86252263d4232859d9, 0x00526e], + }, + BigNum { + limbs: [0xcb4f0c95186dabe3ebd6d30fdaa02c, 0x885359d63febad14b5a4357eafab79, 0x00217f], + }, + BigNum { + limbs: [0xe17e99d8256761f9a5ad12c1f3853f, 0x36423bc3f0fae23f188a9a547b7d01, 0x006a6d], + }, + BigNum { + limbs: [0xdc256927d8f49d065a52ec3e0c7ac2, 0x7110edd98c4d50fabf7d6f4d5c8851, 0x000980], + }, + BigNum { + limbs: [0x306689091abed321eed5418571ac33, 0x92d95a4ef11d7cddd189d0ec4d20a0, 0x000e3d], + }, + BigNum { + limbs: [0x8d3d79f6e39d2bde112abd7a8e53ce, 0x1479cf4e8c2ab65c067e38b58ae4b3, 0x0065b0], + }, + BigNum { + limbs: [0x3d1d54f8f2982de43fdb36bf47bcc3, 0xba63f2b18adc6f2e9e0b45136d4f1c, 0x006efb], + }, + BigNum { + limbs: [0x8086ae070bc3d11bc024c840b8433e, 0xecef36ebf26bc40b39fcc48e6ab637, 0x0004f1], + }, + BigNum { + limbs: [0x902f381368c0b10a873d6c9d82cbdd, 0x7b0015a2d0fe32712683cabe07344f, 0x0050ee], + }, + BigNum { + limbs: [0x2d74caec959b4df578c292627d3424, 0x2c5313faac4a00c8b1843ee3d0d104, 0x0022ff], + }, + BigNum { + limbs: [0xee61519e282a1877ab619f936cb9e1, 0xf2c40c622d5c14a79f3664b930f42d, 0x002e62], + }, + BigNum { + limbs: [0xcf42b161d631e688549e5f6c934620, 0xb48f1d3b4fec1e9238d1a4e8a71125, 0x00458a], + }, + BigNum { + limbs: [0xc4dccaecd1fbf5e4f8b0b094a83cb3, 0xa8ec3ef066195ec440a4e3fd2ea14c, 0x000539], + }, + BigNum { + limbs: [0xf8c738132c60091b074f4e6b57c34e, 0xfe66eaad172ed475976325a4a96406, 0x006eb3], + }, + BigNum { + limbs: [0xea27b86283f69cf28211eacc0710ff, 0x0a61fb4687169578008f160eb02032, 0x0016a8], + }, + BigNum { + limbs: [0xd37c4a9d7a65620d7dee1433f8ef02, 0x9cf12e56f6319dc1d778f39327e520, 0x005d45], + }, + BigNum { + limbs: [0x53ec9a4a2ac078308183f53cba4097, 0x9444ba3d2df9d017f9d3a6beb55f1f, 0x004fb9], + }, + BigNum { + limbs: [0x69b768b5d39b86cf7e7c09c345bf6a, 0x130e6f604f4e6321de3462e322a634, 0x002434], + }, + BigNum { + limbs: [0xd20df595f39f2afdc2fcf153ad903c, 0x2ece77c82d2c0c03b16ef100307a6e, 0x000d33], + }, + BigNum { + limbs: [0xeb960d6a0abcd4023d030dac526fc5, 0x7884b1d5501c2736269918a1a78ae4, 0x0066ba], + }, + BigNum { + limbs: [0x0ac6a330a41421f54ee691e0643777, 0x4f96d2ac9b3923c8d9e9259802f7d7, 0x002194], + }, + BigNum { + limbs: [0xb2dd5fcf5a47dd0ab1196d1f9bc88a, 0x57bc56f0e20f0f70fe1ee409d50d7c, 0x005259], + }, + BigNum { + limbs: [0x0e3d52802ba363eb2b24461b367723, 0x0dba5e260f57ac9e3e8ba3ed80a750, 0x006e68], + }, + BigNum { + limbs: [0xaf66b07fd2b89b14d4dbb8e4c988de, 0x9998cb776df0869b997c65b4575e03, 0x000585], + }, + BigNum { + limbs: [0xc786c39e8d76c168070ff63089758b, 0x4bf2fd4556aba449afd09e0b523b9a, 0x0047cd], + }, + BigNum { + limbs: [0xf61d3f6170e53d97f8f008cf768a76, 0x5b602c58269c8ef028376b9685c9b8, 0x002c20], + }, + BigNum { + limbs: [0x5b740bab2ae626b3a288e56cbe6ba2, 0x2ec9ee1056d93f5bdf1610b8e02c02, 0x0061be], + }, + BigNum { + limbs: [0x622ff754d375d84c5d77199341945f, 0x78893b8d266ef3ddf8f1f8e8f7d951, 0x00122f], + }, + BigNum { + limbs: [0xb2b4506b58821b9782d98e09dd2095, 0x1180e4201fdd09faded963276eda9c, 0x001717], + }, + BigNum { + limbs: [0x0aefb294a5d9e3687d2670f622df6c, 0x95d2457d5d6b293ef92ea67a692ab7, 0x005cd6], + }, + BigNum { + limbs: [0x59d09e36445b2c8d76f7be4ffbdf0c, 0x7d907dfec3418f3e53c99a199f8fa5, 0x005deb], + }, + BigNum { + limbs: [0x63d364c9ba00d272890840b00420f5, 0x29c2ab9eba06a3fb843e6f883875ae, 0x001602], + }, + BigNum { + limbs: [0x5abe13ab2a152efe228225b0b37c11, 0x78ed18c25162b9575235ed65ee9b01, 0x005681], + }, + BigNum { + limbs: [0x62e5ef54d446d001dd7dd94f4c83f0, 0x2e6610db2be579e285d21c3be96a52, 0x001d6c], + }, + BigNum { + limbs: [0xd8c7e12991d3593a7478c980a80dcd, 0xb7a1c70a28635fea4420d98de0ddff, 0x00077f], + }, + BigNum { + limbs: [0xe4dc21d66c88a5c58b87357f57f234, 0xefb1629354e4d34f93e73013f72753, 0x006c6d], + }, + BigNum { + limbs: [0xbe7f08f42eb31a40103db7fbe67596, 0x76187ee6c6269fbef78669ab90d7d8, 0x005cb3], + }, + BigNum { + limbs: [0xff24fa0bcfa8e4bfefc24704198a6b, 0x313aaab6b721937ae0819ff6472d7a, 0x00173a], + }, + BigNum { + limbs: [0x1234f45f84b51a2458759b86aa9b46, 0xbce4857298de5aa7436a8e41578bef, 0x001ade], + }, + BigNum { + limbs: [0xab6f0ea079a6e4dba78a63795564bb, 0xea6ea42ae469d892949d7b60807964, 0x00590e], + }, + BigNum { + limbs: [0xe8cb30c74f3496a5de0a8cb929b435, 0x7142c749358132565e4a3f276dddcf, 0x00263d], + }, + BigNum { + limbs: [0xd4d8d238af27685a21f57246d64bcc, 0x3610625447c700e379bdca7a6a2783, 0x004db0], + }, + BigNum { + limbs: [0xc06812fcc08500e1b3a80d3dc99e5a, 0xde2bae7c6bb687328292c58f0914fc, 0x000a7a], + }, + BigNum { + limbs: [0xfd3bf0033dd6fe1e4c57f1c23661a7, 0xc9277b211191ac0755754412cef056, 0x006972], + }, + BigNum { + limbs: [0xc8b17cc28f5b5914730aa651dc14c6, 0x0a2862c6b0aa7e00857f06f8f13093, 0x001dca], + }, + BigNum { + limbs: [0xf4f2863d6f00a5eb8cf558ae23eb3b, 0x9d2ac6d6cc9db539528902a8e6d4bf, 0x005623], + }, + BigNum { + limbs: [0x1230bc0e387e9558bd52e8fdf0f3fa, 0x0e85c8adf888bf4821c2f7e1d5e5bb, 0x003755], + }, + BigNum { + limbs: [0xab7346f1c5dd69a742ad16020f0c07, 0x98cd60ef84bf73f1b64511c0021f98, 0x003c98], + }, + BigNum { + limbs: [0xe24941616914e7ad110ef96d2c8b89, 0x2f2b1ea09b86b3e9ced3336c9ff439, 0x001bbc], + }, + BigNum { + limbs: [0xdb5ac19e95471752eef10592d37478, 0x78280afce1c17f500934d635381119, 0x005831], + }, + BigNum { + limbs: [0xb530ecbcf382bb730881f99cce2b05, 0x97b86edc1c02dfa201d28456bec63b, 0x00008a], + }, + BigNum { + limbs: [0x087316430ad9438cf77e056331d4fc, 0x0f9abac161455397d635854b193f18, 0x007363], + }, + BigNum { + limbs: [0xa7275730b5b11515f4e3caddb042a0, 0xf0a1a79dc567185006d5ff757c19fe, 0x0056c8], + }, + BigNum { + limbs: [0x167cabcf48aae9ea0b1c34224fbd61, 0xb6b181ffb7e11ae9d1320a2c5beb55, 0x001d24], + }, + BigNum { + limbs: [0x61b6a2481f0bc6f89b6e4cc3f8a8d9, 0xcbcfbfa6e1cac504800176c799853b, 0x005048], + }, + BigNum { + limbs: [0x5bed60b7df5038076491b23c075728, 0xdb8369f69b7d6e35580692da3e8018, 0x0023a4], + }, + BigNum { + limbs: [0x65dd758be92292d21af29fac91cf26, 0xf5feecd35328814b1382cf67a22cc2, 0x00503f], + }, + BigNum { + limbs: [0x57c68d7415396c2de50d5f536e30db, 0xb1543cca2a1fb1eec4853a3a35d891, 0x0023ad], + }, + BigNum { + limbs: [0x1f5a7f98a0d41d2fb01e7994ae9e07, 0x266275af949d1efef1ea963a619c6d, 0x007145], + }, + BigNum { + limbs: [0x9e4983675d87e1d04fe1856b5161fa, 0x80f0b3ede8ab143ae61d73677668e6, 0x0002a8], + }, + BigNum { + limbs: [0x8d78320cf0b1dc0bf6682a1f324c98, 0xd95c3d037697cca953c9a7d7135772, 0x004e04], + }, + BigNum { + limbs: [0x302bd0f30daa22f40997d4e0cdb369, 0xcdf6ec9a06b06690843e61cac4ade1, 0x0025e8], + }, + BigNum { + limbs: [0xab429c42218eea9d1a8d0cdf05b3f5, 0xba420ebae0ca2485088dcd0eedfd0f, 0x004571], + }, + BigNum { + limbs: [0x126166bddccd1462e572f220fa4c0c, 0xed111ae29c7e0eb4cf7a3c92ea0844, 0x002e7b], + }, + BigNum { + limbs: [0x8a07f9f945e0a8a970b4f3f6820606, 0xc78bdc342aafc2989b69d7031f283b, 0x003573], + }, + BigNum { + limbs: [0x339c0906b87b56568f4b0b097df9fb, 0xdfc74d69529870a13c9e329eb8dd18, 0x003e79], + }, + BigNum { + limbs: [0x17df56d813171c551a3d49cec26fff, 0xd46e142d366d1862d870c69ea23d3b, 0x0034df], + }, + BigNum { + limbs: [0xa5c4ac27eb44e2aae5c2b5313d9002, 0xd2e5157046db1ad6ff97430335c818, 0x003f0d], + }, + BigNum { + limbs: [0x71280f074d1440d341280e40f6ff69, 0x493dd2c18195b3d4f002ab14fce7d7, 0x003657], + }, + BigNum { + limbs: [0x4c7bf3f8b147be2cbed7f0bf090098, 0x5e1556dbfbb27f64e8055e8cdb1d7c, 0x003d96], + }, + BigNum { + limbs: [0x7d5dfa3a479c8e611337171217a856, 0x8a69cc191d70c9bffed16f4a90e9b9, 0x0023f6], + }, + BigNum { + limbs: [0x404608c5b6bf709eecc8e7ede857ab, 0x1ce95d845fd76979d9369a57471b9a, 0x004ff7], + }, + BigNum { + limbs: [0x2297d77e27dabdc088bdd905a55f21, 0xe5ba74ab8f7b7943135dbd04ce91ce, 0x000ec6], + }, + BigNum { + limbs: [0x9b0c2b81d681413f774225fa5aa0e0, 0xc198b4f1edccb9f6c4aa4c9d097385, 0x006526], + }, + BigNum { + limbs: [0x1780f66062d06efdbc5c8f8076051c, 0xff129029040c12f30d72abc32d1510, 0x002214], + }, + BigNum { + limbs: [0xa6230c9f9b8b900243a36f7f89fae5, 0xa8409974793c2046ca955ddeaaf043, 0x0051d8], + }, + BigNum { + limbs: [0xff74fc1738cfd4e640defe9c3d1988, 0x5f9a2cb148576539d6e7048fb70e71, 0x002be5], + }, + BigNum { + limbs: [0xbe2f06e8c58c2a19bf210063c2e679, 0x47b8fcec34f0ce000121051220f6e1, 0x004808], + }, + BigNum { + limbs: [0xfee0e9919be7eb242860ad1233361d, 0x51765816dd0870c5f64dfff44c0fe1, 0x005251], + }, + BigNum { + limbs: [0xbec3196e627413dbd79f51edccc9e4, 0x55dcd186a03fc273e1ba09ad8bf571, 0x00219c], + }, + BigNum { + limbs: [0x1d417ac2d72f8681deb3aea33c8449, 0xf5bec7ef45efbf9de97916504aabd2, 0x002801], + }, + BigNum { + limbs: [0xa062883d272c787e214c505cc37bb8, 0xb19461ae3758739bee8ef3518d5981, 0x004beb], + }, + BigNum { + limbs: [0xffd9cd43748cd07e797c34f167e1ae, 0xfb8721c1baed95f9167176d30171d8, 0x0032d0], + }, + BigNum { + limbs: [0xbdca35bc89cf2e818683ca0e981e53, 0xabcc07dbc25a9d40c19692ced6937a, 0x00411c], + }, + BigNum { + limbs: [0x46efcbd5cbd25bcdea20340e865edc, 0x5cf7ea7460e71bb5ebece92e50178a, 0x003bbb], + }, + BigNum { + limbs: [0x76b4372a3289a33215dfcaf179a125, 0x4a5b3f291c611783ec1b207387edc9, 0x003832], + }, + BigNum { + limbs: [0x1acd98fa4e19e15adb37a5ea82fe43, 0x64500bde4ae6b522fed010b950c90d, 0x0039b7], + }, + BigNum { + limbs: [0xa2d66a05b0421da524c859157d01be, 0x43031dbf32617e16d937f8e8873c46, 0x003a36], + }, + BigNum { + limbs: [0xf97bf1fe6c26fcec89f106fb90245c, 0xcc7b13e9ecf1b6504cd2a95cc231ba, 0x00707c], + }, + BigNum { + limbs: [0xc428110192350213760ef8046fdba5, 0xdad815b390567ce98b35604515d398, 0x000370], + }, + BigNum { + limbs: [0xb40031a396daed1d58d36d2887248a, 0xefd47eb0b490fb4b5fe309008ffb30, 0x0025d6], + }, + BigNum { + limbs: [0x09a3d15c678111e2a72c91d778db77, 0xb77eaaecc8b737ee782500a1480a23, 0x004e16], + }, + BigNum { + limbs: [0xb896192a36d9e94f4e49f4db97e1d9, 0x2ffe51ef6ac663a47e046c9d5d166c, 0x003fd0], + }, + BigNum { + limbs: [0x050de9d5c78215b0b1b60a24681e28, 0x7754d7ae1281cf955a039d047aeee7, 0x00341d], + }, + BigNum { + limbs: [0x3c79d13bd65d4193ca2d1bc7fd9263, 0x66ae43c4c3c56831575a9d83a15eb2, 0x003933], + }, + BigNum { + limbs: [0x812a31c427febd6c35d2e338026d9e, 0x40a4e5d8b982cb0880ad6c1e36a6a1, 0x003aba], + }, + BigNum { + limbs: [0x8534756de28ddf9c097282f8518c00, 0x2e85cd535086081a5545bd583161c8, 0x005fc4], + }, + BigNum { + limbs: [0x386f8d921bce1f63f68d7c07ae7401, 0x78cd5c4a2cc22b1f82c24c49a6a38b, 0x001429], + }, + BigNum { + limbs: [0x7ad52f8a5c627be96a0110191444de, 0xd5d6f7db3f4f0f669bb5886c3af4cb, 0x000753], + }, + BigNum { + limbs: [0x42ced375a1f9831695feeee6ebbb23, 0xd17c31c23df923d33c5281359d1088, 0x006c99], + }, + BigNum { + limbs: [0xfcbf4084f4f9b2c30b3c3647dd9723, 0x82a49d6b5c74782c1cd532b1b61313, 0x002b73], + }, + BigNum { + limbs: [0xc0e4c27b09624c3cf4c3c8b82268de, 0x24ae8c3220d3bb0dbb32d6f021f23f, 0x00487a], + }, + BigNum { + limbs: [0x5167b6e1c6e7094e396cf2c8808fc1, 0x2b3fd45a67f93cbcdfb94554c90356, 0x00403c], + }, + BigNum { + limbs: [0x6c3c4c1e3774f5b1c6930c377f7040, 0x7c135543154ef67cf84ec44d0f01fd, 0x0033b1], + }, + BigNum { + limbs: [0xaad9d1e07e8ad1c6704a19b8498e4c, 0x9a8e6f552967166e1d63d16fa4191b, 0x002cfc], + }, + BigNum { + limbs: [0x12ca311f7fd12d398fb5e547b671b5, 0x0cc4ba4853e11ccbbaa4383233ec38, 0x0046f1], + }, + BigNum { + limbs: [0xa6f095c3e393ea78bad60fe8295af1, 0x51570dd9c749cd846dedf76d82d68e, 0x0018f1], + }, + BigNum { + limbs: [0x16b36d3c1ac814874529ef17d6a510, 0x55fc1bc3b5fe65b56a1a1234552ec5, 0x005afc], + }, + BigNum { + limbs: [0xd4799a1030031151641d355ed74859, 0xa82ef937f7a8184e37dc8531cf3300, 0x005c33], + }, + BigNum { + limbs: [0xe92a68efce58edae9be2c9a128b7a8, 0xff24306585a01aeba02b847008d252, 0x0017b9], + }, + BigNum { + limbs: [0x9183dce28ef8014fe8d6d7c4afe0a9, 0xcfdf2f836149018debf684e68567f3, 0x002b70], + }, + BigNum { + limbs: [0x2c20261d6f63fdb01729273b501f58, 0xd773fa1a1bff31abec1184bb529d60, 0x00487c], + }, + BigNum { + limbs: [0x78921f813dbb183c71a7402ec2eed5, 0x4ad5a9709b098e4630618320a9220e, 0x0034ff], + }, + BigNum { + limbs: [0x4511e37ec0a0e6c38e58bed13d112c, 0x5c7d802ce23ea4f3a7a686812ee345, 0x003eee], + }, + BigNum { + limbs: [0xb104627af5b12aeb15f8b2e0dc45d1, 0xafb9f051dae05d758652dede4d953e, 0x005765], + }, + BigNum { + limbs: [0x0c9fa08508aad414ea074c1f23ba30, 0xf799394ba267d5c451b52ac38a7015, 0x001c87], + }, + BigNum { + limbs: [0x076c47c5c2c17969253d44de1e4d00, 0x18e25537e45a543a827b37d2ebc611, 0x000970], + }, + BigNum { + limbs: [0xb637bb3a3b9a8596dac2ba21e1b301, 0x8e70d46598eddeff558cd1ceec3f42, 0x006a7d], + }, + BigNum { + limbs: [0x1a77c155967b404f527ffbb148e55b, 0x124a85c2aa3222dad195f08db8c103, 0x004820], + }, + BigNum { + limbs: [0xa32c41aa67e0beb0ad80034eb71aa6, 0x9508a3dad316105f067219141f4450, 0x002bcd], + }, + BigNum { + limbs: [0x526ac238e5a0c5a70265e120dec41a, 0xb91dbc2c171b610f40689e8bdb7e85, 0x0054a2], + }, + BigNum { + limbs: [0x6b3940c718bb3958fd9a1ddf213be7, 0xee356d71662cd22a979f6b15fc86ce, 0x001f4a], + }, + BigNum { + limbs: [0xbc3f5982e5d13e52ac9853b184617d, 0xcfe5971c4e6c2818670f0f6e1efe30, 0x005db5], + }, + BigNum { + limbs: [0x0164a97d188ac0ad5367ab4e7b9e84, 0xd76d92812edc0b2170f8fa33b90723, 0x001637], + }, + BigNum { + limbs: [0xea190ee72171b5bf96906be310d83a, 0xb49f8ab5bb56e6d4fddaed19d920a7, 0x005edc], + }, + BigNum { + limbs: [0xd38af418dcea4940696f931cef27c7, 0xf2b39ee7c1f14c64da2d1c87fee4ab, 0x001510], + }, + BigNum { + limbs: [0x1ca7fc06a7652dce89d9caeca2788e, 0x41484cc523db20e2ed344c1f0d27dc, 0x006fb2], + }, + BigNum { + limbs: [0xa0fc06f956f6d131762634135d8773, 0x660adcd8596d1256ead3bd82cadd77, 0x00043b], + }, + BigNum { + limbs: [0x24ee69f08086a145b0c011142f943c, 0xbc8be1039af2e00b5ea72b0ce3cc51, 0x002f6b], + }, + BigNum { + limbs: [0x98b5990f7dd55dba4f3fedebd06bc5, 0xeac74899e255532e7960de94f43902, 0x004481], + }, + BigNum { + limbs: [0x4e43d7d4c8cc800c599e831e62b8d6, 0xfe6e13f0c70ec64b7d75ada9bc94dc, 0x0020c6], + }, + BigNum { + limbs: [0x6f602b2b358f7ef3a6617be19d472b, 0xa8e515acb6396cee5a925bf81b7077, 0x005326], + }, + BigNum { + limbs: [0xa4cf29a5781cc8b8f0b1427b5e42f8, 0x14f60f00b7cfd56abdc480f96f516e, 0x001acf], + }, + BigNum { + limbs: [0x18d4d95a863f36470f4ebc84a1bd09, 0x925d1a9cc5785dcf1a4388a868b3e5, 0x00591e], + }, + BigNum { + limbs: [0x860ca3e0b0c8cd0d2607b31e34bf62, 0x39b5bc3017ffbab6734e04debb058b, 0x0046b3], + }, + BigNum { + limbs: [0x37975f1f4d9331f2d9f84be1cb409f, 0x6d9d6d6d6548788364ba04c31cffc8, 0x002d3a], + }, + BigNum { + limbs: [0xaa0aa405432df6ef7fba47f56fb3d8, 0x3e710294f33c1a7756ed868ab15142, 0x005dc7], + }, + BigNum { + limbs: [0x13995efabb2e08108045b70a904c29, 0x68e227088a0c18c2811a831726b411, 0x001626], + }, + BigNum { + limbs: [0xe49f3bc59065cd5a9925b13969600f, 0x8418db7c8f6c07faa3df067d96a234, 0x0062b2], + }, + BigNum { + limbs: [0xd904c73a6df631a566da4dc6969ff2, 0x233a4e20eddc2b3f3429032441631e, 0x00113b], + }, + BigNum { + limbs: [0x08f69bb5a34d7a4d4166e5018414f8, 0x0bd90a98a833477c49bd9f429e3221, 0x006bd5], + }, + BigNum { + limbs: [0xb4ad674a5b0e84b2be9919fe7beb09, 0x9b7a1f04d514ebbd8e4a6a5f39d332, 0x000818], + }, + BigNum { + limbs: [0x858e55d4b05011c65654cc6e143494, 0x5f38c3c0928bc650a7b8aabc2c90b0, 0x00637a], + }, + BigNum { + limbs: [0x3815ad2b4e0bed39a9ab3291ebcb6d, 0x481a65dceabc6ce9304f5ee5ab74a3, 0x001073], + }, + BigNum { + limbs: [0x56451a0f2e97031e3ac422a3bebfce, 0x375f4d14b97ee1c87bd168b412c9dc, 0x0007ce], + }, + BigNum { + limbs: [0x675ee8f0cfc4fbe1c53bdc5c414033, 0x6ff3dc88c3c951715c36a0edc53b77, 0x006c1f], + }, + BigNum { + limbs: [0x203872ef16ad220269e1371ad9a322, 0x6fbb53c9f81b01ac67d632538bc740, 0x00731a], + }, + BigNum { + limbs: [0x9d6b9010e7aedcfd961ec7e5265cdf, 0x3797d5d3852d318d7031d74e4c3e13, 0x0000d3], + }, + BigNum { + limbs: [0x46ca8e879475036676bb13db1cfdd7, 0xb14784ed9323b84e3224c2e800f6bf, 0x0044df], + }, + BigNum { + limbs: [0x76d9747869e6fb998944eb24e3022a, 0xf60ba4afea247aeba5e346b9d70e94, 0x002f0d], + }, + BigNum { + limbs: [0x3f2f1cdac0bdd61490fae57a7c33a7, 0xe357b3f96e6d94c1b71405e3140b1f, 0x001189], + }, + BigNum { + limbs: [0x7e74e6253d9e28eb6f05198583cc5a, 0xc3fb75a40eda9e7820f403bec3fa34, 0x006263], + }, + BigNum { + limbs: [0x55ed36483309549cee4813c5113cae, 0x623b190ab7ecc0e1424947746063b4, 0x006bbf], + }, + BigNum { + limbs: [0x67b6ccb7cb52aa6311b7eb3aeec353, 0x45181092c55b725895bec22d77a19f, 0x00082e], + }, + BigNum { + limbs: [0x1b0f77f0d55ea106e039f68e5ab3dd, 0x860235a7434baffb53bd6eab1fa801, 0x003664], + }, + BigNum { + limbs: [0xa2948b0f28fd5df91fc60871a54c24, 0x2150f3f639fc833e844a9af6b85d52, 0x003d89], + }, + BigNum { + limbs: [0xe78026be2d5e7457717af258d76b50, 0xdacf4627bc5be4665ae77a4160334d, 0x000eeb], + }, + BigNum { + limbs: [0xd623dc41d0fd8aa88e850ca72894b1, 0xcc83e375c0ec4ed37d208f6077d205, 0x006501], + }, + BigNum { + limbs: [0x67bb8c3c1db6ea8505ca50e03d6419, 0x9cbef4cf3ede358ff43badf4f95a4a, 0x004340], + }, + BigNum { + limbs: [0x55e876c3e0a5147afa35ae1fc29be8, 0x0a9434ce3e69fda9e3cc5bacdeab09, 0x0030ad], + }, + BigNum { + limbs: [0x5f6b1fce35a767a42cef3b59936aca, 0x330034910c6106697712ede6bda93f, 0x006c0d], + }, + BigNum { + limbs: [0x5e38e331c8b4975bd310c3a66c9537, 0x7452f50c70e72cd060f51bbb1a5c14, 0x0007e0], + }, + BigNum { + limbs: [0x3a056f49df88978ecfab339e06cb5b, 0x2071f73b29bb76665151b4cb89bba9, 0x000d56], + }, + BigNum { + limbs: [0x839e93b61ed367713054cb61f934a6, 0x86e13262538cbcd386b654d64e49aa, 0x006697], + }, + BigNum { + limbs: [0xef2c4c46e3ffffcb692d0528f44414, 0xacccb9468e3c4282dc4972a3cca5fb, 0x0005ca], + }, + BigNum { + limbs: [0xce77b6b91a5bff3496d2f9d70bbbed, 0xfa867056ef0bf0b6fbbe96fe0b5f57, 0x006e22], + }, + BigNum { + limbs: [0x881eea9a94f19f18bb67ac498bb306, 0xdd3a18e8bc717109bb87546c7be526, 0x001055], + }, + BigNum { + limbs: [0x35851865696a5fe7449852b6744cfb, 0xca1910b4c0d6c2301c80b5355c202d, 0x006397], + }, + BigNum { + limbs: [0xa7f2c626b2e4def707a2d2027625b3, 0x9b9923940fc900b3afc1442ae9abaf, 0x006fa1], + }, + BigNum { + limbs: [0x15b13cd94b772008f85d2cfd89da4e, 0x0bba06096d7f32862846c576ee59a4, 0x00044c], + }, + BigNum { + limbs: [0x10558d9aa509ab0e5ae9a70d5d061a, 0xc356d0de01d48ff79d5e980fce6409, 0x004e6f], + }, + BigNum { + limbs: [0xad4e7565595253f1a51657f2a2f9e7, 0xe3fc58bf7b73a3423aa9719209a14a, 0x00257d], + }, + BigNum { + limbs: [0x23c188df7ce263b135c7a97914d377, 0x39349820411f5fc93aca2333a367b1, 0x0031d6], + }, + BigNum { + limbs: [0x99e27a2081799b4eca385586eb2c8a, 0x6e1e917d3c28d3709d3de66e349da2, 0x004217], + }, + BigNum { + limbs: [0x6246eaafa91200119436ea05caedb2, 0xfe0d05b931869a29e30166d46cc7b6, 0x004b5e], + }, + BigNum { + limbs: [0x5b5d18505549feee6bc914fa35124f, 0xa94623e44bc1990ff506a2cd6b3d9d, 0x00288e], + }, + BigNum { + limbs: [0x9d99175038716628f47d40e82d15bd, 0x093fd8cc8c196a702485b38d5808f4, 0x00713d], + }, + BigNum { + limbs: [0x200aebafc5ea98d70b82be17d2ea44, 0x9e1350d0f12ec8c9b38256147ffc5f, 0x0002b0], + }, + BigNum { + limbs: [0xeb780345d8d48e768d55926c7e753e, 0x99ddf792e5371ad4958bc9e7000449, 0x005664], + }, + BigNum { + limbs: [0xd22bffba2587708972aa6c93818ac3, 0x0d75320a98111865427c3fbad80109, 0x001d89], + }, + BigNum { + limbs: [0x252bfa132081f9d0568f04b84b2a00, 0x3359a03f722a55433db658105171ca, 0x00726e], + }, + BigNum { + limbs: [0x987808ecddda052fa970fa47b4d601, 0x73f9895e0b1dddf69a51b191869389, 0x00017f], + }, + BigNum { + limbs: [0x4430904a87ce25144f897786ee3fb6, 0x09193ddd55abe3de5d7d83eacc3d55, 0x002f75], + }, + BigNum { + limbs: [0x797372b5768dd9ebb076877911c04b, 0x9e39ebc0279c4f5b7a8a85b70bc7fe, 0x004478], + }, + BigNum { + limbs: [0xe4fb2dcb4d9f1a4a9ebdd727b87a2e, 0x2b3e89f62de6e60238fe7599d7ec10, 0x0062ab], + }, + BigNum { + limbs: [0xd8a8d534b0bce4b5614227d84785d3, 0x7c149fa74f614d379f099408001942, 0x001142], + }, + BigNum { + limbs: [0xd620293ae0ef1d9da284bedb2f43d0, 0x180a5114016f798c9348185b0382e2, 0x003b69], + }, + BigNum { + limbs: [0xe783d9c51d6ce1625d7b4024d0bc31, 0x8f48d8897bd8b9ad44bff146d48270, 0x003884], + }, + BigNum { + limbs: [0x6e4a6abf88d933719ae8985de5540a, 0x852ff0a7b43ffbb7a8b0d7b33af34c, 0x002eae], + }, + BigNum { + limbs: [0x4f5998407582cb8e651766a21aabf7, 0x222338f5c90837822f5731ee9d1207, 0x00453f], + }, + BigNum { + limbs: [0xcc886ec1f3ffe0d1b7b97da44a349a, 0x156b1645203e0188cbbb016cf2efe2, 0x006934], + }, + BigNum { + limbs: [0xf11b943e0a5c1e2e4846815bb5cb67, 0x91e813585d0a31b10c4d0834e51570, 0x000ab9], + }, + BigNum { + limbs: [0xa3311e69461863c932b24d441a3598, 0x4a6827f60d795efd1735c252faeb40, 0x0061aa], + }, + BigNum { + limbs: [0x1a72e496b8439b36cd4db1bbe5ca69, 0x5ceb01a76fced43cc0d2474edd1a13, 0x001243], + }, + BigNum { + limbs: [0x82345ac27d7e4868b67310ef09a9cb, 0x92f702edb6d0f2507c5f193db6176b, 0x00110f], + }, + BigNum { + limbs: [0x3b6fa83d80ddb697498cee10f65636, 0x145c26afc67740e95ba8f06421ede8, 0x0062de], + }, + BigNum { + limbs: [0xdb0f7c98858057112f96e2b0f9b3dd, 0x58e0c574d4f3d63057d2ac2decc1c8, 0x001a68], + }, + BigNum { + limbs: [0xe294866778dba7eed0691c4f064c24, 0x4e726428a8545d0980355d73eb438a, 0x005985], + }, + BigNum { + limbs: [0x8c7c2afe21b8d4c669d39e6258ef1e, 0x02a17e71df56bfb88204fb95d7509b, 0x001696], + }, + BigNum { + limbs: [0x3127d801dca32a39962c609da710e3, 0xa4b1ab2b9df1738156030e0c00b4b8, 0x005d57], + }, + BigNum { + limbs: [0x4b6eef836791e9f54098590590f97a, 0x18a877b7ab1d7cfa546e4bac4497c4, 0x002a75], + }, + BigNum { + limbs: [0x7235137c96ca150abf67a5fa6f0687, 0x8eaab1e5d22ab63f8399bdf5936d8f, 0x004978], + }, + BigNum { + limbs: [0xda57a2483dd819a0521ef18aeb112b, 0x741f3f8e164dd0c49746d9253f440e, 0x005928], + }, + BigNum { + limbs: [0xe34c60b7c083e55fade10d7514eed6, 0x3333ea0f66fa627540c1307c98c144, 0x001ac5], + }, + BigNum { + limbs: [0x6d9efa01c14d946eb5dc3197a8ef92, 0x93e8f9bde758fed2674d81d6135835, 0x001439], + }, + BigNum { + limbs: [0x500508fe3d0e6a914a23cd6857106f, 0x136a2fdf95ef346770ba87cbc4ad1e, 0x005fb4], + }, + BigNum { + limbs: [0x6b343de16bed11f7715c2b59ea6e61, 0x4bd44428726e555938660d5f1259af, 0x003451], + }, + BigNum { + limbs: [0x526fc51e926eed088ea3d3a61591a0, 0x5b7ee5750ad9dde09fa1fc42c5aba4, 0x003f9c], + }, + BigNum { + limbs: [0xd7adea656c88ebe1c73198fced09ec, 0x858f3343b72247e4ce45ae3b842b6b, 0x0004ba], + }, + BigNum { + limbs: [0xe5f6189a91d3131e38ce660312f615, 0x21c3f659c625eb5509c25b6653d9e7, 0x006f33], + }, + BigNum { + limbs: [0x4396812497c58b3d6e0eb2267582d7, 0x19f1fc6fe5a19f799a4ac31e134aad, 0x00342f], + }, + BigNum { + limbs: [0x7a0d81db669673c291f14cd98a7d2a, 0x8d612d2d97a693c03dbd4683c4baa6, 0x003fbe], + }, + BigNum { + limbs: [0x330ac33976577896e7cd165be118af, 0x513188184d1e47fe7c0925272dc385, 0x006c00], + }, + BigNum { + limbs: [0x8a993fc6880486691832e8a41ee752, 0x5621a1853029eb3b5bfee47aaa41ce, 0x0007ed], + }, + BigNum { + limbs: [0xb422e761321f21d09645fe30b61c23, 0x9970ea51b0e6b23e7b35ed24a1e5c7, 0x00395c], + }, + BigNum { + limbs: [0x09811b9ecc3cdd2f69ba00cf49e3de, 0x0de23f4bcc6180fb5cd21c7d361f8c, 0x003a91], + }, + BigNum { + limbs: [0x0b160cf2d6797490f41560b245b067, 0xffc2ee6b0313ed07699a98a0e39141, 0x004a5a], + }, + BigNum { + limbs: [0xb28df60d27e28a6f0bea9e4dba4f9a, 0xa7903b327a3446326e6d7100f47412, 0x002992], + }, + BigNum { + limbs: [0xaba6e2d7d140d91f7cc4829e8423a4, 0xb6b450e6f2baafc992e5de759fc13a, 0x002110], + }, + BigNum { + limbs: [0x11fd20282d1b25e0833b7c617bdc5d, 0xf09ed8b68a8d837045222b2c384419, 0x0052dc], + }, + BigNum { + limbs: [0xa01148af98688c508dd3077d60548f, 0x935af62d62298775e60c31411c7d36, 0x0013e9], + }, + BigNum { + limbs: [0x1d92ba5065f372af722cf7829fab72, 0x13f833701b1eabc3f1fbd860bb881d, 0x006004], + }, + BigNum { + limbs: [0xc7276b0e0087cc7eb1318aca4306de, 0x43d57eb232ec56fb40f6e0bf66906e, 0x004451], + }, + BigNum { + limbs: [0xf67c97f1fdd432814ece7435bcf923, 0x637daaeb4a5bdc3e971128e27174e4, 0x002f9c], + }, + BigNum { + limbs: [0xeba7f573b3b0edb038298303139ae1, 0xe4ce8328676baf6a10b22f3eda88c1, 0x001629], + }, + BigNum { + limbs: [0xd1fc0d8c4aab114fc7d67bfcec6520, 0xc284a67515dc83cfc755da62fd7c91, 0x005dc3], + }, + BigNum { + limbs: [0x9bcab0951254eec1d795605c9454e1, 0x4f1ed5f3daea6d94451f7d62139849, 0x0030d1], + }, + BigNum { + limbs: [0x21d9526aec07103e286a9ea36bab20, 0x583453a9a25dc5a592e88c3fc46d0a, 0x00431c], + }, + BigNum { + limbs: [0x015a142b676f214fde7e2d7a559fd3, 0x6fb6de21ab8a003f81fccd9c6817e5, 0x00083d], + }, + BigNum { + limbs: [0xbc49eed496ecddb02181d185aa602e, 0x379c4b7bd1be32fa560b3c056fed6e, 0x006bb0], + }, + BigNum { + limbs: [0xb05750b0757d9b1b525693c4fdf276, 0xa020a192f58550d8f5fae982ba3ffb, 0x006226], + }, + BigNum { + limbs: [0x0d4cb24f88de63e4ada96b3b020d8b, 0x0732880a87c2e260e20d201f1dc558, 0x0011c7], + }, + BigNum { + limbs: [0x9589c6d02e429124ca49ae2654cfed, 0x93b1dca7fd1456679d9af60081e614, 0x000055], + }, + BigNum { + limbs: [0x281a3c2fd0196ddb35b650d9ab3014, 0x13a14cf58033dcd23a6d13a1561f3f, 0x007398], + }, + BigNum { + limbs: [0xe5f85ddf3c1b5cb31a1acd9d26ce3c, 0x0c64c68dd203f81ab9316428dff763, 0x003505], + }, + BigNum { + limbs: [0xd7aba520c240a24ce5e53162d931c5, 0x9aee630fab443b1f1ed6a578f80def, 0x003ee8], + }, + BigNum { + limbs: [0xaa559c25a323066982caeaed4863fd, 0x51ff3b932efd9f1ca45610bea15005, 0x000405], + }, + BigNum { + limbs: [0x134e66da5b38f8967d351412b79c04, 0x5553ee0a4e4a941d33b1f8e336b54e, 0x006fe8], + }, + BigNum { + limbs: [0x7c55cac91b46847d77398fb0253409, 0x54aa601bd20e14bc524e83f5dfdf0a, 0x0018aa], + }, + BigNum { + limbs: [0x414e3836e3157a8288c66f4fdacbf8, 0x52a8c981ab3a1e7d85b985abf82649, 0x005b43], + }, + BigNum { + limbs: [0x72ebfd53689d24efb99d766acb5fd5, 0x53b4e3288a76fc3f7b8a3bd7c507c1, 0x0018af], + }, + BigNum { + limbs: [0x4ab805ac95beda104662889534a02c, 0x539e4674f2d136fa5c7dcdca12fd92, 0x005b3e], + }, + BigNum { + limbs: [0xfd1bdd35d3c9d1c6cbff4af2be3916, 0x1e437926a687585966d8d7855d16d5, 0x00274d], + }, + BigNum { + limbs: [0xc08825ca2a922d393400b40d41c6eb, 0x890fb076d6c0dae0712f321c7aee7d, 0x004ca0], + }, + BigNum { + limbs: [0xb77311aa5733c02e36541e5c44ddc4, 0xf70a9c158f6fb5fca7743791401f4b, 0x00649c], + }, + BigNum { + limbs: [0x0630f155a7283ed1c9abe0a3bb223d, 0xb0488d87edd87d3d3093d21097e608, 0x000f50], + }, + BigNum { + limbs: [0xbec17bd32d28f964b877880b7bd162, 0x1c8e1645a812d561eb297d716c3f6e, 0x004732], + }, + BigNum { + limbs: [0xfee2872cd133059b478876f4842e9f, 0x8ac51357d5355dd7ecde8c306bc5e4, 0x002cbb], + }, + BigNum { + limbs: [0x4b9abc640df6a92392180523c30faa, 0xccb911dcb1ae544edf064df058b8a6, 0x000b8b], + }, + BigNum { + limbs: [0x7209469bf06555dc6de7f9dc3cf057, 0xda9a17c0cb99deeaf901bbb17f4cad, 0x006861], + }, + BigNum { + limbs: [0x43fba07004bb352fb97ddcbb685b7e, 0xfb15e4fc1addd4df8ea0dd402af30b, 0x0016aa], + }, + BigNum { + limbs: [0x79a8628ff9a0c9d04682224497a483, 0xac3d44a1626a5e5a49672c61ad1248, 0x005d42], + }, + BigNum { + limbs: [0x56e2bbfada26463ad32c3398b4cb0a, 0xf0957745c50282acff8e98d64e22c9, 0x003095], + }, + BigNum { + limbs: [0x66c147052435b8c52cd3cb674b34f7, 0xb6bdb257b845b08cd87970cb89e28a, 0x004357], + }, + BigNum { + limbs: [0x31dfefa8056f0bb4ad409f0a9afc82, 0x9150327c8a8167c605fb4aa50a4642, 0x002e81], + }, + BigNum { + limbs: [0x8bc41357f8ecf34b52bf5ff565037f, 0x1602f720f2c6cb73d20cbefccdbf11, 0x00456c], + }, + BigNum { + limbs: [0xe90e9f0a64c08bc2c919362a37a2f5, 0x90bdf40839f0ea8ca59fb662da9e1f, 0x003872], + }, + BigNum { + limbs: [0xd49563f5999b733d36e6c8d5c85d0c, 0x16953595435748ad3268533efd6733, 0x003b7b], + }, + BigNum { + limbs: [0x071011023ca1f11813365f2e4dd33f, 0x63d9876c3af1054103abfd750fa7e3, 0x0073d8], + }, + BigNum { + limbs: [0xb693f1fdc1ba0de7ecc99fd1b22cc2, 0x4379a23142572df8d45c0c2cc85d70, 0x000015], + }, + BigNum { + limbs: [0x694ee83ae27a47bed39a0919fadbc3, 0x4a3b47df5caa2bdad7b86e55e1c1cc, 0x0030e6], + }, + BigNum { + limbs: [0x54551ac51be1b7412c65f5e605243e, 0x5d17e1be209e075f004f9b4bf64387, 0x004307], + }, + BigNum { + limbs: [0x5e55696d530d23c829d3b1ec72d08f, 0xc09602866dfdcaae5a41e711829dab, 0x003c1e], + }, + BigNum { + limbs: [0x5f4e9992ab4edb37d62c4d138d2f72, 0xe6bd27170f4a688b7dc622905567a8, 0x0037ce], + }, + BigNum { + limbs: [0x288cf2ea23bfefa96caf3ac3f8ba22, 0xb3275950a9f9c4441b6584b2104f8d, 0x00719f], + }, + BigNum { + limbs: [0x95171015da9c0f569350c43c0745df, 0xf42bd04cd34e6ef5bca284efc7b5c6, 0x00024d], + }, + BigNum { + limbs: [0x8bc3b8285c996dbad4d376d1513768, 0x7256e5b76cb3175f0352ab72b4f874, 0x005ebd], + }, + BigNum { + limbs: [0x31e04ad7a1c291452b2c882eaec899, 0x34fc43e610951bdad4b55e2f230cdf, 0x001530], + }, + BigNum { + limbs: [0x894a39cb116c525af67e8ae5be1bb2, 0x8c6cd36c4d58e020f6ea3ff00d743a, 0x00625d], + }, + BigNum { + limbs: [0x3459c934ecefaca50981741a41e44f, 0x1ae656312fef5318e11dc9b1ca9119, 0x001190], + }, + BigNum { + limbs: [0x25e1a5766d24382bb250f695030649, 0xd5ae6d99265b8f18e758585cbb43c1, 0x005977], + }, + BigNum { + limbs: [0x97c25d899137c6d44daf086afcf9b8, 0xd1a4bc0456eca420f0afb1451cc192, 0x001a75], + }, + BigNum { + limbs: [0x108a14b7c70a6ad26c4075ed336c51, 0x0b039e7a6793034fce3be69716022a, 0x0041dd], + }, + BigNum { + limbs: [0xad19ee483751942d93bf8912cc93b0, 0x9c4f8b2315b52fea09cc230ac20329, 0x003210], + }, + BigNum { + limbs: [0x73d08bc76ccf5ba34807979b0215f8, 0x672456cb0e4d663c27a5ae14f1c97c, 0x006b48], + }, + BigNum { + limbs: [0x49d37738918ca35cb7f86764fdea09, 0x402ed2d26efaccfdb0625b8ce63bd7, 0x0008a5], + }, + BigNum { + limbs: [0xb194d22c9353d04f23e87d934f1f96, 0xd299fff47a28674a00d694f09259c6, 0x006a55], + }, + BigNum { + limbs: [0x0c0f30d36b082eb0dc17816cb0e06b, 0xd4b929a9031fcbefd73174b145ab8d, 0x000997], + }, + BigNum { + limbs: [0xe60667a30dabcfb52e13c743b9975c, 0x9bbee3ad9bc81a5f72c6f875ee7602, 0x001460], + }, + BigNum { + limbs: [0xd79d9b5cf0b02f4ad1ec37bc4668a5, 0x0b9445efe18018da6541112be98f50, 0x005f8d], + }, + BigNum { + limbs: [0xab86dadb989e51f0cbebe282c25f67, 0x985bbe50fcdf18c268a03833d98497, 0x0007a0], + }, + BigNum { + limbs: [0x121d282465bdad0f34141c7d3da09a, 0x0ef76b4c80691a776f67d16dfe80bc, 0x006c4d], + }, + BigNum { + limbs: [0xda7702676dea396d79c4d11332d72d, 0x2e7430a3a2a093042049534a4e9515, 0x004eda], + }, + BigNum { + limbs: [0xe32d00989071c592863b2deccd28d4, 0x78def8f9daa7a035b7beb65789703d, 0x002513], + }, + BigNum { + limbs: [0x3fea587c4affedc04f2ce41153449c, 0x22a7edcf8fa76606557aaa616f7f58, 0x003eaa], + }, + BigNum { + limbs: [0x7db9aa83b35c113fb0d31aeeacbb65, 0x84ab3bcdeda0cd33828d5f406885fb, 0x003543], + }, + BigNum { + limbs: [0xd6197d6c736880f50cd1a8e4c2db19, 0x175965785290878d175aaf9256fc91, 0x003bdf], + }, + BigNum { + limbs: [0xe78a85938af37e0af32e561b3d24e8, 0x8ff9c4252ab7abacc0ad5a0f8108c1, 0x00380e], + }, + BigNum { + limbs: [0xd541ba86f98b53e4a9ecb7395b88da, 0xdd06325810ac9f0db723ad6706b7b6, 0x002288], + }, + BigNum { + limbs: [0xe862487904d0ab1b561347c6a47727, 0xca4cf7456c9b942c20e45c3ad14d9c, 0x005164], + }, + BigNum { + limbs: [0xea6811be9c622d4a838b5d59cd79e5, 0x1f1b5c49c83409f1ca610a08f16655, 0x006d03], + }, + BigNum { + limbs: [0xd33bf14161f9d1b57c74a1a632861c, 0x8837cd53b51429480da6ff98e69efd, 0x0006ea], + }, + BigNum { + limbs: [0x4e1e3ba38d57fa7de6ee5fb11c8691, 0xc39cc1085e035b0395f3cb50c20339, 0x000d8b], + }, + BigNum { + limbs: [0x6f85c75c7104048219119f4ee37970, 0xe3b668951f44d83642143e5116021a, 0x006661], + }, + BigNum { + limbs: [0x11bb5ed43415b6eaa3a247fac9045c, 0x8ce61b57c643fab4ad0b6127b0bdf5, 0x006200], + }, + BigNum { + limbs: [0xabe8a42bca4648155c5db70536fba5, 0x1a6d0e45b70438852afca87a27475e, 0x0011ed], + }, + BigNum { + limbs: [0x66edf951391e017027b8876a00b1dd, 0x16bac381fe479a73369f5b7b9fbd66, 0x00269e], + }, + BigNum { + limbs: [0x56b609aec53dfd8fd8477795ff4e24, 0x9098661b7f0098c6a168ae263847ed, 0x004d4f], + }, + BigNum { + limbs: [0x8d3bda72fe32ac556446a1e4c8b12c, 0xdecdc861cdd2ba3c1894e10b47bb26, 0x0070a1], + }, + BigNum { + limbs: [0x3068288d002952aa9bb95d1b374ed5, 0xc885613baf7578fdbf732896904a2d, 0x00034b], + }, + BigNum { + limbs: [0xc2aede9421fa9e20d9bfae30c1dd53, 0x261192cf65c5eb82149a7ac5fda4ff, 0x0041af], + }, + BigNum { + limbs: [0xfaf5246bdc6160df264050cf3e22ae, 0x814196ce178247b7c36d8edbda6053, 0x00323e], + }, + BigNum { + limbs: [0x39f3a6db6531cdca1cb78883b5501f, 0x26227262918465175978507ae3f87a, 0x00650f], + }, + BigNum { + limbs: [0x83b05c24992a3135e348767c4aafe2, 0x8130b73aebc3ce227e8fb926f40cd9, 0x000ede], + }, + BigNum { + limbs: [0xc37dd45f1728e7f0d65f4eb1657ebb, 0xcbf627e693d811320caaca8a58a05a, 0x005d7a], + }, + BigNum { + limbs: [0xfa262ea0e733170f29a0b04e9a8146, 0xdb5d01b6e9702207cb5d3f177f64f8, 0x001672], + }, + BigNum { + limbs: [0xf0213a7d775a248c5cb6eb5617be18, 0x3d8529f4a57d3684ca197cb9b2697e, 0x0032a6], + }, + BigNum { + limbs: [0xcd82c8828701da73a34913a9e841e9, 0x69cdffa8d7cafcb50dee8ce8259bd4, 0x004147], + }, + BigNum { + limbs: [0x28b34e361f477916846a9d93c59012, 0x68771297c5f5cab5e5b78e6a8640e0, 0x000bb8], + }, + BigNum { + limbs: [0x94f0b4c9df1485e97b95616c3a6fef, 0x3edc1705b7526883f2507b3751c473, 0x006835], + }, + BigNum { + limbs: [0x2fcc7b4c5132e44eade4f1a131233d, 0x24993436058950f7e263c54ee6a9b5, 0x0053e3], + }, + BigNum { + limbs: [0x8dd787b3ad291ab1521b0d5ecedcc4, 0x82b9f56777bee241f5a44452f15b9e, 0x00200a], + }, + BigNum { + limbs: [0xe3b4dbe22b4392311d3304db643695, 0x6c675105ced67e07f5abd08cc0fb81, 0x00118c], + }, + BigNum { + limbs: [0xd9ef271dd3186ccee2ccfa249bc96c, 0x3aebd897ae71b531e25c39151709d1, 0x006261], + }, + BigNum { + limbs: [0xf11efe066d096281a3dfb44cd7d165, 0x9692bcbb22f340a207f615ad60750f, 0x003157], + }, + BigNum { + limbs: [0xcc8504f991529c7e5c204ab3282e9c, 0x10c06ce25a54f297d011f3f4779043, 0x004296], + }, + BigNum { + limbs: [0xdcb69c52a4e2ed82c4a6de94c8bf96, 0xadb5b738776bd7f6723b1e2ff13929, 0x0005c6], + }, + BigNum { + limbs: [0xe0ed66ad5979117d3b59206b37406b, 0xf99d726505dc5b4365cceb71e6cc29, 0x006e26], + }, + BigNum { + limbs: [0xbdddcc8bf7cd9ed4857eba4432963c, 0xae7241f1a002af8f5d5d7f44857a7f, 0x001987], + }, + BigNum { + limbs: [0xffc63674068e602b7a8144bbcd69c5, 0xf8e0e7abdd4583aa7aaa8a5d528ad3, 0x005a65], + }, + BigNum { + limbs: [0x403fec5dd82b2b02f99d83bd109f22, 0xad7b8eb369ebc5844282de960e20ea, 0x004e19], + }, + BigNum { + limbs: [0x7d6416a22630d3fd06627b42ef60df, 0xf9d79aea135c6db595852b0bc9e469, 0x0025d3], + }, + BigNum { + limbs: [0x667871334f5a17c81450fbaf4bac63, 0x8c39463268f3eff98a4b7b39d85563, 0x0054d1], + }, + BigNum { + limbs: [0x572b91ccaf01e737ebaf0350b4539e, 0x1b19e36b145443404dbc8e67ffaff0, 0x001f1c], + }, + BigNum { + limbs: [0xe5f786d3627dca98b3217a2417eb91, 0x2b1650a62e0d01d8396db702f1cebe, 0x007322], + }, + BigNum { + limbs: [0xd7ac7c2c9bde34674cde84dbe81470, 0x7c3cd8f74f3b31619e9a529ee63694, 0x0000cb], + }, + BigNum { + limbs: [0x14442a81d5dacf112f0e1c1ea12f87, 0x8dc193c234980989fd6dc601cf00dc, 0x0039df], + }, + BigNum { + limbs: [0xa95fd87e28812feed0f1e2e15ed07a, 0x199195db48b029afda9a43a0090477, 0x003a0e], + }, + BigNum { + limbs: [0x921cee975fa0e584ce4ae1e892a3c5, 0xc62efbed2b5cecef70db4531b7f32d, 0x000c2f], + }, + BigNum { + limbs: [0x2b8714689ebb197b31b51d176d5c3c, 0xe1242db051eb464a672cc470201226, 0x0067bd], + }, + BigNum { + limbs: [0x80e62a591e130ddff868f0a741ce9b, 0x73617687ce3861a1cbdaf40353ac4d, 0x005d2b], + }, + BigNum { + limbs: [0x3cbdd8a6e048f12007970e58be3166, 0x33f1b315af0fd1980c2d159e845906, 0x0016c2], + }, + BigNum { + limbs: [0xbebbfef511cfe3de78900fcc779e4b, 0x5e5d2d844e5ab78ecd7e8bbf2f114f, 0x004cc8], + }, + BigNum { + limbs: [0xfee8040aec8c1b21876fef338861b6, 0x48f5fc192eed7bab0a897de2a8f403, 0x002725], + }, + BigNum { + limbs: [0xfb644fa915d933a7364690463b8c5a, 0x3da87aae9f28ef0fa6840d0fb03214, 0x0035f4], + }, + BigNum { + limbs: [0xc23fb356e882cb58c9b96eb9c473a7, 0x69aaaeeede1f442a3183fc9227d33e, 0x003df9], + }, + BigNum { + limbs: [0x291078c0516e965d1f8871ac8e55dd, 0xd8a29031fa3b19ae5ba085ac0ef4a6, 0x005a92], + }, + BigNum { + limbs: [0x94938a3faced68a2e0778d5371aa24, 0xceb0996b830d198b7c6783f5c910ad, 0x00195a], + }, + BigNum { + limbs: [0xbe569a3a31f165c75c815f425cadf6, 0x91d2ea1bb63a6725ce5bff1ee40056, 0x003c67], + }, + BigNum { + limbs: [0xff4d68c5cc6a9938a37e9fbda3520b, 0x15803f81c70dcc1409ac0a82f404fc, 0x003786], + }, + BigNum { + limbs: [0xd4e8f014ba143af233e178fcd9035e, 0x187a05e3c16ef03e7c1f872a7e3d16, 0x007309], + }, + BigNum { + limbs: [0xe8bb12eb4447c40dcc1e860326fca3, 0x8ed923b9bbd942fb5be8827759c83c, 0x0000e4], + }, + BigNum { + limbs: [0x72c83deac35889a527d24cb6033b6d, 0x8dae310a1c6ed27159d1f41e8ecf38, 0x002a77], + }, + BigNum { + limbs: [0x4adbc5153b03755ad82db249fcc494, 0x19a4f89360d960c87e36158349361b, 0x004976], + }, + BigNum { + limbs: [0xed383bd6c47164f0f4a28beafd4b05, 0xfe95f6cd1c5ae51f8b3c2f31b064ca, 0x004b19], + }, + BigNum { + limbs: [0xd06bc72939ea9a0f0b5d731502b4fc, 0xa8bd32d060ed4e1a4ccbda7027a088, 0x0028d3], + }, + BigNum { + limbs: [0xc2af4e8c17ec9b12d6d2603dee0fe2, 0xaffd6163c6457b489fed890fd8e5be, 0x0055b0], + }, + BigNum { + limbs: [0xfaf4b473e66f63ed292d9ec211f01f, 0xf755c839b702b7f1381a8091ff1f94, 0x001e3c], + }, + BigNum { + limbs: [0x9902e6b674cd83c44a9dee0b94bba2, 0xe168decf4b8ed4289398be82882966, 0x001896], + }, + BigNum { + limbs: [0x24a11c49898e7b3bb56210f46b445f, 0xc5ea4ace31b95f11446f4b1f4fdbed, 0x005b56], + }, + BigNum { + limbs: [0x4e45ae2b0e3452a4529d1d508d95fc, 0x7722bad2894e16b2203d6eb58db41f, 0x0033f1], + }, + BigNum { + limbs: [0x6f5e54d4f027ac5bad62e1af726a05, 0x30306ecaf3fa1c87b7ca9aec4a5134, 0x003ffc], + }, + BigNum { + limbs: [0x37da9fd247b74cb41071ef7f2aea85, 0x217231241ba8cb044aeeeef2e88ea4, 0x003467], + }, + BigNum { + limbs: [0x85c9632db6a4b24bef8e0f80d5157c, 0x85e0f879619f68358d191aaeef76af, 0x003f86], + }, + BigNum { + limbs: [0x3f627cef182bf8f6139aa4696affcb, 0x10ac5d53a149416469b17618f6a047, 0x005364], + }, + BigNum { + limbs: [0x7e418610e6300609ec655a96950036, 0x96a6cc49dbfef1d56e569388e1650c, 0x002089], + }, + BigNum { + limbs: [0x7e981b72650bfeff3159bca6f143eb, 0xfc526f7aaa2242fa324ea12a7d5c51, 0x0011d4], + }, + BigNum { + limbs: [0x3f0be78d99500000cea642590ebc16, 0xab00ba22d325f03fa5b968775aa902, 0x006218], + }, + BigNum { + limbs: [0xd355e9996feaa77dfbd1f922488ad7, 0xb0058ff22890469a4cefef1ddd319e, 0x005848], + }, + BigNum { + limbs: [0xea4e19668e715782042e05ddb7752a, 0xf74d99ab54b7ec9f8b181a83fad3b4, 0x001ba4], + }, + BigNum { + limbs: [0x71709889e0167d409fadc1390c215b, 0x74aa326c7001fa831c8ac096dad4f9, 0x00693f], + }, + BigNum { + limbs: [0x4c336a761e4581bf60523dc6f3dea6, 0x32a8f7310d4638b6bb7d490afd305a, 0x000aae], + }, + BigNum { + limbs: [0x7f3c55e68a9ebe67f8591eaace97e5, 0x36a927134e53d5de7528fa90299f94, 0x000767], + }, + BigNum { + limbs: [0x3e67ad1973bd409807a6e05531681c, 0x70aa028a2ef45d5b62df0f11ae65bf, 0x006c86], + }, + BigNum { + limbs: [0xd68c4e218d617df86a5774c5ddad45, 0x3791051adf2dcf04d9abd55a75fca8, 0x00056b], + }, + BigNum { + limbs: [0xe717b4de70fa810795a88a3a2252bc, 0x6fc224829e1a6434fe5c34476208aa, 0x006e82], + }, + BigNum { + limbs: [0x7b2013f325133a921b388995bea7fd, 0x97cf9f1de049dea2d37f97aa42f19b, 0x001305], + }, + BigNum { + limbs: [0x4283ef0cd948c46de4c7756a415804, 0x0f838a7f9cfe5497048871f79513b8, 0x0060e8], + }, + BigNum { + limbs: [0x8ab8dd1277fe748ac4ce96c05922c8, 0x10e56eefef4251ebd9d921306ed45a, 0x005d42], + }, + BigNum { + limbs: [0x32eb25ed865d8a753b31683fa6dd39, 0x966dbaad8e05e14dfe2ee8716930f9, 0x0016ab], + }, + BigNum { + limbs: [0x0a4f7342f02550b7dd369ee24a4b2c, 0xfee53953c53b0cfcf5e4fb20e3fa23, 0x0006c4], + }, + BigNum { + limbs: [0xb3548fbd0e36ae4822c9601db5b4d5, 0xa86df049b80d263ce2230e80f40b30, 0x006d28], + }, + BigNum { + limbs: [0x7d50a297e01b9f76128ae4a4ec03cc, 0x48ee592217168094228f05f9a5f7b1, 0x0003cd], + }, + BigNum { + limbs: [0x405360681e405f89ed751a5b13fc35, 0x5e64d07b6631b2a5b57903a8320da2, 0x007020], + }, + BigNum { + limbs: [0x15ef3ee3ffc51b88fd3eb853540a9b, 0x0703b0d3a24c6f57d8c0bf34a21c9a, 0x001d2d], + }, + BigNum { + limbs: [0xa7b4c41bfe96e37702c146acabf566, 0xa04f78c9dafbc3e1ff474a6d35e8b9, 0x0056c0], + }, + BigNum { + limbs: [0xa0e87e3224359144dd54d2b5c75587, 0x4ac46b49ad06003051d8ebe9cfeefb, 0x003126], + }, + BigNum { + limbs: [0x1cbb84cdda266dbb22ab2c4a38aa7a, 0x5c8ebe53d0423309862f1db8081658, 0x0042c7], + }, + BigNum { + limbs: [0x8b986d29b33eb5f0def2eff45786de, 0xc59e71fd63b2bf1d7ff3348ecd758b, 0x0040be], + }, + BigNum { + limbs: [0x320b95d64b1d490f210d0f0ba87923, 0xe1b4b7a01995741c5814d5130a8fc8, 0x00332e], + }, + BigNum { + limbs: [0x99b19c7bca6174d7162d9719890f64, 0x9b45fa34b0b61f0b2d8c094d642020, 0x003b30], + }, + BigNum { + limbs: [0x23f2668433fa8a28e9d267e676f09d, 0x0c0d2f68cc92142eaa7c005473e533, 0x0038bd], + }, + BigNum { + limbs: [0xd107902335e8b13bda35e579e11aaf, 0x059e6e34b922e5757ecbd6781b5e62, 0x002ec2], + }, + BigNum { + limbs: [0xec9c72dcc8734dc425ca19861ee552, 0xa1b4bb68c4254dc4593c3329bca6f0, 0x00452b], + }, + BigNum { + limbs: [0x9e3c15394e6e1b208b52545e33565a, 0x494ae6fc135c86b8d15bf3d84bec66, 0x00191b], + }, + BigNum { + limbs: [0x1f67edc6afede3df74adaaa1cca9a7, 0x5e0842a169ebac8106ac15c98c18ed, 0x005ad2], + }, + BigNum { + limbs: [0x7d4b44384d28349ae50103d6566c65, 0x9d381a6230d31aa9d7cb35b628a6c7, 0x0057ad], + }, + BigNum { + limbs: [0x4058bec7b133ca651afefb29a9939c, 0x0a1b0f3b4c751890003cd3ebaf5e8c, 0x001c40], + }, + BigNum { + limbs: [0x86f87457e8d83a3e453abe1c7e3711, 0x8ca8ab8a88de4e6c5a7b26d84725a4, 0x005162], + }, + BigNum { + limbs: [0x36ab8ea81583c4c1bac540e381c8f0, 0x1aaa7e12f469e4cd7d8ce2c990dfaf, 0x00228b], + }, + BigNum { + limbs: [0xf1a3f8ee19dbd5ae0de328241583d7, 0xf540ec8a19daeeda67854d1fd03c74, 0x00330b], + }, + BigNum { + limbs: [0xcc000a11e4802951f21cd6dbea7c2a, 0xb2123d13636d445f7082bc8207c8de, 0x0040e1], + }, + BigNum { + limbs: [0x7f4a71e8149069d29f8a66433e17c6, 0x9b28721e8abbc3e8f9d6b214dd6309, 0x001c12], + }, + BigNum { + limbs: [0x3e599117e9cb952d607598bcc1e83b, 0x0c2ab77ef28c6f50de31578cfaa24a, 0x0057db], + }, + BigNum { + limbs: [0xa60a12a7fafe3326945a8982257a8c, 0x56b1edc476b1082be230899d88c0b8, 0x002d3f], + }, + BigNum { + limbs: [0x1799f058035dcbd96ba5757dda8575, 0x50a13bd906972b0df5d780044f449b, 0x0046ae], + }, + BigNum { + limbs: [0xeb5269e06340da74ad6f23b8331b7d, 0x812e1d221ea3c3d27fdf06de69822a, 0x00081d], + }, + BigNum { + limbs: [0xd251991f9b1b248b5290db47cce484, 0x26250c7b5ea46f67582902c36e8328, 0x006bd0], + }, + BigNum { + limbs: [0x5d72906ae5974656402311a3c88c0d, 0x20bdebb8c529b77a75fbc3e63a6bd7, 0x0060c5], + }, + BigNum { + limbs: [0x6031729518c4b8a9bfdced5c3773f4, 0x86953de4b81e7bbf620c45bb9d997c, 0x001328], + }, + BigNum { + limbs: [0x8ae0d36eaa8ceeb0ec520770f54dd3, 0x051ba804583083d632fb1caac7277b, 0x005e0e], + }, + BigNum { + limbs: [0x32c32f9153cf104f13adf78f0ab22e, 0xa23781992517af63a50cecf710ddd8, 0x0015df], + }, + BigNum { + limbs: [0x70ca1a6b232d5316951ae5ab0e6a4c, 0x0e9a156bfcdfe7a10eedb8e7072c92, 0x000599], + }, + BigNum { + limbs: [0x4cd9e894db2eabe96ae51954f195b5, 0x98b9143180684b98c91a50bad0d8c1, 0x006e54], + }, + BigNum { + limbs: [0x0f8c6a786fe9e866941a14b23a4155, 0x871fec91df9e50d66999b7f71ecb85, 0x00260d], + }, + BigNum { + limbs: [0xae1798878e7216996be5ea4dc5beac, 0x20333d0b9da9e2636e6e51aab939ce, 0x004de0], + }, + BigNum { + limbs: [0x728f805725223905648a06d5bf4779, 0x9f15f40745862c463c0f6c15f45234, 0x000eac], + }, + BigNum { + limbs: [0x4b1482a8d939c5fa9b75f82a40b888, 0x083d359637c206f39bf89d8be3b31f, 0x006541], + }, + BigNum { + limbs: [0xb10938a76e2590378e47a78cb232a2, 0x99c93e92dfca58c7a298d7828572ca, 0x000550], + }, + BigNum { + limbs: [0x0c9aca5890366ec871b857734dcd5f, 0x0d89eb0a9d7dda72356f321f529289, 0x006e9d], + }, + BigNum { + limbs: [0xe83b231555ac35ead6a82181c19293, 0xa2397a7ac4814435fb53a4ff017529, 0x001f23], + }, + BigNum { + limbs: [0xd568dfeaa8afc9152957dd7e3e6d6e, 0x0519af22b8c6ef03dcb464a2d69029, 0x0054ca], + }, + BigNum { + limbs: [0x6f49efba092206bec4af45a3dd836a, 0x8a349d98ba5804e0a5947115d93a2f, 0x005569], + }, + BigNum { + limbs: [0x4e5a1345f539f8413b50b95c227c97, 0x1d1e8c04c2f02e593273988bfecb24, 0x001e84], + }, + BigNum { + limbs: [0x1b702ad51911966e554ba438256c09, 0x4d7122d117efeb680de72cff169011, 0x006daa], + }, + BigNum { + limbs: [0xa233d82ae54a6891aab45ac7da93f8, 0x59e206cc655847d1ca20dca2c17542, 0x000643], + }, + BigNum { + limbs: [0x3bc1e33db1fabde67e9726e2110a9f, 0x5bf26247526e599fab5a4a1e19cff4, 0x0047a4], + }, + BigNum { + limbs: [0x81e21fc24c6141198168d81deef562, 0x4b60c7562ad9d99a2cadbf83be355f, 0x002c49], + }, + BigNum { + limbs: [0x92dc9c9ab9a192a42416165d386af9, 0x2e6ad1aa805d875c182d7bfe77cc17, 0x0035b9], + }, + BigNum { + limbs: [0x2ac7666544ba6c5bdbe9e8a2c79508, 0x78e857f2fceaabddbfda8da360393c, 0x003e34], + }, + BigNum { + limbs: [0xdbf9d401389e118356c2dfd4542a7e, 0x1beb3356e7eac8b5c49358e42cc261, 0x005d40], + }, + BigNum { + limbs: [0xe1aa2efec5bded7ca93d1f2babd583, 0x8b67f646955d6a841374b0bdab42f1, 0x0016ad], + }, + BigNum { + limbs: [0xde093f86dc82aee638c24bfb618f3f, 0xcc695696e15f33b6703722957141dc, 0x004b57], + }, + BigNum { + limbs: [0xdf9ac37921d95019c73db3049e70c2, 0xdae9d3069be8ff8367d0e70c66c376, 0x002895], + }, + BigNum { + limbs: [0x43cf43b8a4fea9a6910d41d80997d6, 0xb89955f3ac075693ab26c50bb8772e, 0x001b0a], + }, + BigNum { + limbs: [0x79d4bf47595d55596ef2bd27f6682b, 0xeeb9d3a9d140dca62ce144961f8e25, 0x0058e2], + }, + BigNum { + limbs: [0x6df74788bfddf547809a0593c52c29, 0x6e3537a8223b30a23b5534d53e7afc, 0x004be8], + }, + BigNum { + limbs: [0x4facbb773e7e09b87f65f96c3ad3d8, 0x391df1f55b0d02979cb2d4cc998a57, 0x002805], + }, + BigNum { + limbs: [0xecbebc0bb2bede8728abb983c104a2, 0xd259c48b91eaa8064226f6054683bc, 0x003083], + }, + BigNum { + limbs: [0xd0e546f44b9d2078d754457c3efb5f, 0xd4f96511eb5d8b3395e1139c918196, 0x004369], + }, + BigNum { + limbs: [0xd37ff2a87babb380c6c92288db9ca6, 0x72a1f9cd89124eb06d927e27a3fd9e, 0x007289], + }, + BigNum { + limbs: [0xea24105782b04b7f3936dc7724635b, 0x34b12fcff435e4896a758b7a3407b4, 0x000164], + }, + BigNum { + limbs: [0x3a7585c54ec264e3ee86325ff52f02, 0x34796ea0382b31d08ef46443e548e5, 0x000b97], + }, + BigNum { + limbs: [0x832e7d3aaf999a1c1179cca00ad0ff, 0x72d9bafd451d01694913a55df2bc6e, 0x006856], + }, + BigNum { + limbs: [0x83611805de11188d9fc12803667dbf, 0xd8489d9b1d2b7d981b5cc7400d058a, 0x00668c], + }, + BigNum { + limbs: [0x3a42eafa204ae672603ed6fc998242, 0xcf0a8c02601cb5a1bcab4261caffc9, 0x000d60], + }, + BigNum { + limbs: [0x6ace9eee636cfea106cdd2093221c4, 0x25a27aaf423e560d8375b9f57ddb5f, 0x004164], + }, + BigNum { + limbs: [0x52d564119aef005ef9322cf6cdde3d, 0x81b0aeee3b09dd2c54924fac5a29f4, 0x003289], + }, + BigNum { + limbs: [0x804da7679b1f2ab1d8a86c599c1125, 0x37ea83b297acb4d4cac9a82e460d7a, 0x000562], + }, + BigNum { + limbs: [0x3d565b98633cd44e275792a663eedc, 0x6f68a5eae59b7e650d3e617391f7d9, 0x006e8b], + }, + BigNum { + limbs: [0xac81ba0e9f27289accbc94269dcfed, 0xca7fe2354d973f2d66f302fd0a4109, 0x006288], + }, + BigNum { + limbs: [0x112248f15f34d66533436ad9623014, 0xdcd347682fb0f40c711506a4cdc44a, 0x001164], + }, + BigNum { + limbs: [0xaa925bcaf595931a976cec0c95430e, 0xf19446ee388087b66e87e6421ad7f4, 0x006e17], + }, + BigNum { + limbs: [0x1311a73508c66be5689312f36abcf3, 0xb5bee2af44c7ab836980235fbd2d5f, 0x0005d5], + }, + BigNum { + limbs: [0x7eebd047cbc2e51c5ec124a724f5d0, 0xf253594888ee9a00b7f8aae9ee446d, 0x0029f1], + }, + BigNum { + limbs: [0x3eb832b8329919e3a13eda58db0a31, 0xb4ffd054f4599939200f5eb7e9c0e6, 0x0049fb], + }, + BigNum { + limbs: [0xc3721ea6c79959350ce6a6828af90a, 0x65e4d3674be8111f4ebbffa0ac1554, 0x003f1a], + }, + BigNum { + limbs: [0xfa31e45936c2a5caf319587d7506f7, 0x416e56363160221a894c0a012beffe, 0x0034d3], + }, + BigNum { + limbs: [0xc955e365e603ea58bb2d6aa83247db, 0xdb61407a6cf482dcb6fbe1f248d57f, 0x006323], + }, + BigNum { + limbs: [0xf44e1f9a185814a744d29457cdb826, 0xcbf1e9231053b05d210c27af8f2fd3, 0x0010c9], + }, + BigNum { + limbs: [0x78a3d2d41320a58a91e7a363e4bf29, 0xf65a022ccf82e082eced9e4db37053, 0x004043], + }, + BigNum { + limbs: [0x4500302beb3b59756e185b9c1b40d8, 0xb0f92770adc552b6eb1a6b54249500, 0x0033a9], + }, + BigNum { + limbs: [0x51110b4d802457efc0e95192098448, 0x204ab0d2a8638e24584004aba6faa2, 0x001d4a], + }, + BigNum { + limbs: [0x6c92f7b27e37a7103f16ad6df67bb9, 0x870878cad4e4a5157fc804f6310ab1, 0x0056a3], + }, + BigNum { + limbs: [0xa76cbd7137e6f47e6e58015540096f, 0x17e3d47a499280db319a950d9b3877, 0x0024f7], + }, + BigNum { + limbs: [0x1637458ec6750a8191a7fdaabff692, 0x8f6f552333b5b25ea66d74943cccdc, 0x004ef6], + }, + BigNum { + limbs: [0x46cc3132ae68b8a5f2cc3b6ce6684c, 0xaeefe26d6d67ed111551f5aecd91b5, 0x006694], + }, + BigNum { + limbs: [0x76d7d1cd4ff3465a0d33c3931997b5, 0xf86347300fe04628c2b613f30a739e, 0x000d58], + }, + BigNum { + limbs: [0x356ebb9037c6036cf0c644e1105fba, 0xe6ce8ff225aa86da51c04c9130a03f, 0x005271], + }, + BigNum { + limbs: [0x8835476fc695fb930f39ba1eefa047, 0xc08499ab579dac5f8647bd10a76514, 0x00217b], + }, + BigNum { + limbs: [0x71972107f75956b53875e0be421d2a, 0xbd4090207fe16c1f9ade683c154e89, 0x0071bc], + }, + BigNum { + limbs: [0x4c0ce1f80702a84ac78a1e41bde2d7, 0xea12997cfd66c71a3d29a165c2b6ca, 0x000230], + }, + BigNum { + limbs: [0x62cc3eb2ba6bc6f7b5e5dc5beed42f, 0x4302c5125319ab5b6b747430015857, 0x0067d1], + }, + BigNum { + limbs: [0x5ad7c44d43f038084a1a22a4112bd2, 0x6450648b2a2e87de6c939571d6acfc, 0x000c1c], + }, + BigNum { + limbs: [0x4ded5e86515588409b42a1c622af82, 0xc18924c9ff6195534d6b669470a21f, 0x006db9], + }, + BigNum { + limbs: [0x6fb6a479ad0676bf64bd5d39dd507f, 0xe5ca04d37de69de68a9ca30d676334, 0x000633], + }, + BigNum { + limbs: [0xf940aaef199513b2942e1e96335b6e, 0x9fb0976b417260510ce0bd3d0820c3, 0x004908], + }, + BigNum { + limbs: [0xc4635810e4c6eb4d6bd1e069cca493, 0x07a292323bd5d2e8cb274c64cfe48f, 0x002ae5], + }, + BigNum { + limbs: [0x99f96384bc107506288c5822ce5a85, 0x472aaaaaf10a84bbb7015543f86105, 0x0031a4], + }, + BigNum { + limbs: [0x23aa9f7b424b89f9d773a6dd31a57c, 0x60287ef28c3dae7e2106b45ddfa44e, 0x004249], + }, + BigNum { + limbs: [0x380fc7606ef68763087e889370beba, 0xa48e895f4d79a04b607cacfddcb934, 0x0058be], + }, + BigNum { + limbs: [0x85943b9f8f65779cf781766c8f4147, 0x02c4a03e2fce92ee778b5ca3fb4c1f, 0x001b2f], + }, + BigNum { + limbs: [0x0d0e018ef12219eb96289ab55ac431, 0x583bb90996d418302d24d1f9482095, 0x0033d6], + }, + BigNum { + limbs: [0xb09601710d39e51469d7644aa53bd0, 0x4f177093e6741b09aae337a88fe4be, 0x004017], + }, + BigNum { + limbs: [0x720ee1ef0d377d0671c39b05d1219c, 0x0e3c672a9e17fe930bc21be24ae73d, 0x002bb2], + }, + BigNum { + limbs: [0x4b952110f12481f98e3c63fa2ede65, 0x9916c272df3034a6cc45edbf8d1e16, 0x00483b], + }, + BigNum { + limbs: [0x8f937d589f241863fb1675b6ea931b, 0x1c2179e9ba67fb96c016aa69f8fe7b, 0x0010f3], + }, + BigNum { + limbs: [0x2e1085a75f37e69c04e98949156ce6, 0x8b31afb3c2e037a317f15f37df06d8, 0x0062fa], + }, + BigNum { + limbs: [0x56e00d5f1e00882902252fc85dc59c, 0x3e901ee55f3ead151e1a9ffea6d1e0, 0x0020d7], + }, + BigNum { + limbs: [0x66c3f5a0e05b76d6fddacf37a23a65, 0x68c30ab81e098624b9ed69a3313373, 0x005316], + }, + BigNum { + limbs: [0xbc23b54455eb4351ac2ebbbbf58f0f, 0x9056fb6c09d687252eb8459705938c, 0x001765], + }, + BigNum { + limbs: [0x01804dbba870bbae53d143440a70f2, 0x16fc2e317371ac14a94fc40ad271c7, 0x005c88], + }, + BigNum { + limbs: [0x93c6b06754a128dff1056cfd5ec865, 0xf74df5e016d7a53f6b08885f52e784, 0x005e2a], + }, + BigNum { + limbs: [0x29dd5298a9bad6200efa9202a1379c, 0xb00533bd66708dfa6cff8142851dcf, 0x0015c2], + }, + BigNum { + limbs: [0x41d2f6c7f8a9395717a8e61423c05b, 0x3d0053a77263e322f86bf6d0dc3924, 0x0048ae], + }, + BigNum { + limbs: [0x7bd10c3805b2c5a8e85718ebdc3fa6, 0x6a52d5f60ae45016df9c12d0fbcc2f, 0x002b3f], + }, + BigNum { + limbs: [0x709eafc06c4ff19ad80a4b7b416ac5, 0x298eec226cfaea1765007c50fae425, 0x0031fc], + }, + BigNum { + limbs: [0x4d05533f920c0d6527f5b384be953c, 0x7dc43d7b104d492273078d50dd212e, 0x0041f1], + }, + BigNum { + limbs: [0x69099c2b782691822141c76792a203, 0x0bdedfe0d19fff137b4c5c01b22f1a, 0x003789], + }, + BigNum { + limbs: [0x549a66d486356d7ddebe37986d5dfe, 0x9b7449bcaba834265cbbada025d639, 0x003c64], + }, + BigNum { + limbs: [0x09b329fa1577ff554c99286208dfee, 0x6776f189910ff3a606914c38247b25, 0x005a7f], + }, + BigNum { + limbs: [0xb3f0d905e8e3ffaab366d69df72013, 0x3fdc3813ec383f93d176bd69b38a2e, 0x00196e], + }, + BigNum { + limbs: [0x24accfa767b8cf3d2cac8d90592e9c, 0xb0bff695f8bb1988ea48d61b0adbd7, 0x002e0c], + }, + BigNum { + limbs: [0x98f7335896a32fc2d353716fa6d165, 0xf6933307848d19b0edbf3386cd297c, 0x0045e0], + }, + BigNum { + limbs: [0x1c7ac41146f49ac18f962c2f958a43, 0x307fb2724e316afbbe1c20bf199667, 0x0065d9], + }, + BigNum { + limbs: [0xa1293eeeb767643e7069d2d06a75be, 0x76d3772b2f16c83e19ebe8e2be6eec, 0x000e14], + }, + BigNum { + limbs: [0xcd5e72e6bcb06297c78f3489f706ea, 0x1ed60f08ce06aadbb17ef22557b500, 0x005a6f], + }, + BigNum { + limbs: [0xf045901941ab9c683870ca7608f917, 0x887d1a94af41885e2689177c805052, 0x00197e], + }, + BigNum { + limbs: [0xe6b7a3bfecde634244d4514c7912ad, 0x0cb7e84409d6c970aa662616e8b847, 0x0037f5], + }, + BigNum { + limbs: [0xd6ec5f40117d9bbdbb2badb386ed54, 0x9a9b4159737169c92da1e38aef4d0b, 0x003bf8], + }, + BigNum { + limbs: [0x209b1c1b82cb497c47ca08d92d3855, 0x585dfc3bb27bf4ec94f6914ed44415, 0x000f94], + }, + BigNum { + limbs: [0x9d08e6e47b90b583b835f626d2c7ac, 0x4ef52d61cacc3e4d4311785303c13e, 0x006459], + }, + BigNum { + limbs: [0x0c3761f18348336e42f959081acdf7, 0xc7e6d1ada8b1413bf7a2546e4b2a2c, 0x0025f0], + }, + BigNum { + limbs: [0xb16ca10e7b13cb91bd06a5f7e5320a, 0xdf6c57efd496f1fde065b5338cdb27, 0x004dfc], + }, + BigNum { + limbs: [0xbd040be90c1f098bdfa8f11646bfd6, 0x43d46fcb1be37348df13ad0c2a5b55, 0x0010e9], + }, + BigNum { + limbs: [0x009ff716f23cf57420570de9b9402b, 0x637eb9d26164bff0f8f45c95ada9fe, 0x006304], + }, + BigNum { + limbs: [0x1d9aa77779df363215065a4e6c2abd, 0xc6a057415d04ff53233bd8fbdd0586, 0x004fa4], + }, + BigNum { + limbs: [0xa0095b88847cc8cdeaf9a4b193d544, 0xe0b2d25c204333e6b4cc30a5faffcd, 0x002448], + }, + BigNum { + limbs: [0x9cb31f0b9200b0648ac18a60c7b419, 0xedbddad8c9ed9ccc28ba8ce12efb12, 0x001deb], + }, + BigNum { + limbs: [0x20f0e3f46c5b4e9b753e749f384be8, 0xb9954ec4b35a966daf4d7cc0a90a41, 0x005601], + }, + BigNum { + limbs: [0x2e713efdc506192c3fd2500d74ed6a, 0xf5c94a9135d4738d8393fd1f618fcf, 0x005a3e], + }, + BigNum { + limbs: [0x8f32c4023955e5d3c02daef28b1297, 0xb189df0c4773bfac54740c82767584, 0x0019ae], + }, + BigNum { + limbs: [0x019f2521aea11163fdb1347e6d3c9b, 0xa3738160674ee6d82b9f88354b2359, 0x0015f0], + }, + BigNum { + limbs: [0xbc04ddde4fbaed9c024eca8192c366, 0x03dfa83d15f94c61ac68816c8ce1fa, 0x005dfd], + }, + BigNum { + limbs: [0x92fda99d579539f60c1d8e32539eed, 0x186ff76aea8fd621c79e7166b7c3ef, 0x004354], + }, + BigNum { + limbs: [0x2aa65962a6c6c509f3e270cdac6114, 0x8ee3323292b85d181069983b204164, 0x003099], + }, + BigNum { + limbs: [0x4724fc91e126a038f88846a27a42f1, 0x67d8299d6a032639726942cb41b3ab, 0x006903], + }, + BigNum { + limbs: [0x767f066e1d355ec70777b85d85bd10, 0x3f7b000013450d00659ec6d69651a8, 0x000aea], + }, + BigNum { + limbs: [0x36b2bbef5d95fb7d47e495b596c9e9, 0x7f053989ebbecb783501b9ec0fc922, 0x0073b2], + }, + BigNum { + limbs: [0x86f14710a0c60382b81b694a693618, 0x284df013918967c1a3064fb5c83c31, 0x00003b], + }, + BigNum { + limbs: [0xb23ca83d927621d3100b451544eeb2, 0xab0cf321b5b87b7be0e951d31d980f, 0x0001eb], + }, + BigNum { + limbs: [0x0b675ac26be5dd2ceff4b9eabb114f, 0xfc46367bc78fb7bdf71eb7ceba6d44, 0x007201], + }, + BigNum { + limbs: [0x55d00501e227d8804bf625d398d145, 0x32372fc6312f124acc1f42547e59ea, 0x005032], + }, + BigNum { + limbs: [0x67d3fdfe1c34267fb409d92c672ebc, 0x751bf9d74c1920ef0be8c74d59ab69, 0x0023bb], + }, + BigNum { + limbs: [0x179e352fd65140abe985536de528a4, 0xcebd48220fe6df7882f59ab9abc5a7, 0x000597], + }, + BigNum { + limbs: [0xa605cdd0280abe54167aab921ad75d, 0xd895e17b6d6153c155126ee82c3fac, 0x006e55], + }, + BigNum { + limbs: [0x6468c1fc0bd98bc3f6e8b28be3db63, 0x7ef3b4556ef6d679aecad160dc2576, 0x00313f], + }, + BigNum { + limbs: [0x593b4103f282733c09174c741c249e, 0x285f75480e515cc0293d3840fbdfdd, 0x0042ae], + }, + BigNum { + limbs: [0x13470f1ab3da1ef5d61e450be78a51, 0x2f1becd5cc2934506a82aac78647b9, 0x000c05], + }, + BigNum { + limbs: [0xaa5cf3e54a81e00a29e1b9f41875b0, 0x78373cc7b11efee96d855eda51bd9a, 0x0067e8], + }, + BigNum { + limbs: [0x661c5aa57383f79b12c70a99339b94, 0x46dd8726ce03b8415b884acecaf444, 0x001319], + }, + BigNum { + limbs: [0x5787a85a8ad80764ed38f466cc646d, 0x6075a276af447af87c7fbed30d110f, 0x0060d4], + }, + BigNum { + limbs: [0xce5f9885b2f745bfa666b56d5a311a, 0x2668128e4a2bc83ba98b6857538716, 0x000a71], + }, + BigNum { + limbs: [0xef446a7a4b64b94059994992a5cee7, 0x80eb170f331c6afe2e7ca14a847e3c, 0x00697c], + }, + BigNum { + limbs: [0x6aed1a564c146832d3560d5be17df8, 0x52d64d9b5c2fa87d62e7251e9f9727, 0x006b68], + }, + BigNum { + limbs: [0x52b6e8a9b24796cd2ca9f1a41e8209, 0x547cdc0221188abc7520e483386e2c, 0x000885], + }, + BigNum { + limbs: [0xd812068ac8f3657b45e33be2652de0, 0x309990b78e6f19be2ed4aae8454f92, 0x00411b], + }, + BigNum { + limbs: [0xe591fc7535689984ba1cc31d9ad221, 0x76b998e5eed9197ba9335eb992b5c0, 0x0032d2], + }, + BigNum { + limbs: [0xbd51462129070533c31b718832f5e8, 0x19426e03b06186e1de604ed007c9b0, 0x006903], + }, + BigNum { + limbs: [0x0052bcded554f9cc3ce48d77cd0a19, 0x8e10bb99cce6ac57f9a7bad1d03ba3, 0x000aea], + }, + BigNum { + limbs: [0x55d8768e908ff925fd2d98cb6dbbee, 0x8db0c855debd836ab3062d9fa9d8d9, 0x00547a], + }, + BigNum { + limbs: [0x67cb8c716dcc05da02d26634924413, 0x19a261479e8aafcf2501dc022e2c7a, 0x001f73], + }, + BigNum { + limbs: [0x8e0ba527eca417365149025f015d1e, 0xc3152df73f24a32669617e74f15ae1, 0x0070fc], + }, + BigNum { + limbs: [0x2f985dd811b7e7c9aeb6fca0fea2e3, 0xe43dfba63e2390136ea68b2ce6aa72, 0x0002f0], + }, + BigNum { + limbs: [0x8275c394add2deae53a0e275fd0cf4, 0x7b2aeb5230fa2c195afbea2192bd19, 0x00702f], + }, + BigNum { + limbs: [0x3b2e3f6b50892051ac5f1c8a02f30d, 0x2c283e4b4c4e07207d0c1f8045483a, 0x0003be], + }, + BigNum { + limbs: [0xb3c3d1d51852439775462cfb15928e, 0x5b03ee8a9e0c240a6ba7523bd51940, 0x00068f], + }, + BigNum { + limbs: [0x09e0312ae609bb688ab9d204ea6d73, 0x4c4f3b12df3c0f2f6c60b76602ec13, 0x006d5e], + }, + BigNum { + limbs: [0x2b5f0db0dd8f62428bf3d065323436, 0x3195598a28d8092bd18a7ee24d2161, 0x0001e3], + }, + BigNum { + limbs: [0x9244f54f20cc9cbd740c2e9acdcbcb, 0x75bdd01354702a0e067d8abf8ae3f2, 0x00720a], + }, + BigNum { + limbs: [0x9df86f28195171f1fe341312f98924, 0x54eb6b36c54b9602ae7a61023ae791, 0x0031b3], + }, + BigNum { + limbs: [0x1fab93d7e50a8d0e01cbebed0676dd, 0x5267be66b7fc9d37298da89f9d1dc2, 0x00423a], + }, + BigNum { + limbs: [0x32e14ea5c65fd882f06ddfe57fb749, 0xa4854293013e6b346b4a4b01e810da, 0x00109a], + }, + BigNum { + limbs: [0x8ac2b45a37fc267d0f921f1a8048b8, 0x02cde70a7c09c8056cbdbe9feff479, 0x006353], + }, + BigNum { + limbs: [0x423c71ad2b0dfa572131cee36007fa, 0x33b9c1df4ffd1b118bfbe33bd251a0, 0x001467], + }, + BigNum { + limbs: [0x7b679152d34e04a8dece301c9ff807, 0x739967be2d4b18284c0c266605b3b3, 0x005f86], + }, + BigNum { + limbs: [0x4312ad66d4b7e90d2b6da17aab81c3, 0xe4da640bbaac82fcb1b1e258caf7f7, 0x00218a], + }, + BigNum { + limbs: [0x7a91559929a415f2d4925d85547e3e, 0xc278c591c29bb03d265627490d0d5c, 0x005262], + }, + BigNum { + limbs: [0x7b3c07432c4bb846d7751759b82258, 0xbcb86c65c99f9735bdebf5628898ac, 0x00653a], + }, + BigNum { + limbs: [0x4267fbbcd21046b9288ae7a647dda9, 0xea9abd37b3a89c041a1c143f4f6ca7, 0x000eb2], + }, + BigNum { + limbs: [0x9ce7c297ab8d54db615b721e6888d5, 0x889f6574f553a2a6da1423fa9a8a78, 0x002313], + }, + BigNum { + limbs: [0x20bc406852ceaa249ea48ce197772c, 0x1eb3c42887f49092fdf3e5a73d7adb, 0x0050da], + }, + BigNum { + limbs: [0x73546ee70933efffe30ef5a9528edd, 0x0e58e6c6cf02feb911dc3dad3a3bad, 0x0054bc], + }, + BigNum { + limbs: [0x4a4f9418f5280f001cf10956ad7124, 0x98fa42d6ae453480c62bcbf49dc9a6, 0x001f31], + }, + BigNum { + limbs: [0x4b743731d6de69caf95626573b849e, 0x7b4eac93969def71980219544f4fd8, 0x0017e4], + }, + BigNum { + limbs: [0x722fcbce277d953506a9d8a8c47b63, 0x2c047d09e6aa43c84005f04d88b57b, 0x005c09], + }, + BigNum { + limbs: [0x76809182ba32c095d44706ae689c0c, 0xa9f46ae7f49b8041bad9d23de711f3, 0x0070d4], + }, + BigNum { + limbs: [0x4723717d44293e6a2bb8f8519763f5, 0xfd5ebeb588acb2f81d2e3763f0f360, 0x000318], + }, + BigNum { + limbs: [0x4311151b41f2e4a8b188dd1a6a4bf6, 0x66fd2e6a621ba27d46e4e6ebaaab28, 0x002920], + }, + BigNum { + limbs: [0x7a92ede4bc691a574e7721e595b40b, 0x4055fb331b2c90bc912322b62d5a2b, 0x004acd], + }, + BigNum { + limbs: [0x5cb240f458a0411af937dd7884b5bd, 0x5c392742ebcb8eda0f11c5920ab794, 0x004c46], + }, + BigNum { + limbs: [0x60f1c20ba5bbbde506c821877b4a44, 0x4b1a025a917ca45fc8f6440fcd4dbf, 0x0027a7], + }, + BigNum { + limbs: [0x6b26bf3a5b9cedc4de75f89a010b97, 0x7787223bc8fc5a52f2e3933f823d47, 0x006a5b], + }, + BigNum { + limbs: [0x527d43c5a2bf113b218a0665fef46a, 0x2fcc0761b44bd8e6e524766255c80c, 0x000992], + }, + BigNum { + limbs: [0x906daf54262b5a6d913c8a21d61a14, 0xfd20ce3f8b5ded02bf205d2103eac1, 0x00646e], + }, + BigNum { + limbs: [0x2d3653abd830a4926ec374de29e5ed, 0xaa325b5df1ea463718e7ac80d41a92, 0x000f7e], + }, + BigNum { + limbs: [0xd3fa076900a2701dc2e8ce1a0001e5, 0x8a061c5504e40c9c6d744ce76f9570, 0x004bae], + }, + BigNum { + limbs: [0xe9a9fb96fdb98ee23d1730e5fffe1c, 0x1d4d0d487864269d6a93bcba686fe2, 0x00283f], + }, + BigNum { + limbs: [0x841ffb42a9153d71f0aca0022c86e0, 0x0b4a3128782aad8b75eeb88658b3d3, 0x002b1f], + }, + BigNum { + limbs: [0x398407bd5546c18e0f535efdd37921, 0x9c08f875051d85ae6219511b7f5180, 0x0048ce], + }, + BigNum { + limbs: [0x328f11d9cdf877394e8363ac674b29, 0xfea00f8d24bf97d28a6cca10529e21, 0x004b21], + }, + BigNum { + limbs: [0x8b14f126306387c6b17c9b5398b4d8, 0xa8b31a1058889b674d9b3f91856732, 0x0028cb], + }, + BigNum { + limbs: [0x535ba390e22a934f2887da7a4613ac, 0x146fc82c471d6006a526adeef61511, 0x005d2c], + }, + BigNum { + limbs: [0x6a485f6f1c316bb0d7782485b9ec55, 0x92e36171362ad33332e15bb2e1f042, 0x0016c1], + }, + BigNum { + limbs: [0xe632049f8464426c8b9b2bf815aad7, 0x48ccf85251fc944d705267aef07995, 0x002fe5], + }, + BigNum { + limbs: [0xd771fe6079f7bc937464d307ea552a, 0x5e86314b2b4b9eec67b5a1f2e78bbd, 0x004408], + }, + BigNum { + limbs: [0xe3f58397fa59ca7ee8c97459708936, 0x49b450f7e1001fbfe1fc8d8a0d5fe7, 0x007294], + }, + BigNum { + limbs: [0xd9ae7f680402348117368aa68f76cb, 0x5d9ed8a59c481379f60b7c17caa56b, 0x000159], + }, + BigNum { + limbs: [0x9de328231391765bc4f547e17fae04, 0x7ae3db865ba7714dcc8e32350736c2, 0x002d93], + }, + BigNum { + limbs: [0x1fc0dadceaca88a43b0ab71e8051fd, 0x2c6f4e1721a0c1ec0b79d76cd0ce91, 0x00465a], + }, + BigNum { + limbs: [0x99e982481eb187c638ab874c146c0a, 0x850021892f6b10f3be96e9d4669892, 0x001b04], + }, + BigNum { + limbs: [0x23ba80b7dfaa7739c75477b3eb93f7, 0x225308144ddd224619711fcd716cc1, 0x0058e9], + }, + BigNum { + limbs: [0x22968828352a6e3f4bf52554d38e6f, 0xf1c7a7718e251607c0636d7990d68f, 0x00262a], + }, + BigNum { + limbs: [0x9b0d7ad7c93190c0b40ad9ab2c7192, 0xb58b822bef231d3217a49c28472ec4, 0x004dc2], + }, + BigNum { + limbs: [0x19d4b2a482d2fbc23c6ee8ac5a4aaf, 0xc9aafb60bcbac15b96d0a2f553f4e4, 0x002d95], + }, + BigNum { + limbs: [0xa3cf505b7b89033dc3911653a5b552, 0xdda82e3cc08d71de413766ac84106f, 0x004657], + }, + BigNum { + limbs: [0x9ac76eb653b8077d5feb370589ddcd, 0x1cea5e2d9df0734149137047b1786e, 0x003b8c], + }, + BigNum { + limbs: [0x22dc9449aaa3f782a014c7fa762234, 0x8a68cb6fdf57bff88ef4995a268ce5, 0x003861], + }, + BigNum { + limbs: [0x6ea99bee92c793b2126ee2e55d5b7b, 0x532503b950c74c9db999b77bc95b13, 0x006efd], + }, + BigNum { + limbs: [0x4efa67116b946b4ded911c1aa2a486, 0x542e25e42c80e69c1e6e52260eaa40, 0x0004f0], + }, + BigNum { + limbs: [0x4abd405dd655c9caba576e317c51c0, 0x5b7f47d7e3dde00b481b539b58b533, 0x006e5f], + }, + BigNum { + limbs: [0x72e6c2a22806353545a890ce83ae41, 0x4bd3e1c5996a532e8fecb6067f5020, 0x00058e], + }, + BigNum { + limbs: [0x231f19c71e8773da6453c4f956b91c, 0x019aedcb1f56b52853da3777fcc872, 0x000eaf], + }, + BigNum { + limbs: [0x9a84e938dfd48b259bac3a06a946e5, 0xa5b83bd25df17e11842dd229db3ce1, 0x00653e], + }, + BigNum { + limbs: [0x19668a6e56d866fa44b2cf5ea9ce3e, 0x3a4b78ab5c819959f3c1dbce24dcb2, 0x00567a], + }, + BigNum { + limbs: [0xa43d7891a7839805bb4d2fa15631c3, 0x6d07b0f220c699dfe4462dd3b328a1, 0x001d73], + }, + BigNum { + limbs: [0x8fc3ecb74d2370818a195b4030b82d, 0xda607fd657b1ecc589fe94d902934c, 0x002c8e], + }, + BigNum { + limbs: [0x2de01648b1388e7e75e6a3bfcf47d4, 0xccf2a9c7259646744e0974c8d57207, 0x00475e], + }, + BigNum { + limbs: [0x8586ae1f584b84c709f7cddb49aefe, 0x9d29782d7022884ec5a8cd2669f7cc, 0x0019fa], + }, + BigNum { + limbs: [0x381d54e0a6107a38f6083124b65103, 0x0a29b1700d25aaeb125f3c7b6e0d87, 0x0059f3], + }, + BigNum { + limbs: [0x97551d7eb479316903092c74d1b363, 0xc0dfcf0eae86c2b3ee68881b3131e8, 0x004b0e], + }, + BigNum { + limbs: [0x264ee58149e2cd96fcf6d28b2e4c9e, 0xe6735a8ecec17085e99f8186a6d36b, 0x0028de], + }, + BigNum { + limbs: [0x8f79025062832db2e14ff671c966ca, 0x39d976a5cc746815ff2c5df25e4c4b, 0x00500c], + }, + BigNum { + limbs: [0x2e2b00af9bd8d14d1eb0088e369937, 0x6d79b2f7b0d3cb23d8dbabaf79b908, 0x0023e1], + }, + BigNum { + limbs: [0x9d16dab72c6ea893501f19a2ae9b40, 0x9285f4b67ba0714fb14e35f116982e, 0x003c74], + }, + BigNum { + limbs: [0x208d2848d1ed566cafe0e55d5164c1, 0x14cd34e701a7c1ea26b9d3b0c16d25, 0x003779], + }, + BigNum { + limbs: [0x376a86c53fbaa0e7b0f84cf1693a6c, 0xd3d2ca0f2c04501eff841f6ad00440, 0x005f25], + }, + BigNum { + limbs: [0x86397c3abea15e184f07b20e96c595, 0xd3805f8e5143e31ad883ea37080113, 0x0014c7], + }, + BigNum { + limbs: [0xcfc741b88a6d90351e7a72117b4660, 0xbefa63943b3c9fb623bd7d8f468827, 0x00235e], + }, + BigNum { + limbs: [0xeddcc14773ee6ecae1858cee84b9a1, 0xe858c609420b9383b44a8c12917d2b, 0x00508e], + }, + BigNum { + limbs: [0x73d6ebd3f2d04ebd818c79e9b418c3, 0xa89d6917cf356fb52776257e47f6bd, 0x006d9c], + }, + BigNum { + limbs: [0x49cd172c0b8bb0427e7385164be73e, 0xfeb5c085ae12c384b091e423900e96, 0x000650], + }, + BigNum { + limbs: [0xcbed26a10189725865f49cae84c1f0, 0x51abf2ff1a7ac214f8af079281e8c2, 0x001c89], + }, + BigNum { + limbs: [0xf1b6dc5efcd28ca79a0b62517b3e11, 0x55a7369e62cd7124df59020f561c90, 0x005764], + }, + BigNum { + limbs: [0x5c2a2517ea29380d784d83532d58a4, 0xe5bdc2f376ef3fbfaf7cf36c98f23c, 0x002acb], + }, + BigNum { + limbs: [0x6179dde81432c6f287b27bacd2a75d, 0xc19566aa0658f37a288b16353f1317, 0x004921], + }, + BigNum { + limbs: [0x0c396a9fa67ea67e2a604403076877, 0xa9395cb8d476fab39024f46a4961d9, 0x003334], + }, + BigNum { + limbs: [0xb16a986057dd5881d59fbafcf8978a, 0xfe19cce4a8d1388647e315378ea37a, 0x0040b8], + }, + BigNum { + limbs: [0x659be0bb7e781e96ab11c20e5ad151, 0xbf9e4612a7a04b853daeb5686a7f1f, 0x005f0e], + }, + BigNum { + limbs: [0x580822447fe3e06954ee3cf1a52eb0, 0xe7b4e38ad5a7e7b49a5954396d8634, 0x0014de], + }, + BigNum { + limbs: [0x34af14b61e0abe74a1f6718c130477, 0x7a8bca252472eb674a1a620890d7a5, 0x004352], + }, + BigNum { + limbs: [0x88f4ee49e051408b5e098d73ecfb8a, 0x2cc75f7858d547d28deda799472dae, 0x00309b], + }, + BigNum { + limbs: [0x986d4f948654a8ddccfd2991cb1cc7, 0x529d1d76d858cc6ba0596eae27c4e4, 0x003b18], + }, + BigNum { + limbs: [0x2536b36b780756223302d56e34e33a, 0x54b60c26a4ef66ce37ae9af3b0406f, 0x0038d5], + }, + BigNum { + limbs: [0x9da80dc7ef9f0f200b5775cb7c7f34, 0xada04d5e74819262a96d0a5549b5f1, 0x000679], + }, + BigNum { + limbs: [0x1ffbf5380ebcefdff4a889348380cd, 0xf9b2dc3f08c6a0d72e9aff4c8e4f62, 0x006d73], + }, + BigNum { + limbs: [0x8076a04042fa6a4ae23d4887732cc7, 0x84efe7a91e54c20ba6c40efc806c85, 0x005327], + }, + BigNum { + limbs: [0x3d2d62bfbb6194b51dc2b6788cd33a, 0x226341f45ef3712e3143faa55798ce, 0x0020c6], + }, + BigNum { + limbs: [0xad338dc96b53f06d9bd93caef95435, 0x46d16b0ded487a772571e97d5605ea, 0x004ac4], + }, + BigNum { + limbs: [0x1070753693080e926426c25106abcc, 0x6081be8f8fffb8c2b296202481ff69, 0x002929], + }, + BigNum { + limbs: [0x640ded94a2153f4f3cf1b82d878f30, 0x620c501b6d5b34b1fe426ba069ee6f, 0x000904], + }, + BigNum { + limbs: [0x5996156b5c46bfb0c30e46d27870d1, 0x4546d9820fecfe87d9c59e016e16e4, 0x006ae9], + }, + BigNum { + limbs: [0x3fcc8fbece3ff36832c0e6cf2383d0, 0xb5ed3c6c5168d7a5b570137a2c4e8f, 0x0030a3], + }, + BigNum { + limbs: [0x7dd77341301c0b97cd3f1830dc7c31, 0xf165ed312bdf5b942297f627abb6c4, 0x004349], + }, + BigNum { + limbs: [0x950b898168358f10a2ea8dd9532d0b, 0x3fa6331dc12669b74e8a5f93d55dda, 0x0043a1], + }, + BigNum { + limbs: [0x2898797e96266fef5d157126acd2f6, 0x67acf67fbc21c982897daa0e02a779, 0x00304c], + }, + BigNum { + limbs: [0x87dd867c2846dfcc3b7f324100ce0b, 0xdd9346337dff0ec770162a016a73c0, 0x000934], + }, + BigNum { + limbs: [0x35c67c83d6151f33c480ccbeff31f6, 0xc9bfe369ff49247267f1dfa06d9193, 0x006ab8], + }, + BigNum { + limbs: [0xea948838d3a59e714fe5f9a319f08b, 0xd9b9e9bc0a45bca442260d0f5cc781, 0x0019ff], + }, + BigNum { + limbs: [0xd30f7ac72ab6608eb01a055ce60f76, 0xcd993fe17302769595e1fc927b3dd1, 0x0059ed], + }, + BigNum { + limbs: [0x42eaa33c21a6c3f8e855b7ca48e223, 0x2a883802cf8d5e7aadc120761b2157, 0x001430], + }, + BigNum { + limbs: [0x7ab95fc3dcb53b0717aa4735b71dde, 0x7ccaf19aadbad4bf2a46e92bbce3fc, 0x005fbd], + }, + BigNum { + limbs: [0xea26e3e861e9a6f03205e4801f0670, 0x521b43809c6f413f091a0442fe3b0a, 0x0057e2], + }, + BigNum { + limbs: [0xd37d1f179c72580fcdfa1a7fe0f991, 0x5537e61ce0d8f1faceee055ed9ca48, 0x001c0b], + }, + BigNum { + limbs: [0x888aca5f2cf18937eb9c08a6bad0a5, 0xb368c1bd3ec3d9a4667dbe97b7466b, 0x006c24], + }, + BigNum { + limbs: [0x351938a0d16a75c81463f659452f5c, 0xf3ea67e03e845995718a4b0a20bee8, 0x0007c8], + }, + BigNum { + limbs: [0xca463738abfdcceae6f7f2c97f6ddc, 0x37a8bdb046c980f6c206144132a757, 0x0053ca], + }, + BigNum { + limbs: [0xf35dcbc7525e321519080c36809225, 0x6faa6bed367eb2431601f560a55dfb, 0x002023], + }, + BigNum { + limbs: [0x33e248bb1c34f3d3daea56ba7f16a9, 0xf0818c66f93206930810c8ebd7cf6f, 0x002c56], + }, + BigNum { + limbs: [0x89c1ba44e2270b2c2515a84580e958, 0xb6d19d3684162ca6cff740b60035e4, 0x004796], + }, + BigNum { + limbs: [0xfa342f2e54d35b3efaf03e1f4c23a5, 0x4ed170bf21bac2867ad9bd62474fc4, 0x00426e], + }, + BigNum { + limbs: [0xc36fd3d1a988a3c1050fc0e0b3dc5c, 0x5881b8de5b8d70b35d2e4c3f90b58e, 0x00317f], + }, + BigNum { + limbs: [0xee7464cc2693acc7f2b0c7f97d0157, 0xcd54ee73a12d5a25364bab696dd707, 0x0044f2], + }, + BigNum { + limbs: [0xcf2f9e33d7c852380d4f370682feaa, 0xd9fe3b29dc1ad914a1bc5e386a2e4b, 0x002efa], + }, + BigNum { + limbs: [0x09bb3a7eed94b5ee1cb6e72b82c6d1, 0x2cf9a0599655f39dd358a82382f466, 0x002a3b], + }, + BigNum { + limbs: [0xb3e8c88110c74911e34917d47d3930, 0x7a598943e6f23f9c04af617e5510ed, 0x0049b2], + }, + BigNum { + limbs: [0xded1798f001c83984bae2ba9e576ec, 0x56ee3af2ac38ca85bda4670d2c2307, 0x000975], + }, + BigNum { + limbs: [0xded28970fe3f7b67b451d3561a8915, 0x5064eeaad10f68b41a63a294abe24b, 0x006a78], + }, + BigNum { + limbs: [0x4dc75cbe09f501a0b24ec3dca1f2ce, 0x3112ac902e13ee36737d3869b66204, 0x0031e6], + }, + BigNum { + limbs: [0x6fdca641f466fd5f4db13b235e0d33, 0x76407d0d4f344503648ad13821a34f, 0x004207], + }, + BigNum { + limbs: [0x156add501a1c6937b11e308bf0abc8, 0x363da95355ccf81be9d7b571ce05b1, 0x003e29], + }, + BigNum { + limbs: [0xa83925afe43f95c84ee1ce740f5439, 0x7115804a277b3b1dee30543009ffa2, 0x0035c4], + }, + BigNum { + limbs: [0xb50c83fd1f5c0dcd6dcd1e8a6d2938, 0x647da03f2b3cd52856ab58c24f30f6, 0x0025ad], + }, + BigNum { + limbs: [0x08977f02defff1329232e07592d6c9, 0x42d5895e520b5e11815cb0df88d45d, 0x004e40], + }, + BigNum { + limbs: [0xa73479f853c1eb8d14b4edec527670, 0x6dce2e5ec6630aa522414c846da37a, 0x001450], + }, + BigNum { + limbs: [0x166f8907aa9a1372eb4b1113ad8991, 0x3984fb3eb6e52894b5c6bd1d6a61d9, 0x005f9d], + }, + BigNum { + limbs: [0xd15d8f0976f55e06f8ee5e9777964d, 0x95ea54b09d10987f4e2ce1b79388c1, 0x00413d], + }, + BigNum { + limbs: [0xec4673f68766a0f90711a0688869b4, 0x1168d4ece0379aba89db27ea447c91, 0x0032b0], + }, + BigNum { + limbs: [0xb6afda9637ccb788a3d4bd18e66da6, 0x518219806ce2d8c3dd1ccbc1b529ec, 0x005581], + }, + BigNum { + limbs: [0x06f42869c68f47775c2b41e719925b, 0x55d1101d10655a75faeb3de022db67, 0x001e6c], + }, + BigNum { + limbs: [0x991b24aa25db0e40861b826cace87f, 0x5ee79ca9436b6c1feffb1c216f70a6, 0x007149], + }, + BigNum { + limbs: [0x2488de55d880f0bf79e47c93531782, 0x486b8cf439dcc719e80ced806894ad, 0x0002a4], + }, + BigNum { + limbs: [0xfb90de5161d3aa0e4f9e5a6854836c, 0x7730aabeaf2707d3acaf7b7234937b, 0x000453], + }, + BigNum { + limbs: [0xc21324ae9c8854f1b061a497ab7c95, 0x30227edece212b662b588e2fa371d7, 0x006f9a], + }, + BigNum { + limbs: [0x514cd4e04272c008e2fb108e12e22a, 0x80e1938cd09c9a3ae5427d8e18cb54, 0x000fe6], + }, + BigNum { + limbs: [0x6c572e1fbbe93ef71d04ee71ed1dd7, 0x26719610acab98fef2c58c13bf39ff, 0x006407], + }, + BigNum { + limbs: [0xad623bf3402bd57a9634b25637c216, 0x449c6a67b9ed93981376c9cd141418, 0x003869], + }, + BigNum { + limbs: [0x1041c70cbe30298569cb4ca9c83deb, 0x62b6bf35c35a9fa1c4913fd4c3f13b, 0x003b84], + }, + BigNum { + limbs: [0xc2dfa82313ad493a3e1a7aa260077d, 0xbce2aa1625f8acb62f7f17837a2577, 0x001c25], + }, + BigNum { + limbs: [0xfac45adceaaeb5c5c1e5845d9ff884, 0xea707f87574f8683a888f21e5ddfdb, 0x0057c7], + }, + BigNum { + limbs: [0x1db465016aecf09e6f74084c8e85a6, 0xf3dd5bee9b24bd298bcb9b46025a18, 0x006cbe], + }, + BigNum { + limbs: [0x9fef9dfe936f0e61908bf6b3717a5b, 0xb375cdaee22376104c3c6e5bd5ab3b, 0x00072e], + }, + BigNum { + limbs: [0x07ba425b194f3be868c32a5b94f4e5, 0x27101520c4b2e11d3393b8d009aa2c, 0x000eba], + }, + BigNum { + limbs: [0xb5e9c0a4e50cc317973cd4a46b0b1c, 0x8043147cb895521ca47450d1ce5b27, 0x006533], + }, + BigNum { + limbs: [0xe5eebb2c61bfc76d8878e6c92c1964, 0x3ea3f96c0440f88cd53e4cee2d698d, 0x00507c], + }, + BigNum { + limbs: [0xd7b547d39c9c379277871836d3e69d, 0x68af303179073aad02c9bcb3aa9bc5, 0x002371], + }, + BigNum { + limbs: [0xcaef2e1b379cbd65f21f6521b5ffe3, 0xb92efbacec2085f75cd0394e7e1493, 0x004c10], + }, + BigNum { + limbs: [0xf2b4d4e4c6bf419a0de099de4a001e, 0xee242df09127ad427b37d05359f0bf, 0x0027dc], + }, + BigNum { + limbs: [0x5a90d8902f34ee2ffffbac2e990b32, 0x85e3496a299b1a2b4aad24d743792b, 0x0042ce], + }, + BigNum { + limbs: [0x63132a6fcf2710d0000452d166f4cf, 0x216fe03353ad190e8d5ae4ca948c28, 0x00311f], + }, + BigNum { + limbs: [0xb5b47bb725cda97ed4be029bd47ddd, 0x6e0bba848829e2af1b87209c0c0556, 0x0072af], + }, + BigNum { + limbs: [0x07ef8748d88e55812b41fc642b8224, 0x39476f18f51e508abc80e905cbfffd, 0x00013e], + }, + BigNum { + limbs: [0x2bafd544a199a3fe213ce3f40c2fa1, 0x01cdf2ff819eb174b778fe8e29f421, 0x00158b], + }, + BigNum { + limbs: [0x91f42dbb5cc25b01dec31b0bf3d060, 0xa585369dfba981c5208f0b13ae1132, 0x005e62], + }, + BigNum { + limbs: [0xe7f96676286b47c433afe4d106b43d, 0x310d4f00fee0175ca29996af2afe4e, 0x004b52], + }, + BigNum { + limbs: [0xd5aa9c89d5f0b73bcc501a2ef94bc4, 0x7645da9c7e681bdd356e72f2ad0704, 0x00289b], + }, + BigNum { + limbs: [0xca2c4fd11289ccc9f8090ae9106aaf, 0x72623392274a8b3b1472c4aac7b30c, 0x00586f], + }, + BigNum { + limbs: [0xf377b32eebd2323607f6f416ef9552, 0x34f0f60b55fda7fec39544f7105246, 0x001b7e], + }, + BigNum { + limbs: [0xddcb3aae11b4f6a83569dad6cd41e9, 0xa2a0e40b14ad3ac082ec036858c652, 0x0042cb], + }, + BigNum { + limbs: [0xdfd8c851eca70857ca96242932be18, 0x04b24592689af879551c06397f3f00, 0x003122], + }, + BigNum { + limbs: [0xa633eb2bd252b8f338d1145bbf0bd5, 0x83fc39549f77c4b5af9e6def1f5a2e, 0x006953], + }, + BigNum { + limbs: [0x177017d42c09460cc72eeaa440f42c, 0x2356f048ddd06e8428699bb2b8ab25, 0x000a9a], + }, + BigNum { + limbs: [0xcd97301b698d332256b524d8b89e8b, 0x754e6966f69b3071acf3d7805a5c41, 0x004f5b], + }, + BigNum { + limbs: [0xf00cd2e494cecbdda94ada27476176, 0x3204c03686ad02c82b1432217da911, 0x002492], + }, + BigNum { + limbs: [0x85f998168289ca7f2423392adae5b9, 0xd7a8d381273c1b290213873ae175d7, 0x004fd7], + }, + BigNum { + limbs: [0x37aa6ae97bd23480dbdcc5d5251a48, 0xcfaa561c560c1810d5f48266f68f7c, 0x002415], + }, + BigNum { + limbs: [0x461c33c1a0f0b758be078a66b064a1, 0xe1a1f2cc7087dc66f4b808f364646b, 0x0037f4], + }, + BigNum { + limbs: [0x7787cf3e5d6b47a741f874994f9b60, 0xc5b136d10cc056d2e35000ae73a0e8, 0x003bf8], + }, + BigNum { + limbs: [0x10344b217e61bd034fe540f385a129, 0x7149c0f9efc012a497e72294fe0d1b, 0x000151], + }, + BigNum { + limbs: [0xad6fb7de7ffa41fcb01abe0c7a5ed8, 0x360968a38d8820954020e70cd9f838, 0x00729c], + }, + BigNum { + limbs: [0xaa12dad03920b780c10f21710ecb97, 0x2c08ab0d493cb63fc62f04e5adaf87, 0x0038b5], + }, + BigNum { + limbs: [0x1391282fc53b477f3ef0dd8ef1346a, 0x7b4a7e90340b7cfa11d904bc2a55cc, 0x003b38], + }, + BigNum { + limbs: [0xc9785e4b1a161953a535350d483019, 0x62ff5bf8d281fb472b23db94f42d8e, 0x00420b], + }, + BigNum { + limbs: [0xf42ba4b4e445e5ac5acac9f2b7cfe8, 0x4453cda4aac637f2ace42e0ce3d7c4, 0x0031e2], + }, + BigNum { + limbs: [0xf91bc8feb9b112808f505c45cb015c, 0x917dc58e99c00d615843aba8be67e6, 0x00109e], + }, + BigNum { + limbs: [0xc4883a0144aaec7f70afa2ba34fea5, 0x15d5640ee38825d87fc45df9199d6c, 0x00634f], + }, + BigNum { + limbs: [0xa0b2c8a4a7bc2e69a5eae3e0a37475, 0x723faf835210730c75680995aa200f, 0x006fb5], + }, + BigNum { + limbs: [0x1cf13a5b569fd0965a151b1f5c8b8c, 0x35137a1a2b37c02d62a0000c2de544, 0x000438], + }, + BigNum { + limbs: [0x5cf9ee56a0d33e35042724c5b436bb, 0xc0eebcb1f4772ef461072f445e70e7, 0x00080e], + }, + BigNum { + limbs: [0x60aa14a95d88c0cafbd8da3a4bc946, 0xe6646ceb88d104457700da5d79946c, 0x006bde], + }, + BigNum { + limbs: [0xe4ef4d5372d2492e81ced8221f9f8a, 0x1efd37f7f7e0769798bf3a5553980d, 0x0060b7], + }, + BigNum { + limbs: [0xd8b4b5ac8b89b5d17e3126dde06077, 0x8855f1a58567bca23f48cf4c846d45, 0x001336], + }, + BigNum { + limbs: [0xc6252dbf1b326892f4d9b3220826cd, 0xfeab6ca661472557041d93d5177942, 0x0013b1], + }, + BigNum { + limbs: [0xf77ed540e329966d0b264bddf7d934, 0xa8a7bcf71c010de2d3ea75ccc08c10, 0x00603b], + }, + BigNum { + limbs: [0x9b851d08727d4269878537a09ab251, 0xe2b20f3384ec13ab948f2be0c4358d, 0x005366], + }, + BigNum { + limbs: [0x221ee5f78bdebc96787ac75f654db0, 0xc4a11a69f85c1f8e4378ddc113cfc6, 0x002086], + }, + BigNum { + limbs: [0x97fa6b553424bce61ba1af6202359a, 0x62790c9ec5709483ded871817d0f54, 0x0027cf], + }, + BigNum { + limbs: [0x25a997aaca374219e45e4f9dfdca67, 0x44da1cfeb7d79eb5f92f98205af5ff, 0x004c1e], + }, + BigNum { + limbs: [0xc62920e6caa9f8f2292b77ec6944b7, 0x17e308d1480c85fddad45ca496fc0c, 0x006ddc], + }, + BigNum { + limbs: [0xf77ae21933b2060dd6d4871396bb4a, 0x8f7020cc353bad3bfd33acfd410946, 0x000611], + }, + BigNum { + limbs: [0xcc6493ffad656f51eae331d45e4567, 0x9478a2d01333d6a928516c6c492af2, 0x0048b3], + }, + BigNum { + limbs: [0xf13f6f0050f68fae151ccd2ba1ba9a, 0x12da86cd6a145c90afb69d358eda60, 0x002b3a], + }, + BigNum { + limbs: [0xa4b9a7d9b44f7d6609134c8fd05714, 0xef733c2089cf6b37fc2d2bce9a49f6, 0x006304], + }, + BigNum { + limbs: [0x18ea5b264a0c8199f6ecb2702fa8ed, 0xb7dfed7cf378c801dbdaddd33dbb5d, 0x0010e8], + }, + BigNum { + limbs: [0x01287aa8e28eee99c2146c444e519a, 0xaa852cf69d9898ecff7fc2e04b67ab, 0x0025ea], + }, + BigNum { + limbs: [0xbc7b88571bcd10663deb92bbb1ae67, 0xfccdfca6dfaf9a4cd88846c18c9da8, 0x004e02], + }, + BigNum { + limbs: [0x6c05295b5fb41cb8d6b4ecef99c9e8, 0x71a09ca75e9ecf0144808af6112ecb, 0x001783], + }, + BigNum { + limbs: [0x519ed9a49ea7e247294b1210663619, 0x35b28cf61ea9643893877eabc6d688, 0x005c6a], + }, + BigNum { + limbs: [0x0dab4c4a2a63ad2369ef864781d95e, 0x2f7c6017a94f9b01da56279eb5d9e5, 0x003cd1], + }, + BigNum { + limbs: [0xaff8b6b5d3f851dc961078b87e26a3, 0x77d6c985d3f89837fdb1e203222b6e, 0x00371c], + }, + BigNum { + limbs: [0xfbbf05605e22049088086fe345cf99, 0x9962d49e98f824a86f10b7e39f2849, 0x004955], + }, + BigNum { + limbs: [0xc1e4fd9fa039fa6f77f78f1cba3068, 0x0df054fee4500e9168f751be38dd09, 0x002a98], + }, + BigNum { + limbs: [0x6ea85e98587c4a13068409bc82e244, 0x73eb7bcba57289a774bf888a996f9c, 0x0052c7], + }, + BigNum { + limbs: [0x4efba467a5dfb4ecf97bf5437d1dbd, 0x3367add1d7d5a992634881173e95b7, 0x002126], + }, + BigNum { + limbs: [0x15a25c56a25116ef4661cf681ac890, 0x122395c63dc1d8108a1f42d3561429, 0x000157], + }, + BigNum { + limbs: [0xa801a6a95c0ae810b99e2f97e53771, 0x952f93d73f865b294de8c6ce81f12a, 0x007296], + }, + BigNum { + limbs: [0xfa85c091fab993f2d6a61c264bba11, 0xc9de3a5deb69cc970bd5f2e6c815a4, 0x005469], + }, + BigNum { + limbs: [0xc31e426e03a26b0d2959e2d9b445f0, 0xdd74ef3f91de66a2cc3216bb0fefae, 0x001f83], + }, + BigNum { + limbs: [0x9cf7f79590474d5947ce0ad319cdc7, 0xe9425e38ffcc78b5a5b93d41590f4b, 0x0054d9], + }, + BigNum { + limbs: [0x20ac0b6a6e14b1a6b831f42ce6323a, 0xbe10cb647d7bba84324ecc607ef608, 0x001f13], + }, + BigNum { + limbs: [0x059903e0524868e55b60810a7f877b, 0xe6dafe0adda151ded54695836adc05, 0x006bea], + }, + BigNum { + limbs: [0xb80aff1fac13961aa49f7df5807886, 0xc0782b929fa6e15b02c1741e6d294e, 0x000802], + }, + BigNum { + limbs: [0xe617879a72d893b66d13df0b850d61, 0x14ed7cb17771b59db72419438d24fd, 0x002e07], + }, + BigNum { + limbs: [0xd78c7b658b836b4992ec1ff47af2a0, 0x9265acec05d67d9c20e3f05e4ae055, 0x0045e6], + }, + BigNum { + limbs: [0xe4824fbac5f8e7a21ac44df3477076, 0x4574e3442ee136aebb2396bd4f09d5, 0x0062b3], + }, + BigNum { + limbs: [0xd921b3453863175de53bb10cb88f8b, 0x61de46594e66fc8b1ce472e488fb7d, 0x00113a], + }, + BigNum { + limbs: [0xb8ecee197d9af0e3712b897f88b4d1, 0x00c45b561179be483f87c82a93f63f, 0x001a16], + }, + BigNum { + limbs: [0x04b714e680c10e1c8ed47580774b30, 0xa68ece476bce74f198804177440f14, 0x0059d7], + }, + BigNum { + limbs: [0x94ef84e6b7b995a1041f9488f68dae, 0x2ec1fc6138bd21f6d173aa046fe4ca, 0x0026c6], + }, + BigNum { + limbs: [0x28b47e1946a2695efbe06a77097253, 0x78912d3c448b114306945f9d682089, 0x004d27], + }, + BigNum { + limbs: [0x6d56a1d006b6372fac4dd82e55e945, 0x85187afb65a3c87c53ce3f7a76569b, 0x004129], + }, + BigNum { + limbs: [0x504d612ff7a5c7d053b226d1aa16bc, 0x223aaea217a46abd8439ca2761aeb8, 0x0032c4], + }, + BigNum { + limbs: [0x63ef45ad4908e6f172f93272aef9c6, 0xa5933f9d639627bceabba9c13bcb9a, 0x0011b5], + }, + BigNum { + limbs: [0x59b4bd52b553180e8d06cc8d51063b, 0x01bfea0019b20b7ced4c5fe09c39b9, 0x006238], + }, + BigNum { + limbs: [0x435d45df81fc513e24cf88d26d14bd, 0x4e82e0a4d4c5a66c4465ffe15f6be2, 0x00628f], + }, + BigNum { + limbs: [0x7a46bd207c5fadc1db30762d92eb44, 0x58d048f8a8828ccd93a209c0789971, 0x00115e], + }, + BigNum { + limbs: [0x5755762ed0dc2e1fda0410c4e4d674, 0x48feadc8d91349f2892deb1068f424, 0x0025ff], + }, + BigNum { + limbs: [0x664e8cd12d7fd0e025fbee3b1b298d, 0x5e547bd4a434e9474eda1e916f112f, 0x004dee], + }, + BigNum { + limbs: [0x976a04577e50444bc5e118fb425b35, 0xe8512409c3857773b21c8454d0d6c7, 0x001273], + }, + BigNum { + limbs: [0x2639fea8800bbab43a1ee604bda4cc, 0xbf020593b9c2bbc625eb854d072e8c, 0x006179], + }, + BigNum { + limbs: [0x4fb65d28974f6792018eab205ac3e1, 0x8d26543a3a60f8147ec78eec0ecf24, 0x006da6], + }, + BigNum { + limbs: [0x6deda5d7670c976dfe7153dfa53c20, 0x1a2cd56342e73b2559407ab5c9362f, 0x000647], + }, + BigNum { + limbs: [0x98fe6b6879e3c225a29005376888d7, 0x028e0bf569fd1c2b22c48fbf68ae2d, 0x000ebb], + }, + BigNum { + limbs: [0x24a5979784783cda5d6ff9c897772a, 0xa4c51da8134b170eb54379e26f5726, 0x006532], + }, + BigNum { + limbs: [0x5c491d95facfe2393b548d4204a51f, 0xc40edecaced7de301cf8986c431565, 0x0020c0], + }, + BigNum { + limbs: [0x615ae56a038c1cc6c4ab71bdfb5ae2, 0xe3444ad2ae705509bb0f713594efee, 0x00532c], + }, + BigNum { + limbs: [0xad139cafdaa772d6e616c9c1421c9e, 0x0a3d1e68f810578306d723b212c53f, 0x00348b], + }, + BigNum { + limbs: [0x1090665023b48c2919e9353ebde363, 0x9d160b348537dbb6d130e5efc54014, 0x003f62], + }, + BigNum { + limbs: [0x700a79da2ac3c6085f76ac583f79a0, 0x140bc42b07da6b95d0e40b88b4ff01, 0x002e99], + }, + BigNum { + limbs: [0x4d998925d39838f7a08952a7c08661, 0x93476572756dc7a40723fe19230652, 0x004554], + }, + BigNum { + limbs: [0x81818041738bf1e847f9433776feb1, 0x0ebca8a36a05a5b6c8dde49bad804f, 0x00290a], + }, + BigNum { + limbs: [0x3c2282be8ad00d17b806bbc8890150, 0x989680fa13428d830f2a25062a8504, 0x004ae3], + }, + BigNum { + limbs: [0x309e790e65064e32306af340c1db2d, 0x686764a69972d87fb06401dd4ca805, 0x000bd0], + }, + BigNum { + limbs: [0x8d0589f19955b0cdcf950bbf3e24d4, 0x3eebc4f6e3d55aba27a407c48b5d4e, 0x00681d], + }, + BigNum { + limbs: [0xde5b52cfa56e5ef9702d02ce6b3081, 0xdded4361edc32293b4da09077a31d3, 0x001395], + }, + BigNum { + limbs: [0xdf48b03058eda0068fd2fc3194cf80, 0xc965e63b8f8510a6232e009a5dd37f, 0x006057], + }, + BigNum { + limbs: [0x3a7a3a30e164ebf89184cfc722bd9f, 0x110afa3cec1ecf530b2c40345efea5, 0x000c0f], + }, + BigNum { + limbs: [0x8329c8cf1cf713076e7b2f38dd4262, 0x96482f60912963e6ccdbc96d7906ae, 0x0067de], + }, + BigNum { + limbs: [0x82c7aa2f50c6718c98f99408577a27, 0x59b976e328f1826addffd2285db4e5, 0x002059], + }, + BigNum { + limbs: [0x3adc58d0ad958d7367066af7a885da, 0x4d99b2ba5456b0cefa0837797a506e, 0x005394], + }, + BigNum { + limbs: [0x8fd7eef9244cb298fb4636446409e3, 0x01c7ef28e18206ab7288252332b360, 0x004783], + }, + BigNum { + limbs: [0x2dcc1406da0f4c6704b9c8bb9bf61e, 0xa58b3a749bc62c8e657fe47ea551f3, 0x002c6a], + }, + BigNum { + limbs: [0x32aeceebd86026c4febf0b91c6806d, 0xa560942c6498c9107c1635743781d4, 0x0012a7], + }, + BigNum { + limbs: [0x8af5341425fbd83b0140f36e397f94, 0x01f2957118af6a295bf1d42da0837f, 0x006146], + }, + BigNum { + limbs: [0x1d7f2bc75be4ac1b670bcfcf1f849a, 0x509f02a10d5b316a6fe11176b0f9a8, 0x003c30], + }, + BigNum { + limbs: [0xa024d738a27752e498f42f30e07b67, 0x56b426fc6fed01cf6826f82b270bab, 0x0037bd], + }, + BigNum { + limbs: [0xafa9321aff17c9004c5e11eb9505f9, 0x07f5cae1a195084571c7ab7696e4c1, 0x002e99], + }, + BigNum { + limbs: [0x0dfad0e4ff4435ffb3a1ed146afa08, 0x9f5d5ebbdbb32af466405e2b412092, 0x004554], + }, + BigNum { + limbs: [0x292d24283ac6fa129eee3f986b8455, 0x05c46d5e39f3855c0d1a0fb582e60a, 0x003852], + }, + BigNum { + limbs: [0x9476ded7c39504ed6111bf67947bac, 0xa18ebc3f4354adddcaedf9ec551f49, 0x003b9b], + }, + BigNum { + limbs: [0xff6d043f13d90de781a5b5ae382857, 0xc1f34621fa6d9a2287d5f9220e2fb7, 0x003caa], + }, + BigNum { + limbs: [0xbe36fec0ea82f1187e5a4951c7d7aa, 0xe55fe37b82da99175032107fc9d59b, 0x003742], + }, + BigNum { + limbs: [0x36a4cdd6c52bf66dea2db07aecfb2c, 0xb07666086a21dc850dde1ba420a978, 0x00081f], + }, + BigNum { + limbs: [0x86ff35293930089215d24e851304d5, 0xf6dcc395132656b4ca29edfdb75bdb, 0x006bcd], + }, + BigNum { + limbs: [0xcff89970e84a2fd43576dcf6601f6a, 0x95fd98daca15ee47fe04bc7132137e, 0x0020d0], + }, + BigNum { + limbs: [0xedab698f1611cf2bca8922099fe097, 0x115590c2b33244f1da034d30a5f1d4, 0x00531d], + }, + BigNum { + limbs: [0x4bf510cf7c7c8c9e768704f04e2b80, 0x2d1b75a1ffc63094c7611bdd129b82, 0x002527], + }, + BigNum { + limbs: [0x71aef23081df72618978fa0fb1d481, 0x7a37b3fb7d8202a510a6edc4c569d1, 0x004ec6], + }, + BigNum { + limbs: [0xc766da81eb5f3a10cba8cca132a4af, 0x9895da559f7bcc1f97abceafe390c3, 0x002aef], + }, + BigNum { + limbs: [0xf63d287e12fcc4ef3457325ecd5b52, 0x0ebd4f47ddcc671a405c3af1f4748f, 0x0048fe], + }, + BigNum { + limbs: [0x77ccfd0e68f45d81c3ad1e35f68aa0, 0x04249a2841514c8df7a0b2153271d0, 0x007214], + }, + BigNum { + limbs: [0x45d705f19567a17e3c52e0ca097561, 0xa32e8f753bf6e6abe067578ca59383, 0x0001d9], + }, + BigNum { + limbs: [0xe42b3486654278312cda878efea016, 0x69b4cb4cf4fafbed3003ef8c3a813e, 0x001cc7], + }, + BigNum { + limbs: [0xd978ce79991986ced3257771015feb, 0x3d9e5e50884d374ca8041a159d8414, 0x005726], + }, + BigNum { + limbs: [0xdc08ba88d180d93188d4192bcfb84d, 0xa6db496e5b977354760383a269ab6e, 0x001e05], + }, + BigNum { + limbs: [0xe19b48772cdb25ce772be5d43047b4, 0x0077e02f21b0bfe5620485ff6e59e4, 0x0055e8], + }, + BigNum { + limbs: [0x9617aa98504fbcdf57909bea0a2da4, 0x5272602dee9b726a2311ddae84a49a, 0x005643], + }, + BigNum { + limbs: [0x278c5867ae0c4220a86f6315f5d25d, 0x54e0c96f8eacc0cfb4f62bf35360b9, 0x001daa], + }, + BigNum { + limbs: [0x74a072f75e1eafc6b7ae4cbe9918df, 0x0ca1fa1ca2ce7bd130433636e1f719, 0x003963], + }, + BigNum { + limbs: [0x49039008a03d4f394851b24166e722, 0x9ab12f80da79b768a7c4d36af60e3a, 0x003a8a], + }, + BigNum { + limbs: [0x0e4544b75517c16711866509b0117e, 0x8e613f107412f75f355eb5219f4d29, 0x005860], + }, + BigNum { + limbs: [0xaf5ebe48a9443d98ee7999f64fee83, 0x18f1ea8d09353bdaa2a9548038b82a, 0x001b8d], + }, + BigNum { + limbs: [0x6b2362c6e3206af330c75237fd3287, 0xcf9dbeeb7a113d432c185eaed41723, 0x003918], + }, + BigNum { + limbs: [0x5280a0391b3b940ccf38acc802cd7a, 0xd7b56ab20336f5f6abefaaf303ee30, 0x003ad4], + }, + BigNum { + limbs: [0xfe6141c56e87705d1a4de431b14902, 0xb6f79972f279436a9109526def19bc, 0x000611], + }, + BigNum { + limbs: [0xbf42c13a8fd48ea2e5b21ace4eb6ff, 0xf05b902a8aceefcf46feb733e8eb96, 0x006ddb], + }, + BigNum { + limbs: [0x771ac41ed853a25780bbfe03ec55d5, 0xa563d5b51c810b94291b65dd88b855, 0x000bf6], + }, + BigNum { + limbs: [0x46893ee126085ca87f4400fc13aa2c, 0x01ef53e860c727a5aeeca3c44f4cfe, 0x0067f7], + }, + BigNum { + limbs: [0x3ef3285a12e45cc86a0ebf672f9539, 0x73a1f676d8115d3e5f439eda2e7ab2, 0x001b27], + }, + BigNum { + limbs: [0x7eb0daa5eb77a23795f13f98d06ac8, 0x33b13326a536d5fb78c46ac7a98aa1, 0x0058c6], + }, + BigNum { + limbs: [0x078bb4a345264200b56e295c87eb31, 0x8d23be8445a567589623fdf89c7c4c, 0x002c63], + }, + BigNum { + limbs: [0xb6184e5cb935bcff4a91d5a37814d0, 0x1a2f6b1937a2cbe141e40ba93b8907, 0x00478a], + }, + BigNum { + limbs: [0xc428f8a2654518b52166440df9b688, 0x3d89e044cc6c8191cc5fd4eb468731, 0x002ec4], + }, + BigNum { + limbs: [0xf97b0a5d9916e64ade99baf2064979, 0x69c94958b0dbb1a80ba834b6917e21, 0x004529], + }, + BigNum { + limbs: [0x356a0242c49b8fb3212df6a0e2db64, 0x410905166866b24236a3c7e932fe37, 0x004cde], + }, + BigNum { + limbs: [0x883a00bd39c06f4cded2085f1d249d, 0x664a248714e180f7a16441b8a5071c, 0x00270f], + }, + BigNum { + limbs: [0x4a92da52332af0b26f1f6b19b802a2, 0x903bb1db99afcd62607b6d2f5a7aed, 0x005ee5], + }, + BigNum { + limbs: [0x731128adcb310e4d90e093e647fd5f, 0x171777c1e39865d7778c9c727d8a66, 0x001508], + }, + BigNum { + limbs: [0x34b261df65292e9ebf6443bba0f2ed, 0x19bd16418157f24ce6e76cd2d04b7e, 0x0060b4], + }, + BigNum { + limbs: [0x88f1a1209932d061409bbb445f0d14, 0x8d96135bfbf040ecf1209ccf07b9d5, 0x001339], + }, + BigNum { + limbs: [0x3654f0611097c6b6a28c1f1914c201, 0x62bf4cb52ef4097fce3915c694a5c5, 0x004e30], + }, + BigNum { + limbs: [0x874f129eedc438495d73dfe6eb3e00, 0x4493dce84e5429ba09cef3db435f8e, 0x0025bd], + }, + BigNum { + limbs: [0xa053141f7d3d7cf9065e7bcadcfc19, 0xb655d0e63d59e74dac8f8f64831f8c, 0x006be1], + }, + BigNum { + limbs: [0x1d50eee0811e8206f9a183352303e8, 0xf0fd58b73fee4bec2b787a3d54e5c7, 0x00080b], + }, + BigNum { + limbs: [0x1211542079c63a04b57a388ce6c261, 0x7bac5f90a18bb38f7e83bd6db07800, 0x00699e], + }, + BigNum { + limbs: [0xab92aedf8495c4fb4a85c673193da0, 0x2ba6ca0cdbbc7faa59844c34278d53, 0x000a4f], + }, + BigNum { + limbs: [0x0ee0c64f8b7ac1ff7ba2024a37b7bb, 0x93e4697b1d9ce0c431b6db18076ff9, 0x000834], + }, + BigNum { + limbs: [0xaec33cb072e13d00845dfcb5c84846, 0x136ec0225fab5275a6512e89d0955a, 0x006bb9], + }, + BigNum { + limbs: [0x01fa182468ba7c595e445abe442dca, 0x879144d0fcd2fcc9670838442647e3, 0x0051e8], + }, + BigNum { + limbs: [0xbba9eadb95a182a6a1bba441bbd237, 0x1fc1e4cc8075367070ffd15db1bd70, 0x002205], + }, + BigNum { + limbs: [0x9afd4618c5e1bc80afccf22a6f8a52, 0x1540ac49fb06bbc6c6b9a9fc918afb, 0x005101], + }, + BigNum { + limbs: [0x22a6bce7387a427f50330cd59075af, 0x92127d5382417773114e5fa5467a58, 0x0022ec], + }, + BigNum { + limbs: [0x1ee525b1ec67d1c5c9581135a7ab68, 0x30ea2e1c440d8b23d1f54cdf1fae7b, 0x00349e], + }, + BigNum { + limbs: [0x9ebedd4e11f42d3a36a7edca585499, 0x7668fb81393aa8160612bcc2b856d8, 0x003f4f], + }, + BigNum { + limbs: [0xae2ac8e1522fb525497b14298a9c76, 0x29bc131a89602fe31e0bda03eafb9b, 0x005ebe], + }, + BigNum { + limbs: [0x0f793a1eac2c49dab684ead675638b, 0x7d971682f3e80356b9fc2f9ded09b8, 0x00152f], + }, + BigNum { + limbs: [0x5b2f702a43d37b7ab8dac27f3e254c, 0x42d5471bc24662632562d7c80a5369, 0x0064a9], + }, + BigNum { + limbs: [0x627492d5ba88838547253c80c1dab5, 0x647de281bb01d0d6b2a531d9cdb1ea, 0x000f44], + }, + BigNum { + limbs: [0x77c91e81814f8b58eef8ea01b32225, 0xbbcf1c263cfc2d486a35143271ee7d, 0x003ea3], + }, + BigNum { + limbs: [0x45dae47e7d0c73a7110714fe4cdddc, 0xeb840d77404c05f16dd2f56f6616d6, 0x003549], + }, + BigNum { + limbs: [0x7e33d54601da6d389208e6356979ab, 0xc09b9fa4dfb218819428c8056d1d39, 0x0028c1], + }, + BigNum { + limbs: [0x3f702db9fc8191c76df718ca968656, 0xe6b789f89d961ab843df419c6ae81a, 0x004b2b], + }, + BigNum { + limbs: [0xa5905736c46ea4c5475b119e356265, 0xd098fc0f8207b6faf0e0d74f7a1025, 0x00690b], + }, + BigNum { + limbs: [0x1813abc939ed5a3ab8a4ed61ca9d9c, 0xd6ba2d8dfb407c3ee72732525df52e, 0x000ae1], + }, + BigNum { + limbs: [0xc3720c7bf19f0c42aa886429513423, 0xef4adbfcd69d77f7f625dacb9ddb3b, 0x0045eb], + }, + BigNum { + limbs: [0xfa31f6840cbcf2bd55779ad6aecbde, 0xb8084da0a6aabb41e1e22ed63a2a17, 0x002e01], + }, + BigNum { + limbs: [0xd1b9212b65bf214e921640c47a0a45, 0xd6554ec4fbad86e639ebf267f538dd, 0x00278f], + }, + BigNum { + limbs: [0xebeae1d4989cddb16de9be3b85f5bc, 0xd0fddad8819aac539e1c1739e2cc75, 0x004c5d], + }, + BigNum { + limbs: [0x0c31c44ac745f527c512ff22e85c3a, 0x2e4cd97518258238f206e24c0b1c2b, 0x002cbc], + }, + BigNum { + limbs: [0xb1723eb5371609d83aecffdd17a3c7, 0x790650286522b100e6012755cce928, 0x004731], + }, + BigNum { + limbs: [0x9989268429206117d51008e47afac8, 0x2c5a3a4f9c6aeb6b7a036c657da412, 0x001856], + }, + BigNum { + limbs: [0x241adc7bd53b9de82aeff61b850539, 0x7af8ef4de0dd47ce5e049d3c5a6141, 0x005b97], + }, + BigNum { + limbs: [0x3c1bffa488ae4c91a9d99c561db4f3, 0x5df95918a808d3a4931256f1413ddf, 0x002162], + }, + BigNum { + limbs: [0x8188035b75adb26e562662a9e24b0e, 0x4959d084d53f5f9544f5b2b096c774, 0x00528b], + }, + BigNum { + limbs: [0xfb570516b5e5cefc96ef08c768f7bb, 0x202424aab720e62747593b3d0256dd, 0x004ae0], + }, + BigNum { + limbs: [0xc24cfde9487630036910f638970846, 0x872f04f2c6274d1290aece64d5ae75, 0x00290d], + }, + BigNum { + limbs: [0x6d477b956af945571da68e63a7c767, 0xa9008ab58c52c373a0f84872096ba6, 0x005eed], + }, + BigNum { + limbs: [0x505c876a9362b9a8e259709c58389a, 0xfe529ee7f0f56fc6370fc12fce99ad, 0x0014ff], + }, + BigNum { + limbs: [0xc5dd2ae9e83d223d69281ae1af9955, 0x35a347e2e5a7d5bf621e6cdc1ff837, 0x00668d], + }, + BigNum { + limbs: [0xf7c6d816161edcc296d7e41e5066ac, 0x71afe1ba97a05d7a75e99cc5b80d1b, 0x000d60], + }, + BigNum { + limbs: [0xba0324468f865128736875d438f2d6, 0x73380eda1d3ba312905b71fb212d57, 0x001dae], + }, + BigNum { + limbs: [0x03a0deb96ed5add78c97892bc70d2b, 0x341b1ac3600c902747ac97a6b6d7fc, 0x00563f], + }, + BigNum { + limbs: [0x5e326a7b6d1553fd517bb125e87aa6, 0xbdab877991b02c465a03f89c87977d, 0x000c40], + }, + BigNum { + limbs: [0x5f7198849146ab02ae844dda17855b, 0xe9a7a223eb9806f37e041105506dd6, 0x0067ac], + }, + BigNum { + limbs: [0x5b47aa7fc702df407a3035875afd49, 0xa961d2308993234e4002f9a199a5c3, 0x004f00], + }, + BigNum { + limbs: [0x625c588037591fbf85cfc978a502b8, 0xfdf1576cf3b50feb980510003e5f90, 0x0024ec], + }, + BigNum { + limbs: [0xfb9dc693cfbdcbd6d7b660f42ebdf7, 0xe8ad2baf59d5de4ac442c8ffc9599c, 0x004111], + }, + BigNum { + limbs: [0xc2063c6c2e9e332928499e0bd1420a, 0xbea5fdee237254ef13c540a20eabb6, 0x0032db], + }, + BigNum { + limbs: [0x14d71f3d115d480b10922f5983b2e8, 0x80c524bd040ea27554f6cda2dd8143, 0x0046bf], + }, + BigNum { + limbs: [0xa8cce3c2ecfeb6f4ef6dcfa67c4d19, 0x268e04e0793990c483113bfefa8410, 0x002d2e], + }, + BigNum { + limbs: [0x8a4ccd5a8ffdaea479ce0adf737d2c, 0x281fc9738b6acf6a3c9e3de03c4b9f, 0x0057b4], + }, + BigNum { + limbs: [0x335735a56e5e505b8631f4208c82d5, 0x7f336029f1dd63cf9b69cbc19bb9b4, 0x001c39], + }, + BigNum { + limbs: [0xfa9da9aea7b7a807f3949ff7497ac4, 0x94e273230bc82fa52c43468bc2cb46, 0x0067d1], + }, + BigNum { + limbs: [0xc306595156a456f80c6b5f08b6853d, 0x1270b67a71800394abc4c316153a0c, 0x000c1c], + }, + BigNum { + limbs: [0xf90efcf7889498c0fa84462b5be3f9, 0x506cf5b4ad5c5dfa071dbcb2f776a7, 0x004583], + }, + BigNum { + limbs: [0xc495060875c7663f057bb8d4a41c08, 0x56e633e8cfebd53fd0ea4ceee08eab, 0x002e6a], + }, + BigNum { + limbs: [0x4bd6bd4ae9ab1cba6dbc0d400aabca, 0x020cfd306c1de084a51cd4d6f9f64b, 0x00678e], + }, + BigNum { + limbs: [0x71cd45b514b0e2459243f1bff55437, 0xa5462c6d112a52b532eb34cade0f08, 0x000c5f], + }, + BigNum { + limbs: [0xadc30be0afecd9400809b932c038e7, 0x6d07fcafce4a9a767be86caf30f381, 0x0063a0], + }, + BigNum { + limbs: [0x0fe0f71f4e6f25bff7f645cd3fc71a, 0x3a4b2cedaefd98c35c1f9cf2a711d2, 0x00104d], + }, + BigNum { + limbs: [0xfe8d47e5eb3bac52f1982243ace47a, 0xd6124eee8fcbbcf665d106968cdd39, 0x0039da], + }, + BigNum { + limbs: [0xbf16bb1a132052ad0e67dcbc531b87, 0xd140daaeed7c76437237030b4b2819, 0x003a12], + }, + BigNum { + limbs: [0x8b5ce291f218c9dd74958e6cca1c43, 0x7e5763a2583ce605c2850effefc8c8, 0x00144b], + }, + BigNum { + limbs: [0x3247206e0c4335228b6a709335e3be, 0x28fbc5fb250b4d341582faa1e83c8b, 0x005fa2], + }, + BigNum { + limbs: [0x2e5e696f842cffe144608f74eaac1b, 0x8fb393a3ab78c209cb769b65fa1ebe, 0x0030f6], + }, + BigNum { + limbs: [0x8f4599907a2eff1ebb9f6f8b1553e6, 0x179f95f9d1cf71300c916e3bdde695, 0x0042f7], + }, + BigNum { + limbs: [0xa5b8d3dda353e8a443e6dbbea71c3d, 0x4da2acaeebdd573de9e05c005ca05c, 0x003e26], + }, + BigNum { + limbs: [0x17eb2f225b08165bbc19234158e3c4, 0x59b07cee916adbfbee27ada17b64f7, 0x0035c7], + }, + BigNum { + limbs: [0x78b65b0a65311a96bd8776dcb3a3de, 0x40eea7b1a760a3c8fb7b4ca1b1ceb3, 0x000c7f], + }, + BigNum { + limbs: [0x44eda7f5992ae469427888234c5c23, 0x666481ebd5e78f70dc8cbd002636a0, 0x00676e], + }, + BigNum { + limbs: [0xdc89a891d9f52411e9aa243ff64fb7, 0xf8687719af42f436be5744d2fd476f, 0x0005fd], + }, + BigNum { + limbs: [0xe11a5a6e2466daee1655dac009b04a, 0xaeeab283ce053f0319b0c4cedabde3, 0x006def], + }, + BigNum { + limbs: [0xa76a4d12a65a59e004a8616ad310f0, 0xdcd7f3e6f15ec6c4f5b601e21ff0d9, 0x0016c4], + }, + BigNum { + limbs: [0x1639b5ed5801a51ffb579d952cef11, 0xca7b35b68be96c74e25207bfb8147a, 0x005d28], + }, + BigNum { + limbs: [0x0467bb084c964790407b4446e144b0, 0x40ff209302f1e88adcdbbfcc7732aa, 0x004269], + }, + BigNum { + limbs: [0xb93c47f7b1c5b76fbf84bab91ebb51, 0x6654090a7a564aaefb2c49d560d2a9, 0x003184], + }, + BigNum { + limbs: [0x7f89984e1f494bd58aa66bb4834fd9, 0xf85ceb431b3e231aa97f1b81adbf24, 0x000a1c], + }, + BigNum { + limbs: [0x3e1a6ab1df12b32a7559934b7cb028, 0xaef63e5a620a101f2e88ee202a462f, 0x0069d0], + }, + BigNum { + limbs: [0x6e71b10378df567095602a91bfeb57, 0x333f31a2b277845fe7e2ace6ee7a68, 0x0068bf], + }, + BigNum { + limbs: [0x4f3251fc857ca88f6a9fd46e4014aa, 0x7413f7facad0aed9f0255cbae98aeb, 0x000b2e], + }, + BigNum { + limbs: [0x72e12d4ef7b1bc1d048d5e4c8f92d5, 0x1919c9e42d245edfec475cd95fd90c, 0x0006dd], + }, + BigNum { + limbs: [0x4ac2d5b106aa42e2fb72a0b3706d2c, 0x8e395fb95023d459ebc0acc8782c47, 0x006d10], + }, + BigNum { + limbs: [0xa6caeec0019cce89f8a28c04b02908, 0x4254d49cb10f9468da4449c73ffa3f, 0x002507], + }, + BigNum { + limbs: [0x16d9143ffcbf3076075d72fb4fd6f9, 0x64fe5500cc389ed0fdc3bfda980b14, 0x004ee6], + }, + BigNum { + limbs: [0x7678b48bb1db8fb4bd8e160157197c, 0x9af535ae0e253b310b396831542a11, 0x004279], + }, + BigNum { + limbs: [0x472b4e744c806f4b4271e8fea8e685, 0x0c5df3ef6f22f808cccea17083db42, 0x003174], + }, + BigNum { + limbs: [0xc281a93aef62e96137a691be2497f9, 0xd3cb28a3b5a16588627f08e73b1b20, 0x004bab], + }, + BigNum { + limbs: [0xfb2259c50ef9159ec8596d41db6808, 0xd38800f9c7a6cdb1758900ba9cea32, 0x002841], + }, + BigNum { + limbs: [0xf4c10059af274ee2cc0434baf3e2fb, 0xd18546fdbca8764eb4562d580122db, 0x001aec], + }, + BigNum { + limbs: [0xc8e302a64f34b01d33fbca450c1d06, 0xd5cde29fc09fbceb23b1dc49d6e277, 0x005900], + }, + BigNum { + limbs: [0x2d6fb35a5cecb4467864c0e822f4f6, 0x40d594cfa384a9b31eb7a0574d1a1c, 0x001a4b], + }, + BigNum { + limbs: [0x90344fa5a16f4ab9879b3e17dd0b0b, 0x667d94cdd9c38986b950694a8aeb37, 0x0059a2], + }, + BigNum { + limbs: [0x0048cde3a189929b8c6581b7a57bb6, 0xc9c6a859b493283d27539aa3079e7e, 0x001a9f], + }, + BigNum { + limbs: [0xbd5b351c5cd26c64739a7d485a844b, 0xdd8c8143c8b50afcb0b46efed066d5, 0x00594d], + }, + BigNum { + limbs: [0x901f632ec9e7867e4f0728f664f220, 0x29d3d7d78713ff0e7a5f644cc3151a, 0x00256e], + }, + BigNum { + limbs: [0x2d849fd134747881b0f8d6099b0de1, 0x7d7f51c5f634342b5da8a55514f039, 0x004e7f], + }, + BigNum { + limbs: [0x8f4de46dd12913aa9ae8a21f3d3b2a, 0xc598ec5b2425c7cd9306078735756a, 0x006528], + }, + BigNum { + limbs: [0x2e561e922d32eb5565175ce0c2c4d7, 0xe1ba3d4259226b6c4502021aa28fe9, 0x000ec4], + }, + BigNum { + limbs: [0x13ba7565944c5b1543c85450272199, 0xf3850c2463a95f9cce23d45411857f, 0x00207f], + }, + BigNum { + limbs: [0xa9e98d9a6a0fa3eabc37aaafd8de68, 0xb3ce1d79199ed39d09e4354dc67fd4, 0x00536d], + }, + BigNum { + limbs: [0x46eb57ea4ac470f442b205efee0514, 0x43f88c427dfaf9484c246f79adca12, 0x00333c], + }, + BigNum { + limbs: [0x76b8ab15b3978e0bbd4df91011faed, 0x635a9d5aff4d39f18be39a282a3b41, 0x0040b1], + }, + BigNum { + limbs: [0xd2b436f50932afdcd4eae782b30688, 0x64dd8e54b387f9512866d3f7d41f14, 0x000837], + }, + BigNum { + limbs: [0xeaefcc0af5294f232b15177d4cf979, 0x42759b48c9c039e8afa135aa03e63e, 0x006bb6], + }, + BigNum { + limbs: [0x99d9214c68d624dc714980be571087, 0x9f73e4a877e46ea11c8dfdfe84358b, 0x001f19], + }, + BigNum { + limbs: [0x23cae1b39585da238eb67e41a8ef7a, 0x07df44f50563c498bb7a0ba353cfc8, 0x0054d4], + }, + BigNum { + limbs: [0x399fcbaaa521a98ea8afae00d170ae, 0x373c48aa371fc73ef01e4237d0cd62, 0x004d0a], + }, + BigNum { + limbs: [0x84043755593a5571575050ff2e8f53, 0x7016e0f346286bfae7e9c76a0737f1, 0x0026e3], + }, + BigNum { + limbs: [0x500eb02ee2d9b63e9fe4a0fd9609b0, 0x23d941e9787714e54cb0055d4e79e0, 0x0034ae], + }, + BigNum { + limbs: [0x6d9552d11b8248c1601b5e0269f651, 0x8379e7b404d11e548b580444898b73, 0x003f3f], + }, + BigNum { + limbs: [0x352480fa0142bbab3354b95ae621bc, 0x5126bd58cd82930f5e8f92bf19b8f0, 0x000cc6], + }, + BigNum { + limbs: [0x887f8205fd194354ccab45a519de45, 0x562c6c44afc5a02a797876e2be4c63, 0x006727], + }, + BigNum { + limbs: [0x62ded52fd700885ee20c0dd1b4a838, 0x1c067801129b35ed2aecb3a3c45a67, 0x00368a], + }, + BigNum { + limbs: [0x5ac52dd0275b76a11df3f12e4b57c9, 0x8b4cb19c6aacfd4cad1b55fe13aaec, 0x003d63], + }, + BigNum { + limbs: [0x66e7055dd8b9a9362010e8b6f2fca0, 0xb1192af8a686ae9351a4b09f45cf52, 0x006626], + }, + BigNum { + limbs: [0x56bcfda225a255c9dfef16490d0361, 0xf639fea4d6c184a686635902923601, 0x000dc6], + }, + BigNum { + limbs: [0x829fa9756239065149e6b135daad43, 0x1d92c648e00ac9797442364e2a520c, 0x0042df], + }, + BigNum { + limbs: [0x3b04598a9c22f8aeb6194dca2552be, 0x89c063549d3d69c063c5d353adb347, 0x00310e], + }, + BigNum { + limbs: [0x039c93ab01de8dc45d6a0ee42c235e, 0xe9a05d32ae0c342f0b767f189f73b8, 0x005802], + }, + BigNum { + limbs: [0xba076f54fc7d713ba295f01bd3dca3, 0xbdb2cc6acf3bff0acc918a8938919b, 0x001bea], + }, + BigNum { + limbs: [0x607690dcfab6e9e6e915abaf97bc2d, 0x7a3834c2b60b8fa3fe5f9b3c8ae049, 0x000023], + }, + BigNum { + limbs: [0x5d2d722303a5151916ea53506843d4, 0x2d1af4dac73ca395d9a86e654d250a, 0x0073ca], + }, + BigNum { + limbs: [0xf7e8d06558cc09c2361a9ef0904d55, 0xcd45c3e35c09548b704bd2ae612416, 0x003a9d], + }, + BigNum { + limbs: [0xc5bb329aa58ff53dc9e5600f6fb2ac, 0xda0d65ba213edeae67bc36f376e13c, 0x00394f], + }, + BigNum { + limbs: [0x366ec9858bbf6c69998015cfb618f9, 0x55e541519389f820338273189ec513, 0x0070c9], + }, + BigNum { + limbs: [0x8735397a729c9296667fe93049e708, 0x516de84be9be3b19a4859689394040, 0x000324], + }, + BigNum { + limbs: [0x991a8549b179952dfc1c048b1eebba, 0x4c4e68daaf27eca0d4a90b42cef9db, 0x002fd7], + }, + BigNum { + limbs: [0x24897db64ce269d203e3fa74e11447, 0x5b04c0c2ce204699035efe5f090b78, 0x004416], + }, + BigNum { + limbs: [0xaa6d581ed2c4bd1bfec4e31db595da, 0x7d5b0ed096e4303bd342e46dae0b30, 0x000674], + }, + BigNum { + limbs: [0x1336aae12b9741e4013b1be24a6a27, 0x29f81acce66402fe04c5253429fa23, 0x006d79], + }, + BigNum { + limbs: [0x81e1b366348d59d5008b415742cf2c, 0x1de08c44b05c5f9615ada1567cea0f, 0x001a24], + }, + BigNum { + limbs: [0x3bc24f99c9cea52aff74bda8bd30d5, 0x89729d58ccebd3a3c25a684b5b1b44, 0x0059c9], + }, + BigNum { + limbs: [0xe75b2f9b862e777f2812860a5e7bf6, 0x603dcb33a8f035c2af174b0de333ac, 0x002fce], + }, + BigNum { + limbs: [0xd648d364782d8780d7ed78f5a1840b, 0x47155e69d457fd7728f0be93f4d1a6, 0x00441f], + }, + BigNum { + limbs: [0x192102577134b3fe804b693688c917, 0x152542076b192914da850aa8c1ca1b, 0x003d77], + }, + BigNum { + limbs: [0xa48300a88d274b017fb495c97736ea, 0x922de796122f0a24fd82fef9163b38, 0x003676], + }, + BigNum { + limbs: [0xf4bccd99cb9046c44608878e56b18d, 0xe4da84bd62fbae9aa110d4844095c6, 0x001266], + }, + BigNum { + limbs: [0xc8e7356632cbb83bb9f77771a94e74, 0xc278a4e01a4c849f36f7351d976f8c, 0x006186], + }, + BigNum { + limbs: [0x311fa027a0f568823cb99f2c17bdcd, 0xf7cf11927e6353a2ae829e2dd36e96, 0x0072d2], + }, + BigNum { + limbs: [0x8c8462d85d66967dc3465fd3e84234, 0xaf84180afee4df9729856b740496bd, 0x00011a], + }, + BigNum { + limbs: [0x5c255fec426d8cdc8023c433014b7a, 0x1125fb8d170db8f63036640b7cfca4, 0x005ec0], + }, + BigNum { + limbs: [0x617ea313bbee72237fdc3accfeb487, 0x962d2e10663a7a43a7d1a5965b08af, 0x00152d], + }, + BigNum { + limbs: [0x234cc83e129d05cac696b0e5c3fcac, 0xfeb419a46ea5fcd501b9c2cf437010, 0x001c0a], + }, + BigNum { + limbs: [0x9a573ac1ebbef93539694e1a3c0355, 0xa89f0ff90ea23664d64e46d2949543, 0x0057e2], + }, + BigNum { + limbs: [0xe716e0f033f72b72498848fbc00998, 0xd0588d6029adaf665203abefaf0457, 0x001323], + }, + BigNum { + limbs: [0xd68d220fca64d38db677b6043ff669, 0xd6fa9c3d539a83d386045db22900fb, 0x0060c9], + }, + BigNum { + limbs: [0xa69c5cb7b5339c8b28202568c1191a, 0x7473aec107d89fd3fc0a318afa7228, 0x0010f4], + }, + BigNum { + limbs: [0x1707a64849286274d7dfd9973ee6e7, 0x32df7adc756f9365dbfdd816dd932b, 0x0062f9], + }, + BigNum { + limbs: [0x181f2d5d9e2a131245b9b503b948f7, 0x10fc1f1f45c512e78cf448f8beafff, 0x004bab], + }, + BigNum { + limbs: [0xa584d5a26031ebedba4649fc46b70a, 0x96570a7e378320524b13c0a9195554, 0x002842], + }, + BigNum { + limbs: [0x899c749fdaf665bc1548facb7b03c5, 0xc7d005315cea488effc435dd9245f1, 0x0047e6], + }, + BigNum { + limbs: [0x34078e6023659943eab7043484fc3c, 0xdf83246c205deaaad843d3c445bf62, 0x002c06], + }, + BigNum { + limbs: [0x980680010107783cd0d52868bd62f1, 0xff4f2394b51c1d27378dd579388bb1, 0x001b6d], + }, + BigNum { + limbs: [0x259d82fefd5486c32f2ad697429d10, 0xa8040608c82c1612a07a34289f79a2, 0x00587f], + }, + BigNum { + limbs: [0x0fda5051a37d3acd0cf163f403c594, 0x25d07b49a277db8a3197f6667f0a7c, 0x000aa3], + }, + BigNum { + limbs: [0xadc9b2ae5adec432f30e9b0bfc3a6d, 0x8182ae53dad057afa670133b58fad7, 0x00694a], + }, + BigNum { + limbs: [0xc4daee200c52605c067d108a5ba95a, 0x92c2bf28e2003a96940c094299dc62, 0x002976], + }, + BigNum { + limbs: [0xf8c914dff2099ea3f982ee75a456a7, 0x14906a749b47f8a343fc005f3e28f0, 0x004a77], + }, + BigNum { + limbs: [0xde75070be93e05f8f3ba3d42f36d2c, 0xd5e4479c8df0ecb3f50fb0f21337d1, 0x002414], + }, + BigNum { + limbs: [0xdf2efbf4151df9070c45c1bd0c92d5, 0xd16ee200ef574685e2f858afc4cd81, 0x004fd8], + }, + BigNum { + limbs: [0xf7bca4242070fcbc79729bfc181d87, 0xb15ea032d2eb3432303860656bc2eb, 0x004e23], + }, + BigNum { + limbs: [0xc5e75edbddeb0243868d6303e7e27a, 0xf5f4896aaa5cff07a7cfa93c6c4267, 0x0025c9], + }, + BigNum { + limbs: [0x5ef5e86046408143a898fb31c9c4ee, 0x91addd75800726e4c08df8991f67a0, 0x0056bd], + }, + BigNum { + limbs: [0x5eae1a9fb81b7dbc576703ce363b13, 0x15a54c27fd410c55177a1108b89db3, 0x001d30], + }, + BigNum { + limbs: [0x6e588415ecaa66b136effd3f67e4f0, 0xd8fd7bb9852f096506fcb28d9b7cf6, 0x0038ce], + }, + BigNum { + limbs: [0x4f4b7eea11b1984ec91001c0981b11, 0xce55ade3f81929d4d10b57143c885d, 0x003b1e], + }, + BigNum { + limbs: [0x8f36cb9e84d1b1630642f16c936994, 0xe75a382cbf2e02f0663c969124c698, 0x0067dc], + }, + BigNum { + limbs: [0x2e6d3761798a4d9cf9bd0d936c966d, 0xbff8f170be1a304971cb7310b33ebb, 0x000c10], + }, + BigNum { + limbs: [0xc391a44d095efb7975e7721deb1be9, 0xd069b7229003170842e6e017c538ea, 0x001403], + }, + BigNum { + limbs: [0xfa125eb2f4fd03868a188ce214e418, 0xd6e9727aed451c319521298a12cc68, 0x005fe9], + }, + BigNum { + limbs: [0x51d7689baf0f40f6c18c8d1ea26560, 0xb6ddd5775cb0f1982c73f8102e9d6d, 0x001b19], + }, + BigNum { + limbs: [0x6bcc9a644f4cbe093e7371e15d9aa1, 0xf0755426209741a1ab941191a967e6, 0x0058d3], + }, + BigNum { + limbs: [0xb10ea7a313f73e11fa377f6160c3e7, 0xf76f040b0a89bed4581761f087904e, 0x00346e], + }, + BigNum { + limbs: [0x0c955b5cea64c0ee05c87f9e9f3c1a, 0xafe4259272be74657ff0a7b1507505, 0x003f7e], + }, + BigNum { + limbs: [0xd73d5d3d1ebf4c2b27692f9d97b929, 0xc253a232e71502e1414cf60bcb7626, 0x004dd4], + }, + BigNum { + limbs: [0xe666a5c2df9cb2d4d896cf626846d8, 0xe4ff876a9633305896bb13960c8f2c, 0x002618], + }, + BigNum { + limbs: [0x01ab792405734124e37d7512d665de, 0x4efd72d699b6ad23b531fa5e728f48, 0x00502a], + }, + BigNum { + limbs: [0xbbf889dbf8e8bddb1c8289ed299a23, 0x5855b6c6e391861622d60f4365760b, 0x0023c3], + }, + BigNum { + limbs: [0x04625fcd552eb47e4f18a74d8f0ffc, 0x74e27cad0a2c5df5679e2874a63c51, 0x001b14], + }, + BigNum { + limbs: [0xb941a332a92d4a81b0e757b270f005, 0x3270acf0731bd5447069e12d31c902, 0x0058d9], + }, + BigNum { + limbs: [0x128954af94fd14686873f8ebe729d3, 0xaf07783cd487ebc8683b74daafca98, 0x0067d2], + }, + BigNum { + limbs: [0xab1aae50695eea97978c061418d62e, 0xf84bb160a8c047716fcc94c7283abb, 0x000c1a], + }, + BigNum { + limbs: [0x39c3bd751f2997989a8b21cb4b1481, 0xb14019f2da1c4b94376b4bf82d9ec8, 0x001e87], + }, + BigNum { + limbs: [0x83e0458adf3267676574dd34b4eb80, 0xf6130faaa32be7a5a09cbda9aa668b, 0x005565], + }, + BigNum { + limbs: [0x224e8044fb9b302d358051fe142663, 0x7e5dd2080df78bfe971e712d186e0a, 0x0041ee], + }, + BigNum { + limbs: [0x9b5582bb02c0ced2ca7fad01ebd99e, 0x28f557956f50a73b40e99874bf9749, 0x0031ff], + }, + BigNum { + limbs: [0x266e7302d6261ee8604ef138481f67, 0x4af099edb3d6b0bba73275b4fd222d, 0x003fb0], + }, + BigNum { + limbs: [0x97358ffd2835e0179fb10dc7b7e09a, 0x5c628fafc971827e30d593ecdae326, 0x00343d], + }, + BigNum { + limbs: [0xcd04d4f26b49a51297254297f78ee1, 0x396fe69b76655402529839aa08e182, 0x0029a6], + }, + BigNum { + limbs: [0xf09f2e0d931259ed68dabc68087120, 0x6de3430206e2df37856fcff7cf23d0, 0x004a47], + }, + BigNum { + limbs: [0x9a0420135c1e74d004fced7127bbd0, 0xfdaea9b84859439bb05a2196d21ca9, 0x006730], + }, + BigNum { + limbs: [0x239fe2eca23d8a2ffb03118ed84431, 0xa9a47fe534eeef9e27ade80b05e8aa, 0x000cbc], + }, + BigNum { + limbs: [0x9389ca095aa500706ae67706c752d6, 0x240d9f9006949ad4f83cf67b6dbbbc, 0x00710a], + }, + BigNum { + limbs: [0x2a1a38f6a3b6fe8f951987f938ad2b, 0x83458a0d76b39864dfcb13266a4997, 0x0002e3], + }, + BigNum { + limbs: [0x3128560305c8ef5a2396bbf9697fb6, 0xccabef53799b1e88e1d0d1f0dc5dc7, 0x003bc4], + }, + BigNum { + limbs: [0x8c7bacfcf8930fa5dc69430696804b, 0xdaa73a4a03ad14b0f63737b0fba78c, 0x003828], + }, + BigNum { + limbs: [0x7bdee41758cacac6c8da15682a43ad, 0xa255a42715a228e1ce9a9398792771, 0x0061ed], + }, + BigNum { + limbs: [0x41c51ee8a59134393725e997d5bc54, 0x04fd857667a60a58096d76095edde2, 0x001200], + }, + BigNum { + limbs: [0x36460c54463cd8f3645a8d9dd0449e, 0xc5e63ebd7c87a1375287bdfc69b2e7, 0x005f7a], + }, + BigNum { + limbs: [0x875df6abb81f260c9ba571622fbb63, 0xe16ceae000c0920285804ba56e526c, 0x001472], + }, + BigNum { + limbs: [0xe527d3c618bd91111135e45e927581, 0x651a3c71c35b24f44b3cbdee5bb69e, 0x0034e9], + }, + BigNum { + limbs: [0xd87c2f39e59e6deeeeca1aa16d8a80, 0x4238ed2bb9ed0e458ccb4bb37c4eb4, 0x003f04], + }, + BigNum { + limbs: [0x14bad0bf6f6300650f9beee20b5515, 0xe269c37d4d8412f381403b89980ee9, 0x00217b], + }, + BigNum { + limbs: [0xa8e932408ef8fe9af064101df4aaec, 0xc4e966202fc4204656c7ce183ff66a, 0x005271], + }, + BigNum { + limbs: [0x762a4c86bee8123a5f306e81360e77, 0x7337cf2dbc5743ce881218684db954, 0x0009e9], + }, + BigNum { + limbs: [0x4779b6793f73ecc5a0cf907ec9f18a, 0x341b5a6fc0f0ef6b4ff5f1398a4bff, 0x006a04], + }, + BigNum { + limbs: [0x9937ed82cb4a9fc76cd46491730168, 0xdc87d269cdd4133553ee41427fca0f, 0x001f19], + }, + BigNum { + limbs: [0x246c157d33115f38932b9a6e8cfe99, 0xcacb5733af7420048419c85f583b44, 0x0054d3], + }, + BigNum { + limbs: [0x56d7ccb64bbb09a91f10acaa57449b, 0x3d85d572d287a73bb732faaf08a75a, 0x004c45], + }, + BigNum { + limbs: [0x66cc3649b2a0f556e0ef5255a8bb66, 0x69cd542aaac08bfe20d50ef2cf5df9, 0x0027a8], + }, + BigNum { + limbs: [0x6f93db2578f813a18e4c1292f11cf2, 0x1640b859af326965abb4bbaf508f24, 0x003059], + }, + BigNum { + limbs: [0x4e1027da8563eb5e71b3ec6d0ee30f, 0x91127143ce15c9d42c534df287762f, 0x004394], + }, + BigNum { + limbs: [0x60ca413c1470f069cd62c92c7d3417, 0x0c87494cf671479a275b158a6c0d06, 0x006c26], + }, + BigNum { + limbs: [0x5cd9c1c3e9eb0e96329d35d382cbea, 0x9acbe05086d6eb9fb0acf4176bf84d, 0x0007c7], + }, + BigNum { + limbs: [0xb124828724cb9e6154c10541689b3b, 0x28ea95e4e4c038654cd2bddea77d27, 0x005169], + }, + BigNum { + limbs: [0x0c7f8078d990609eab3ef9be9764c6, 0x7e6893b89887fad48b354bc330882c, 0x002284], + }, + BigNum { + limbs: [0xd65e0a886ccc459e92185783bbf588, 0xf9623fbe85bf577afaa3b0aa4366e4, 0x003525], + }, + BigNum { + limbs: [0xe745f877918fb9616de7a77c440a79, 0xadf0e9def788dbbedd6458f7949e6e, 0x003ec7], + }, + BigNum { + limbs: [0x39b33948d004277c7c788388618a21, 0xd5d37bc89361ba87d73f16df38f517, 0x00166f], + }, + BigNum { + limbs: [0x83f0c9b72e57d78383877b779e75e0, 0xd17fadd4e9e678b200c8f2c29f103c, 0x005d7d], + }, + BigNum { + limbs: [0x0184807cbb3ccd17563741f5395c61, 0x191d96a87bdcf9bfabd2f465302102, 0x002917], + }, + BigNum { + limbs: [0xbc1f8283431f31e8a9c8bd0ac6a3a0, 0x8e3592f5016b397a2c35153ca7e451, 0x004ad6], + }, + BigNum { + limbs: [0x70b480ff3c8ada180c9ea7df3e2e1c, 0xb24c47cd173318b38cd42c7775b82f, 0x006df1], + }, + BigNum { + limbs: [0x4cef8200c1d124e7f3615720c1d1e5, 0xf506e1d066151a864b33dd2a624d24, 0x0005fb], + }, + BigNum { + limbs: [0xe0618f7723728fadfafe11076f83fb, 0xb65b78377562265e0e278de1545148, 0x0033f7], + }, + BigNum { + limbs: [0xdd427388dae96f520501edf8907c06, 0xf0f7b16607e60cdbc9e07bc083b40a, 0x003ff5], + }, + BigNum { + limbs: [0xe5d866c41107068d880fd835f7e59c, 0xfd30fb91fe1846ee4785af0c016f5e, 0x000ff9], + }, + BigNum { + limbs: [0xd7cb9c3bed54f87277f026ca081a65, 0xaa222e0b7f2fec4b90825a95d695f4, 0x0063f3], + }, + BigNum { + limbs: [0xb426361576c9da4906585ea02264ed, 0x7eb308dc00235023c5a79a89d2bbdf, 0x0032a6], + }, + BigNum { + limbs: [0x097dccea879224b6f9a7a05fdd9b14, 0x28a020c17d24e31612606f18054974, 0x004147], + }, + BigNum { + limbs: [0xa8b71686c297c367949e884db344bf, 0xdc7f753c1d55d80c7e16600602f704, 0x00100d], + }, + BigNum { + limbs: [0x14ecec793bc43b986b6176b24cbb42, 0xcad3b4615ff25b2d59f1a99bd50e4f, 0x0063df], + }, + BigNum { + limbs: [0xc575ec1a329a5541f33ede3b9f9399, 0x7826ed24369781fc49d19b208571ff, 0x002b29], + }, + BigNum { + limbs: [0xf82e16e5cbc1a9be0cc120c4606c68, 0x2f2c3c7946b0b13d8e366e81529353, 0x0048c4], + }, + BigNum { + limbs: [0xd485c1f50cc769de0283afe1cb6584, 0x56553e601b81d52738de72cd45e191, 0x005dda], + }, + BigNum { + limbs: [0xe91e410af1949521fd7c4f1e349a7d, 0x50fdeb3d61c65e129f2996d49223c1, 0x001613], + }, + BigNum { + limbs: [0x1fe5a5c8cfa8db155697e920b8c870, 0x4ccf3a7b715b6346c4d279d010a3a4, 0x000160], + }, + BigNum { + limbs: [0x9dbe5d372eb323eaa96815df473791, 0x5a83ef220beccff313358fd1c761af, 0x00728d], + }, + BigNum { + limbs: [0x99795435ca67fef6cc5689c1f540e1, 0x2cd7cfa083667322f2be809c88ff9b, 0x001572], + }, + BigNum { + limbs: [0x242aaeca33f4000933a9753e0abf20, 0x7a7b59fcf9e1c016e54989054f05b8, 0x005e7b], + }, + BigNum { + limbs: [0xba3d2b430423bbd2fee202f8577732, 0x8b74a34e54522dfa0d10e94de8286c, 0x002fb5], + }, + BigNum { + limbs: [0x0366d7bcfa38432d011dfc07a888cf, 0x1bde864f28f6053fcaf72053efdce7, 0x004438], + }, + BigNum { + limbs: [0xdbc3b2b164561896ce8e2e452c03e9, 0x67d41c98b8fa9829526ed6eec7578b, 0x0043ec], + }, + BigNum { + limbs: [0xe1e0504e9a05e6693171d0bad3fc18, 0x3f7f0d04c44d9b10859932b310adc7, 0x003001], + }, + BigNum { + limbs: [0x3a3bcba4e33b5f6e7f2a73337c97eb, 0xb18d510dd282977c9c840d057bc4a8, 0x0012ad], + }, + BigNum { + limbs: [0x8368375b1b209f9180d58bcc836816, 0xf5c5d88faac59bbd3b83fc9c5c40ab, 0x00613f], + }, + BigNum { + limbs: [0x546f42d2f2136ab70c1a97d4a5a28b, 0x519305a6a34d00a54824fbd3c944df, 0x0032b8], + }, + BigNum { + limbs: [0x6934c02d0c489448f3e5672b5a5d76, 0x55c023f6d9fb32948fe30dce0ec074, 0x004135], + }, + BigNum { + limbs: [0x565938c72e8dc88dd6a6cbf1ff3e4a, 0xdbdc2c56cc7d4b28d83b2561c2568a, 0x002e17], + }, + BigNum { + limbs: [0x674aca38cfce36722959330e00c1b7, 0xcb76fd46b0cae810ffcce44015aec9, 0x0045d5], + }, + BigNum { + limbs: [0x77ba8dbe3dfb062809456c05e23c98, 0x14671281b8a4b1b3a9be35f3271afe, 0x001935], + }, + BigNum { + limbs: [0x45e97541c060f8d7f6ba92fa1dc369, 0x92ec171bc4a381862e49d3aeb0ea55, 0x005ab8], + }, + BigNum { + limbs: [0x1096f45046dd52a99f6a0d133d06aa, 0x861a7b23584626170d92377f7b5e79, 0x004ed7], + }, + BigNum { + limbs: [0xad0d0eafb77eac566095f1ecc2f957, 0x2138ae7a25020d22ca75d2225ca6da, 0x002516], + }, + BigNum { + limbs: [0xe1ab1e5b93f822d0b94eb237110d9f, 0x5fa125e49db89d2655af277ba7868c, 0x0069f2], + }, + BigNum { + limbs: [0xdbf8e4a46a63dc2f46b14cc8eef262, 0x47b203b8df8f96138258e226307ec6, 0x0009fb], + }, + BigNum { + limbs: [0x6db8fecb665fa64c727ae95a4f1504, 0x4de5de9d149d0992379cc3665e3b80, 0x006d5c], + }, + BigNum { + limbs: [0x4feb043497fc58b38d8515a5b0eafd, 0x596d4b0068ab29a7a06b463b79c9d3, 0x000691], + }, + BigNum { + limbs: [0x62eebd2d2d03301254d2facb9c65ec, 0x9789160e7b8c0fe7473fe43df5ffa2, 0x000707], + }, + BigNum { + limbs: [0x5ab545d2d158ceedab2d0434639a15, 0x0fca138f01bc235290c82563e205b1, 0x006ce6], + }, + BigNum { + limbs: [0x34fabfe22bf195070a40826b0a8a22, 0x496805d716afcfe47a545cdc549868, 0x0045de], + }, + BigNum { + limbs: [0x88a9431dd26a69f8f5bf7c94f575df, 0x5deb23c6669863555db3acc5836ceb, 0x002e0f], + }, + BigNum { + limbs: [0x8e36a4f207ed7934afa23e4d664fb9, 0xe13b38a0e39adb1535f05011c0f97d, 0x001f5f], + }, + BigNum { + limbs: [0x2f6d5e0df66e85cb505dc0b299b048, 0xc617f0fc99ad5824a217b990170bd6, 0x00548d], + }, + BigNum { + limbs: [0x0efba3add1439fcda6025fcec5f85e, 0x23e39e3bddb85c5f7c6f1f39bb4a43, 0x004172], + }, + BigNum { + limbs: [0xaea85f522d185f3259fd9f313a07a3, 0x836f8b619f8fd6da5b98ea681cbb10, 0x00327b], + }, + BigNum { + limbs: [0x50fd367a04217a99f8b35c4feecc72, 0x3aeef6d281f2894bb176dc6c03beb7, 0x0000fa], + }, + BigNum { + limbs: [0x6ca6cc85fa3a8466074ca2b011338f, 0x6c6432cafb55a9ee26912d35d4469c, 0x0072f3], + }, + BigNum { + limbs: [0x3abeed94b4f1634be87dab9013c5e6, 0x7c84cd1b601bec56a6760508dcf493, 0x002bd5], + }, + BigNum { + limbs: [0x82e5156b496a9bb41782536fec3a1b, 0x2ace5c821d2c46e331920498fb10c0, 0x004818], + }, + BigNum { + limbs: [0x8726c067a90bbe12024f89b257ee62, 0x2e08318aeeacb408378170769053cb, 0x006b7e], + }, + BigNum { + limbs: [0x367d4298555040edfdb0754da8119f, 0x794af8128e9b7f31a086992b47b188, 0x00086f], + }, + BigNum { + limbs: [0xd18fa289732f688a5ee031a9245ad3, 0xbc0e64c9d219a8d562efc8186a2d24, 0x002969], + }, + BigNum { + limbs: [0xec1460768b2c9675a11fcd56dba52e, 0xeb44c4d3ab2e8a64751841896dd82e, 0x004a83], + }, + BigNum { + limbs: [0x427c3d5132b42adb5bf0d17886f914, 0x1b7bf18b694222c41c5896457592c9, 0x0009bb], + }, + BigNum { + limbs: [0x7b27c5aecba7d424a40f2d877906ed, 0x8bd7381214061075bbaf735c62728a, 0x006a32], + }, + BigNum { + limbs: [0xf4a328d6df60c441d4d6f8a6035ba1, 0x0e4e224ed50ccd12172874ef649f75, 0x0015ff], + }, + BigNum { + limbs: [0xc900da291efb3abe2b290659fca460, 0x9905074ea83b6627c0df94b27365dd, 0x005dee], + }, + BigNum { + limbs: [0x32eadeb2eaebb63bfd3383d2361246, 0xc05b04c9044fc6c5f0964c53353c45, 0x004c30], + }, + BigNum { + limbs: [0x8ab9244d137048c402cc7b2dc9edbb, 0xe6f824d478f86c73e771bd4ea2c90e, 0x0027bc], + }, + BigNum { + limbs: [0xe64e1a0d2e560d6e1499e715bda543, 0x278c6eed86f45ec8092b13ec8a7ecd, 0x00484d], + }, + BigNum { + limbs: [0xd755e8f2d005f191eb6617ea425abe, 0x7fc6baaff653d471cedcf5b54d8685, 0x002ba0], + }, + BigNum { + limbs: [0xa2a69107b6a980b482447428fa23ee, 0x7561de37d95e60cd66c57736477daa, 0x001a2c], + }, + BigNum { + limbs: [0x1afd71f847b27e4b7dbb8ad705dc13, 0x31f14b65a3e9d26c7142926b9087a9, 0x0059c1], + }, + BigNum { + limbs: [0x34a8335508915c9da5d0cc12724318, 0x78fad28e89573fde62c6b46b658a0f, 0x00242c], + }, + BigNum { + limbs: [0x88fbcfaaf5caa2625a2f32ed8dbce9, 0x2e58570ef3f0f35b75415536727b44, 0x004fc1], + }, + BigNum { + limbs: [0xd771dbf6e9599e6ae672da7b46fa2c, 0x3a0e0347179ccc16de33046dedfd4f, 0x005276], + }, + BigNum { + limbs: [0xe632270915026095198d2484b905d5, 0x6d45265665ab6722f9d50533ea0803, 0x002177], + }, + BigNum { + limbs: [0x50f41a25187433d5401e0e3fd3cfc1, 0x51bd4c910d3fe33c91024f7a8e43e3, 0x006e98], + }, + BigNum { + limbs: [0x6cafe8dae5e7cb2abfe1f0c02c3040, 0x5595dd0c70084ffd4705ba2749c170, 0x000555], + }, + BigNum { + limbs: [0x693136244c47d39006fed3cdaa0066, 0xa274da64baa96fb21ab194d4741dbd, 0x00004a], + }, + BigNum { + limbs: [0x5472ccdbb2142b6ff9012b3255ff9b, 0x04de4f38c29ec387bd5674cd63e796, 0x0073a3], + }, + BigNum { + limbs: [0x960d51bf6ae6f4e4ab5ac48f2bd9a6, 0x11dd7971e55a4d99e7da903c25f117, 0x006584], + }, + BigNum { + limbs: [0x2796b14093750a1b54a53a70d4265b, 0x9575b02b97ede59ff02d7965b2143c, 0x000e69], + }, + BigNum { + limbs: [0x60c1d07e6eeefc87b5eac39c929ac3, 0xe6212869277b67c6ec8885a28cd25a, 0x005d5f], + }, + BigNum { + limbs: [0x5ce232818f6d02784a153b636d653e, 0xc132013455cccb72eb7f83ff4b32f9, 0x00168d], + }, + BigNum { + limbs: [0xddf56e2cd4099acf38136ebca02c29, 0xac21cd03c9f223c6493f18cca8f69b, 0x003a40], + }, + BigNum { + limbs: [0xdfae94d32a526430c7ec90435fd3d8, 0xfb315c99b3560f738ec8f0d52f0eb7, 0x0039ac], + }, + BigNum { + limbs: [0x02b232af695bcf227fe83d53c1ddee, 0x912d964c2baf45393450556cb92530, 0x006af1], + }, + BigNum { + limbs: [0xbaf1d05095002fdd8017c1ac3e2213, 0x162593515198ee00a3b7b4351ee023, 0x0008fc], + }, + BigNum { + limbs: [0xa642214f0552fce5dcbdb1a601c023, 0xc5389b8a77563adc60186611634372, 0x001ccb], + }, + BigNum { + limbs: [0x1761e1b0f909021a23424d59fe3fde, 0xe21a8e1305f1f85d77efa39074c1e1, 0x005721], + }, + BigNum { + limbs: [0x62c16e272104bf004be4bfd097d114, 0xef816bc349c995e8b12f9a81eaa16a, 0x003adb], + }, + BigNum { + limbs: [0x5ae294d8dd573fffb41b3f2f682eed, 0xb7d1bdda337e9d5126d86f1fed63e9, 0x003911], + }, + BigNum { + limbs: [0xe4c9e2213e75a9aea4435a94a73592, 0x7bacf43b42c5ad0303a3834b35fc71, 0x005f05], + }, + BigNum { + limbs: [0xd8da20debfe655515bbca46b58ca6f, 0x2ba635623a828636d4648656a208e1, 0x0014e8], + }, + BigNum { + limbs: [0xaea472d254c55dee3ac1bc2e985d0e, 0x481c5fd3e525670a5d517f05737bda, 0x005dc7], + }, + BigNum { + limbs: [0x0eff902da996a111c53e42d167a2f3, 0x5f36c9c99822cc2f7ab68a9c648979, 0x001626], + }, + BigNum { + limbs: [0x95714916b52a44a1d1b433c6d47388, 0xf72b124899b39b47aca9f79b77ff22, 0x000957], + }, + BigNum { + limbs: [0x2832b9e94931ba5e2e4bcb392b8c79, 0xb0281754e39497f22b5e1206600631, 0x006a95], + }, + BigNum { + limbs: [0x3dab9667fd8d6bc0b912fc6ebb6b4d, 0xa957470b3b35b9ebd8849e767d8f1a, 0x00723d], + }, + BigNum { + limbs: [0x7ff86c9800ce933f46ed02914494b4, 0xfdfbe2924212794dff836b2b5a7639, 0x0001af], + }, + BigNum { + limbs: [0x1a6dd107013e8f532cb2e6d8d5aba7, 0x5fb4f46a87242dcbdd1d919b4e16c6, 0x004c9c], + }, + BigNum { + limbs: [0xa33631f8fd1d6facd34d18272a545a, 0x479e3532f624056dfaea780689ee8d, 0x002751], + }, + BigNum { + limbs: [0xdefdd5e0a986ed1c437a27915897ce, 0x95170c6c7a701e40b397a45127173a, 0x0043fb], + }, + BigNum { + limbs: [0xdea62d1f54d511e3bc85d76ea76833, 0x123c1d3102d814f924706550b0ee18, 0x002ff2], + }, + BigNum { + limbs: [0xbba69476fa5eda3561bfd6c71847fd, 0xc0f1216b6c3e53e37f41765245dfb3, 0x003b35], + }, + BigNum { + limbs: [0x01fd6e8903fd24ca9e402838e7b804, 0xe66208321109df5658c6934f9225a0, 0x0038b7], + }, + BigNum { + limbs: [0x1e4f3c2848bde33792a0704d7f3d5c, 0xa41db4f4117fa6964523fbe0428afd, 0x0028ea], + }, + BigNum { + limbs: [0x9f54c6d7b59e1bc86d5f8eb280c2a5, 0x033574a96bc88ca392e40dc1957a56, 0x004b03], + }, + BigNum { + limbs: [0x499179728f96587b47364abb902a7f, 0x06969e493afaf1cae603a9624c7f48, 0x0026cb], + }, + BigNum { + limbs: [0x7412898d6ec5a684b8c9b4446fd582, 0xa0bc8b54424d416ef204603f8b860b, 0x004d22], + }, + BigNum { + limbs: [0x2eab334af1e1da6d7b0ac353e2e894, 0xc71899852062fc6ecc48d2fcc38796, 0x0034e7], + }, + BigNum { + limbs: [0x8ef8cfb50c7a249284f53bac1d176d, 0xe03a90185ce536cb0bbf36a5147dbd, 0x003f05], + }, + BigNum { + limbs: [0xbaaa75d37ac780d245d76b67f27d60, 0x6941c2658187de20aaf30c6e820a8f, 0x0009bf], + }, + BigNum { + limbs: [0x02f98d2c83947e2dba2893980d82a1, 0x3e116737fbc055192d14fd3355fac4, 0x006a2e], + }, + BigNum { + limbs: [0x4d58135e5084d45283c7e8f859236e, 0xd03359beb3ea94caca1076aabb329a, 0x002fc3], + }, + BigNum { + limbs: [0x704befa1add72aad7c381607a6dc93, 0xd71fcfdec95d9e6f0df792f71cd2b9, 0x004429], + }, + BigNum { + limbs: [0x10e5e09d4a435c9c77c878f2bb8464, 0xf72162824b43a150ed4182d6c5cc71, 0x0021a4], + }, + BigNum { + limbs: [0xacbe2262b418a2638837860d447b9d, 0xb031c71b320491e8eac686cb1238e2, 0x005248], + }, + BigNum { + limbs: [0xf51d82b4bab62433c15d109a2b1351, 0xc51b3151c9ef8fa6d009cc1e058c1f, 0x000714], + }, + BigNum { + limbs: [0xc886804b43a5dacc3ea2ee65d4ecb0, 0xe237f84bb358a39307fe3d83d27933, 0x006cd8], + }, + BigNum { + limbs: [0x34ef3e831e2ed58ba307e4e30ab1d4, 0x08d18af837ce39c12f6fd503a491da, 0x006d88], + }, + BigNum { + limbs: [0x88b4c47ce02d29745cf81a1cf54e2d, 0x9e819ea54579f978a898349e337379, 0x000665], + }, + BigNum { + limbs: [0x336da7150fc15dddd56ac9a7dc56c7, 0x7d5317cd6abce54817f7fd9bdce46e, 0x004011], + }, + BigNum { + limbs: [0x8a365beaee9aa1222a95355823a93a, 0x2a0011d0128b4df1c0100c05fb20e5, 0x0033dc], + }, + BigNum { + limbs: [0x6ec9d66ed0d05112d7c36272dfa403, 0xc5d21eec1555ed81ca1bbc982e7922, 0x001ec1], + }, + BigNum { + limbs: [0x4eda2c912d8baded283c9c8d205bfe, 0xe1810ab167f245b80dec4d09a98c31, 0x00552b], + }, + BigNum { + limbs: [0xfa8f9106dce56dec7ec96011f79a3c, 0x1ac2f79b05e28225f2afe1f417c2c5, 0x0052ee], + }, + BigNum { + limbs: [0xc31471f92176911381369eee0865c5, 0x8c9032027765b113e55827adc0428d, 0x0020ff], + }, + BigNum { + limbs: [0x088b2b3a9aec775d554ddf3121ab7d, 0xfa53f3c7787f73c5ee3d79f317d56d, 0x00357f], + }, + BigNum { + limbs: [0xb518d7c5636f87a2aab21fcede5484, 0xacff35d604c8bf73e9ca8faec02fe6, 0x003e6d], + }, + BigNum { + limbs: [0xab1d2a69326150035433bf5ab27518, 0x9450acd956d2d3e5beb3e22dd68c4c, 0x0011d9], + }, + BigNum { + limbs: [0x1286d896cbfaaefcabcc3fa54d8ae9, 0x13027cc426755f5419542774017907, 0x006214], + }, + BigNum { + limbs: [0xb422d75c3d666f868f9ace7f0c05ad, 0x08fa0da5731b7a4f6bf340fd338d21, 0x003186], + }, + BigNum { + limbs: [0x09812ba3c0f58f7970653080f3fa54, 0x9e591bf80a2cb8ea6c14c8a4a47832, 0x004267], + }, + BigNum { + limbs: [0xa13ca9ab7aec628d9e085dbcf627b3, 0x2ceae6375943e17d761d599629634f, 0x0061f7], + }, + BigNum { + limbs: [0x1c675954836f9c7261f7a14309d84e, 0x7a684366240451bc61eab00baea204, 0x0011f6], + }, + BigNum { + limbs: [0x5a435445e20ad1603533d63a46811e, 0x107acd46e6ead73902c051a4f47a89, 0x001099], + }, + BigNum { + limbs: [0x6360aeba1c512d9fcacc28c5b97ee3, 0x96d85c56965d5c00d547b7fce38aca, 0x006354], + }, + BigNum { + limbs: [0x0f556c7dd965c9e662abd652bab712, 0x2868b33df772d83728a650fec1696a, 0x0039ae], + }, + BigNum { + limbs: [0xae4e968224f635199d5428ad4548ef, 0x7eea765f85d55b02af61b8a3169be9, 0x003a3f], + }, + BigNum { + limbs: [0x095888daa8cfdbbb8cc4d2edbd46d3, 0xae4dd751366cffd24594deb8870dde, 0x0007e3], + }, + BigNum { + limbs: [0xb44b7a25558c2344733b2c1242b92e, 0xf905524c46db336792732ae950f775, 0x006c09], + }, + BigNum { + limbs: [0x5aeccb05e4e36060803fc8de4668e8, 0x193723dba47ad8cbb8d047f3a39b0c, 0x00414b], + }, + BigNum { + limbs: [0x62b737fa19789e9f7fc03621b99719, 0x8e1c05c1d8cd5a6e1f37c1ae346a47, 0x0032a2], + }, + BigNum { + limbs: [0x1853b4ee0a8f23056507ef2eaa6a09, 0x0a90ca49d553e549f2ee40567332ca, 0x002d21], + }, + BigNum { + limbs: [0xa5504e11f3ccdbfa9af80fd15595f8, 0x9cc25f53a7f44defe519c94b64d289, 0x0046cc], + }, + BigNum { + limbs: [0x2624f47a7cc3c3863217230f4471f9, 0xa98b3d9bb1a86d72e5e027b600ea16, 0x00382c], + }, + BigNum { + limbs: [0x977f0e8581983b79cde8dbf0bb8e08, 0xfdc7ec01cb9fc5c6f227e1ebd71b3d, 0x003bc0], + }, + BigNum { + limbs: [0x833c9a0c4b5810f5b4c6b50487ae1f, 0x21f3bb92f58d494135cedd7cc2a033, 0x001be4], + }, + BigNum { + limbs: [0x3a6768f3b303ee0a4b3949fb7851e2, 0x855f6e0a87bae9f8a2392c25156520, 0x005809], + }, + BigNum { + limbs: [0xf382d2cf899e1c66a46ab4699489c6, 0xcabaccd26113e0b7a9efc26faa9532, 0x002803], + }, + BigNum { + limbs: [0xca21303074bde2995b954a966b763b, 0xdc985ccb1c3452822e1847322d7020, 0x004be9], + }, + BigNum { + limbs: [0x6910d639aefe17754b6a53fddc4c94, 0x88cd7576b823f47dfc583fe631a439, 0x0021d0], + }, + BigNum { + limbs: [0x54932cc64f5de78ab495ab0223b36d, 0x1e85b426c5243ebbdbafc9bba6611a, 0x00521d], + }, + BigNum { + limbs: [0x0d613cc36bfa358f848821e4356469, 0x09516722769df28de6c16bb4bbee36, 0x002f2b], + }, + BigNum { + limbs: [0xb042c63c9261c9707b77dd1bca9b98, 0x9e01c27b06aa40abf1469ded1c171d, 0x0044c2], + }, + BigNum { + limbs: [0x75d2d8c194a702ae113bb568e33c3c, 0xfd9bbe2b455b567ce9424c694ca7ba, 0x00596e], + }, + BigNum { + limbs: [0x47d12a3e69b4fc51eec449971cc3c5, 0xa9b76b7237ecdcbceec5bd388b5d99, 0x001a7e], + }, + BigNum { + limbs: [0xd67644ecb1ec23b5e2c92f7207066f, 0x3669f0b510aff120489b258ca13d29, 0x000c90], + }, + BigNum { + limbs: [0xe72dbe134c6fdb4a1d36cf8df8f992, 0x70e938e86c9842198f6ce41536c829, 0x00675d], + }, + BigNum { + limbs: [0xc313287b50ee6ceb107d107792e331, 0xf5f496036dda75d6467e78880bd899, 0x001f92], + }, + BigNum { + limbs: [0xfa90da84ad6d9214ef82ee886d1cd0, 0xb15e939a0f6dbd6391899119cc2cb9, 0x00545a], + }, + BigNum { + limbs: [0x0bd4e6a7e888998588ec8712bbb533, 0xc466e9f46b9b99b02b0d0da9e471ba, 0x003367], + }, + BigNum { + limbs: [0xb1cf1c5815d3657a771377ed444ace, 0xe2ec3fa911ac9989acfafbf7f39399, 0x004085], + }, + BigNum { + limbs: [0x3be97480c55418f45dadfa7ab57531, 0xea964384940530c5e2bc37a1533ac3, 0x0066b4], + }, + BigNum { + limbs: [0x81ba8e7f3907e60ba25204854a8ad0, 0xbcbce618e9430273f54bd20084ca90, 0x000d38], + }, + BigNum { + limbs: [0xc2430643e8182d35323eec80747457, 0xfcbdae14d82de463155db41faca3da, 0x006021], + }, + BigNum { + limbs: [0xfb60fcbc1643d1cacdc1127f8b8baa, 0xaa957b88a51a4ed6c2aa55822b6178, 0x0013cb], + }, + BigNum { + limbs: [0xc7a2c8ab4cebe3229d28add06fa1a0, 0x36b466b8ceec2076b2987fe06886b8, 0x001769], + }, + BigNum { + limbs: [0xf6013a54b1701bdd62d7512f905e61, 0x709ec2e4ae5c12c3256f89c16f7e9a, 0x005c84], + }, + BigNum { + limbs: [0xd8a879169dd8991a08d5e4e2e01343, 0x192fb0cd079daf0f64a02464f057f6, 0x00679a], + }, + BigNum { + limbs: [0xe4fb89e9608365e5f72a1a1d1fecbe, 0x8e2378d075aa842a7367e53ce7ad5c, 0x000c53], + }, + BigNum { + limbs: [0xb5485481194aefa65b28ed517d4354, 0xde37523e64d4ddbaddb9f90e7d697a, 0x000019], + }, + BigNum { + limbs: [0x085bae7ee5110f59a4d711ae82bcad, 0xc91bd75f1873557efa4e10935a9bd9, 0x0073d3], + }, + BigNum { + limbs: [0x970eedd0930abc1f41e0a2ec24c764, 0x76aca5cbffa191b659acf68394e8b7, 0x006b2f], + }, + BigNum { + limbs: [0x2695152f6b5142e0be1f5c13db389d, 0x30a683d17da6a1837e5b131e431c9c, 0x0008be], + }, + BigNum { + limbs: [0xea426fe3382da5ccd6232e773a7be0, 0xbccf1d2163b24879f55520eec3096c, 0x005fc0], + }, + BigNum { + limbs: [0xd361931cc62e593329dcd088c58421, 0xea840c7c1995eabfe2b2e8b314fbe6, 0x00142c], + }, + BigNum { + limbs: [0x5ded1899239a88898b0554d218a61c, 0xd11ff6f7fa6cbcbe9301f686e86bf9, 0x0044c1], + }, + BigNum { + limbs: [0x5fb6ea66dac1767674faaa2de759e5, 0xd63332a582db767b4506131aef995a, 0x002f2b], + }, + BigNum { + limbs: [0x62a1c1fa6e32aa1b529e40de1d7c4d, 0x5788394251987c11e63de35442f626, 0x0054e6], + }, + BigNum { + limbs: [0x5b024105902954e4ad61be21e283b4, 0x4fcaf05b2bafb727f1ca264d950f2d, 0x001f07], + }, + BigNum { + limbs: [0x23483beb660aa3126c1c8e445a8a5b, 0x12a22a888026f6f5faa93431d39300, 0x005726], + }, + BigNum { + limbs: [0x9a5bc71498515bed93e370bba575a6, 0x94b0ff14fd213c43dd5ed570047253, 0x001cc7], + }, + BigNum { + limbs: [0xd34a8629e2a390579464a37d34c01f, 0xe95e089c5912926d173883e9142489, 0x006800], + }, + BigNum { + limbs: [0xea597cd61bb86ea86b9b5b82cb3fe2, 0xbdf521012435a0ccc0cf85b8c3e0c9, 0x000bec], + }, + BigNum { + limbs: [0x12f7a9a2ba4c6f2289841708c47e76, 0x8d51514e6d3ba1fb1ad2f91bea10fe, 0x006c5c], + }, + BigNum { + limbs: [0xaaac595d440f8fdd767be7f73b818b, 0x1a01d84f100c913ebd351085edf455, 0x000791], + }, + BigNum { + limbs: [0x1084d1e459c2644faaa91388ae574d, 0xed8c43ec33b5e17e82746da5a2b076, 0x0047d7], + }, + BigNum { + limbs: [0xad1f311ba4999ab05556eb7751a8b4, 0xb9c6e5b1499251bb55939bfc3554dd, 0x002c15], + }, + BigNum { + limbs: [0xf9870d09b49934594ef32abcf775b9, 0xd339e9bdd168c902e32bba607579dc, 0x00220b], + }, + BigNum { + limbs: [0xc41cf5f649c2caa6b10cd443088a48, 0xd4193fdfabdf6a36f4dc4f41628b76, 0x0051e1], + }, + BigNum { + limbs: [0xba5587cee31ba92218afc24fb3fb6d, 0x26f47becfa9260ab9a24e417ab6e2a, 0x00010c], + }, + BigNum { + limbs: [0x034e7b311b4055dde7503cb04c0494, 0x805eadb082b5d28e3de3258a2c9729, 0x0072e1], + }, + BigNum { + limbs: [0xb1101b4a6a67fce5fb1ba223a764f8, 0x59b150561c08ee82c31d8e145688a9, 0x001f99], + }, + BigNum { + limbs: [0x0c93e7b593f4021a04e45cdc589b09, 0x4da1d947613f44b714ea7b8d817caa, 0x005454], + }, + BigNum { + limbs: [0x33e7e7f45b14fb3783b2614bebb0c2, 0x6a09c6e30dc4df9d916b36a30c5404, 0x006136], + }, + BigNum { + limbs: [0x89bc1b0ba34703c87c4d9db4144f3f, 0x3d4962ba6f83539c469cd2fecbb14f, 0x0012b7], + }, + BigNum { + limbs: [0x3eb77e93fdfad62d5d0f5c33535fd6, 0x31fb8102066d8296d9a9c6a10e2512, 0x006457], + }, + BigNum { + limbs: [0x7eec846c006128d2a2f0a2ccaca02b, 0x7557a89b76dab0a2fe5e4300c9e041, 0x000f96], + }, + BigNum { + limbs: [0x8fd58359d39d07910b8b9b66684add, 0x7d8c49ec4fb7f6900d91db7be189f1, 0x005363], + }, + BigNum { + limbs: [0x2dce7fa62abef76ef474639997b524, 0x29c6dfb12d903ca9ca762e25f67b62, 0x00208a], + }, + BigNum { + limbs: [0x5b9ae4008d73829ab0eaa775faa012, 0x76e29080b50f1cd896a4b3705edc8a, 0x004256], + }, + BigNum { + limbs: [0x62091eff70e87c654f15578a055fef, 0x3070991cc8391661416356317928c9, 0x003197], + }, + BigNum { + limbs: [0x5415c7e32b57d8f14c6ea5a428c753, 0x2871d8bbf1938804b57eba0c7f48b2, 0x005ea3], + }, + BigNum { + limbs: [0x698e3b1cd304260eb391595bd738ae, 0x7ee150e18bb4ab3522894f9558bca1, 0x00154a], + }, + BigNum { + limbs: [0x454cc072521a80dee4982fe73f0476, 0xc15b4cc4b5699059b96ae5d8e22ca0, 0x002ec1], + }, + BigNum { + limbs: [0x7857428dac417e211b67cf18c0fb8b, 0xe5f7dcd8c7dea2e01e9d23c8f5d8b3, 0x00452b], + }, + BigNum { + limbs: [0x6a4174f9d391c3c1bc0e2e75444e71, 0xd2c2aeff4f7c1033a694607d9089ee, 0x00585f], + }, + BigNum { + limbs: [0x53628e062aca3b3e43f1d08abbb190, 0xd4907a9e2dcc23063173a924477b65, 0x001b8d], + }, + BigNum { + limbs: [0x077fb2af5f3968498cb1c004d751da, 0x9f9a7567a04fcef4eeac0deb62a9e2, 0x002f41], + }, + BigNum { + limbs: [0xb62450509f2296b6734e3efb28ae27, 0x07b8b435dcf86444e95bfbb6755b71, 0x0044ac], + }, + BigNum { + limbs: [0x7f4b22ee86c90c6e3bf01c498740f6, 0xc509aec45575756fdf33240b9eb8c2, 0x004322], + }, + BigNum { + limbs: [0x3e58e0117792f291c40fe2b678bf0b, 0xe2497ad927d2bdc9f8d4e596394c91, 0x0030ca], + }, + BigNum { + limbs: [0x62ff60cc15dea0c8e2dd3ed107d499, 0x0cdd9173bbfd3e8c95924f0548cbe5, 0x004c1c], + }, + BigNum { + limbs: [0x5aa4a233e87d5e371d22c02ef82b68, 0x9a759829c14af4ad4275ba9c8f396e, 0x0027d1], + }, + BigNum { + limbs: [0xc9f9aa166bf26bc0797107b1cb3124, 0x3826c895df7f4b00e4140110a4aed7, 0x001896], + }, + BigNum { + limbs: [0xf3aa58e99269933f868ef74e34cedd, 0x6f2c61079dc8e838f3f4089133567b, 0x005b57], + }, + BigNum { + limbs: [0x6b1f176bbbafe77f0e8114b6a0d047, 0xe6b5bd56753f2c848ff6620f2d19a0, 0x0021fa], + }, + BigNum { + limbs: [0x5284eb9442ac1780f17eea495f2fba, 0xc09d6c47080906b54811a792aaebb3, 0x0051f2], + }, + BigNum { + limbs: [0x24dfe0eff265eeb9f443beec8e4a98, 0xd12f488a4f008dde048d37f34632d0, 0x006ab6], + }, + BigNum { + limbs: [0x98c422100bf610460bbc401371b569, 0xd623e1132e47a55bd37ad1ae91d283, 0x000936], + }, + BigNum { + limbs: [0x89389d045ecd85912bd03df9174127, 0x5678784bdd314b69773fb25cf78088, 0x0009e9], + }, + BigNum { + limbs: [0x346b65fb9f8e796ed42fc106e8beda, 0x50dab151a016e7d060c85744e084cb, 0x006a04], + }, + BigNum { + limbs: [0xb2c43c2678b650937dff33b29a7067, 0x10012f49cbdbb0c057cfa5a042c808, 0x0032f6], + }, + BigNum { + limbs: [0x0adfc6d985a5ae6c8200cb4d658f9a, 0x9751fa53b16c827980386401953d4b, 0x0040f7], + }, + BigNum { + limbs: [0x89db099f5aa3d61cf9c8103c36f106, 0x04026adc48a1cb249422c0b1923c84, 0x00420f], + }, + BigNum { + limbs: [0x33c8f960a3b828e30637eec3c90efb, 0xa350bec134a6681543e548f045c8cf, 0x0031de], + }, + BigNum { + limbs: [0x131960517113c6aa3f1fa1135a9163, 0xb023314a82dbfe42fdcdc306e96f61, 0x006fbc], + }, + BigNum { + limbs: [0xaa8aa2ae8d483855c0e05deca56e9e, 0xf72ff852fa6c34f6da3a469aee95f2, 0x000430], + }, + BigNum { + limbs: [0xa8dfb2d95d08eebad594175ea0777d, 0xd15d1348757839ea78d5ebd557ac68, 0x000fa5], + }, + BigNum { + limbs: [0x14c45026a15310452a6be7a15f8884, 0xd5f6165507cff94f5f321dcc8058eb, 0x006447], + }, + BigNum { + limbs: [0xb49eae14ca61adfb5a74bbf196694f, 0x78e42eccf77a299af2a89d3d9a9503, 0x0004a5], + }, + BigNum { + limbs: [0x090554eb33fa5104a58b430e6996b2, 0x2e6efad085ce099ee55f6c643d7050, 0x006f48], + }, + BigNum { + limbs: [0xc57c7aae3c5d192fc39139d30accaa, 0x6a37e78478720ac2b9a3a71bc6dee6, 0x0052ff], + }, + BigNum { + limbs: [0xf8278851c1fee5d03c6ec52cf53357, 0x3d1b421904d628771e64628611266c, 0x0020ee], + }, + BigNum { + limbs: [0xbfe4d04bc3af5abd41931e6ad8fbc4, 0xb4226f2d37b4092596aa02af41df19, 0x0052df], + }, + BigNum { + limbs: [0xfdbf32b43aaca442be6ce09527043d, 0xf330ba7045942a14415e06f2962639, 0x00210d], + }, + BigNum { + limbs: [0x5d4c8253345fc0da9862bcfa4152a5, 0xb67b052567d36d907e855e18e24fe2, 0x001666], + }, + BigNum { + limbs: [0x605780acc9fc3e25679d4205bead5c, 0xf0d824781574c5a95982ab88f5b571, 0x005d86], + }, + BigNum { + limbs: [0x2a6b489ba9d4071dd477a1a8fb9943, 0x2f1ccbe3e2f477c805e7d68aa60033, 0x0057e3], + }, + BigNum { + limbs: [0x9338ba645487f7e22b885d570466be, 0x78365db99a53bb71d2203317320520, 0x001c0a], + }, + BigNum { + limbs: [0x1ab551c326a152b58257bb2e5d71db, 0xbc560f4a92e069085360a46e5262e7, 0x004bf9], + }, + BigNum { + limbs: [0xa2eeb13cd7baac4a7da843d1a28e26, 0xeafd1a52ea67ca3184a7653385a26c, 0x0027f3], + }, + BigNum { + limbs: [0x58997c0bcf1c7ec8ed5cac7b9d2bac, 0xb301523084ffbb94572c1757cd8070, 0x001998], + }, + BigNum { + limbs: [0x650a86f42f3f803712a3528462d455, 0xf451d76cf84877a580dbf24a0a84e3, 0x005a54], + }, + BigNum { + limbs: [0xbf85946a2dad3bd8b9c1884f38f043, 0x2e2d253894999a00ad991d57396878, 0x000645], + }, + BigNum { + limbs: [0xfe1e6e95d0aec327463e76b0c70fbe, 0x79260464e8ae99392a6eec4a9e9cda, 0x006da8], + }, + BigNum { + limbs: [0x79d0abcc6b92776cfd5fd90654dc47, 0x92b5ba1dbfdb4e6157ba4c1415819b, 0x001b33], + }, + BigNum { + limbs: [0x43d3573392c9879302a025f9ab23ba, 0x149d6f7fbd6ce4d8804dbd8dc283b8, 0x0058ba], + }, + BigNum { + limbs: [0x68d3d308f6af752367d21449c614fb, 0x7acb9966a71884d4224a351c246aaa, 0x001e8c], + }, + BigNum { + limbs: [0x54d02ff707ac89dc982deab639eb06, 0x2c879036d62fae65b5bdd485b39aa9, 0x005561], + }, + BigNum { + limbs: [0xd1347b378fbf96e206da11a5d36306, 0x0a11a0f704f4fc3e8acfe0f8245f0a, 0x00564c], + }, + BigNum { + limbs: [0xec6f87c86e9c681df925ed5a2c9cfb, 0x9d4188a6785336fb4d3828a9b3a648, 0x001da1], + }, + BigNum { + limbs: [0xad4b8238fb15a2cd5f7b9753dbc950, 0x8876214b5ea64b7394e9aacb5a271f, 0x002bb6], + }, + BigNum { + limbs: [0x105880c703465c32a08467ac2436b1, 0x1edd08521ea1e7c6431e5ed67dde34, 0x004837], + }, + BigNum { + limbs: [0x63fff9337fecd313c7c03ef17a2033, 0xabee7c028923cc0affedaf37b5bb4e, 0x001c39], + }, + BigNum { + limbs: [0x59a409cc7e6f2bec383fc00e85dfce, 0xfb64ad9af424672ed81a5a6a224a05, 0x0057b3], + }, + BigNum { + limbs: [0x91a1faeb4b36d5cc2201b834e74a04, 0x8f5b87d7a05090eb099e349e17639b, 0x00605b], + }, + BigNum { + limbs: [0x2c020814b3252933ddfe46cb18b5fd, 0x17f7a1c5dcf7a24ece69d503c0a1b8, 0x001392], + }, + BigNum { + limbs: [0xa2df4d8921e8aff1867882e0b9cae8, 0xcb41966a5661788743c7818f06051d, 0x0006f3], + }, + BigNum { + limbs: [0x1ac4b576dc734f0e79877c1f463519, 0xdc11933326e6bab294408812d20036, 0x006cf9], + }, + BigNum { + limbs: [0x5c5d4be5b92c7b5ab670793f534c85, 0x7f1658569f752082ae264b6ae7cc8d, 0x003a09], + }, + BigNum { + limbs: [0x6146b71a452f83a5498f85c0acb37c, 0x283cd146ddd312b729e1be36f038c6, 0x0039e4], + }, + BigNum { + limbs: [0x6736009fa130119f9a06a539dcc7bd, 0xf5a12bf093b927ab9acee22625ab94, 0x005351], + }, + BigNum { + limbs: [0x566e02605d2bed6065f959c6233844, 0xb1b1fdace98f0b8e3d39277bb259bf, 0x00209b], + }, + BigNum { + limbs: [0x24c2fd6a62162b6b37d19f83bb87e0, 0xac8524669b3262d47d6f3069a6b4a9, 0x002146], + }, + BigNum { + limbs: [0x98e105959c45d394c82e5f7c447821, 0xface0536e215d0655a98d9383150aa, 0x0052a6], + }, + BigNum { + limbs: [0xa24a9bd470cd67ca0a0220aec02fa4, 0x3ba7dfb14308007b0e472badec8d39, 0x0057e0], + }, + BigNum { + limbs: [0x1b59672b8d8e9735f5fdde513fd05d, 0x6bab49ec3a4032bec9c0ddf3eb781a, 0x001c0d], + }, + BigNum { + limbs: [0xbf80d6881dc2190c850dd65aaaaefa, 0x4708ac66bf63479ddf15c7b33589c3, 0x001bab], + }, + BigNum { + limbs: [0xfe232c77e099e5f37af228a5555107, 0x604a7d36bde4eb9bf8f241eea27b8f, 0x005842], + }, + BigNum { + limbs: [0xd6c764f82602a7228bc1c0e7e3fdf5, 0x4cef0ca52f27785009eb7e7ecdaa03, 0x000658], + }, + BigNum { + limbs: [0xe6dc9e07d85957dd743e3e181c020c, 0x5a641cf84e20bae9ce1c8b230a5b4f, 0x006d95], + }, + BigNum { + limbs: [0x74957c1d2728744430911d2ef02d6c, 0x00c1a3aeef45073c6cb1200432d367, 0x00688a], + }, + BigNum { + limbs: [0x490e86e2d7338abbcf6ee1d10fd295, 0xa69185ee8e032bfd6b56e99da531ec, 0x000b63], + }, + BigNum { + limbs: [0xb39fb2d51ad78d473ea412a309a77c, 0x9915614f3901e5434787eb246e5cea, 0x003d3d], + }, + BigNum { + limbs: [0x0a04502ae38471b8c15bec5cf65885, 0x0e3dc84e44464df690801e7d69a869, 0x0036b0], + }, + BigNum { + limbs: [0x7203a676aa3fae360419ba7b4a732f, 0x208bd4a64316c3de999d9c5ccf8954, 0x00200d], + }, + BigNum { + limbs: [0x4ba05c89541c50c9fbe64484b58cd2, 0x86c754f73a316f5b3e6a6d45087bff, 0x0053e0], + }, + BigNum { + limbs: [0xcb18f70b1666477b49fff1eb1daf38, 0x4e933af6252c6dc58e41cd427dbe5f, 0x00009c], + }, + BigNum { + limbs: [0xf28b0bf4e7f5b784b6000d14e250c9, 0x58bfeea7581bc57449c63c5f5a46f3, 0x007351], + }, + BigNum { + limbs: [0x4567cac5c777f44c56fb3866d3a809, 0xffb392002a5b378787829b9e0abd13, 0x0067b3], + }, + BigNum { + limbs: [0x783c383a36e40ab3a904c6992c57f8, 0xa79f979d52ecfbb250856e03cd4840, 0x000c39], + }, + BigNum { + limbs: [0xdca0ae49bc978f29ebf33886000c8a, 0xabc5b7c03be4cc772df2b06be7d8d7, 0x0053d7], + }, + BigNum { + limbs: [0xe10354b641c46fd6140cc679fff377, 0xfb8d71dd416366c2aa155935f02c7b, 0x002015], + }, + BigNum { + limbs: [0x940867fad3080cff61da335d218c69, 0x9d4a6f36bb328011781ae2eb8338e5, 0x00596a], + }, + BigNum { + limbs: [0x299b9b052b53f2009e25cba2de7398, 0x0a08ba66c215b3285fed26b654cc6e, 0x001a83], + }, + BigNum { + limbs: [0x542b67f83c49199e3ccb8dd576b0f5, 0xadb736656798954b937d9da775086a, 0x004a41], + }, + BigNum { + limbs: [0x69789b07c212e561c334712a894f0c, 0xf99bf33815af9dee448a6bfa62fce9, 0x0029ab], + }, + BigNum { + limbs: [0x76cfa8688aad937936281d725764c6, 0xda887f345f79f45562e9505e5e255d, 0x005b21], + }, + BigNum { + limbs: [0x46d45a9773ae6b86c9d7e18da89b3b, 0xcccaaa691dce3ee4751eb94379dff6, 0x0018cb], + }, + BigNum { + limbs: [0xeafd87bcdafda8cb6a70e04f526a21, 0x340846157bd5c13b498f50314635ca, 0x0029d8], + }, + BigNum { + limbs: [0xd2a67b43235e5634958f1eb0ad95e0, 0x734ae388017271fe8e78b97091cf88, 0x004a15], + }, + BigNum { + limbs: [0x1da259503de1389ec8f2d00aa19cc2, 0xbf6ff47ecf4640000ffa7ee6b74af1, 0x002250], + }, + BigNum { + limbs: [0xa001a9afc07ac661370d2ef55e633f, 0xe7e3351eae01f339c80d8abb20ba62, 0x00519c], + }, + BigNum { + limbs: [0x03dab19044e968a5e53cecd36dabb8, 0xfcab3ad741ebc624a6bf28c35e8472, 0x00592e], + }, + BigNum { + limbs: [0xb9c9516fb972965a1ac3122c925449, 0xaaa7eec63b5c6d153148e0de7980e1, 0x001abe], + }, + BigNum { + limbs: [0x9d5d562fb82e29d6e0934f96c7a283, 0x5287a19abf3c4b844ced5de375e7cb, 0x0009c6], + }, + BigNum { + limbs: [0x2046acd0462dd5291f6caf69385d7e, 0x54cb8802be0be7b58b1aabbe621d88, 0x006a27], + }, + BigNum { + limbs: [0x726517ced91929d4910b491b0f88ae, 0x5ec1c5949c07f55d7b47c3dbbb90a2, 0x0010c6], + }, + BigNum { + limbs: [0x4b3eeb312542d52b6ef4b5e4f07753, 0x48916408e1403ddc5cc045c61c74b1, 0x006327], + }, + BigNum { + limbs: [0x93ecc4fa926abf15507909d573d669, 0x2ddbb6673ea3ae29036141e291016e, 0x00394a], + }, + BigNum { + limbs: [0x29b73e056bf13feaaf86f52a8c2998, 0x797773363ea48510d4a6c7bf4703e5, 0x003aa3], + }, + BigNum { + limbs: [0xdb8c0f19e4d5789314520692a107bf, 0x559da0d834d894ef9b74b96b0020a5, 0x006d5b], + }, + BigNum { + limbs: [0xe217f3e61986866cebadf86d5ef842, 0x51b588c5486f9e4a3c935036d7e4ad, 0x000692], + }, + BigNum { + limbs: [0x4ce9d6b7ae56c76a7878b810d6b679, 0xd0cbecb1569285bfd4bf0aae06bd36, 0x004ed8], + }, + BigNum { + limbs: [0x70ba2c4850053795878746ef294988, 0xd6873cec26b5ad7a0348fef3d1481d, 0x002514], + }, + BigNum { + limbs: [0x9a7d5bdaf34775fa3f8e60a92902ec, 0x7e6ad59835800491be3e124c5646a5, 0x0052a2], + }, + BigNum { + limbs: [0x2326a7250b148905c0719e56d6fd15, 0x28e8540547c82ea819c9f75581beae, 0x00214b], + }, + BigNum { + limbs: [0x930a3974130cf21f0bf5b12e2ad57b, 0xa88d3bb843f1e59a0efbb9fbdaac29, 0x003f00], + }, + BigNum { + limbs: [0x2a99c98beb4f0ce0f40a4dd1d52a86, 0xfec5ede539564d9fc90c4fa5fd592a, 0x0034ec], + }, + BigNum { + limbs: [0x0ca2ec307a54e23de675002a1dc598, 0xeaab319d871b6f8272abdf5878899b, 0x001327], + }, + BigNum { + limbs: [0xb10116cf84071cc2198afed5e23a69, 0xbca7f7fff62cc3b7655c2a495f7bb8, 0x0060c5], + }, + BigNum { + limbs: [0x7b78bbf9fcf6ac1a8ce009481b06f4, 0xcd295c0ef9e69f7e9ea74befd40aec, 0x00681c], + }, + BigNum { + limbs: [0x422b4706016552e5731ff5b7e4f90d, 0xda29cd8e836193bb3960bdb203fa67, 0x000bd0], + }, + BigNum { + limbs: [0x684c6a14b706e6a4e458d205940a65, 0xb4baeca30de2fa564db1db4df55ad5, 0x00160f], + }, + BigNum { + limbs: [0x555798eb4755185b1ba72cfa6bf59c, 0xf2983cfa6f6538e38a562e53e2aa7e, 0x005ddd], + }, + BigNum { + limbs: [0x357125c09f65d2f6bc04f1ccc8a05b, 0x75ece38b6b216509c259b1a0a550a2, 0x002e7a], + }, + BigNum { + limbs: [0x8832dd3f5ef62c0943fb0d33375fa6, 0x316646121226ce3015ae580132b4b1, 0x004573], + }, + BigNum { + limbs: [0x21340434d0af3d0e2bce377d6c3748, 0x53137d74125bb90512b69f97c1abe0, 0x003162], + }, + BigNum { + limbs: [0x9c6ffecb2dacc1f1d431c78293c8b9, 0x543fac296aec7a34c5516a0a165973, 0x00428b], + }, + BigNum { + limbs: [0xb75ebf1fa6a848f2dcd7de352e7812, 0xfa066178e33c85eb74ae061ea0c95e, 0x005b88], + }, + BigNum { + limbs: [0x064543e057b3b60d232820cad187ef, 0xad4cc8249a0bad4e635a0383373bf5, 0x001864], + }, + BigNum { + limbs: [0x7841ddfd61aa748afd27280b1d26d5, 0xb5dc03165af6d7e53ad367a6de9eee, 0x004736], + }, + BigNum { + limbs: [0x456225029cb18a7502d8d6f4e2d92c, 0xf177268722515b549d34a1faf96665, 0x002cb6], + }, + BigNum { + limbs: [0xa3fca4c95e97ef62e4bc4334d24aa2, 0x970f33b7a49db81d211727eccfa32c, 0x00148a], + }, + BigNum { + limbs: [0x19a75e369fc40f9d1b43bbcb2db55f, 0x1043f5e5d8aa7b1cb6f0e1b5086227, 0x005f63], + }, + BigNum { + limbs: [0x1af71607b2c66dfea4a56081023372, 0xb346b11ea91175e3dbeb28007ad97d, 0x0036e2], + }, + BigNum { + limbs: [0xa2acecf84b9591015b5a9e7efdcc8f, 0xf40c787ed436bd55fc1ce1a15d2bd6, 0x003d0a], + }, + BigNum { + limbs: [0xd98e5d422c5d1b27ff824c52dca1d0, 0x28e8851cb172fab2b64503252a7def, 0x004e8f], + }, + BigNum { + limbs: [0xe415a5bdd1fee3d8007db2ad235e31, 0x7e6aa480cbd5388721c3067cad8763, 0x00255e], + }, + BigNum { + limbs: [0x47a42d475447363d44f03d6a565b97, 0xbe856f6bbf1c5d54f3a81142092b09, 0x005168], + }, + BigNum { + limbs: [0x75ffd5b8aa14c8c2bb0fc195a9a46a, 0xe8cdba31be2bd5e4e45ff85fceda4a, 0x002284], + }, + BigNum { + limbs: [0x31d674997b53dae2b092cec051cab3, 0x4c464e1891f0c3c830738958768167, 0x001f64], + }, + BigNum { + limbs: [0x8bcd8e668308241d4f6d303fae354e, 0x5b0cdb84eb576f71a79480496183ec, 0x005489], + }, + BigNum { + limbs: [0xa86a543b84b81418e39ed00f0fb9e9, 0x2c67e97367ce5c3e6671824479d465, 0x003d75], + }, + BigNum { + limbs: [0x1539aec479a3eae71c612ef0f04618, 0x7aeb402a1579d6fb7196875d5e30ee, 0x003678], + }, + BigNum { + limbs: [0x8378bf20f973c70da3b463586d4b7b, 0xcdaeaa9b7abf7cc0ce06072e27a588, 0x003aa6], + }, + BigNum { + limbs: [0x3a2b43df04e837f25c4b9ba792b486, 0xd9a47f020288b6790a020273b05fcb, 0x003946], + }, + BigNum { + limbs: [0x010585e07a712c0b6729335818e69a, 0x2bac15e611d6564ae36561f30c5d45, 0x00369d], + }, + BigNum { + limbs: [0xbc9e7d1f83ead2f498d6cba7e71967, 0x7ba713b76b71dceef4a2a7aecba80e, 0x003d50], + }, + BigNum { + limbs: [0xa526579d681c965a90ff08490bfddc, 0x09f9fa970046d8d2e1418a37800c8a, 0x0027ad], + }, + BigNum { + limbs: [0x187dab62963f68a56f00f6b6f40225, 0x9d592f067d015a66f6c67f6a57f8c9, 0x004c40], + }, + BigNum { + limbs: [0x203f88cbdc4471948cb801db257f24, 0xa39c71e06fdf474e1e622995bbb22e, 0x000088], + }, + BigNum { + limbs: [0x9d647a3422178d6b7347fd24da80dd, 0x03b6b7bd0d68ebebb9a5e00c1c5325, 0x007365], + }, + BigNum { + limbs: [0xd9640467b89b62bb3664bc5da730c0, 0xf25d387914b42e95a8ce3dab9495f8, 0x00070c], + }, + BigNum { + limbs: [0xe43ffe9845c09c44c99b42a258cf41, 0xb4f5f124689404a42f39cbf6436f5a, 0x006ce0], + }, + BigNum { + limbs: [0xcb1c4c78afeecd4318a4cc529de646, 0x8ab180b6121766d0fbf770c619f590, 0x006722], + }, + BigNum { + limbs: [0xf287b6874e6d31bce75b32ad6219bb, 0x1ca1a8e76b30cc68dc1098dbbe0fc2, 0x000ccb], + }, + BigNum { + limbs: [0xf232337ef6eba4549c3333d5cdae87, 0x1b7d643dcbb06052961d233134d2bd, 0x001131], + }, + BigNum { + limbs: [0xcb71cf8107705aab63cccb2a32517a, 0x8bd5c55fb197d2e741eae670a33295, 0x0062bc], + }, + BigNum { + limbs: [0xd2a6543bf0a923b8baa3c5f39511a9, 0xfaafbd50344cd931eb4e7d8227c6d9, 0x0033f1], + }, + BigNum { + limbs: [0xeafdaec40db2db47455c390c6aee58, 0xaca36c4d48fb5a07ecb98c1fb03e79, 0x003ffb], + }, + BigNum { + limbs: [0x1777ae6de43c3bcc3cf45503a26bf9, 0x4930044f66d8675907d64a5c2feb97, 0x005605], + }, + BigNum { + limbs: [0xa62c54921a1fc333c30ba9fc5d9408, 0x5e23254e166fcbe0d031bf45a819bc, 0x001de8], + }, + BigNum { + limbs: [0x7664eaa2d713a5c7b1b0deaf488dc0, 0xdecc5a66647f9784a0b1a526c1fc01, 0x00040b], + }, + BigNum { + limbs: [0x473f185d274859384e4f2050b77241, 0xc886cf3718c89bb53756647b160952, 0x006fe1], + }, + BigNum { + limbs: [0xadbc1a2c46fc2c8d7616ca9a1232dd, 0x417472eed79049a3167cfffc90e27f, 0x0057d6], + }, + BigNum { + limbs: [0x0fe7e8d3b75fd27289e93465edcd24, 0x65deb6aea5b7e996c18b09a54722d4, 0x001c17], + }, + BigNum { + limbs: [0xfa62bbbbd6b631a42d6916ba23404c, 0x404b2b3e80406629c6836b11a80e95, 0x001e1a], + }, + BigNum { + limbs: [0xc341474427a5cd5bd296e845dcbfb5, 0x6707fe5efd07cd1011849e902ff6bd, 0x0055d3], + }, + BigNum { + limbs: [0xd481d0bb6911548cb29e5f68cdc81a, 0xaaa3d798d21e94dadff55c6cbfdb7f, 0x00630e], + }, + BigNum { + limbs: [0xe9223244954aaa734d619f973237e7, 0xfcaf5204ab299e5ef812ad351829d3, 0x0010de], + }, + BigNum { + limbs: [0x030f7af2e756bfa10792d623ec078b, 0xaf53a7f8913c194caac36ab9b39ee1, 0x001fef], + }, + BigNum { + limbs: [0xba94880d17053f5ef86d28dc13f876, 0xf7ff81a4ec0c19ed2d449ee8246672, 0x0053fd], + }, + BigNum { + limbs: [0xca4d3655b7f65a7a73df2ecd0e2030, 0x7518b9fd3554c0f19a67641063833c, 0x004b1d], + }, + BigNum { + limbs: [0xf356ccaa4665a4858c20d032f1dfd1, 0x323a6fa047f372483da0a591748216, 0x0028d0], + }, + BigNum { + limbs: [0xd3049773ed303c881867a03315f5d3, 0x2b4acc7c704c4f38a455be37d321ba, 0x0048b5], + }, + BigNum { + limbs: [0xea9f6b8c112bc277e7985eccea0a2e, 0x7c085d210cfbe40133b24b6a04e398, 0x002b38], + }, + BigNum { + limbs: [0xc2d66725116e6c0e39c5c0deac938d, 0x7b09d8722543e50d1ed404838c3942, 0x003c85], + }, + BigNum { + limbs: [0xfacd9bdaeced92f1c63a3e21536c74, 0x2c49512b58044e2cb934051e4bcc10, 0x003768], + }, + BigNum { + limbs: [0xc4f44254bfe3f098c01ebb90ee775e, 0x6d9caec03381a9ee3c0868e70f5777, 0x0043bc], + }, + BigNum { + limbs: [0xf8afc0ab3e780e673fe1436f1188a3, 0x39b67add49c6894b9bffa0bac8addb, 0x003031], + }, + BigNum { + limbs: [0xfddd235c7a98ac608be7900aae3100, 0xa244819154424d60ebf9f5ac99f13f, 0x005cb7], + }, + BigNum { + limbs: [0xbfc6dfa383c3529f74186ef551cf01, 0x050ea80c2905e5d8ec0e13f53e1413, 0x001736], + }, + BigNum { + limbs: [0x4a0fd486334f79d808d5c0d3ae1f12, 0x9daab2457724a2a6708e58d280c315, 0x005ac9], + }, + BigNum { + limbs: [0x73942e79cb0c8527f72a3e2c51e0ef, 0x09a87758062390936779b0cf57423e, 0x001924], + }, + BigNum { + limbs: [0xea8c83047a0348092bc156145ae3be, 0x6498d3d08cd0b43f4591e262934f10, 0x001299], + }, + BigNum { + limbs: [0xd3177ffb8458b6f6d43ea8eba51c43, 0x42ba55ccf0777efa9276273f44b642, 0x006154], + }, + BigNum { + limbs: [0xc9e71e9ad981f3f9bee777f505a670, 0xa66cf5599656047e8cec0c7be22c07, 0x0015ed], + }, + BigNum { + limbs: [0xf3bce46524da0b064118870afa5991, 0x00e63443e6f22ebb4b1bfd25f5d94b, 0x005e00], + }, + BigNum { + limbs: [0xaa95c116471933d23a4a114812d636, 0x1521f33b59d5e1255a25981421ff14, 0x0052c0], + }, + BigNum { + limbs: [0x130e41e9b742cb2dc5b5edb7ed29cb, 0x92313662237252147de2718db6063f, 0x00212d], + }, + BigNum { + limbs: [0xd54a83f5ca1be3e25cfe9c39fa442b, 0xf39fdb8f4cc1ff72289a55de1ef66f, 0x003042], + }, + BigNum { + limbs: [0xe8597f0a34401b1da30162c605bbd6, 0xb3b34e0e308633c7af6db3c3b90ee3, 0x0043aa], + }, + BigNum { + limbs: [0x6df133f7321a25f20ce8d579e35cee, 0xa3f774f19f1ff7a8b04d2828931d48, 0x0018c6], + }, + BigNum { + limbs: [0x4fb2cf08cc41d90df31729861ca313, 0x035bb4abde283b9127bae17944e80b, 0x005b27], + }, + BigNum { + limbs: [0x0f9d3b81d8d23eded4a5f256a9c7fa, 0xe84cc460e97596051ddbd646a327cd, 0x00211d], + }, + BigNum { + limbs: [0xae06c77e2589c0212b5a0ca9563807, 0xbf06653c93d29d34ba2c335b34dd86, 0x0052cf], + }, + BigNum { + limbs: [0x6d32c4bc785ddf8f84dcc764345e6f, 0x440f93c3062bad415ce2d67286aaff, 0x005d3d], + }, + BigNum { + limbs: [0x50713e4385fe1f707b23379bcba192, 0x634395da771c85f87b25332f515a54, 0x0016b0], + }, + BigNum { + limbs: [0x65f7f950b8ea85342030e7ba39b3a6, 0x509b496b983f565de17858f422f2df, 0x002b01], + }, + BigNum { + limbs: [0x57ac09af457179cbdfcf1745c64c5b, 0x56b7e031e508dcdbf68fb0adb51274, 0x0048ec], + }, + BigNum { + limbs: [0x0cf136ceac4b7be81282d9762849c5, 0x475dcfa943c0ac10e91b6361e98f4d, 0x004e05], + }, + BigNum { + limbs: [0xb0b2cc3152108317ed7d2589d7b63c, 0x5ff559f439878728eeeca63fee7606, 0x0025e8], + }, + BigNum { + limbs: [0xf5a38f02d0d9e3f6e035ff20282882, 0x92eb3eb00addf10be3c3f4a15ce3d9, 0x004f48], + }, + BigNum { + limbs: [0xc80073fd2d821b091fc9ffdfd7d77f, 0x1467eaed726a422df44415007b2179, 0x0024a5], + }, + BigNum { + limbs: [0x15abe4dc2aec8fda060609b2b47d85, 0x138145182f544c8a68d80bcba67af2, 0x0069de], + }, + BigNum { + limbs: [0xa7f81e23d36f6f25f9f9f54d4b827c, 0x93d1e4854df3e6af6f2ffdd6318a61, 0x000a0f], + }, + BigNum { + limbs: [0x1876aef7cc205e21ae42d827deca30, 0x6f29f2073a63626669c7c06691d161, 0x0010c7], + }, + BigNum { + limbs: [0xa52d5408323ba0de51bd26d82135d1, 0x3829379642e4d0d36e40493b4633f2, 0x006326], + }, + BigNum { + limbs: [0xd8e98cba8c851f53dbcceebb1aec4c, 0x7da509b2c067c30ab0c323dcd93343, 0x005edb], + }, + BigNum { + limbs: [0xe4ba764571d6dfac24331044e513b5, 0x29ae1feabce0702f2744e5c4fed20f, 0x001512], + }, + BigNum { + limbs: [0x34466bd37b654e75fbe2738ef6ec21, 0xf7bdf6d2576613871ea55580a605e5, 0x002f9e], + }, + BigNum { + limbs: [0x895d972c82f6b08a041d8b710913e0, 0xaf9532cb25e21fb2b962b42131ff6e, 0x00444e], + }, + BigNum { + limbs: [0xe3d5c95963601cef87c9f995096338, 0x788108ad69a5b53f9e776978ee912d, 0x0022c0], + }, + BigNum { + limbs: [0xd9ce39a69afbe2107836056af69cc9, 0x2ed220f013a27dfa3990a028e97425, 0x00512d], + }, + BigNum { + limbs: [0xa52764195066cb368bf892d23cfbea, 0x4ffc4e3af3f346bc2d29fe6ef3b600, 0x0000a1], + }, + BigNum { + limbs: [0x187c9ee6adf533c974076c2dc30417, 0x5756db628954ec7daade0b32e44f53, 0x00734c], + }, + BigNum { + limbs: [0xe7644948035d564c122ce446b3b25c, 0xf7e46fad681a2e91cb91310e85e484, 0x003e4b], + }, + BigNum { + limbs: [0xd63fb9b7fafea8b3edd31ab94c4da5, 0xaf6eb9f0152e04a80c76d8935220ce, 0x0035a1], + }, + BigNum { + limbs: [0xf2d9bfd5140d699cc42e43382e70a4, 0x083148cb1058349ee0fb910de629c0, 0x001bdd], + }, + BigNum { + limbs: [0xcaca432aea4e95633bd1bbc7d18f5d, 0x9f21e0d26ceffe9af70c7893f1db92, 0x005810], + }, + BigNum { + limbs: [0xff8a227dfd1dec38fa67bcd4f84471, 0xbd7da7f332978a73656310ab4c6c08, 0x0066e4], + }, + BigNum { + limbs: [0xbe19e082013e12c70598422b07bb90, 0xe9d581aa4ab0a8c672a4f8f68b994a, 0x000d08], + }, + BigNum { + limbs: [0xdac5574c6b36285f26172cbdae7696, 0x467880c3870fe5f29a8023d2eb1261, 0x001a74], + }, + BigNum { + limbs: [0xe2deabb39325d6a0d9e8d24251896b, 0x60daa8d9f6384d473d87e5ceecf2f1, 0x005979], + }, + BigNum { + limbs: [0x092a39c6a48f459c533e348b6eff5f, 0x1db7d0376a78528b2ecd3ea8ae6c56, 0x0011e5], + }, + BigNum { + limbs: [0xb479c93959ccb963acc1ca749100a2, 0x899b596612cfe0aea93acaf92998fd, 0x006208], + }, + BigNum { + limbs: [0x209c683b1f1277f13eb4a91bb6a4f8, 0xdb28617d36ba715ec5ec903e27b135, 0x0051e8], + }, + BigNum { + limbs: [0x9d079ac4df49870ec14b55e4495b09, 0xcc2ac820468dc1db121b7963b0541e, 0x002204], + }, + BigNum { + limbs: [0x39d9bec3468ebe119a0380eb0bbdd4, 0xf5fcf2b2518e4d3d9ef4fd3ca74c1a, 0x00493d], + }, + BigNum { + limbs: [0x83ca443cb7cd40ee65fc7e14f4422d, 0xb15636eb2bb9e5fc39130c6530b939, 0x002aaf], + }, + BigNum { + limbs: [0xc036c97cdeccdb1309e8f8e477af4b, 0x633fec31a36e9a52920637cefbb3a0, 0x0053b9], + }, + BigNum { + limbs: [0xfd6d39831f8f23ecf617061b8850b6, 0x44133d6bd9d998e74601d1d2dc51b2, 0x002034], + }, + BigNum { + limbs: [0xb83acfc8e1fc9f12f727121ee0964a, 0x4d4c275307f975b7d7ce0cb29b36bc, 0x0017fa], + }, + BigNum { + limbs: [0x056933371c5f5fed08d8ece11f69b7, 0x5a07024a754ebd820039fcef3cce97, 0x005bf3], + }, + BigNum { + limbs: [0x59be7af6c293cfd283f3b304941cef, 0x20f7ffe182d1e66aa095c3e85fc919, 0x0072b6], + }, + BigNum { + limbs: [0x63e588093bc82f2d7c0c4bfb6be312, 0x865b29bbfa764ccf377245b9783c3a, 0x000137], + }, + BigNum { + limbs: [0x03249c8429f87e6844532496014769, 0xf040e1fdfca4b40f89ddd68b08bfde, 0x000116], + }, + BigNum { + limbs: [0xba7f667bd4638097bbacda69feb898, 0xb712479f80a37f2a4e2a3316cf4575, 0x0072d6], + }, + BigNum { + limbs: [0x9356da41aa6f8f02e7836bb3ab600d, 0x64c674e3478a1a81fdfbfaf9e23819, 0x00690f], + }, + BigNum { + limbs: [0x2a4d28be53ec6ffd187c934c549ff4, 0x428cb4ba35be18b7da0c0ea7f5cd3a, 0x000ade], + }, + BigNum { + limbs: [0xcf83fe0ae1e6a534ea9661ff26117d, 0xfe13068acf76d38555ddf2b6be9f66, 0x005e47], + }, + BigNum { + limbs: [0xee2004f51c7559cb15699d00d9ee84, 0xa9402312add15fb4822a16eb1965ec, 0x0015a5], + }, + BigNum { + limbs: [0xad1740d605853de7454aa702a3c258, 0x76c88e274f02c447c149769ccad950, 0x0000a0], + }, + BigNum { + limbs: [0x108cc229f8d6c118bab557fd5c3da9, 0x308a9b762e456ef216be93050d2c03, 0x00734d], + }, + BigNum { + limbs: [0xaec3d9a57ccd3297472f2054fecfd5, 0xb9661959f10d1a81eafd4497a5304a, 0x0054dd], + }, + BigNum { + limbs: [0x0ee0295a818ecc68b8d0deab01302c, 0xeded10438c3b18b7ed0ac50a32d509, 0x001f0f], + }, + BigNum { + limbs: [0xd7652e15e99c4fa549c326bd5ec839, 0x7e6d3b984ce333a79fcc2c033c1a9e, 0x0029e0], + }, + BigNum { + limbs: [0xe63ed4ea14bfaf5ab63cd842a137c8, 0x28e5ee053064ff92383bdd9e9beab4, 0x004a0d], + }, + BigNum { + limbs: [0x4c88ff93efa64a2f0a407c5295fb98, 0xfac010dea4409740b7a0a0fd537819, 0x005882], + }, + BigNum { + limbs: [0x711b036c0eb5b4d0f5bf82ad6a0469, 0xac9318bed9079bf9206768a4848d3a, 0x001b6a], + }, + BigNum { + limbs: [0x5e84d56af0f9ca4f7f8d52f0dc3992, 0x3119b933616cdbe1801187d7696ce6, 0x001772], + }, + BigNum { + limbs: [0x5f1f2d950d6234b08072ac0f23c66f, 0x7639706a1bdb575857f681ca6e986d, 0x005c7b], + }, + BigNum { + limbs: [0x1f60d0941e92cd6a0c566da29d6b4e, 0x36ed69e2548982af2ca67090f30a51, 0x0007ca], + }, + BigNum { + limbs: [0x9e43326bdfc93195f3a9915d6294b3, 0x7065bfbb28beb08aab619910e4fb02, 0x006c23], + }, + BigNum { + limbs: [0xe983b035dd777461db389f0c72ef67, 0xaaa63a9561e15c725eab59b885b4dc, 0x000a23], + }, + BigNum { + limbs: [0xd42052ca20e48a9e24c75ff38d109a, 0xfcacef081b66d6c7795cafe9525076, 0x0069c9], + }, + BigNum { + limbs: [0x1026bb7cc4a92cb1a5916f0c03c77e, 0x52872cea0502fba135f7b61b767f8b, 0x00673d], + }, + BigNum { + limbs: [0xad7d478339b2d24e5a6e8ff3fc3883, 0x54cbfcb378453798a21053866185c8, 0x000cb0], + }, + BigNum { + limbs: [0xcc96ca4f8ddbb2b42b0658a8edfb6b, 0x43de3052b6648a3783538c1c28ad2f, 0x005c9c], + }, + BigNum { + limbs: [0xf10d38b070804c4bd4f9a657120496, 0x6374f94ac6e3a90254b47d85af5823, 0x001751], + }, + BigNum { + limbs: [0xf152a3c0f1c231ff49725a1870375c, 0xf7d3c4edc935ffc2941254837a46d2, 0x006b82], + }, + BigNum { + limbs: [0xcc515f3f0c99cd00b68da4e78fc8a5, 0xaf7f64afb412337743f5b51e5dbe80, 0x00086a], + }, + BigNum { + limbs: [0x9f913cac2cc77977ee6e82bfd3a1f9, 0xad1a0314eff2961eaed1c485488a76, 0x00706e], + }, + BigNum { + limbs: [0x1e12c653d194858811917c402c5e08, 0xfa3926888d559d1b2936451c8f7add, 0x00037e], + }, + BigNum { + limbs: [0x2ae97a5238177d86f50a21463dd536, 0x89498b4a364c53f06d7099b29ccb04, 0x004723], + }, + BigNum { + limbs: [0x92ba88adc64481790af5ddb9c22acb, 0x1e099e5346fbdf496a976fef3b3a4f, 0x002cca], + }, + BigNum { + limbs: [0xb3b215b2a1cb8a7d5e2afb958221be, 0xa16e424912fc4b00c302811881c325, 0x0021e9], + }, + BigNum { + limbs: [0x09f1ed4d5c907482a1d5036a7dde43, 0x05e4e7546a4be8391505888956422e, 0x005204], + }, + BigNum { + limbs: [0x4e85ecd63f5c377a6298c0d8230e4f, 0x740ddd00e10d2b0611c4592c433219, 0x0062fa], + }, + BigNum { + limbs: [0x6f1e1629beffc7859d673e27dcf1b2, 0x33454c9c9c3b0833c643b07594d33a, 0x0010f3], + }, + BigNum { + limbs: [0xe9678b025e60f28b161ada6afe9538, 0xf7a59a09cbe80551530ffb9aa031dd, 0x0027b8], + }, + BigNum { + limbs: [0xd43c77fd9ffb0c74e9e52495016ac9, 0xafad8f93b1602de884f80e0737d375, 0x004c34], + }, + BigNum { + limbs: [0x7ff15c409eef5bc3a92ef2ca3fd8cc, 0xfb4c9980bb944a5586179e02d5dc88, 0x004869], + }, + BigNum { + limbs: [0x3db2a6bf5f6ca33c56d10c35c02735, 0xac06901cc1b3e8e451f06b9f0228cb, 0x002b83], + }, + BigNum { + limbs: [0x85709d15b42a3e0c14b9b4139f47cc, 0xb392702c989dd317c3b03bc4cc00cc, 0x006104], + }, + BigNum { + limbs: [0x383365ea4a31c0f3eb464aec60b835, 0xf3c0b970e4aa60221457cddd0c0487, 0x0012e8], + }, + BigNum { + limbs: [0xd0d4498d8b5ced307b71c0af325c62, 0x9d954e4bc32d2071129882629c2840, 0x00278e], + }, + BigNum { + limbs: [0xeccfb97272ff11cf848e3e50cda39f, 0x09bddb51ba1b12c8c56f873f3bdd12, 0x004c5f], + }, + BigNum { + limbs: [0x525b7e8ba1b24d98d86a7929758ccd, 0x15da7d5d01b023f671701bbd40ca3b, 0x006b5e], + }, + BigNum { + limbs: [0x6b4884745ca9b167279585d68a7334, 0x9178ac407b980f436697ede4973b18, 0x00088f], + }, + BigNum { + limbs: [0x908e545d34e2793c0867a94b248b6c, 0x7d213aed98fd4b3905264a3e4317e5, 0x006bcc], + }, + BigNum { + limbs: [0x2d15aea2c97985c3f79855b4db7495, 0x2a31eeafe44ae800d2e1bf6394ed6e, 0x000821], + }, + BigNum { + limbs: [0xc94cff0b73a8b9be2ad0a5f63874ba, 0xed38e13513aa7562ef27c3910418f9, 0x0056f9], + }, + BigNum { + limbs: [0xf45703f48ab34541d52f5909c78b47, 0xba1a4868699dbdd6e8e04610d3ec59, 0x001cf3], + }, + BigNum { + limbs: [0x36fe219d2f1ca32551d25163a57d86, 0xa592c8e79d78eb4ed97a2ea201b711, 0x002f18], + }, + BigNum { + limbs: [0x86a5e162cf3f5bdaae2dad9c5a827b, 0x01c060b5dfcf47eafe8ddaffd64e42, 0x0044d5], + }, + BigNum { + limbs: [0xa4784e5cefc9be2e1b980e4cafe433, 0x577770c381e5cbe1a229495b4b99c7, 0x0042db], + }, + BigNum { + limbs: [0x192bb4a30e9240d1e467f0b3501bce, 0x4fdbb8d9fb62675835dec0468c6b8c, 0x003112], + }, + BigNum { + limbs: [0xb3c2c92942824865084a31ecb924fa, 0x2a1ecf656d32a30763627a6886702e, 0x001c62], + }, + BigNum { + limbs: [0x09e139d6bbd9b69af7b5cd1346db07, 0x7d345a381015903274a58f39519525, 0x00578b], + }, + BigNum { + limbs: [0x3d902f03551049f127d7c393e202c0, 0xf9cfd3370d6c944417a9fc1f8cfeb5, 0x00056b], + }, + BigNum { + limbs: [0x8013d3fca94bb50ed8283b6c1dfd41, 0xad8356666fdb9ef5c05e0d824b069e, 0x006e81], + }, + BigNum { + limbs: [0x4ba5d295058ca307a2b4097373ef5a, 0x85b55ab26d8ac390432f293555e2ba, 0x001d20], + }, + BigNum { + limbs: [0x71fe306af8cf5bf85d4bf58c8c10a7, 0x219dceeb0fbd6fa994d8e06c822299, 0x0056cd], + }, + BigNum { + limbs: [0xc2c4351645ca60d00d8e28e597ebb9, 0x937f818d465e2b8a21cbde1084c7d2, 0x0019b8], + }, + BigNum { + limbs: [0xfadfcde9b8919e2ff271d61a681448, 0x13d3a81036ea07afb63c2b91533d80, 0x005a35], + }, + BigNum { + limbs: [0x449d265c117b30c24ac967f93d8b01, 0xb6bfa3edb16c0360158fd6702a37e9, 0x00141f], + }, + BigNum { + limbs: [0x7906dca3ece0ce3db5369706c27500, 0xf09385afcbdc2fd9c2783331adcd6a, 0x005fcd], + }, + BigNum { + limbs: [0x3651759b44053677b99f0eca393e84, 0xa01b180d7fc3a4c3b9f74a56ca0543, 0x00077b], + }, + BigNum { + limbs: [0x87528d64ba56c8884660f035c6c17d, 0x0738118ffd848e761e10bf4b0e0010, 0x006c72], + }, + BigNum { + limbs: [0x5c324df87197f007401cd383ea6433, 0x19ddb92d997b13b0e0ff9f159f428e, 0x006b23], + }, + BigNum { + limbs: [0x6171b5078cc40ef8bfe32b7c159bce, 0x8d75706fe3cd1f88f7086a8c38c2c5, 0x0008ca], + }, + BigNum { + limbs: [0xa3ed8c7d553c366294367b3eef0647, 0x6b11dbd832ff1fb4c9583417520f25, 0x0008b2], + }, + BigNum { + limbs: [0x19b67682a91fc89d6bc983c110f9ba, 0x3c414dc54a4913850eafd58a85f62e, 0x006b3b], + }, + BigNum { + limbs: [0x9f779c216532e9654dff9acfc27353, 0xbb20340e48cb13a9b86723f41d63bd, 0x002365], + }, + BigNum { + limbs: [0x1e2c66de9929159ab20064303d8cae, 0xec32f58f347d1f901fa0e5adbaa196, 0x005087], + }, + BigNum { + limbs: [0x4badbde5b349d3512f0d5b5d19ba24, 0x6365555433d7803a1a95d55fc37552, 0x004e56], + }, + BigNum { + limbs: [0x71f6451a4b122baed0f2a3a2e645dd, 0x43edd4494970b2ffbd723442149001, 0x002597], + }, + BigNum { + limbs: [0x0acf4a881882c49d95b848783baff6, 0x6ef4daa39a3398ecd2bc6003abf49e, 0x004b0e], + }, + BigNum { + limbs: [0xb2d4b877e5d93a626a47b687c4500b, 0x385e4ef9e3149a4d054ba99e2c10b5, 0x0028df], + }, + BigNum { + limbs: [0xff7db1e208ca5762d37d2f50142c1d, 0x1798ccc9781075e48186a0f936f2f9, 0x00655b], + }, + BigNum { + limbs: [0xbe26511df591a79d2c82cfafebd3e4, 0x8fba5cd40537bd55568168a8a11259, 0x000e92], + }, + BigNum { + limbs: [0xe4385aa59379304eb87f06f3052074, 0xb8a802a174ea379ba1457efc2e2881, 0x0011f9], + }, + BigNum { + limbs: [0xd96ba85a6ae2ceb14780f80cfadf8d, 0xeeab26fc085dfb9e36c28aa5a9dcd1, 0x0061f3], + }, + BigNum { + limbs: [0xec510028ee108633efbda071957818, 0x8ee91d8b9f540e171f160493e14fee, 0x0003a1], + }, + BigNum { + limbs: [0xd15302d7104b78cc10425e8e6a87e9, 0x186a0c11ddf42522b8f2050df6b564, 0x00704c], + }, + BigNum { + limbs: [0xa7bbb5ec527557ba4fa14e54bbedf6, 0x417cb0e82b9ffd191ef6acc3e59f9d, 0x000c5e], + }, + BigNum { + limbs: [0x15e84d13abe6a745b05eb0ab44120b, 0x65d678b551a83620b9115cddf265b6, 0x00678f], + }, + BigNum { + limbs: [0xc024153f96227a1683c9b2579ec673, 0x898d8eda40f85e2f7f8a626b1f2011, 0x0035fc], + }, + BigNum { + limbs: [0xfd7fedc0683984e97c364ca861398e, 0x1dc59ac33c4fd50a587da736b8e541, 0x003df1], + }, + BigNum { + limbs: [0xe952a25430c3b9c15e92b69fb876f2, 0x4d58a5b97c0d1ffa0fefe7651f7418, 0x004a57], + }, + BigNum { + limbs: [0xd45160abcd98453ea16d486047890f, 0x59fa83e4013b133fc818223cb8913a, 0x002996], + }, + BigNum { + limbs: [0xc16e47ee9344e623a5a02af7352846, 0x1570af1eaed89534129c442b9b50b0, 0x0039b2], + }, + BigNum { + limbs: [0xfc35bb116b1718dc5a5fd408cad7bb, 0x91e27a7ece6f9e05c56bc5763cb4a2, 0x003a3b], + }, + BigNum { + limbs: [0xc9ff6bc17ee0c0300dcd481613376a, 0xf4786d303126047688651a184c8190, 0x003750], + }, + BigNum { + limbs: [0xf3a4973e7f7b3ecff232b6e9ecc897, 0xb2dabc6d4c222ec34fa2ef898b83c2, 0x003c9c], + }, + BigNum { + limbs: [0xe47938602798ee2feabcab1eb5c580, 0x8bd6fa1e279cd00145595a25cf22fa, 0x000af4], + }, + BigNum { + limbs: [0xd92aca9fd6c310d0154353e14a3a81, 0x1b7c2f7f55ab633892aeaf7c08e258, 0x0068f9], + }, + BigNum { + limbs: [0x82450dbe073be8162efe65f1c2b990, 0xe506ed3420bd548b26494c5a621e78, 0x002335], + }, + BigNum { + limbs: [0x3b5ef541f72016e9d101990e3d4671, 0xc24c3c695c8adeaeb1bebd4775e6db, 0x0050b7], + }, + BigNum { + limbs: [0x1a903d8f52d2a90dff66838d9c7fbd, 0x8a08974d8c1bf1ec877e19a187e39b, 0x004c87], + }, + BigNum { + limbs: [0xa313c570ab8955f200997b72638044, 0x1d4a924ff12c414d5089f0005021b8, 0x002766], + }, + BigNum { + limbs: [0x96c3746709260726d987fa9e3bbed3, 0xa27be85055e8b203921cd6971c63e4, 0x004e25], + }, + BigNum { + limbs: [0x26e08e98f535f7d926780461c4412e, 0x04d7414d275f813645eb330abba16f, 0x0025c8], + }, + BigNum { + limbs: [0xbdee817f227e486819b9b9795c3e0f, 0x00154a61744cbb7789c88db15913ad, 0x000d03], + }, + BigNum { + limbs: [0xffb58180dbddb697e6464586a3c1f2, 0xa73ddf3c08fb77c24e3f7bf07ef1a5, 0x0066ea], + }, + BigNum { + limbs: [0x07a6e79adda5afa3109ba77f2518c7, 0x867bd40a744e3d649126de0af18e82, 0x0063ea], + }, + BigNum { + limbs: [0xb5fd1b6520b64f5cef645780dae73a, 0x20d7559308f9f5d546e12b96e676d1, 0x001003], + }, + BigNum { + limbs: [0x5b78d7ad57b0f38547116436757283, 0xfdd66062acb5a269327c0efa5e5c8c, 0x004514], + }, + BigNum { + limbs: [0x622b2b52a6ab0b7ab8ee9ac98a8d7e, 0xa97cc93ad09290d0a58bfaa779a8c7, 0x002ed8], + }, + BigNum { + limbs: [0xa56f61a006515a17be1566d99a7483, 0x4f501ad75aad02dac68288140c42da, 0x0043c5], + }, + BigNum { + limbs: [0x1834a15ff80aa4e841ea9826658b7e, 0x58030ec6229b305f1185818dcbc279, 0x003028], + }, + BigNum { + limbs: [0x065584e021791f1391419338a0badc, 0xe82a30c630237655b39804b4c4a0e3, 0x003951], + }, + BigNum { + limbs: [0xb74e7e1fdce2dfec6ebe6bc75f4525, 0xbf28f8d74d24bce4247004ed136470, 0x003a9b], + }, + BigNum { + limbs: [0xf92ae474cef12d5145aca500592c77, 0x9d1eaf1c0b155b90729187a8961bf7, 0x000c7c], + }, + BigNum { + limbs: [0xc4791e8b2f6ad1aeba5359ffa6d38a, 0x0a347a817232d7a9657681f941e95b, 0x006771], + }, + BigNum { + limbs: [0x97eb526090f342f807dc397d6d14ee, 0x13ef0677dcd750c7a1520e76702560, 0x00627c], + }, + BigNum { + limbs: [0x25b8b09f6d68bc07f823c58292eb13, 0x93642325a070e27236b5fb2b67dff3, 0x001171], + }, + BigNum { + limbs: [0x94ea7f998e3036d6bed2498a5d8638, 0x448b1d5cbea6dfc72166834e512278, 0x003922], + }, + BigNum { + limbs: [0x28b98366702bc829412db575a279c9, 0x62c80c40bea15372b6a1865386e2db, 0x003acb], + }, + BigNum { + limbs: [0xff614331a1c5ee416c0cec37d6d1e3, 0x358697a1948bdde939ccba7d1a0b56, 0x006912], + }, + BigNum { + limbs: [0xbe42bfce5c9610be93f312c8292e1e, 0x71cc91fbe8bc55509e3b4f24bdf9fc, 0x000adb], + }, + BigNum { + limbs: [0xf453443751352cd5ec27c20801dd0c, 0xe39b16faf7c46cc7ac221e46db195c, 0x005428], + }, + BigNum { + limbs: [0xc950bec8ad26d22a13d83cf7fe22f5, 0xc3b812a28583c6722be5eb5afcebf6, 0x001fc4], + }, + BigNum { + limbs: [0x55db26760dbddac00db50a8b455478, 0xd94bd5ed9311a8d9ff5e4d8aea5817, 0x001b03], + }, + BigNum { + limbs: [0x67c8dc89f09e243ff24af474baab89, 0xce0753afea368a5fd8a9bc16edad3c, 0x0058e9], + }, + BigNum { + limbs: [0x49b65c7d1fed03f5b384a538296000, 0x7c3942fa7cfd9aed68d099c5eb4e62, 0x006288], + }, + BigNum { + limbs: [0x73eda682de6efb0a4c7b59c7d6a001, 0x2b19e6a3004a984c6f376fdbecb6f1, 0x001165], + }, + BigNum { + limbs: [0x3a5b42deb5e4c1b66d42eea88ef658, 0xd75572234819e092ac4898119b265f, 0x0020b2], + }, + BigNum { + limbs: [0x8348c02148773d4992bd10577109a9, 0xcffdb77a352e52a72bbf71903cdef4, 0x00533a], + }, + BigNum { + limbs: [0x9789fe6f5e6d87ec21011e1910e3f6, 0xddfe267b290a0c6b6dbfa5a338e877, 0x0062a3], + }, + BigNum { + limbs: [0x261a04909fee7713defee0e6ef1c0b, 0xc9550322543e26ce6a4863fe9f1cdc, 0x001149], + }, + BigNum { + limbs: [0x4759df07c81cf588e130df905786d7, 0xe1eeb4fc8bcd8ed5ffac85a790ec7a, 0x000af2], + }, + BigNum { + limbs: [0x764a23f8363f09771ecf1f6fa8792a, 0xc56474a0f17aa463d85b83fa4718d9, 0x0068fa], + }, + BigNum { + limbs: [0x5186929cb753ce8a84298fd3ddf34c, 0xba25714e3e69008fab821a3ee08d64, 0x006086], + }, + BigNum { + limbs: [0x6c1d7063470830757bd66f2c220cb5, 0xed2db84f3edf32aa2c85ef62f777ef, 0x001366], + }, + BigNum { + limbs: [0xe7a0348b8faec254f0afb89d963fea, 0x64ab3a29297f3027fbcec0f933fe6b, 0x003eee], + }, + BigNum { + limbs: [0xd603ce746ead3cab0f50466269c017, 0x42a7ef7453c90311dc3948a8a406e7, 0x0034ff], + }, + BigNum { + limbs: [0x3b845b65ff13ce04b81c740d89cb54, 0xd4ceaa3502758601997f45fa4a4b00, 0x0049b8], + }, + BigNum { + limbs: [0x821fa799ff4830fb47e38af27634ad, 0xd2847f687ad2ad383e88c3a78dba53, 0x002a34], + }, + BigNum { + limbs: [0xe365db905d5bbf2f11ec355270b1d7, 0x6c686f4d606c07c39a15c300ab83e5, 0x004b5f], + }, + BigNum { + limbs: [0xda3e276fa1003fd0ee13c9ad8f4e2a, 0x3aeaba501cdc2b763df246a12c816d, 0x00288e], + }, + BigNum { + limbs: [0xe2d540a29e52cd9cab5805fc609431, 0xba317c9334f608b7a43373d7cd3962, 0x006450], + }, + BigNum { + limbs: [0xdacec25d6009316354a7f9039f6bd0, 0xed21ad0a48522a8233d495ca0acbf0, 0x000f9c], + }, + BigNum { + limbs: [0x2b493a84dfb36896b6a5c9464cd413, 0x24db15ec7c17375f6988a630da2245, 0x006eb6], + }, + BigNum { + limbs: [0x925ac87b1ea89669495a35b9b32bee, 0x827813b10130fbda6e7f6370fde30e, 0x000537], + }, + BigNum { + limbs: [0x9b4d224b0528c83d046a082716bcad, 0x86515fbcd4407b19ef363b2e531257, 0x002064], + }, + BigNum { + limbs: [0x2256e0b4f93336c2fb95f6d8e94354, 0x2101c9e0a907b81fe8d1ce7384f2fc, 0x005389], + }, + BigNum { + limbs: [0xeb12eb2761d20c77841793f2e1f3bd, 0xf7216cd9a914d05c53c86f28bcf1f1, 0x00683d], + }, + BigNum { + limbs: [0xd29117d89c89f2887be86b0d1e0c44, 0xb031bcc3d43362dd843f9a791b1361, 0x000baf], + }, + BigNum { + limbs: [0x8beb6ddae7129a65bf313b1012d3c3, 0x6543cac258cb9e754890fcc1363893, 0x003e2d], + }, + BigNum { + limbs: [0x31b895251749649a40cec3efed2c3e, 0x420f5edb247c94c48f770ce0a1ccc0, 0x0035c0], + }, + BigNum { + limbs: [0xedd3f0704fcd8f277505ba720effe1, 0xa8a8ede82d0fb1e20890ceda6f1723, 0x0043a3], + }, + BigNum { + limbs: [0xcfd0128fae8e6fd88afa448df10020, 0xfeaa3bb550388157cf773ac768ee2f, 0x003049], + }, + BigNum { + limbs: [0xd1ce9ac4ad54c9e879678fda473b16, 0xae4c1953da0602d3749c19fa0c5093, 0x0056cb], + }, + BigNum { + limbs: [0xebd5683b5107351786986f25b8c4eb, 0xf9071049a3423066636befa7cbb4bf, 0x001d21], + }, + BigNum { + limbs: [0xa589adcd54196cf6b1a5c2e3dca6d2, 0xfd08c1065f9bee4333f2689c749b27, 0x000dba], + }, + BigNum { + limbs: [0x181a5532aa4292094e5a3c1c23592f, 0xaa4a68971dac44f6a415a105636a2c, 0x006632], + }, + BigNum { + limbs: [0x2f8dfa512822d59b3f666708cf6ab9, 0xd0072ac754cfe2a8f07114efb1bbae, 0x002c53], + }, + BigNum { + limbs: [0x8e1608aed6392964c09997f7309548, 0xd74bfed628785090e796f4b22649a5, 0x004799], + }, + BigNum { + limbs: [0xc31a16ae503a1dbb4d3aef9624f018, 0xe6e12b03a3ac400f72460d090590de, 0x004c37], + }, + BigNum { + limbs: [0xfa89ec51ae21e144b2c50f69db0fe9, 0xc071fe99d99bf32a65c1fc98d27474, 0x0027b5], + }, + BigNum { + limbs: [0x8cd6fdc62b7832b8bc7c0276b4eb5c, 0x0c57398282e4d2ba7b1aeab16b3187, 0x004445], + }, + BigNum { + limbs: [0x30cd0539d2e3cc474383fc894b14a5, 0x9afbf01afa63607f5ced1ef06cd3cc, 0x002fa8], + }, + BigNum { + limbs: [0x56f9dc800d97f131c91d435c7c321f, 0xe64eb0a6f68528607cdf9e439ef7d2, 0x00469d], + }, + BigNum { + limbs: [0x66aa267ff0c40dce36e2bba383cde2, 0xc10478f686c30ad95b286b5e390d81, 0x002d4f], + }, + BigNum { + limbs: [0x4b10df195a1e62c5f3a1fed8434f96, 0x7b876a5c766a1e9f60b772f6f9d3e6, 0x000afd], + }, + BigNum { + limbs: [0x729323e6a43d9c3a0c5e0027bcb06b, 0x2bcbbf4106de149a775096aade316d, 0x0068f0], + }, + BigNum { + limbs: [0xfbd130f283c5b69e922efa201850aa, 0x6ccf34bf27600b6ce3857940d09152, 0x001f8c], + }, + BigNum { + limbs: [0xc1d2d20d7a9648616dd104dfe7af57, 0x3a83f4de55e827ccf4829061077400, 0x005461], + }, + BigNum { + limbs: [0xa6a757eea27f2fa9af23aa807c2be1, 0x059ee3a1b642e96a613abae5c1d9bc, 0x005306], + }, + BigNum { + limbs: [0x16fcab115bdccf5650dc547f83d420, 0xa1b445fbc70549cf76cd4ebc162b97, 0x0020e7], + }, + BigNum { + limbs: [0xec67bec93ed7b8fcc288eadc69885e, 0xb2024f06f16a517e48c887951e3cc8, 0x004547], + }, + BigNum { + limbs: [0xd13c4436bf8446033d7714239677a3, 0xf550da968bdde1bb8f3f820cb9c88a, 0x002ea5], + }, + BigNum { + limbs: [0x2257110db62c1989285663ad98ee1f, 0x5151c6756d96e98d0ff23a9eb5a0ae, 0x0020d4], + }, + BigNum { + limbs: [0x9b4cf1f2482fe576d7a99b526711e2, 0x560163280fb149acc815cf032264a5, 0x005319], + }, + BigNum { + limbs: [0x0edb74177d38a4ad4cd59e471baa4d, 0x9e2545372c7b28f86f4786ee953296, 0x006cfe], + }, + BigNum { + limbs: [0xaec88ee881235a52b32a60b8e455b4, 0x092de46650cd0a4168c082b342d2bd, 0x0006ef], + }, + BigNum { + limbs: [0x412dab573abf941818f477fd67a800, 0x9584c239f193a789079521925a487d, 0x00439b], + }, + BigNum { + limbs: [0x7c7657a8c39c6ae7e70b8702985801, 0x11ce67638bb48bb0d072e80f7dbcd6, 0x003052], + }, + BigNum { + limbs: [0x7f2231c95ebaaa709feba3bd78dc6b, 0xca0f0381c911ddb1b93891f3063039, 0x0057ce], + }, + BigNum { + limbs: [0x3e81d1369fa1548f60145b42872396, 0xdd44261bb43655881ecf77aed1d51a, 0x001c1e], + }, + BigNum { + limbs: [0xde10ef35c170a32825b20112cdd5e9, 0xcd1b39a42a351e4dedee0a80e57d26, 0x002bd5], + }, + BigNum { + limbs: [0xdf9313ca3ceb5bd7da4dfded322a18, 0xda37eff9531314ebea19ff20f2882c, 0x004817], + }, + BigNum { + limbs: [0xdd1684a82174337180d4984f1ebc40, 0x3177280da2870d25a01bec21dfa01e, 0x002abe], + }, + BigNum { + limbs: [0xe08d7e57dce7cb8e7f2b66b0e143c1, 0x75dc018fdac1261437ec1d7ff86534, 0x00492f], + }, + BigNum { + limbs: [0x3d7f2a56a5a89fc8a744a668a546f7, 0x302ac56ea9dfeb1198dd3db79ebe10, 0x000a71], + }, + BigNum { + limbs: [0x8024d8a958b35f3758bb58975ab90a, 0x7728642ed36848283f2acbea394743, 0x00697c], + }, + BigNum { + limbs: [0x052f439346a8b05b12288d994b4771, 0xb9bad3328e426f695c45a377ddfd7e, 0x00682e], + }, + BigNum { + limbs: [0xb874bf6cb7b34ea4edd77166b4b890, 0xed98566aef05c3d07bc26629fa07d5, 0x000bbe], + }, + BigNum { + limbs: [0xba62b0c4e030ef1f583b87d6ade6f9, 0x014d6c8e9858d2bbd398ad664ee592, 0x002257], + }, + BigNum { + limbs: [0x0341523b1e2b0fe0a7c47729521908, 0xa605bd0ee4ef607e046f5c3b891fc1, 0x005196], + }, + BigNum { + limbs: [0x21e6561a1920b10c72391c8a1cc159, 0x16faab48860710a81440947ef47c01, 0x0003e6], + }, + BigNum { + limbs: [0x9bbdace5e53b4df38dc6e275e33ea8, 0x90587e54f7412291c3c77522e38952, 0x007007], + }, + BigNum { + limbs: [0x8aa947145e5a1fec90dd2dde7b5bef, 0x1560147bf3b782cd30aa038c9c0d6a, 0x00520e], + }, + BigNum { + limbs: [0x32fabbeba001df136f22d12184a412, 0x91f315218990b06ca75e06153bf7e9, 0x0021df], + }, + BigNum { + limbs: [0x29f6779cbe3cee50df9925dcf2a32c, 0x5c422ae049929893a83fe0e4945804, 0x006de1], + }, + BigNum { + limbs: [0x93ad8b63401f10af2066d9230d5cd5, 0x4b10febd33b59aa62fc828bd43ad4f, 0x00060c], + }, + BigNum { + limbs: [0x1c29ca120a5e788da46467972393bf, 0x37a599bc3caad9f3d4cbc2d492945a, 0x006d29], + }, + BigNum { + limbs: [0xa17a38edf3fd86725b9b9768dc6c42, 0x6fad8fe1409d5946033c46cd4570f9, 0x0006c4], + }, + BigNum { + limbs: [0x8bdc93a30df3b872ba7cd748c22385, 0x0d6b5a03665f72c462365d4b3dd6b5, 0x0015a8], + }, + BigNum { + limbs: [0x31c76f5cf068468d458327b73ddc7c, 0x99e7cf9a16e8c07575d1ac569a2e9e, 0x005e45], + }, + BigNum { + limbs: [0x594d11234a23b7fd8eaaee8a4332e5, 0x6bbb0c03c90c1fc1bd3e89411619ec, 0x00539f], + }, + BigNum { + limbs: [0x6456f1dcb438470271551075bccd1c, 0x3b981d99b43c13781ac98060c1eb67, 0x00204e], + }, + BigNum { + limbs: [0xbe36f366cdac04fe33f22717ae9a38, 0x1bf270758c7cedda892c24b801fffa, 0x001fcf], + }, + BigNum { + limbs: [0xff6d0f9930affa01cc0dd7e85165c9, 0x8b60b927f0cb455f4edbe4e9d60558, 0x00541e], + }, + BigNum { + limbs: [0xa2bc16d1f444dd3d8631f87a66bd9b, 0xb86c4fe25686801afb3bb037c2a2a3, 0x006d81], + }, + BigNum { + limbs: [0x1ae7ec2e0a1721c279ce0685994266, 0xeee6d9bb26c1b31edccc596a1562b0, 0x00066b], + }, + BigNum { + limbs: [0x429fc4b615dc88fbaeb3bdb102cf18, 0x62c9a6820e51c2d5d0d5ef27c7e4d5, 0x003b8b], + }, + BigNum { + limbs: [0x7b043e49e87f7604514c414efd30e9, 0x4489831b6ef6706407321a7a10207e, 0x003862], + }, + BigNum { + limbs: [0xf771c7881bf39e9792c9e792201cec, 0xf49510f16df834c2564b0fa575d528, 0x000708], + }, + BigNum { + limbs: [0xc6323b77e26860686d36176ddfe315, 0xb2be18ac0f4ffe7781bcf9fc62302a, 0x006ce4], + }, + BigNum { + limbs: [0x032279af1aaeba30316f6a5cbe727c, 0xe71dd75bc2ecd64c8f0c367f618e97, 0x000c66], + }, + BigNum { + limbs: [0xba818950e3ad44cfce9094a3418d85, 0xc0355241ba5b5ced48fbd3227676bc, 0x006786], + }, + BigNum { + limbs: [0x95285f31f3aad9c2b862b5a29aa404, 0x4aebd7d15d91b9f6a3756239a7394f, 0x005c5c], + }, + BigNum { + limbs: [0x287ba3ce0ab1253d479d495d655bfd, 0x5c6751cc1fb679433492a76830cc04, 0x001791], + }, + BigNum { + limbs: [0x5e256b68b3e8a4cd3a2a932e00323d, 0x168e51f06071676c71539cd85de38c, 0x001e97], + }, + BigNum { + limbs: [0x5f7e97974a735a32c5d56bd1ffcdc4, 0x90c4d7ad1cd6cbcd66b46cc97a21c7, 0x005556], + }, + BigNum { + limbs: [0x87e437986d307d92538c02aa2f6e16, 0xb672f7fb05252c5e0d6a5b267af071, 0x006080], + }, + BigNum { + limbs: [0x35bfcb67912b816dac73fc55d091eb, 0xf0e031a2782306dbca9dae7b5d14e2, 0x00136c], + }, + BigNum { + limbs: [0x0c2482681b3eecc7d230d176d2502b, 0xd166744e9433dbc0ece48bd069c490, 0x005a31], + }, + BigNum { + limbs: [0xb17f8097e31d12382dcf2d892dafd6, 0xd5ecb54ee9145778eb237dd16e40c3, 0x0019bb], + }, + BigNum { + limbs: [0x86b8b99e949a02a08d6542914ee68a, 0x2a3b847f9576527c4feb08776b8971, 0x001129], + }, + BigNum { + limbs: [0x36eb496169c1fc5f729abc6eb11977, 0x7d17a51de7d1e0bd881d012a6c7be2, 0x0062c4], + }, + BigNum { + limbs: [0x4dcb7d01ac2baaa6a808ecba9ac50b, 0x596e3a73a678b5b2804924315b5201, 0x002545], + }, + BigNum { + limbs: [0x6fd885fe5230545957f71245653af6, 0x4de4ef29d6cf7d8757bee5707cb352, 0x004ea8], + }, + BigNum { + limbs: [0xac76cc4049dd79650254e725ec2473, 0x0e33010313dbc8d859f57cc1de01fe, 0x005030], + }, + BigNum { + limbs: [0x112d36bfb47e859afdab17da13db8e, 0x9920289a696c6a617e128cdffa0355, 0x0023bd], + }, + BigNum { + limbs: [0x998959ee6be9e2410139dd5d09fffd, 0xf17cbc4b985729a80acaddf2df26ce, 0x001503], + }, + BigNum { + limbs: [0x241aa91192721cbefec621a2f60004, 0xb5d66d51e4f10991cd3d2baef8de85, 0x005ee9], + }, + BigNum { + limbs: [0x71139ca7d67729c5bde460a2bdde47, 0x104a66cf8ad94927833498c5a6b856, 0x002bf7], + }, + BigNum { + limbs: [0x4c90665827e4d53a421b9e5d4221ba, 0x9708c2cdf26eea1254d370dc314cfd, 0x0047f6], + }, + BigNum { + limbs: [0x8b90011d36f27ab1f8b0fada34ec97, 0xa849a2a72f072104cea55f96f8dc55, 0x0036a4], + }, + BigNum { + limbs: [0x321401e2c769844e074f0425cb136a, 0xff0986f64e4112350962aa0adf28fe, 0x003d48], + }, + BigNum { + limbs: [0xefe96b3eb765c50b865660e5468565, 0xdc08604089a07e4077bf84d06c3ecf, 0x007390], + }, + BigNum { + limbs: [0xcdba97c146f639f479a99e1ab97a9c, 0xcb4ac95cf3a7b4f9604884d16bc683, 0x00005c], + }, + BigNum { + limbs: [0xdefcb7f945a2551e66a066094d7636, 0x02f3870607e14fa3bbdd211d8337d4, 0x004421], + }, + BigNum { + limbs: [0xdea74b06b8b9a9e1995f98f6b289cb, 0xa45fa2977566e3961c2ae88454cd7e, 0x002fcc], + }, + BigNum { + limbs: [0x5822b64e0b9b26373a682660761944, 0xa7eef5328e8818fe26781cf3ff9137, 0x001c36], + }, + BigNum { + limbs: [0x65814cb1f2c0d8c8c597d89f89e6bd, 0xff64346aeec01a3bb18fecadd8741c, 0x0057b6], + }, + BigNum { + limbs: [0xfb335a0dcf92b2fc5c7a8d9430e9cb, 0xa76183551e88d8097dcb514c5654dd, 0x005f25], + }, + BigNum { + limbs: [0xc270a8f22ec94c03a385716bcf1636, 0xfff1a6485ebf5b305a3cb85581b075, 0x0014c7], + }, + BigNum { + limbs: [0x31363172d494c26fb839a9faf8188e, 0x2c9f639a3a5ab566a93088cd7eb1c4, 0x006c1a], + }, + BigNum { + limbs: [0x8c6dd18d29c73c9047c6550507e773, 0x7ab3c60342ed7dd32ed780d459538f, 0x0007d3], + }, + BigNum { + limbs: [0xaa1c87567b5903e83915b2035faea7, 0x57b15ac7081ca9b60f8f2c9fb54863, 0x0048b0], + }, + BigNum { + limbs: [0x13877ba98302fb17c6ea4cfca0515a, 0x4fa1ced6752b8983c878dd0222bcf0, 0x002b3d], + }, + BigNum { + limbs: [0xafbb716bbc387cca1310530cc044fa, 0x5601643b2882d8a0074dfb20e2d164, 0x00211f], + }, + BigNum { + limbs: [0x0de8919442238235ecefabf33fbb07, 0x5151c56254c55a99d0ba0e80f533ef, 0x0052ce], + }, + BigNum { + limbs: [0x10e1a8f2f64bf41a2ef73c66cbb7c6, 0x8f02f37c8d2455ee9f580df9527030, 0x00173a], + }, + BigNum { + limbs: [0xacc25a0d08100ae5d108c29934483b, 0x18503620f023dd4b38affba8859523, 0x005cb3], + }, + BigNum { + limbs: [0xa6122f655c997c2d3f94e98ca49bbb, 0xde0653949e912e81c1c7698c577526, 0x00143d], + }, + BigNum { + limbs: [0x1791d39aa1c282d2c06b15735b6446, 0xc94cd608deb704b81640a01580902d, 0x005faf], + }, + BigNum { + limbs: [0x1124d405bf7aabdf8d55151ef4f9ec, 0xc3c3bed53d882ad9387c916f12854a, 0x002055], + }, + BigNum { + limbs: [0xac7f2efa3ee1532072aae9e10b0615, 0xe38f6ac83fc008609f8b7832c58009, 0x005397], + }, + BigNum { + limbs: [0x2c74299a10e7c95e09090a764f6390, 0xbfebc2782a92610f3e639653fe3c1c, 0x006efc], + }, + BigNum { + limbs: [0x912fd965ed7435a1f6f6f489b09c71, 0xe767672552b5d22a99a4734dd9c937, 0x0004f0], + }, + BigNum { + limbs: [0x886bbc04a47c4088112f52fe2c4432, 0x3dfdc5b94c147f938adf9e252d8003, 0x006eef], + }, + BigNum { + limbs: [0x353846fb59dfbe77eed0ac01d3bbcf, 0x695563e43133b3a64d286b7caa8550, 0x0004fe], + }, + BigNum { + limbs: [0xbd0f5c286ae03a2c5fd0ee29a61068, 0x4b0ce3eea8ca794fdc040507aba85a, 0x003012], + }, + BigNum { + limbs: [0x0094a6d7937bc4d3a02f10d659ef99, 0x5c4645aed47db9e9fc04049a2c5cf9, 0x0043db], + }, + BigNum { + limbs: [0x36b7edd690eb355bbdd1528660c72d, 0x4bd9de921697a1e738e2f329ab8e0b, 0x001152], + }, + BigNum { + limbs: [0x86ec15296d70c9a4422eac799f38d4, 0x5b794b0b66b091529f2516782c7748, 0x00629b], + }, + BigNum { + limbs: [0xd72ad65f46d726783ee4e9030b121d, 0x4f5a2a19f612bc5b54bb9d04899f77, 0x0032ec], + }, + BigNum { + limbs: [0xe6792ca0b784d887c11b15fcf4ede4, 0x57f8ff83873576de834c6c9d4e65db, 0x004101], + }, + BigNum { + limbs: [0xc38dc29ee64919bd5b0d2da1fdb04f, 0xadda3175e8ed6509386b35e64b9e42, 0x005508], + }, + BigNum { + limbs: [0xfa1640611812e542a4f2d15e024fb2, 0xf978f827945ace309f9cd3bb8c6710, 0x001ee4], + }, + BigNum { + limbs: [0x8e7c5ddb1443d706f0db8c7121f9f3, 0x81191b6befa46edbc381958375eb7d, 0x001666], + }, + BigNum { + limbs: [0x2f27a524ea1827f90f24728ede060e, 0x263a0e318da3c45e1486741e6219d6, 0x005d87], + }, + BigNum { + limbs: [0x362129fcf80f3a0c35fe1ecc54fea6, 0x7330eb7307e28a976c40c41df52101, 0x00446d], + }, + BigNum { + limbs: [0x8782d903064cc4f3ca01e033ab015b, 0x34223e2a7565a8a26bc74583e2e452, 0x002f80], + }, + BigNum { + limbs: [0x896469b6669563c15ccddff613e6c3, 0x5ad7346c2a74d501f59804e685491d, 0x0045ad], + }, + BigNum { + limbs: [0x343f994997c69b3ea3321f09ec193e, 0x4c7bf53152d35e37e27004bb52bc36, 0x002e40], + }, + BigNum { + limbs: [0x71eca35d5272bc11b2b030ee121117, 0xac36dbd7d8ed6f40d43527acf89d16, 0x004c3a], + }, + BigNum { + limbs: [0x4bb75fa2abe942ee4d4fce11edeeea, 0xfb1c4dc5a45ac3f903d2e1f4df683d, 0x0027b2], + }, + BigNum { + limbs: [0x02b20f5415c8edfd3888c1a912f735, 0x7dd6b49f8d01590557dbc7ff3a72c5, 0x007263], + }, + BigNum { + limbs: [0xbaf1f3abe8931102c7773d56ed08cc, 0x297c74fdf046da34802c41a29d928e, 0x00018a], + }, + BigNum { + limbs: [0x07af22564f84f8f83aecc92580b8aa, 0x5a42aef9c0269ffb74496a8aa8d45f, 0x004f6e], + }, + BigNum { + limbs: [0xb5f4e0a9aed70607c51335da7f4757, 0x4d107aa3bd21933e63be9f172f30f4, 0x00247f], + }, + BigNum { + limbs: [0x9c70269bbd114690350f4e3f8df6a5, 0x89e17d7aec42fb14952aba78db9462, 0x0017ca], + }, + BigNum { + limbs: [0x2133dc64414ab86fcaf0b0c072095c, 0x1d71ac229105382542dd4f28fc70f1, 0x005c23], + }, + BigNum { + limbs: [0x5984f698b67a4f84e0147535fc4cc7, 0x9fb480cf1962424ccc9781abb5d4bd, 0x005cc5], + }, + BigNum { + limbs: [0x641f0c6747e1af7b1feb89ca03b33a, 0x079ea8ce63e5f0ed0b7087f6223096, 0x001728], + }, + BigNum { + limbs: [0xcc3eb7bca53cba14e4436934073cf8, 0xa29cc0a9b176bab082cf14139ca439, 0x000be1], + }, + BigNum { + limbs: [0xf1654b43591f44eb1bbc95cbf8c309, 0x04b668f3cbd178895538f58e3b6119, 0x00680c], + }, + BigNum { + limbs: [0x577ec3fec64b94ffa0768034358069, 0x2f0427377bf2559ffc5a62719e22db, 0x001c74], + }, + BigNum { + limbs: [0x66253f0138106a005f897ecbca7f98, 0x784f02660155dd99dbada73039e278, 0x005779], + }, + BigNum { + limbs: [0x336422fb2484bea951fae8db934564, 0x8cfc63f4ce5809a7f4331ef665f6ff, 0x002060], + }, + BigNum { + limbs: [0x8a3fe004d9d74056ae0516246cba9d, 0x1a56c5a8aef02991e3d4eaab720e54, 0x00538d], + }, + BigNum { + limbs: [0x2fee58775d07250cdf6a3a35ecf57f, 0x5f739bcb6b817b150a3d799a20a549, 0x001e1e], + }, + BigNum { + limbs: [0x8db5aa88a154d9f32095c4ca130a82, 0x47df8dd211c6b824cdca9007b7600a, 0x0055cf], + }, + BigNum { + limbs: [0xacd165ded9ee4bee85bd9f44eadafc, 0x8c66cae96230cc8ca46d95273f8560, 0x0043aa], + }, + BigNum { + limbs: [0x10d29d21246db3117a425fbb152505, 0x1aec5eb41b1766ad339a747a987ff3, 0x003043], + }, + BigNum { + limbs: [0xa62701b792b4b927428087510b4690, 0x4dfbddaa0f7018a5f6c9d6ee753c3a, 0x000c3e], + }, + BigNum { + limbs: [0x177d01486ba745d8bd7f77aef4b971, 0x59574bf36dd81a93e13e32b362c919, 0x0067af], + }, + BigNum { + limbs: [0x2bb8a6efad1e27f723ac02bc953aad, 0x19512cc16fca078fe779deb9655e56, 0x0027db], + }, + BigNum { + limbs: [0x91eb5c10513dd708dc53fc436ac554, 0x8e01fcdc0d7e2ba9f08e2ae872a6fd, 0x004c12], + }, + BigNum { + limbs: [0x4b2cfa769fd7090da3400381fcc74e, 0x37ba404a0d987ba20ac46f869f0e03, 0x002a5f], + }, + BigNum { + limbs: [0x727708895e84f5f25cbffb7e0338b3, 0x6f98e9536fafb797cd439a1b38f750, 0x00498e], + }, + BigNum { + limbs: [0x4c63965a705ecf9e985c7e18ed3d94, 0x676f45ec4c4be580c83d05f64c7819, 0x00641b], + }, + BigNum { + limbs: [0x71406ca58dfd2f6167a380e712c26d, 0x3fe3e3b130fc4db90fcb03ab8b8d3a, 0x000fd2], + }, + BigNum { + limbs: [0x40a5a6bee95b75b0a24612e823d13d, 0xb243df1e9853a678f914d4d20ec0cd, 0x004d3d], + }, + BigNum { + limbs: [0x7cfe5c411500894f5db9ec17dc2ec4, 0xf50f4a7ee4f48cc0def334cfc94486, 0x0026af], + }, + BigNum { + limbs: [0xe486ab9c1d181d325a4c24c7ca7cc7, 0x380a113e0de0bb589129ecd866e89a, 0x0004e7], + }, + BigNum { + limbs: [0xd91d5763e143e1cda5b3da3835833a, 0x6f49185f6f6777e146de1cc9711cb8, 0x006f06], + }, + BigNum { + limbs: [0xdad8d7196fb3f65c1941863d1168cd, 0x90308f169ce69e837a858ba1f4dbec, 0x0014da], + }, + BigNum { + limbs: [0xe2cb2be68ea808a3e6be78c2ee9734, 0x17229a86e06194b65d827dffe32966, 0x005f13], + }, + BigNum { + limbs: [0x74bd923dc36a592cc0d7becb4f8876, 0x61262f282dcae92f7171df3b47edda, 0x005b1b], + }, + BigNum { + limbs: [0x48e670c23af1a5d33f284034b0778b, 0x462cfa754f7d4a0a66962a66901779, 0x0018d2], + }, + BigNum { + limbs: [0x6d7db0e788ca47358d0356fe5c9dd1, 0x3bf5a632c343afe3c67ccb9bc555d5, 0x004101], + }, + BigNum { + limbs: [0x502652187591b7ca72fca801a36230, 0x6b5d836aba048356118b3e0612af7e, 0x0032ec], + }, + BigNum { + limbs: [0x8478c058ba081aa9a5318b553b5055, 0x204b4d180e5fafaf710124fe64cc2f, 0x00303b], + }, + BigNum { + limbs: [0x392b42a74453e4565ace73aac4afac, 0x8707dc856ee8838a6706e4a3733924, 0x0043b2], + }, + BigNum { + limbs: [0xdedeaa3d44c908d6481057712b62db, 0xae5fdb8f2f3d6ddcbaedc9453e96d0, 0x001bb7], + }, + BigNum { + limbs: [0xdec558c2b992f629b7efa78ed49d26, 0xf8f34e0e4e0ac55d1d1a405c996e82, 0x005835], + }, + BigNum { + limbs: [0xc6be59ee6c4978fab7b69fb529b7e3, 0x6c09a50cc22023fa498ade54827584, 0x006aeb], + }, + BigNum { + limbs: [0xf6e5a9119212860548495f4ad6481e, 0x3b498490bb280f3f8e7d2b4d558fce, 0x000902], + }, + BigNum { + limbs: [0x8f864a71161064a192553890378d77, 0x17ee086c6e073fd463744dfe796c4c, 0x004698], + }, + BigNum { + limbs: [0x2e1db88ee84b9a5e6daac66fc8728a, 0x8f6521310f40f3657493bba35e9907, 0x002d55], + }, + BigNum { + limbs: [0x9a9969bef61c7030607eed4e106241, 0xd1f0e3ff52986368034091730c6b9d, 0x000b2c], + }, + BigNum { + limbs: [0x230a9941083f8ecf9f8111b1ef9dc0, 0xd562459e2aafcfd1d4c7782ecb99b6, 0x0068c0], + }, + BigNum { + limbs: [0x507e6d99ae9fb5cf3f5b54b4aec959, 0x04f0408c123beba4f8ff3b7a8c1be7, 0x00027f], + }, + BigNum { + limbs: [0x6d2595664fbc4930c0a4aa4b5136a8, 0xa262e9116b0c4794df08ce274be96c, 0x00716e], + }, + BigNum { + limbs: [0xd9ded9e5b846364876072015b5eb65, 0xf33c820d1972523c36cb307c474c66, 0x002c3d], + }, + BigNum { + limbs: [0xe3c5291a4615c8b789f8deea4a149c, 0xb416a79063d5e0fda13cd92590b8ec, 0x0047af], + }, + BigNum { + limbs: [0xeb1be306684058ab89474dafefa2eb, 0xad8e0aff72fddd5f394035f10efc55, 0x004171], + }, + BigNum { + limbs: [0xd2881ff9961ba65476b8b150105d16, 0xf9c51e9e0a4a55da9ec7d3b0c908fd, 0x00327b], + }, + BigNum { + limbs: [0x254f5541ef7930a331a41b73f7abaa, 0xc571ec70792379996efebe4f0acfa9, 0x002115], + }, + BigNum { + limbs: [0x9854adbe0ee2ce5cce5be38c085457, 0xe1e13d2d0424b9a069094b52cd35aa, 0x0052d7], + }, + BigNum { + limbs: [0xb41f6fa66c6185499dc9307637db4e, 0x33aa2adfa3d536b7641585985e553c, 0x000617], + }, + BigNum { + limbs: [0x0984935991fa79b66236ce89c824b3, 0x73a8febdd972fc8273f2840979b017, 0x006dd6], + }, + BigNum { + limbs: [0xf9ceeec6dcc80182ea775599840a35, 0xfeed9f0db0a00b8ee40fc17a7860b4, 0x00597c], + }, + BigNum { + limbs: [0xc3d514392193fd7d1588a9667bf5cc, 0xa8658a8fcca827aaf3f848275fa49e, 0x001a70], + }, + BigNum { + limbs: [0x7c3afc63865e0d5abea05493f97fa6, 0x8700c692c174b22a86412d8ed07cee, 0x0040a9], + }, + BigNum { + limbs: [0x4169069c77fdf1a5415faa6c06805b, 0x2052630abbd3810f51c6dc13078865, 0x003344], + }, + BigNum { + limbs: [0x6fce9cfc06ce536b61e1f83655b4f5, 0xd69266a9fcde925a42a6d3f34fed4c, 0x0040d7], + }, + BigNum { + limbs: [0x4dd56603f78dab949e1e06c9aa4b0c, 0xd0c0c2f38069a0df956135ae881807, 0x003315], + }, + BigNum { + limbs: [0x6da96883a873462ccc2c2cf47c63df, 0x9ad5a4f61993a52471a84bb496a6c3, 0x0007f6], + }, + BigNum { + limbs: [0x4ffa9a7c55e8b8d333d3d20b839c22, 0x0c7d84a763b48e15665fbded415e90, 0x006bf7], + }, + BigNum { + limbs: [0xcdadabd0b38af56c035d9eab203dbe, 0x7ca455960f91959b712aca7c881bfe, 0x0021b1], + }, + BigNum { + limbs: [0xeff6572f4ad10993fca26054dfc243, 0x2aaed4076db69d9e66dd3f254fe954, 0x00523c], + }, + BigNum { + limbs: [0xe00594924fb402d6cd14fd27e25700, 0x44261676fcc9f3bc3df6273fd94bd1, 0x003186], + }, + BigNum { + limbs: [0xdd9e6e6daea7fc2932eb01d81da901, 0x632d1326807e3f7d9a11e261feb981, 0x004267], + }, + BigNum { + limbs: [0x0ee7d30e12b23d1ab447818017f222, 0xc6b854445b5ea6798aa04ee79bdb41, 0x0068aa], + }, + BigNum { + limbs: [0xaebc2ff1eba9c1e54bb87d7fe80ddf, 0xe09ad55921e98cc04d67baba3c2a12, 0x000b42], + }, + BigNum { + limbs: [0xfea3e5c0c9365a897755321979df0f, 0x1526811d79ccb36c6e20369d140fc1, 0x00306c], + }, + BigNum { + limbs: [0xbf001d3f3525a47688aacce68620f2, 0x922ca880037b7fcd69e7d304c3f591, 0x004381], + }, + BigNum { + limbs: [0x749a7cd475fcba89e3a03ed602252d, 0x3d4724f28a112be91e58eee71d4355, 0x006a7a], + }, + BigNum { + limbs: [0x4909862b885f44761c5fc029fddad4, 0x6a0c04aaf3370750b9af1ababac1fe, 0x000973], + }, + BigNum { + limbs: [0x0f1173523113cd28d02344081ebd9c, 0x6aa34cdcd1600752f686c03aab1979, 0x0072a9], + }, + BigNum { + limbs: [0xae928fadcd4831d72fdcbaf7e14265, 0x3cafdcc0abe82be6e18149672cebda, 0x000144], + }, + BigNum { + limbs: [0x19809deb59fb23d7cd720d549ab2eb, 0x7b346cc7e5c436afd1adf36438b891, 0x001f2d], + }, + BigNum { + limbs: [0xa4236514a460db28328df1ab654d16, 0x2c1ebcd59783fc8a065a163d9f4cc2, 0x0054c0], + }, + BigNum { + limbs: [0x61c74f88aecaa3f8518c32a0f5203d, 0x2e03ec6552ab659ae7550d5fbfbdcb, 0x001264], + }, + BigNum { + limbs: [0x5bdcb3774f915b07ae73cc5f0adfc4, 0x794f3d382a9ccd9ef0b2fc42184788, 0x006189], + }, + BigNum { + limbs: [0x0f7509eb12bf7a12d6b6c03800e954, 0xd14a7eea8bf2615934146cd481131e, 0x006ced], + }, + BigNum { + limbs: [0xae2ef914eb9c84ed29493ec7ff16ad, 0xd608aab2f155d1e0a3f39ccd56f235, 0x0006ff], + }, + BigNum { + limbs: [0x5972f0c64c836900ff94c5632452fe, 0xb39695b0958edb6e036992fd59a041, 0x000050], + }, + BigNum { + limbs: [0x64311239b1d895ff006b399cdbad03, 0xf3bc93ece7b957cbd49e76a47e6512, 0x00739c], + }, + BigNum { + limbs: [0x82918a1275e4859be951ce740d7fdb, 0xba9bb0ed7d9163545d0bf99fcaa395, 0x0056d7], + }, + BigNum { + limbs: [0x3b1278ed8877796416ae308bf28026, 0xecb778afffb6cfe57afc10020d61be, 0x001d15], + }, + BigNum { + limbs: [0x1601a76229c1adfbecb0a04cff1fd5, 0x7a5cdde8aca2e66faae39b39c088f7, 0x00292f], + }, + BigNum { + limbs: [0xa7a25b9dd49a5104134f5eb300e02c, 0x2cf64bb4d0a54cca2d246e68177c5c, 0x004abe], + }, + BigNum { + limbs: [0xb612d30c081aabf34e05525f877021, 0x4bfe667932157f92916e86d96b6930, 0x004bf2], + }, + BigNum { + limbs: [0x07912ff3f641530cb1faaca0788fe0, 0x5b54c3244b32b3a7469982c86c9c23, 0x0027fb], + }, + BigNum { + limbs: [0xd5ea380ce32e6b2dd42bd931d880fa, 0xe427c36951f6d473cff7407c6dcfb4, 0x006e88], + }, + BigNum { + limbs: [0xe7b9caf31b2d93d22bd425ce277f07, 0xc32b66342b515ec60810c9256a359e, 0x000564], + }, + BigNum { + limbs: [0x0f84475022fe939470465bee013097, 0x58bad03c9dbd58155a83a8ea6c3390, 0x002cda], + }, + BigNum { + limbs: [0xae1fbbafdb5d6b6b8fb9a311fecf6a, 0x4e985960df8adb247d8460b76bd1c3, 0x004713], + }, + BigNum { + limbs: [0xa16ef813f31e5f83b68b581d21fd33, 0xd5284c1600d347aae07d7872a6391a, 0x005202], + }, + BigNum { + limbs: [0x1c350aec0b3d9f7c4974a6e2de02ce, 0xd22add877c74eb8ef78a912f31cc39, 0x0021ea], + }, + BigNum { + limbs: [0x48051e0746d4d27634d53c101b484f, 0x274c05b653d0979001b1a9c1802b67, 0x00425b], + }, + BigNum { + limbs: [0x759ee4f8b7872c89cb2ac2efe4b7b2, 0x800723e729779ba9d6565fe057d9ec, 0x003192], + }, + BigNum { + limbs: [0x8503100bf4f456b35f7bf5575c7b23, 0x45cdf7a9ba4cf1bf9c0b78cfea72b9, 0x006f01], + }, + BigNum { + limbs: [0x38a0f2f40967a84ca08409a8a384de, 0x618531f3c2fb417a3bfc90d1ed929a, 0x0004ec], + }, + BigNum { + limbs: [0xf49d1fef18fe446a96b2f8aba94ca5, 0x0381d5637adbe052493f508ebbd64e, 0x005062], + }, + BigNum { + limbs: [0xc906e310e55dba95694d065456b35c, 0xa3d1543a026c52e78ec8b9131c2f04, 0x00238b], + }, + BigNum { + limbs: [0xe70398715625d1fe45dab729efaea5, 0x48d147f9e07b866b74814bbc6fc20e, 0x00284b], + }, + BigNum { + limbs: [0xd6a06a8ea8362d01ba2547d610515c, 0x5e81e1a39cccacce6386bde5684344, 0x004ba2], + }, + BigNum { + limbs: [0x43e19212b8aa4df3a5ad5791a994d8, 0x540c98122505b6ecd0eb892cffb184, 0x000dd3], + }, + BigNum { + limbs: [0x79c270ed45b1b10c5a52a76e566b29, 0x5346918b58427c4d071c8074d853cf, 0x00661a], + }, + BigNum { + limbs: [0x6bc6576070693cb7d4f57ca8e234d2, 0x78031812872bf13558bc3f0560e2d7, 0x00695a], + }, + BigNum { + limbs: [0x51ddab9f8df2c2482b0a82571dcb2f, 0x2f50118af61c42047f4bca9c77227c, 0x000a93], + }, + BigNum { + limbs: [0xfe1703fe711c29b80e538fb0db8eac, 0xdb43a94f5b7bb38f39714deeb1ae8a, 0x0014bd], + }, + BigNum { + limbs: [0xbf8cff018d3fd547f1ac6f4f247155, 0xcc0f804e21cc7faa9e96bbb32656c8, 0x005f2f], + }, + BigNum { + limbs: [0x24660d2d313d631f591af96e8a7fee, 0xc197a37224f76ca24d962e9700475f, 0x00347c], + }, + BigNum { + limbs: [0x993df5d2cd1e9be0a6e50591758013, 0xe5bb862b5850c6978a71db0ad7bdf4, 0x003f70], + }, + BigNum { + limbs: [0x88d41415a9d2b7905e2d22cc47814f, 0x81307e7897487efc9679d3ae6717af, 0x0029a4], + }, + BigNum { + limbs: [0x34cfeeea5489476fa1d2dc33b87eb2, 0x2622ab24e5ffb43d418e35f370eda4, 0x004a49], + }, + BigNum { + limbs: [0xf108e4ee1b6fb6162787b451688c10, 0x962e55e3bd5fbe8f28ffbc2667540c, 0x000c3d], + }, + BigNum { + limbs: [0xcc9b1e11e2ec48e9d8784aae9773f1, 0x1124d3b9bfe874aaaf084d7b70b146, 0x0067b0], + }, + BigNum { + limbs: [0x206cf9748b83dd96d828215664721a, 0xe83969d643cbcec6ec3b08bdf75cb5, 0x006a6b], + }, + BigNum { + limbs: [0x9d37098b72d8216927d7dda99b8de7, 0xbf19bfc7397c6472ebcd00e3e0a89e, 0x000981], + }, + BigNum { + limbs: [0x44895d478fa9ddd1291c9619ff853a, 0x8c88d24405c2e8c071ee884d75d3a4, 0x004ef4], + }, + BigNum { + limbs: [0x791aa5b86eb2212ed6e368e6007ac7, 0x1aca575977854a79661981546231af, 0x0024f9], + }, + BigNum { + limbs: [0x5a424237cbda19892e38be9f062611, 0x11bc8052d3e3f0c732b4b9a2d2ebd0, 0x000a94], + }, + BigNum { + limbs: [0x6361c0c83281e576d1c74060f9d9f0, 0x9596a94aa9644272a5534fff051983, 0x006959], + }, + BigNum { + limbs: [0x7d89921705901e5de06a0b012d0243, 0x594fdeb2e307f3e1fb2deb76f3bb71, 0x006c45], + }, + BigNum { + limbs: [0x401a70e8f8cbe0a21f95f3fed2fdbe, 0x4e034aea9a403f57dcda1e2ae449e2, 0x0007a8], + }, + BigNum { + limbs: [0xa788bc6d17181423c79bd954755494, 0x0481d07a7e9f35032fbef532789ce5, 0x00611b], + }, + BigNum { + limbs: [0x161b4692e743eadc386425ab8aab6d, 0xa2d15922fea8fe36a849146f5f686e, 0x0012d2], + }, + BigNum { + limbs: [0x1653d1c1bc6e308ea22d6694856daa, 0xb4cc459331ab514ca0d0085bb39e9d, 0x005068], + }, + BigNum { + limbs: [0xa750313e41edce715dd2986b7a9257, 0xf286e40a4b9ce1ed373801462466b6, 0x002384], + }, + BigNum { + limbs: [0x054f3e075b729d81098d794dea5701, 0x6abf41700b9842a65fa559497c8810, 0x004f9d], + }, + BigNum { + limbs: [0xb854c4f8a2e9617ef67285b215a900, 0x3c93e82d71aff0937862b0585b7d43, 0x002450], + }, + BigNum { + limbs: [0x5057d57703f9a87e126235ecd43026, 0x74affe564b7a8b3844deac9ea56431, 0x001736], + }, + BigNum { + limbs: [0x6d4c2d88fa625681ed9dc9132bcfdb, 0x32a32b4731cda80193295d0332a122, 0x005cb7], + }, + BigNum { + limbs: [0xb47dbca9cae90afbe221bbe8b0070f, 0x1707ef01055ae713812af75c3ce340, 0x006e6d], + }, + BigNum { + limbs: [0x092646563372f4041dde43174ff8f2, 0x904b3a9c77ed4c2656dd12459b2213, 0x000580], + }, + BigNum { + limbs: [0x6f364ee6ca599e2a57e7c2e3829f5d, 0xbff09ddfad632d741d8ddfa5d583ef, 0x0061f4], + }, + BigNum { + limbs: [0x4e6db419340260d5a8183c1c7d60a4, 0xe7628bbdcfe505c5ba7a29fc028164, 0x0011f8], + }, + BigNum { + limbs: [0x0b303e3b187bfe2d29236b4aba2c30, 0x7d686e321ed7e2bf66e7d85fbbf104, 0x004f5a], + }, + BigNum { + limbs: [0xb273c4c4e5e000d2d6dc93b545d3d1, 0x29eabb6b5e70507a712031421c144f, 0x002493], + }, + BigNum { + limbs: [0x8af5568bee084eafc9284dc5c825b3, 0x1e8cce6557ae443ba5d28686f073a4, 0x001c5b], + }, + BigNum { + limbs: [0x32aeac741053b05036d7b13a37da4e, 0x88c65b382599eefe3235831ae791af, 0x005792], + }, + BigNum { + limbs: [0x7e09e82f1c3e9d4efb199435cf1951, 0x5d7839b1fcfcf9503d8f57a4d6614e, 0x003b14], + }, + BigNum { + limbs: [0x3f9a1ad0e21d61b104e66aca30e6b0, 0x49daefeb804b39e99a78b1fd01a405, 0x0038d9], + }, + BigNum { + limbs: [0x55d107b1c203eab17bd0bb5bad1182, 0x9c8b5342ec1d44944d3f7324eb7480, 0x001cb9], + }, + BigNum { + limbs: [0x67d2fb4e3c58144e842f43a452ee7f, 0x0ac7d65a912aeea58ac8967cec90d3, 0x005734], + }, + BigNum { + limbs: [0xcc98e5c7db5187d8c1d40bb10adc59, 0xc0675265fa2dfc519755c087a32876, 0x003c33], + }, + BigNum { + limbs: [0xf10b1d38230a77273e2bf34ef523a8, 0xe6ebd737831a36e840b2491a34dcdc, 0x0037b9], + }, + BigNum { + limbs: [0xc2ff3e383faedce4a93fcddb1211f4, 0x208ddf82338cb12eca28a2ee1691e3, 0x0035c4], + }, + BigNum { + limbs: [0xfaa4c4c7bead221b56c03124edee0d, 0x86c54a1b49bb820b0ddf66b3c1736f, 0x003e29], + }, + BigNum { + limbs: [0x770750a3295ce013845fe3e81af4a9, 0x5e069cf1ffd4b20beea0d3d2717cab, 0x0040d6], + }, + BigNum { + limbs: [0x469cb25cd4ff1eec7ba01b17e50b58, 0x494c8cab7d73812de96735cf6688a8, 0x003317], + }, + BigNum { + limbs: [0x4b6d768688f6163f7aef5a8d5a484b, 0xc4e0a34ac8817ca0911d55cb959127, 0x003367], + }, + BigNum { + limbs: [0x72368c797565e8c08510a472a5b7b6, 0xe2728652b4c6b69946eab3d642742c, 0x004085], + }, + BigNum { + limbs: [0x0454e65c549e730c28faecaf1e8d22, 0x56b81cdb2573eb5e4c7cc761dd4520, 0x005d92], + }, + BigNum { + limbs: [0xb94f1ca3a9bd8bf3d7051250e172df, 0x509b0cc257d447db8b8b423ffac033, 0x00165b], + }, + BigNum { + limbs: [0x51ee0472a016488c27b766a60882f9, 0x11507fe896a5498eb71d7559be4c99, 0x0052c2], + }, + BigNum { + limbs: [0x6bb5fe8d5e45b673d8489859f77d08, 0x9602a9b4e6a2e9ab20ea944819b8ba, 0x00212b], + }, + BigNum { + limbs: [0xc5bca14681745c76d754972b0417a7, 0x2f86c9d8d39011f0f8130ff3be0f88, 0x0018f0], + }, + BigNum { + limbs: [0xf7e761b97ce7a28928ab67d4fbe85a, 0x77cc5fc4a9b82148dff4f9ae19f5ca, 0x005afd], + }, + BigNum { + limbs: [0x638559361842718ac62a5b6e5ad517, 0x6fb41d42210a721065e2d58541d8ed, 0x004100], + }, + BigNum { + limbs: [0x5a1ea9c9e6198d7539d5a391a52aea, 0x379f0c5b5c3dc1297225341c962c66, 0x0032ed], + }, + BigNum { + limbs: [0x1950751921323a56171b04b937cdaf, 0x937ddeaca07bc012d70246b27dc065, 0x0024ee], + }, + BigNum { + limbs: [0xa4538de6dd29c4a9e8e4fa46c83252, 0x13d54af0dccc73270105c2ef5a44ee, 0x004eff], + }, + BigNum { + limbs: [0x2a319f1febe961d72e9ae3be101d4a, 0x9c3f07698480401ec4aa8199861df1, 0x004b05], + }, + BigNum { + limbs: [0x937263e012729d28d1651b41efe2b7, 0x0b142233f8c7f31b135d880851e762, 0x0028e8], + }, + BigNum { + limbs: [0x6741faefb9fa2d5aa8609bb6978a8a, 0x21978e244f9d146d95e0e0022b3e03, 0x001a07], + }, + BigNum { + limbs: [0x566208104461d1a5579f6349687577, 0x85bb9b792dab1ecc4227299facc750, 0x0059e6], + }, + BigNum { + limbs: [0x45ddc7c4867210129ed5dca288fdad, 0xda03c2eccc63b00e689f35ee7c4f17, 0x000145], + }, + BigNum { + limbs: [0x77c63b3b77e9eeed612a225d770254, 0xcd4f66b0b0e4832b6f68d3b35bb63c, 0x0072a7], + }, + BigNum { + limbs: [0xb74b780ee14bd5ffd348ed4368ea6b, 0xe856ea5ac03fc0e50bf8399e8a372b, 0x0030c0], + }, + BigNum { + limbs: [0x06588af11d1029002cb711bc971596, 0xbefc3f42bd087254cc0fd0034dce28, 0x00432c], + }, + BigNum { + limbs: [0xb180cc06183fdc238b0dcafb1476da, 0x9abcdc6fffbff88b8ccd41b6fe9072, 0x006dae], + }, + BigNum { + limbs: [0x0c2336f9e61c22dc74f23404eb8927, 0x0c964d2d7d883aae4b3ac7ead974e1, 0x00063f], + }, + BigNum { + limbs: [0xa0aa4b47b65a9aa9b9e943288d1377, 0x1a344d6f5983ebaddafe1ce61a3e55, 0x002139], + }, + BigNum { + limbs: [0x1cf9b7b8480164564616bbd772ec8a, 0x8d1edc2e23c4478bfd09ecbbbdc6fe, 0x0052b4], + }, + BigNum { + limbs: [0xda2c1965bb0e4df3f081d760a857c1, 0x717dde8a10fab09cc8a6d690d6d975, 0x002b2c], + }, + BigNum { + limbs: [0xe377e99a434db10c0f7e279f57a840, 0x35d54b136c4d829d0f613311012bdd, 0x0048c1], + }, + BigNum { + limbs: [0x4b18da6a0cb40d9f323ea3d74cb3ed, 0xd903bc2a828e0a910beaf7801c3c4a, 0x0068a3], + }, + BigNum { + limbs: [0x728b2895f1a7f160cdc15b28b34c14, 0xce4f6d72faba28a8cc1d1221bbc909, 0x000b49], + }, + BigNum { + limbs: [0xdbfda03b545ae6d8953347b71b2763, 0x4045701c2afdeb6b10d0ae8fdb6702, 0x004e58], + }, + BigNum { + limbs: [0xe1a662c4aa0118276accb748e4d89e, 0x670db981524a47cec7375b11fc9e50, 0x002595], + }, + BigNum { + limbs: [0x29f1a50e3889f85141aa86a2a5ecfe, 0xb7b08d8f15ade18c576cea199d2fa8, 0x000189], + }, + BigNum { + limbs: [0x93b25df1c5d206aebe55785d5a1303, 0xefa29c0e679a51ad809b1f883ad5ab, 0x007263], + }, + BigNum { + limbs: [0xb6ef0eb662097c3848f25bc12e55e5, 0x0f09621ec698c303dcd2525aa8e1d5, 0x00207c], + }, + BigNum { + limbs: [0x06b4f4499c5282c7b70da33ed1aa1c, 0x9849c77eb6af7035fb35b7472f237e, 0x005371], + }, + BigNum { + limbs: [0xfee96131f8a2c92461b61f8c172710, 0x3925f9b4c85b4d19a6dc30bd3cf9de, 0x0034d0], + }, + BigNum { + limbs: [0xbebaa1ce05b935db9e49df73e8d8f1, 0x6e2d2fe8b4ece620312bd8e49b0b74, 0x003f1d], + }, + BigNum { + limbs: [0x141e3d346407c47189304e56429ad5, 0xb91199af6c50c47d1bfcf63d8da28f, 0x0056f5], + }, + BigNum { + limbs: [0xa985c5cb9a543a8e76cfb0a9bd652c, 0xee418fee10f76ebcbc0b13644a62c4, 0x001cf7], + }, + BigNum { + limbs: [0x8bc773e8f76ec48f6d8cad9a860cd0, 0x8ac912456e1d8865c216fafad6f949, 0x004228], + }, + BigNum { + limbs: [0x31dc8f1706ed3a709273516579f331, 0x1c8a17580f2aaad415f10ea7010c0a, 0x0031c5], + }, + BigNum { + limbs: [0x0738e3b14d3321adc2f5fb7a0f9779, 0xe3491835bf37c77b9884e9951f09f5, 0x001285], + }, + BigNum { + limbs: [0xb66b1f4eb128dd523d0a0385f06888, 0xc40a1167be106bbe3f83200cb8fb5e, 0x006167], + }, + BigNum { + limbs: [0xede3c44914fead6b72120c1df2a4b7, 0xe8be4df796d59f6c51b91a1bb80965, 0x0057f2], + }, + BigNum { + limbs: [0xcfc03eb6e95d51948dedf2e20d5b4a, 0xbe94dba5e67293cd864eef861ffbed, 0x001bfa], + }, + BigNum { + limbs: [0x02db433ead26c61eff4e410f51f541, 0xac8c4cf028e96b55b53b85b3aaaf65, 0x004f11], + }, + BigNum { + limbs: [0xbac8bfc1513538e100b1bdf0ae0ac0, 0xfac6dcad545ec7e422cc83ee2d55ee, 0x0024db], + }, + BigNum { + limbs: [0xcdd406650e46c8d98b75fb7861f2ca, 0x7cbfb59eea4ac9eaecdc39624a74d6, 0x00337d], + }, + BigNum { + limbs: [0xefcffc9af0153626748a03879e0d37, 0x2a9373fe92fd694eeb2bd03f8d907c, 0x004070], + }, + BigNum { + limbs: [0xa5bc30f24fec3acc3d6f4f809b0a53, 0x6ed642e8c59a514c846d5f0e44976d, 0x002013], + }, + BigNum { + limbs: [0x17e7d20dae6fc433c290af7f64f5ae, 0x387ce6b4b7ade1ed539aaa93936de6, 0x0053da], + }, + BigNum { + limbs: [0xdeb7a80902a9c5efdf3ccfe8e53a24, 0x1a50f8bb8a7d92a4ae617d426c9358, 0x0070ba], + }, + BigNum { + limbs: [0xdeec5af6fbb2391020c32f171ac5dd, 0x8d0230e1f2caa09529a68c5f6b71fa, 0x000333], + }, + BigNum { + limbs: [0x682f007f22bb81fdd7ada825dfd8e9, 0xba432991de5065a9a51a6b3c1aee25, 0x003c87], + }, + BigNum { + limbs: [0x55750280dba07d02285256da202718, 0xed10000b9ef7cd9032ed9e65bd172e, 0x003765], + }, + BigNum { + limbs: [0xdc15430c03b1e93f800f008fb12ae6, 0xab089b07419bb6f14d619c69d89866, 0x00665b], + }, + BigNum { + limbs: [0xe18ebff3faaa15c07ff0fe704ed51b, 0xfc4a8e963bac7c488aa66d37ff6cec, 0x000d91], + }, + BigNum { + limbs: [0x9e920fb609ba358d5ceacfe1dffb42, 0x817f573e38be9b763b9e8a078d875c, 0x004094], + }, + BigNum { + limbs: [0x1f11f349f4a1c972a3152f1e2004bf, 0x25d3d25f448997c39c697f9a4a7df7, 0x003359], + }, + BigNum { + limbs: [0x5f4c56d978347b10decd73542a05fd, 0x12ef8c4b82539a2ef0ffba88222629, 0x005c58], + }, + BigNum { + limbs: [0x5e57ac26862783ef21328babd5fa04, 0x94639d51faf4990ae7084f19b5df2a, 0x001795], + }, + BigNum { + limbs: [0x1a0584cc517b2805c42dc5891560a9, 0x9d33e7931ce4ecbc30602b356bce70, 0x0016b0], + }, + BigNum { + limbs: [0xa39e7e33ace0d6fa3bd23976ea9f58, 0x0a1f420a6063467da7a7de6c6c36e3, 0x005d3d], + }, + BigNum { + limbs: [0x628e600a788e04ab750b85650ebd1b, 0x45839982795b2e6635a42125b2c691, 0x004faf], + }, + BigNum { + limbs: [0x5b15a2f585cdfa548af4799af142e6, 0x61cf901b03ed04d3a263e87c253ec2, 0x00243e], + }, + BigNum { + limbs: [0x5fd0a3184059075334c20cef94dd35, 0x069a3f7275ed6f16b28321f60d75c3, 0x001a8e], + }, + BigNum { + limbs: [0x5dd35fe7be02f7accb3df2106b22cc, 0xa0b8ea2b075ac4232584e7abca8f90, 0x00595f], + }, + BigNum { + limbs: [0x5321e5ff1832016c9ec31e57800535, 0x6fde6d9f8cf58100484127999969e6, 0x0058d2], + }, + BigNum { + limbs: [0x6a821d00e629fd93613ce0a87ffacc, 0x3774bbfdf052b2398fc6e2083e9b6d, 0x001b1b], + }, + BigNum { + limbs: [0x24e42aa8d5aec08ce356eec0b581c3, 0x96482f24fb2a6806482acecf123181, 0x004ad6], + }, + BigNum { + limbs: [0x98bfd85728ad3e731ca9103f4a7e3e, 0x110afa78821dcb338fdd3ad2c5d3d2, 0x002917], + }, + BigNum { + limbs: [0x346f499430ac3e8834e343be816ade, 0x1c7a1e79b28af076c80674fbea502b, 0x003324], + }, + BigNum { + limbs: [0x8934b96bcdafc077cb1cbb417e9523, 0x8ad90b23cabd42c3100194a5edb528, 0x0040c9], + }, + BigNum { + limbs: [0x57918f034022d6713037f8b64415e9, 0x19fd78f51a8800de167d51cdd33239, 0x0000b2], + }, + BigNum { + limbs: [0x661273fcbe39288ecfc80649bbea18, 0x8d55b0a862c0325bc18ab7d404d31a, 0x00733b], + }, + BigNum { + limbs: [0xf59be099efbbbf1e9ee7f422718376, 0x28cf3247eb4450669afedabf51d50f, 0x006d6b], + }, + BigNum { + limbs: [0xc80822660ea03fe161180add8e7c8b, 0x7e83f7559203e2d33d092ee2863043, 0x000682], + }, + BigNum { + limbs: [0x717496b394e228bde1fcdaa1e27c0c, 0xc92134ed8fe810bde4e31b054a62bd, 0x001f39], + }, + BigNum { + limbs: [0x4c2f6c4c6979d6421e03245e1d83f5, 0xde31f4afed60227bf324ee9c8da296, 0x0054b3], + }, + BigNum { + limbs: [0x7d09d03af59770f1d0fcc7934e784a, 0xe258d964b59394e25115d08b5a107a, 0x005651], + }, + BigNum { + limbs: [0x409a32c508c48e0e2f03376cb187b7, 0xc4fa5038c7b49e5786f239167df4d9, 0x001d9b], + }, + BigNum { + limbs: [0xaaeb71ec0f716e68b025c69346bf09, 0x88ac099cc542dbc85d2e72f3dee770, 0x0004ca], + }, + BigNum { + limbs: [0x12b89113eeea90974fda386cb940f8, 0x1ea72000b80557717ad996adf91de3, 0x006f23], + }, + BigNum { + limbs: [0x3f0ed736ba61d95846912ad0cd72e8, 0xa976934ab9259ff3085d4c741c88b3, 0x00184a], + }, + BigNum { + limbs: [0x7e952bc943fa25a7b96ed42f328d19, 0xfddc9652c4229346cfaabd2dbb7ca0, 0x005ba2], + }, + BigNum { + limbs: [0x62b291c828ec3ebaf26067815711fc, 0xbb8260b46d2c51e40cbf75a7ee58fd, 0x0062e0], + }, + BigNum { + limbs: [0x5af17137d56fc0450d9f977ea8ee05, 0xebd0c8e9101be155cb4893f9e9ac56, 0x00110c], + }, + BigNum { + limbs: [0xf1944f8062e2362fd7908ad327998c, 0xfae10609ac308c560763e9b339ee02, 0x005d20], + }, + BigNum { + limbs: [0xcc0fb37f9b79c8d0286f742cd86675, 0xac722393d117a6e3d0a41fee9e1750, 0x0016cc], + }, + BigNum { + limbs: [0x238124a0db2fb18fbde3dcc5b9f194, 0x2223c6d14ff1cf5fcb7416a05e18ff, 0x002605], + }, + BigNum { + limbs: [0x9a22de5f232c4d70421c223a460e6d, 0x852f62cc2d5663da0c93f30179ec54, 0x004de8], + }, + BigNum { + limbs: [0x2f181b14aed10ff6e67eefaeab0cff, 0xa75b010005d75274ac3b3a23333006, 0x004d09], + }, + BigNum { + limbs: [0x8e8be7eb4f8aef0919810f5154f302, 0xfff8289d7770e0c52bcccf7ea4d54d, 0x0026e3], + }, + BigNum { + limbs: [0x84f64a6ba25a938975fe3c072f5f5c, 0xbd52dee2d5f7a21bae96e51a32d19d, 0x005087], + }, + BigNum { + limbs: [0x38adb8945c016b768a01c2f8d0a0a5, 0xea004abaa750911e29712487a533b6, 0x002365], + }, + BigNum { + limbs: [0x2ae0e11e73c3f16ca52fc81438540d, 0x08c778383129c0429531c4dd5df66d, 0x001ebd], + }, + BigNum { + limbs: [0x92c321e18a980d935ad036ebc7abf4, 0x9e8bb1654c1e72f742d644c47a0ee6, 0x005530], + }, + BigNum { + limbs: [0xe7fa646df251b192383683e59ecc6a, 0xc7fe5a5827024c14c0e444da9cff88, 0x000ef4], + }, + BigNum { + limbs: [0xd5a99e920c0a4d6dc7c97b1a613397, 0xdf54cf455645e7251723c4c73b05ca, 0x0064f8], + }, + BigNum { + limbs: [0xeef0bcd91847d841253cc2a928d6be, 0x37718307eb1a9579e0bf9778e20bdc, 0x005a0c], + }, + BigNum { + limbs: [0xceb34626e61426bedac33c56d72943, 0x6fe1a695922d9dbff7487228f5f976, 0x0019e1], + }, + BigNum { + limbs: [0xa701b8e3a721e0fefce536fb906424, 0x78afcd6fbd8fcad332db11efc5f13f, 0x00420e], + }, + BigNum { + limbs: [0x16a24a1c573a1e01031ac8046f9bdd, 0x2ea35c2dbfb86866a52cf7b2121414, 0x0031df], + }, + BigNum { + limbs: [0x2703973a98577b707f616b8ee5bc69, 0x35a38c635602c55fbb5a72a5dee0a8, 0x002220], + }, + BigNum { + limbs: [0x96a06bc56604838f809e93711a4398, 0x71af9d3a27456dda1cad96fbf924ab, 0x0051cd], + }, + BigNum { + limbs: [0xd426ce3bc379cebaa02908f78226c1, 0x3b64fc8a8d3697b57a95d72f49a7ec, 0x006531], + }, + BigNum { + limbs: [0xe97d34c43ae230455fd6f6087dd940, 0x6bee2d12f0119b845d7232728e5d66, 0x000ebc], + }, + BigNum { + limbs: [0x1aee8a70a157bc3db5dce28b3ecf15, 0xa940ed13adc86207c5cca3e248bbea, 0x0066a7], + }, + BigNum { + limbs: [0xa2b5788f5d0442c24a231c74c130ec, 0xfe123c89cf7fd132123b65bf8f4969, 0x000d45], + }, + BigNum { + limbs: [0x8d825a7d11480cdc99619927e24871, 0x40afc2350d54fc80dd3fde8f89eaed, 0x0012b8], + }, + BigNum { + limbs: [0x3021a882ed13f223669e65d81db790, 0x66a367686ff336b8fac82b124e1a66, 0x006135], + }, + BigNum { + limbs: [0x6d89d1cf521a52f9730ea6ccca6aa9, 0x874736ffd05944b37a5bdf5fc29b8e, 0x00017a], + }, + BigNum { + limbs: [0x501a3130ac41ac068cf15833359558, 0x200bf29daceeee865dac2a421569c5, 0x007273], + }, + BigNum { + limbs: [0x2ebb72dd507ad3e370ae5c9d88c367, 0xcad2981271db38af49782c25cc6a83, 0x002982], + }, + BigNum { + limbs: [0x8ee89022ade12b1c8f51a262773c9a, 0xdc80918b0b6cfa8a8e8fdd7c0b9ad0, 0x004a6a], + }, + BigNum { + limbs: [0x40bb9966258c7e444ef5bf9f9eaf5d, 0x50d0cd0a9c9ad02239843d3a7238d0, 0x00238a], + }, + BigNum { + limbs: [0x7ce86999d8cf80bbb10a3f606150a4, 0x56825c92e0ad63179e83cc6765cc83, 0x005063], + }, + BigNum { + limbs: [0xd860053850eb383390d76bb3f42bd6, 0x4a15cbfaab68c4280ae7caa60cf1aa, 0x003f5e], + }, + BigNum { + limbs: [0xe543fdc7ad70c6cc6f28934c0bd42b, 0x5d3d5da2d1df6f11cd203efbcb13a8, 0x00348f], + }, + BigNum { + limbs: [0xaef4419c79da6004e08d670c53a44e, 0xf7bd11fb6ad2133b0600858128f29b, 0x0069fc], + }, + BigNum { + limbs: [0x0eafc16384819efb1f7297f3ac5bb3, 0xaf9617a212761ffed2078420af12b8, 0x0009f0], + }, + BigNum { + limbs: [0x7f907f020a14b917b055c5dfbd2d5c, 0xe05ec31861f5674bdaf8e72b8709a1, 0x006927], + }, + BigNum { + limbs: [0x3e1383fdf44745e84faa392042d2a5, 0xc6f466851b52cbedfd0f227650fbb2, 0x000ac5], + }, + BigNum { + limbs: [0xebc1bad8e840c2ad13f6bbb95ec8ec, 0xcb2b258381423a47594a3ac9ba80ed, 0x000ba4], + }, + BigNum { + limbs: [0xd1e24827161b3c52ec094346a13715, 0xdc280419fc05f8f27ebdced81d8465, 0x006848], + }, + BigNum { + limbs: [0x2b07db533eecf717c095e63014ae72, 0x14ee8e4ee0069beb9bd9e5a49c9517, 0x002bbf], + }, + BigNum { + limbs: [0x929c27acbf6f07e83f6a18cfeb518f, 0x92649b4e9d41974e3c2e23fd3b703c, 0x00482e], + }, + BigNum { + limbs: [0xfce3f1ae16e1352f27668740f423f4, 0x53b32e18eb883962e4267ad3b836c2, 0x000776], + }, + BigNum { + limbs: [0xc0c01151e77ac9d0d89977bf0bdc0d, 0x539ffb8491bff9d6f3e18ece1fce90, 0x006c77], + }, + BigNum { + limbs: [0x0cb139b40f4c25efde2d1e3d91bdd7, 0x607ce8d23ffed09655e7bf9bbb56a0, 0x002fac], + }, + BigNum { + limbs: [0xb0f2c94bef0fd91021d2e0c26e422a, 0x46d640cb3d4962a382204a061caeb3, 0x004441], + }, + BigNum { + limbs: [0x9056c4e381145f218592573596e4e9, 0x1da7c6d8816a814bffbf8d20cef142, 0x000e09], + }, + BigNum { + limbs: [0x2d4d3e1c7d479fde7a6da7ca691b18, 0x89ab62c4fbddb1edd8487c81091411, 0x0065e4], + }, + BigNum { + limbs: [0x85d191ac75223523bb85f2da7f3e51, 0xb26339d05091e20e765bc6522c3d49, 0x0023fb], + }, + BigNum { + limbs: [0x37d271538939c9dc447a0c2580c1b0, 0xf4efefcd2cb6512b61ac434fabc80a, 0x004ff1], + }, + BigNum { + limbs: [0x42dd56d39e955417d408cfe1efe0da, 0x6dd7b2cf3c059a45ee2eabefd88d8d, 0x001286], + }, + BigNum { + limbs: [0x7ac6ac2c5fc6aae82bf72f1e101f27, 0x397b76ce414298f3e9d95db1ff77c6, 0x006167], + }, + BigNum { + limbs: [0x8ff68b2704622d8db3b98e4423fc50, 0x8734ba95974fe0a610e2a9cc4f55cf, 0x0021c7], + }, + BigNum { + limbs: [0x2dad77d8f9f9d1724c4670bbdc03b1, 0x201e6f07e5f85293c7255fd588af84, 0x005226], + }, + BigNum { + limbs: [0x8beba55b423887eb9775afe0580eb6, 0xc6493ca6f7bafdd94ab18c03456354, 0x00021f], + }, + BigNum { + limbs: [0x31b85da4bc237714688a4f1fa7f14b, 0xe109ecf6858d35608d567d9e92a1ff, 0x0071cd], + }, + BigNum { + limbs: [0xddf65cfc1c7f198f6e446f0ba80111, 0xfc3367b27efadae203a5d04d12b33b, 0x00547e], + }, + BigNum { + limbs: [0xdfada603e1dce57091bb8ff457fef0, 0xab1fc1eafe4d5857d4623954c55217, 0x001f6e], + }, + BigNum { + limbs: [0xb2111259c0e6827b9f2d0dfbe1fda0, 0xea46adb91f8909429055d788c6ef35, 0x0045e8], + }, + BigNum { + limbs: [0x0b92f0a63d757c8460d2f1041e0261, 0xbd0c7be45dbf29f747b2321911161e, 0x002e04], + }, + BigNum { + limbs: [0xd451939d2efc7530d247f9f1b06a9d, 0x723488ddb269aa2a0bb898bac279da, 0x002e0f], + }, + BigNum { + limbs: [0xe9526f62cf5f89cf2db8050e4f9564, 0x351ea0bfcade890fcc4f70e7158b78, 0x0045de], + }, + BigNum { + limbs: [0xcdfd800f910da40d61b57cc139d00a, 0x6f4e20fb2f20f36c5be4373da4ad3e, 0x002436], + }, + BigNum { + limbs: [0xefa682f06d4e5af29e4a823ec62ff7, 0x380508a24e273fcd7c23d264335814, 0x004fb7], + }, + BigNum { + limbs: [0xad59732db132de9f70a3a4625a28a2, 0x30d35a07976b6f22eeb847e6a4c2c5, 0x000455], + }, + BigNum { + limbs: [0x104a8fd24d2920608f5c5a9da5d75f, 0x767fcf95e5dcc416e94fc1bb33428e, 0x006f98], + }, + BigNum { + limbs: [0xa83f0d64199428796ae7ed987e3031, 0x66c481043d84ce7b5b9a58967a125a, 0x006e11], + }, + BigNum { + limbs: [0x1564f59be4c7d6869518116781cfd0, 0x408ea8993fc364be7c6db10b5df2f9, 0x0005dc], + }, + BigNum { + limbs: [0xfeec51f753cc687c69d6ae5df2c7e5, 0x01672a864c45dae541d1fd7ab0cf3b, 0x00252a], + }, + BigNum { + limbs: [0xbeb7b108aa8f9683962950a20d381c, 0xa5ebff173102585496360c27273617, 0x004ec3], + }, + BigNum { + limbs: [0x3737709114df79354b1b9355e6a54e, 0x4098bda9ad6a6469757c2498b0fd99, 0x006a78], + }, + BigNum { + limbs: [0x866c926ee97c85cab4e46baa195ab3, 0x66ba6bf3cfddced0628be5092707ba, 0x000975], + }, + BigNum { + limbs: [0x51ed8769fd01bf945fda78a7f367d9, 0x753bf1d2a62039f1517d74049b890e, 0x004fe3], + }, + BigNum { + limbs: [0x6bb67b96015a3f6ba02586580c9828, 0x321737cad727f948868a959d3c7c45, 0x00240a], + }, + BigNum { + limbs: [0x3fe7cabd0b23e5bf705eba460abe55, 0x3151de041923e02a79c24740b9cac2, 0x0008cf], + }, + BigNum { + limbs: [0x7dbc3842f33819408fa144b9f541ac, 0x76014b996424530f5e45c2611e3a91, 0x006b1e], + }, + BigNum { + limbs: [0x66c55dea845e4933d0b97dedcbec39, 0xbe534af38fff28cbbe5b58d6539c1a, 0x002362], + }, + BigNum { + limbs: [0x56dea51579fdb5cc2f4681123413c8, 0xe8ffdea9ed490a6e19acb0cb846939, 0x00508a], + }, + BigNum { + limbs: [0xe74ce466f28a996afd86c991620276, 0x6a14aab731397177349c6cb97b7c51, 0x005ffd], + }, + BigNum { + limbs: [0xd6571e990bd165950279356e9dfd8b, 0x3d3e7ee64c0ec1c2a36b9ce85c8901, 0x0013f0], + }, + BigNum { + limbs: [0xfc885d40f73760387ca37368ee6036, 0xfdacb64f6dcef359c6db5d8d487fc5, 0x003810], + }, + BigNum { + limbs: [0xc11ba5bf07249ec7835c8b97119fcb, 0xa9a6734e0f793fe0112cac148f858d, 0x003bdc], + }, + BigNum { + limbs: [0xe66d78cb626cc03ccda280ddf7c676, 0xaa5aa0b483b385f66bd08a1d249b53, 0x006a97], + }, + BigNum { + limbs: [0xd7368a349bef3ec3325d7e2208398b, 0xfcf888e8f994ad436c377f84b369ff, 0x000955], + }, + BigNum { + limbs: [0xe73f7a50c5aaeb5db85ae6ebfcb38d, 0xbca65083b25f7ee89ab1508940ca94, 0x001c15], + }, + BigNum { + limbs: [0xd66488af38b113a247a51814034c74, 0xeaacd919cae8b4513d56b918973abe, 0x0057d7], + }, + BigNum { + limbs: [0x3041d38fa295c8677f529da0db3616, 0x61b3e4c04bcf4cc051000148d5479a, 0x006b8b], + }, + BigNum { + limbs: [0x8d622f705bc6369880ad615f24c9eb, 0x459f44dd3178e6798708085902bdb9, 0x000862], + }, + BigNum { + limbs: [0x36ba5d59a1fdb3918b8ff2657cb799, 0x73141aa50ce8e0448856303668e326, 0x001a6f], + }, + BigNum { + limbs: [0x86e9a5a65c5e4b6e74700c9a834868, 0x343f0ef8705f52f54fb1d96b6f222d, 0x00597e], + }, + BigNum { + limbs: [0x6ccba57529ef3a2e69b325f8c2d10e, 0x4d647a8586116f35f254c16ac4e2e8, 0x000d42], + }, + BigNum { + limbs: [0x50d85d8ad46cc4d1964cd9073d2ef3, 0x59eeaf17f736c403e5b3483713226b, 0x0066ab], + }, + BigNum { + limbs: [0xd6a430a0bc13faa1c38e986fed60b7, 0xce5eedbb83c74a15db11a3b554b5d3, 0x006858], + }, + BigNum { + limbs: [0xe6ffd25f4248045e3c716690129f4a, 0xd8f43be1f980e923fcf665ec834f7f, 0x000b94], + }, + BigNum { + limbs: [0xbb69b1e997262c5f8b75eb59322015, 0xada1e5d0b6bf2aca0bb3f1eaef08eb, 0x0038e8], + }, + BigNum { + limbs: [0x023a51166735d2a0748a13a6cddfec, 0xf9b143ccc689086fcc5417b6e8fc68, 0x003b04], + }, + BigNum { + limbs: [0xb9c653a69df49edefa7c37d09c36a2, 0xadf904b0681b511569231f5f35c687, 0x0049b2], + }, + BigNum { + limbs: [0x03ddaf59606760210583c72f63c95f, 0xf95a24ed152ce2246ee4ea42a23ecc, 0x002a3a], + }, + BigNum { + limbs: [0x544e0eef300ebb6922152d741da680, 0xf4657f7341d681f7a80461466d15fc, 0x00633f], + }, + BigNum { + limbs: [0x6955f410ce4d4396ddead18be25981, 0xb2edaa2a3b71b1423003a85b6aef57, 0x0010ad], + }, + BigNum { + limbs: [0x3cb7a69485ca0129ceb6ef8030b2de, 0x6468a2d46ee05d32b857f28457a44c, 0x00702f], + }, + BigNum { + limbs: [0x80ec5c6b7891fdd631490f7fcf4d23, 0x42ea86c90e67d6071fb0171d806107, 0x0003be], + }, + BigNum { + limbs: [0x690adce0d4559ad0bab5f02b35aea3, 0x8d7a680f4f615969a24f8e2106f81a, 0x005dc7], + }, + BigNum { + limbs: [0x5499261f2a06642f454a0ed4ca515e, 0x19d8c18e2de6d9d035b87b80d10d39, 0x001626], + }, + BigNum { + limbs: [0xbf6566f761bbaaa58ea51a15cb2a93, 0xa436bbf70ebc9a481043f60ec7964f, 0x0042fa], + }, + BigNum { + limbs: [0xfe3e9c089ca0545a715ae4ea34d56e, 0x031c6da66e8b98f1c7c41393106f03, 0x0030f3], + }, + BigNum { + limbs: [0x3c61e635e16ea6e68378ad80a7bb00, 0x1824c50aa16fccd46c8c0a5d9be527, 0x004d3d], + }, + BigNum { + limbs: [0x81421cca1ced58197c87517f584501, 0x8f2e6492dbd866656b7bff443c202c, 0x0026b0], + }, + BigNum { + limbs: [0x32055cd6e43a26efe507326576562d, 0x3a3febc19c74e00c852874294fe1a0, 0x006623], + }, + BigNum { + limbs: [0x8b9ea6291a21d8101af8cc9a89a9d4, 0x6d133ddbe0d3532d52df95788823b3, 0x000dca], + }, + BigNum { + limbs: [0x920cdabfd84a8600c41c7ed4c36731, 0xe4e20eda21e3bc795bd8f25ded6ef3, 0x000937], + }, + BigNum { + limbs: [0x2b972840261178ff3be3802b3c98d0, 0xc2711ac35b6476c07c2f1743ea9660, 0x006ab5], + }, + BigNum { + limbs: [0xca1d8869e45cb67ef2f5436db89ce5, 0x428cd15fec9829f4d52d022a11c056, 0x003d18], + }, + BigNum { + limbs: [0xf3867a9619ff48810d0abb9247631c, 0x64c6583d90b0094502db0777c644fc, 0x0036d5], + }, + BigNum { + limbs: [0xc512d0ba6e3f20da7810f90a14ed63, 0xe965ba4aab15753bb87fe847a6e84a, 0x001400], + }, + BigNum { + limbs: [0xf8913245901cde2587ef05f5eb129e, 0xbded6f52d232bdfe1f88215a311d08, 0x005fec], + }, + BigNum { + limbs: [0xb385262d0e06a7bf046f046933915c, 0x2fcbe3d8e169f25d115b2909df5fae, 0x0070a5], + }, + BigNum { + limbs: [0x0a1edcd2f0555740fb90fa96cc6ea5, 0x778745c49bde40dcc6ace097f8a5a5, 0x000348], + }, + BigNum { + limbs: [0x8d607f4ee699ae051d64216ef65230, 0xb7a8f24647997c6daa193db1745c67, 0x003466], + }, + BigNum { + limbs: [0x304383b117c250fae29bdd9109add1, 0xefaa375735aeb6cc2deecbf063a8ec, 0x003f86], + }, + BigNum { + limbs: [0xd5f7ce03dd2713a624911665fba78b, 0x63171cfd358f14986d8c2b99885009, 0x002862], + }, + BigNum { + limbs: [0xe7ac34fc2134eb59db6ee89a045876, 0x443c0ca047b91ea16a7bde084fb549, 0x004b8b], + }, + BigNum { + limbs: [0xfe70a1a000bdeededa81868d68b00a, 0xd7c52f795ab5a3cbe846b833307b38, 0x0063a9], + }, + BigNum { + limbs: [0xbf33615ffd9e1021257e7872974ff7, 0xcf8dfa2422928f6defc1516ea78a1a, 0x001043], + }, + BigNum { + limbs: [0xe211b10f8f4244573cc1221781e0bc, 0xa9ee4fed8c9defe5bf47c589849963, 0x0002ca], + }, + BigNum { + limbs: [0xdb9251f06f19baa8c33edce87e1f45, 0xfd64d9aff0aa435418c04418536bef, 0x007122], + }, + BigNum { + limbs: [0x377cbd2bf36fcc3ec268ec688da522, 0x1c5a67a005fe6aef4b6396adfc608c, 0x004310], + }, + BigNum { + limbs: [0x862745d40aec32c13d971297725adf, 0x8af8c1fd7749c84a8ca472f3dba4c7, 0x0030dd], + }, + BigNum { + limbs: [0x258de8ab7c6bf6492d72265c8bb286, 0x12dd6a762ba5433ae5253027a86d6c, 0x001e57], + }, + BigNum { + limbs: [0x98161a5481f008b6d28dd8a3744d7b, 0x9475bf2751a2effef2e2d97a2f97e7, 0x005596], + }, + BigNum { + limbs: [0xfc6245c2276cfe52b9e2e3d8e363f5, 0x8f91391224f82d1509ea7380eb432e, 0x006724], + }, + BigNum { + limbs: [0xc141bd3dd6ef00ad461d1b271c9c0c, 0x17c1f08b58500624ce1d9620ecc224, 0x000cc9], + }, + BigNum { + limbs: [0xab98917739772b3fcea5a50aafcbdb, 0x2bbc74577df8687bcc2850f602ddf5, 0x002b9d], + }, + BigNum { + limbs: [0x120b7188c4e4d3c0315a59f5503426, 0x7b96b545ff4fcabe0bdfb8abd5275e, 0x004850], + }, + BigNum { + limbs: [0x59749fab0ea4f5cad4d5192ef12ff5, 0xf00a1aaafd469e2d6961368dca2476, 0x002787], + }, + BigNum { + limbs: [0x642f6354efb709352b2ae5d10ed00c, 0xb7490ef28001950c6ea6d3140de0dd, 0x004c65], + }, + BigNum { + limbs: [0xc74b9514983765d71e1882e1dd7f28, 0x927973e027868355da437798fef908, 0x00730c], + }, + BigNum { + limbs: [0xf6586deb66249928e1e77c1e2280d9, 0x14d9b5bd55c1afe3fdc49208d90c4a, 0x0000e1], + }, + BigNum { + limbs: [0xe18a0dbf32e81b22ac28512f733ac0, 0x88e2477fbf79aba7460fd9c360ec14, 0x006684], + }, + BigNum { + limbs: [0xdc19f540cb73e3dd53d7add08cc541, 0x1e70e21dbdce879291f82fde77193e, 0x000d69], + }, + BigNum { + limbs: [0x67f6c836862ed38368bc3ff9fe041d, 0x3f6664ca78be793846d6244234b80d, 0x005e13], + }, + BigNum { + limbs: [0x55ad3ac9782d2b7c9743bf0601fbe4, 0x67ecc4d30489ba019131e55fa34d46, 0x0015da], + }, + BigNum { + limbs: [0x95610ecb9899c53b6ead007648781c, 0xf6f4afb976d236fa3357bfa851e961, 0x0022da], + }, + BigNum { + limbs: [0x2842f43465c239c49152fe89b787e5, 0xb05e79e40675fc3fa4b049f9861bf2, 0x005112], + }, + BigNum { + limbs: [0xaa1b5e34bb77878b236035fa24c486, 0x954412900ed54088745ec1f2c16631, 0x0050d0], + }, + BigNum { + limbs: [0x1388a4cb42e47774dc9fc905db3b7b, 0x120f170d6e72f2b163a947af169f22, 0x00231d], + }, + BigNum { + limbs: [0x8a241be93dc8974e02b11bd3a217c2, 0x84a58f018d4c9b113b0587c1e3580c, 0x005870], + }, + BigNum { + limbs: [0x337fe716c09367b1fd4ee32c5de83f, 0x22ad9a9beffb98289d0281dff4ad47, 0x001b7d], + }, + BigNum { + limbs: [0x8dba7176a3140438e61a2bdb947cfb, 0x7d36756abfa6e6de4760c9223ca35d, 0x006d9b], + }, + BigNum { + limbs: [0x2fe991895b47fac719e5d3246b8306, 0x2a1cb432bda14c5b90a7407f9b61f6, 0x000652], + }, + BigNum { + limbs: [0x7a93ae34c98803cc138ce5decb272f, 0x9d92ac58ff78ea09ac3f1bdf706976, 0x002877], + }, + BigNum { + limbs: [0x431054cb34d3fb33ec73192134d8d2, 0x09c07d447dcf49302bc8edc2679bdd, 0x004b76], + }, + BigNum { + limbs: [0xf0341a13b3565ad286345e7ac747d6, 0x7c023d791f0bdc6832ada0a4abdbb2, 0x001473], + }, + BigNum { + limbs: [0xcd6fe8ec4b05a42d79cba08538b82b, 0x2b50ec245e3c56d1a55a68fd2c29a0, 0x005f7a], + }, + BigNum { + limbs: [0x4c4fa5f5263d07bfb59bd6f3e3410f, 0x1ddc11c537cbfe3ed86585643677f4, 0x00641b], + }, + BigNum { + limbs: [0x71545d0ad81ef7404a64280c1cbef2, 0x897717d8457c34faffa2843da18d5f, 0x000fd2], + }, + BigNum { + limbs: [0x2144b16886b434df3737d784288d49, 0x98ef059d3185cc257d69e121cd84b3, 0x006755], + }, + BigNum { + limbs: [0x9c5f519777a7ca20c8c8277bd772b8, 0x0e6424004bc267145a9e28800a80a0, 0x000c98], + }, + BigNum { + limbs: [0xdad8f147195417f8e3b085a77afbf2, 0xd402f8d47177c758c7a4112d4a8bea, 0x003aff], + }, + BigNum { + limbs: [0xe2cb11b8e507e7071c4f795885040f, 0xd35030c90bd06be11063f8748d7968, 0x0038ed], + }, + BigNum { + limbs: [0x13b822085973279feb3060dee77336, 0xec04bf19f89eb75b9bf5262d598072, 0x002dd3], + }, + BigNum { + limbs: [0xa9ebe0f7a4e8d76014cf9e21188ccb, 0xbb4e6a8384a97bde3c12e3747e84e1, 0x004619], + }, + BigNum { + limbs: [0xce316d93c6b00bb50855547902c03e, 0x97ca4d2c7b6a0c1945109c1f1e9c3a, 0x006ce3], + }, + BigNum { + limbs: [0xef72956c37abf34af7aaaa86fd3fc3, 0x0f88dc7101de272092f76d82b96918, 0x00070a], + }, + BigNum { + limbs: [0x694267eeda9311b9bc81d1e5f516e1, 0x5846cd4336b188de7c8b11604d8ff0, 0x006fb0], + }, + BigNum { + limbs: [0x54619b1123c8ed46437e2d1a0ae920, 0x4f0c5c5a4696aa5b5b7cf8418a7563, 0x00043d], + }, + BigNum { + limbs: [0x24f213c919d43d562e491138e601de, 0xe28f29fa7cfa57c3839a0140d9f2bb, 0x0007dd], + }, + BigNum { + limbs: [0x98b1ef36e487c1a9d1b6edc719fe23, 0xc4c3ffa3004ddb76546e0860fe1298, 0x006c0f], + }, + BigNum { + limbs: [0x6b7e5ff4d425ec22ae86624a026d8f, 0xf1287fe086b18251211dc7db069146, 0x00583a], + }, + BigNum { + limbs: [0x5225a30b2a3612dd51799cb5fd9272, 0xb62aa9bcf696b0e8b6ea41c6d1740d, 0x001bb2], + }, + BigNum { + limbs: [0x80b253331456f274067e67d28a7bf9, 0xe5fb6401d35e8b476c3d92001ca186, 0x000d83], + }, + BigNum { + limbs: [0x3cf1afccea050c8bf981972d758408, 0xc157c59ba9e9a7f26bca77a1bb63cd, 0x006669], + }, + BigNum { + limbs: [0xd98dbcb16d6b2bc8c4f400030cd5c1, 0x16f7a347bb978b3074eb9fb6094903, 0x0047b1], + }, + BigNum { + limbs: [0xe416464e90f0d3373b0bfefcf32a40, 0x905b8655c1b0a809631c69ebcebc4f, 0x002c3c], + }, + BigNum { + limbs: [0xb330e761da3be1436d1d98942671d5, 0xa5e3e36a9bf331e93cc37de09f5274, 0x006d89], + }, + BigNum { + limbs: [0x0a731b9e24201dbc92e2666bd98e2c, 0x016f4632e15501509b448bc138b2df, 0x000664], + }, + BigNum { + limbs: [0x3fb3867287d861038cb90b5f9e2564, 0x2156aa8bb80679fa31d23cd3c210ae, 0x0014ef], + }, + BigNum { + limbs: [0x7df07c8d76839dfc7346f3a061da9d, 0x85fc7f11c541b93fa635ccce15f4a5, 0x005efe], + }, + BigNum { + limbs: [0x32317a2cdbea65c58c12f0eb455e6b, 0x4698b9e42244abdd2198bdf7fde562, 0x00244b], + }, + BigNum { + limbs: [0x8b7288d32271993a73ed0e14baa196, 0x60ba6fb95b03875cb66f4ba9da1ff1, 0x004fa2], + }, + BigNum { + limbs: [0x8ed195331b98672808faa3ccaafe7d, 0xa34e6b5142c7e48095cf2e1b9d09fa, 0x00138f], + }, + BigNum { + limbs: [0x2ed26dcce2c397d7f7055b33550184, 0x0404be4c3a804eb94238db863afb59, 0x00605e], + }, + BigNum { + limbs: [0x6ce50ce8631ddc37c974247e893e37, 0xbafc2e8182867d9f8711636eb28e84, 0x004348], + }, + BigNum { + limbs: [0x50bef6179b3e22c8368bda8176c1ca, 0xec56fb1bfac1b59a50f6a6332576cf, 0x0030a4], + }, + BigNum { + limbs: [0xdb3d1d363620c7059279cc46720e88, 0x4bc4b85d0584dfd6b5fa91067e76e4, 0x000d5b], + }, + BigNum { + limbs: [0xe266e5c9c83b37fa6d8632b98df179, 0x5b8e714077c35363220d789b598e6e, 0x006692], + }, + BigNum { + limbs: [0x6ad7cae3c87627c98f6b3a48df5a28, 0xd4863b46a956c8dcee098ed888b038, 0x0029fb], + }, + BigNum { + limbs: [0x52cc381c35e5d7367094c4b720a5d9, 0xd2ccee56d3f16a5ce9fe7ac94f551b, 0x0049f1], + }, + BigNum { + limbs: [0xc9b512172293bb81396ff313d3bb80, 0x1736abd6d04b4739c52b4fabaab4dd, 0x005da9], + }, + BigNum { + limbs: [0xf3eef0e8dbc8437ec6900bec2c4481, 0x901c7dc6acfcec0012dcb9f62d5075, 0x001644], + }, + BigNum { + limbs: [0x977a45ccd1f4913ff0793ba434977c, 0x8bcb0af58a52192a995975d7064454, 0x003af5], + }, + BigNum { + limbs: [0x2629bd332c676dc00f86c35bcb6885, 0x1b881ea7f2f61a0f3eae93cad1c0ff, 0x0038f8], + }, + BigNum { + limbs: [0xef2fb42e82a91c3aaf009278b4b454, 0xef630dea07dd87c170f9a2a01856a4, 0x00038b], + }, + BigNum { + limbs: [0xce744ed17bb2e2c550ff6c874b4bad, 0xb7f01bb3756aab78670e6701bfaeae, 0x007061], + }, + BigNum { + limbs: [0xc8e73f1fb0956aac66e8dafc81fe1e, 0x059efabd9ae1387d443ddded77add3, 0x00321c], + }, + BigNum { + limbs: [0xf4bcc3e04dc69453991724037e01e3, 0xa1b42edfe266fabc93ca2bb460577f, 0x0041d1], + }, + BigNum { + limbs: [0x3933c1beda8052e1a0aa54ab584031, 0xe11c874ac1ff523154d2355e4e4176, 0x000605], + }, + BigNum { + limbs: [0x8470414123dbac1e5f55aa54a7bfd0, 0xc636a252bb48e1088335d44389c3dd, 0x006de7], + }, + BigNum { + limbs: [0x434bad0898bac4640aa66581465d9a, 0xaf57ad62903dde30dfbc088a2d14cc, 0x002840], + }, + BigNum { + limbs: [0x7a5855f765a13a9bf559997eb9a267, 0xf7fb7c3aed0a5508f84c0117aaf087, 0x004bac], + }, + BigNum { + limbs: [0xa295c7dfe550262e424716d6fbaa2d, 0xd989cae69b749be1ba8e713c6bf63c, 0x000224], + }, + BigNum { + limbs: [0x1b0e3b20190bd8d1bdb8e8290455d4, 0xcdc95eb6e1d397581d7998656c0f17, 0x0071c8], + }, + BigNum { + limbs: [0x027b481a99f8d7f13eed8a7afc59cc, 0x1cc9790e8f2c1db924e35b38caf6b5, 0x00086c], + }, + BigNum { + limbs: [0xbb28bae56463270ec112748503a635, 0x8a89b08eee1c1580b324ae690d0e9e, 0x006b81], + }, + BigNum { + limbs: [0x2f35aea290ac55b604c24be38ed2f2, 0xaa61fc26cd5f4c7a8318ba28706e7c, 0x004bf1], + }, + BigNum { + limbs: [0x8e6e545d6dafa949fb3db31c712d0f, 0xfcf12d76afe8e6bf54ef4f796796d7, 0x0027fb], + }, + BigNum { + limbs: [0x44c8d9317399ddb4c3351d1f85a494, 0x5c08fdb7b5f58ca2789772dc1ee600, 0x00527c], + }, + BigNum { + limbs: [0x78db29ce8ac2214b3ccae1e07a5b6d, 0x4b4a2be5c752a6975f7096c5b91f53, 0x002171], + }, + BigNum { + limbs: [0xacd8c18fd788b79108eb0359f985a8, 0xa5fb219c39b3597fd7cdb7cb9ec359, 0x0020c5], + }, + BigNum { + limbs: [0x10cb417026d3476ef714fba6067a59, 0x015808014394d9ba003a51d63941fa, 0x005328], + }, + BigNum { + limbs: [0x336e8b0eaa01fdee91311271ee45a3, 0x6b1c12f87566ddd0bf944a8e6d750a, 0x003ee3], + }, + BigNum { + limbs: [0x8a3577f1545a01116eceec8e11ba5e, 0x3c3716a507e155691873bf136a9049, 0x00350a], + }, + BigNum { + limbs: [0x0e3a4a2c1307877112e3fc3d4ace71, 0x75e2c927a7c9d2046ce027a513df74, 0x001ada], + }, + BigNum { + limbs: [0xaf69b8d3eb54778eed1c02c2b53190, 0x31706075d57e61356b27e1fcc425df, 0x005913], + }, + BigNum { + limbs: [0x531d011069710c1aadbdf0d9becb26, 0xfe392258bd3c57b360a745e7386083, 0x005264], + }, + BigNum { + limbs: [0x6a8701ef94eaf2e552420e264134db, 0xa91a0744c00bdb867760c3ba9fa4d0, 0x002188], + }, + BigNum { + limbs: [0xe9187454698944ac775919154154c1, 0x8c85aab132d3f04ce0af0a60f99468, 0x001dba], + }, + BigNum { + limbs: [0xd48b8eab94d2ba5388a6e5eabeab40, 0x1acd7eec4a7442ecf758ff40de70ea, 0x005633], + }, + BigNum { + limbs: [0x6c1604b24820a3770340790d55dc4c, 0x70485191eb56fc775110f342bec6f3, 0x003e60], + }, + BigNum { + limbs: [0x518dfe4db63b5b88fcbf85f2aa23b5, 0x370ad80b91f136c286f7165f193e60, 0x00358d], + }, + BigNum { + limbs: [0xeafb428e38a30928c22245d72bb2a3, 0xce32f7e962fa2b3e31afd97e204be3, 0x004902], + }, + BigNum { + limbs: [0xd2a8c071c5b8f5d73dddb928d44d5e, 0xd92031b41a4e07fba6583023b7b96f, 0x002aea], + }, + BigNum { + limbs: [0x3a451584a96e0ef35f980490fcc053, 0xd4e5faca74e951f07361d72a49f4b1, 0x00173b], + }, + BigNum { + limbs: [0x835eed7b54edf00ca067fa6f033fae, 0xd26d2ed3085ee14964a632778e10a2, 0x005cb1], + }, + BigNum { + limbs: [0x2e15a71ff3bb6b1793eb9057fda39b, 0x6d1eafc21e45b97be27adfc8bad8f1, 0x00170c], + }, + BigNum { + limbs: [0x8f8e5be00aa093e86c146ea8025c66, 0x3a3479db5f0279bdf58d29d91d2c62, 0x005ce1], + }, + BigNum { + limbs: [0x91a01cb11e1d388fbbb51771aacdbc, 0x5543e381889b38beaaccd6ea72786b, 0x003dcd], + }, + BigNum { + limbs: [0x2c03e64ee03ec670444ae78e553245, 0x520f461bf4acfa7b2d3b32b7658ce8, 0x003620], + }, + BigNum { + limbs: [0x1b2c2bf57e2ffa8bff0d76e779efd8, 0x136e7973448a6e8452d09af6d4fe0b, 0x002579], + }, + BigNum { + limbs: [0xa277d70a802c047400f28818861029, 0x93e4b02a38bdc4b585376eab030748, 0x004e74], + }, + BigNum { + limbs: [0x965114af80d5f237b8489e744cdb6a, 0x34a8111b5e6c4c02091f65cedfc07a, 0x000798], + }, + BigNum { + limbs: [0x2752ee507d860cc847b7608bb32497, 0x72ab18821edbe737cee8a3d2f844d9, 0x006c55], + }, + BigNum { + limbs: [0xe7ccd1f49218bcde0a39b54757baf4, 0x55b1570da586ba40c31e363e1506aa, 0x006c6a], + }, + BigNum { + limbs: [0xd5d7310b6c434221f5c649b8a8450d, 0x51a1d28fd7c178f914e9d363c2fea8, 0x000783], + }, + BigNum { + limbs: [0xd75a4c1d0a47bc8a57f67a92771886, 0xf7e713a14f663701ec08b9515cc1d4, 0x00504d], + }, + BigNum { + limbs: [0xe649b6e2f4144275a809846d88e77b, 0xaf6c15fc2de1fc37ebff50507b437e, 0x00239f], + }, + BigNum { + limbs: [0x4a6f5157ee66feed092f02034b4427, 0x089313ebbb63ab112c6e47f651c56b, 0x004f80], + }, + BigNum { + limbs: [0x7334b1a80ff50012f6d0fcfcb4bbda, 0x9ec015b1c1e48828ab99c1ab863fe8, 0x00246d], + }, + BigNum { + limbs: [0x960a2dbf6b89282bb928b6c2bc3afc, 0x9de0cb3644273fde5012c262290cdd, 0x000f2b], + }, + BigNum { + limbs: [0x2799d54092d2d6d446d7483d43c505, 0x09725e673920f35b87f5473faef876, 0x0064c2], + }, + BigNum { + limbs: [0xd8f900e407b7f428bce7e30c66a081, 0xa99e4a437b505d95dfd1630242422e, 0x005a1e], + }, + BigNum { + limbs: [0xe4ab021bf6a40ad743181bf3995f80, 0xfdb4df5a01f7d5a3f836a69f95c324, 0x0019ce], + }, + BigNum { + limbs: [0x7d648cf9f44e1804ceeaa511f4fae9, 0x69d70232147b3a090bcaa59c776b2b, 0x0041e4], + }, + BigNum { + limbs: [0x403f76060a0de6fb311559ee0b0518, 0x3d7c276b68ccf930cc3d6405609a28, 0x003209], + }, + BigNum { + limbs: [0x25da2e047033fefbbcff900fcc827f, 0x02ebc6464d846f98cb09f9865d83d0, 0x004d59], + }, + BigNum { + limbs: [0x97c9d4fb8e28000443006ef0337d82, 0xa46763572fc3c3a10cfe101b7a8183, 0x002694], + }, + BigNum { + limbs: [0xee0ffdf718781e60b137ab482066e4, 0xbc8d78d3c3cc9173a7c9c3c994b807, 0x001459], + }, + BigNum { + limbs: [0xcf940508e5e3e09f4ec853b7df991d, 0xeac5b0c9b97ba1c6303e45d8434d4b, 0x005f93], + }, + BigNum { + limbs: [0x525bc3d1cd03ba13854305ef54b104, 0x6d82f16d68853bf7bb74b643ac07c9, 0x000956], + }, + BigNum { + limbs: [0x6b483f2e315844ec7abcf910ab4efd, 0x39d0383014c2f7421c93535e2bfd8a, 0x006a97], + }, + BigNum { + limbs: [0x5e2f10a51b5409e93521dc76f14b89, 0x6a17ed37cedbd2dff79cd54a6ea067, 0x000beb], + }, + BigNum { + limbs: [0x5f74f25ae307f516cade22890eb478, 0x3d3b3c65ae6c6059e06b34576964ec, 0x006802], + }, + BigNum { + limbs: [0x55735e16b82bb0a2073fb0e02a7667, 0x7f1df880e7c227e024663dc027bae4, 0x006a70], + }, + BigNum { + limbs: [0x6830a4e946304e5df8c04e1fd5899a, 0x2835311c95860b59b3a1cbe1b04a6f, 0x00097d], + }, + BigNum { + limbs: [0x3c367ca1d1ffe6e2ae57afb246966b, 0xe0e87f964513f8ddba3c5316c7ec75, 0x0013e7], + }, + BigNum { + limbs: [0x816d865e2c5c181d51a84f4db96996, 0xc66aaa0738343a5c1dcbb68b1018de, 0x006005], + }, + BigNum { + limbs: [0xb3e11681c510a6dd5a6a3e91095dc7, 0x32d749c30d1dc4895811317d780782, 0x004019], + }, + BigNum { + limbs: [0x09c2ec7e394b5822a595c06ef6a23a, 0x747bdfda702a6eb07ff6d8245ffdd1, 0x0033d4], + }, + BigNum { + limbs: [0xbd453fb132b4682cdfe9db0ff4374b, 0x9c9a35f12409aee55906ba0e6f2ed2, 0x003225], + }, + BigNum { + limbs: [0x005ec34ecba796d3201623f00bc8b6, 0x0ab8f3ac593e84547f014f9368d681, 0x0041c8], + }, + BigNum { + limbs: [0xc6f53956b47ef98c1e4633a1e79a90, 0xf8a65c0009dce5d7361d5906eb273a, 0x002444], + }, + BigNum { + limbs: [0xf6aec9a949dd0573e1b9cb5e186571, 0xaeaccd9d736b4d62a1eab09aecde18, 0x004fa8], + }, + BigNum { + limbs: [0x73a69a942f840ad1d45960e9d626dc, 0xfe77b2223aa587ca2ddd92f73d486e, 0x001875], + }, + BigNum { + limbs: [0x49fd686bced7f42e2ba69e1629d925, 0xa8db777b42a2ab6faa2a76aa9abce5, 0x005b77], + }, + BigNum { + limbs: [0x880501279a899bcee868ce8587a13b, 0x8f1b04bfd10c7250976724baad776d, 0x0018f1], + }, + BigNum { + limbs: [0x359f01d863d263311797307a785ec6, 0x183824ddac3bc0e940a0e4e72a8de6, 0x005afc], + }, + BigNum { + limbs: [0xb3d3b950311f02a824f0ba9a8f2963, 0x7cb97acb4245d1566d60c3a6ba5720, 0x0036d4], + }, + BigNum { + limbs: [0x09d049afcd3cfc57db0f446570d69e, 0x2a99aed23b0261e36aa745fb1dae33, 0x003d19], + }, + BigNum { + limbs: [0x8992a0b4aebe62c3176cafbba6ece2, 0x3e3e42733334ed43caff7cac4fa484, 0x005665], + }, + BigNum { + limbs: [0x3411624b4f9d9c3ce8934f4459131f, 0x6914e72a4a1345f60d088cf58860cf, 0x001d88], + }, + BigNum { + limbs: [0x3e333e731c6d86ea2f0310654c1c69, 0x45e320a61c7930dd4640b8259046fa, 0x0072e0], + }, + BigNum { + limbs: [0x7f70c48ce1ee7815d0fcee9ab3e398, 0x617008f760cf025c91c7517c47be59, 0x00010d], + }, + BigNum { + limbs: [0xb4fac3c927f6e90d16741ca2ea19f3, 0x2ea688ce95690fb3e7765ded195901, 0x005fc4], + }, + BigNum { + limbs: [0x08a93f36d66515f2e98be25d15e60e, 0x78aca0cee7df2385f091abb4beac52, 0x001429], + }, + BigNum { + limbs: [0x38250aebdfea19439e2c0f3fec014c, 0x0c68a0cd2567ed61c7c501f9cc757c, 0x005f62], + }, + BigNum { + limbs: [0x857ef8141e71e5bc61d3efc013feb5, 0x9aea88d057e045d8104307a80b8fd7, 0x00148b], + }, + BigNum { + limbs: [0x315044d26ab11b7f5d7bffe0b305c8, 0x73d2528c3d883247ea42471dd1c0ed, 0x006381], + }, + BigNum { + limbs: [0x8c53be2d93aae380a283ff1f4cfa39, 0x3380d7113fc000f1edc5c284064466, 0x00106c], + }, + BigNum { + limbs: [0x80ec4b796d3c1fa24716c0654b3fca, 0x7624f7423ea31f36512a3c42e181bd, 0x006902], + }, + BigNum { + limbs: [0x3cb7b786911fdf5db8e93e9ab4c037, 0x312e325b3ea5140386ddcd5ef68396, 0x000aeb], + }, + BigNum { + limbs: [0xd55c9043bd712ec2374a085a04cf77, 0x4dce95290db96dbc6e981c87cc0d39, 0x0039dd], + }, + BigNum { + limbs: [0xe84772bc40ead03dc8b5f6a5fb308a, 0x598494746f8ec57d696fed1a0bf819, 0x003a10], + }, + BigNum { + limbs: [0xbf7472dae4da3860bf9e6bf6e31812, 0xb2cbafa33fb884780e7c68542c3f12, 0x006bd1], + }, + BigNum { + limbs: [0xfe2f90251981c69f406193091ce7ef, 0xf48779fa3d8faec1c98ba14dabc640, 0x00081b], + }, + BigNum { + limbs: [0xdd1b58249906be9ff079ce58af3199, 0xcedb6916a28c6ca682e24066db3c86, 0x001c77], + }, + BigNum { + limbs: [0xe088aadb655540600f8630a750ce68, 0xd877c086dabbc6935525c93afcc8cc, 0x005775], + }, + BigNum { + limbs: [0xb2c473d5eff1b216b4e9b27e7dd10b, 0x04f3b5c0b97878d28972a2a650511c, 0x0052f6], + }, + BigNum { + limbs: [0x0adf8f2a0e6a4ce94b164c81822ef6, 0xa25f73dcc3cfba674e9566fb87b437, 0x0020f7], + }, + BigNum { + limbs: [0x8ad7d4ab3b17b51f1f8779e781781b, 0x9112fa9f6cf5817199711eebb68441, 0x00416b], + }, + BigNum { + limbs: [0x32cc2e54c34449e0e07885187e87e6, 0x16402efe1052b1c83e96eab6218112, 0x003282], + }, + BigNum { + limbs: [0x388900a081efcebb6ed1c6d5c49f1c, 0xb4fd14ec51aeca9da4521c768d51ec, 0x001d1d], + }, + BigNum { + limbs: [0x851b025f7c6c3044912e382a3b60e5, 0xf25614b12b99689c33b5ed2b4ab367, 0x0056cf], + }, + BigNum { + limbs: [0x7bc9af0716769144464acf1f36c0d2, 0xf594e8c1b0eaeb8fc60143a855ad12, 0x006cdf], + }, + BigNum { + limbs: [0x41da53f8e7e56dbbb9b52fe0c93f2f, 0xb1be40dbcc5d47aa1206c5f9825841, 0x00070d], + }, + BigNum { + limbs: [0x9c31869ce1406981ccf144abd15da6, 0x3ce0bc31b687d449f891cf11c7f71e, 0x0032a7], + }, + BigNum { + limbs: [0x21727c631d1b957e330eba542ea25b, 0x6a726d6bc6c05eefdf763a90100e35, 0x004146], + }, + BigNum { + limbs: [0x3287e1eea50550f6cff67feb0214a3, 0x2edb568a00aaae9ef31c7368529f7b, 0x001469], + }, + BigNum { + limbs: [0x8b1c21115956ae0930097f14fdeb5e, 0x7877d3137c9d849ae4eb96398565d8, 0x005f84], + }, + BigNum { + limbs: [0x1765e37219c59a01744eaf22f61cd5, 0xa5ee072d800a1ddf4a71f83fdd1ad2, 0x005ac1], + }, + BigNum { + limbs: [0xa63e1f8de49664fe8bb14fdd09e32c, 0x0165226ffd3e155a8d961161faea81, 0x00192c], + }, + BigNum { + limbs: [0x9cafd3f14593be08db6cfdab4f5cbc, 0x28b7d9ee0088d8fd5273b9e4c23a8a, 0x0057b4], + }, + BigNum { + limbs: [0x20f42f0eb8c840f724930154b0a345, 0x7e9b4faf7cbf5a3c85944fbd15cac9, 0x001c39], + }, + BigNum { + limbs: [0x1d9eb5efde33ed0116fc035b9ef1e4, 0xbde86d834a067c0302160fb86d4f84, 0x00151e], + }, + BigNum { + limbs: [0xa0054d10202811fee903fba4610e1d, 0xe96abc1a3341b736d5f1f9e96ab5cf, 0x005ece], + }, + BigNum { + limbs: [0x6855f02b9c14d37b254b4c16aecf49, 0xebabeb3d7ef48c4988b6f7e98663fa, 0x0034ca], + }, + BigNum { + limbs: [0x554e12d462472b84dab4b2e95130b8, 0xbba73e5ffe53a6f04f5111b851a159, 0x003f22], + }, + BigNum { + limbs: [0x018d3725a347a231aef389d1650159, 0xe15e3ad0ea849dd9032a8990ebcab4, 0x00055b], + }, + BigNum { + limbs: [0xbc16cbda5b145cce510c752e9afea8, 0xc5f4eecc92c39560d4dd8010ec3a9f, 0x006e91], + }, + BigNum { + limbs: [0x291cf291adb45adf4f59597e92099f, 0x5f789f1b1294ee932d062fe4dad38d, 0x0016a6], + }, + BigNum { + limbs: [0x9487106e50a7a420b0a6a5816df662, 0x47da8a826ab344a6ab01d9bcfd31c6, 0x005d47], + }, + BigNum { + limbs: [0x6c7c3031e114547e10569404305b4e, 0x0bfd1bdf8a97e9ebe9b3a7f47018b5, 0x005d66], + }, + BigNum { + limbs: [0x5127d2ce1d47aa81efa96afbcfa4b3, 0x9b560dbdf2b0494dee5461ad67ec9e, 0x001687], + }, + BigNum { + limbs: [0xd91b48dadb210c247b1a81979f35c0, 0x6ac519183e52453eabbc8a1e13a637, 0x0065d5], + }, + BigNum { + limbs: [0xe488ba25233af2db84e57d6860ca41, 0x3c8e10853ef5edfb2c4b7f83c45f1b, 0x000e18], + }, + BigNum { + limbs: [0xf9c0f86360276418f827bbe6225400, 0xde0c2c3ab91f997809bf4d6d1952fa, 0x0026db], + }, + BigNum { + limbs: [0xc3e30a9c9e349ae707d84319ddac01, 0xc946fd62c42899c1ce48bc34beb258, 0x004d11], + }, + BigNum { + limbs: [0x80d9b39a09327511be38f00fe0e15b, 0x0ed0b718d075007221b4e63392be47, 0x006b81], + }, + BigNum { + limbs: [0x3cca4f65f52989ee41c70ef01f1ea6, 0x98827284acd332c7b653236e45470c, 0x00086c], + }, + BigNum { + limbs: [0x37d5f8a16c4f0f051e1aa4af01a637, 0x04ef549725e3a992bf6d27f26ad9a0, 0x006706], + }, + BigNum { + limbs: [0x85ce0a5e920ceffae1e55a50fe59ca, 0xa263d506576489a7189ae1af6d2bb3, 0x000ce7], + }, + BigNum { + limbs: [0xd3148a4e36e3f07250f3cf33f08243, 0x11b3253731a2f1970b62d2eeb13eaf, 0x001c8e], + }, + BigNum { + limbs: [0xea8f78b1c7780e8daf0c2fcc0f7dbe, 0x95a004664ba541a2cca536b326c6a3, 0x00575f], + }, + BigNum { + limbs: [0xd921850e3e933c628e568582ec954a, 0x63d8ead24230b1313472e590e57dc9, 0x0010ec], + }, + BigNum { + limbs: [0xe4827df1bfc8c29d71a9797d136ab7, 0x437a3ecb3b178208a3952410f28789, 0x006301], + }, + BigNum { + limbs: [0xca58916c4689cf7045743933f004c4, 0x0c8b650b839487fbfdffef881252a8, 0x0025e5], + }, + BigNum { + limbs: [0xf34b7193b7d22f8fba8bc5cc0ffb3d, 0x9ac7c491f9b3ab3dda081a19c5b2aa, 0x004e08], + }, + BigNum { + limbs: [0x98a02aabd7ff53948a74e7d72a06cd, 0x3cd150debfd777dd0e7b4cd77e3590, 0x006129], + }, + BigNum { + limbs: [0x2503d854265cab6b758b1728d5f934, 0x6a81d8bebd70bb5cc98cbcca59cfc3, 0x0012c4], + }, + BigNum { + limbs: [0x8d3c5d8e2ae3c2772ae3260559361e, 0x29d913bae95cd300eb8ed538a67baf, 0x006233], + }, + BigNum { + limbs: [0x3067a571d3783c88d51cd8faa6c9e3, 0x7d7a15e293eb6038ec7934693189a4, 0x0011ba], + }, + BigNum { + limbs: [0x7cb9e132d2958e4a821d18d001905b, 0x4d1e9a0e31c08c8b929e83caa601f1, 0x0042c1], + }, + BigNum { + limbs: [0x40ea21cd2bc670b57de2e62ffe6fa6, 0x5a348f8f4b87a6ae456985d7320362, 0x00312c], + }, + BigNum { + limbs: [0xb6a6109f87dc09a945ddfd3194d6d4, 0x6a5b221a98193db17c13a115ad244a, 0x006b90], + }, + BigNum { + limbs: [0x06fdf260767ff556ba2201ce6b292d, 0x3cf80782e52ef5885bf4688c2ae109, 0x00085d], + }, + BigNum { + limbs: [0xb409a53b4e735b3e20998093f034d1, 0x4132904aebad93d405cac07f33f025, 0x002dcc], + }, + BigNum { + limbs: [0x099a5dc4afe8a3c1df667e6c0fcb30, 0x66209952919a9f65d23d4922a4152e, 0x004621], + }, + BigNum { + limbs: [0x347967c3bc6e57d128b5e565be28ca, 0xd7c469a307201e75fc005a4b76b707, 0x0040d8], + }, + BigNum { + limbs: [0x892a9b3c41eda72ed74a199a41d737, 0xcf8ebffa762814c3dc07af56614e4c, 0x003314], + }, + BigNum { + limbs: [0xe64499b0d7caec0b00709d16ad9a83, 0xb54c8d72e98d795445bdfc60240f61, 0x00365f], + }, + BigNum { + limbs: [0xd75f694f269112f4ff8f61e952657e, 0xf2069c2a93bab9e5924a0d41b3f5f1, 0x003d8d], + }, + BigNum { + limbs: [0xd7a3987f769bcdcca9e87f5a7f1839, 0x28c04a0ebb7cef135ae7b8e3362098, 0x000aaf], + }, + BigNum { + limbs: [0xe6006a8087c0313356177fa580e7c8, 0x7e92df8ec1cb44267d2050bea1e4ba, 0x00693e], + }, + BigNum { + limbs: [0x46526f56e933837b9a7281e045bece, 0xca3c7024fc860c906c9a837e1ef6c9, 0x0051c3], + }, + BigNum { + limbs: [0x775193a915287b84658d7d1fba4133, 0xdd16b97880c226a96b6d8623b90e8a, 0x002229], + }, + BigNum { + limbs: [0x7bf2539257c17e7aad249861212753, 0x694837b9391d085fa60b9f017e7069, 0x0036a0], + }, + BigNum { + limbs: [0x41b1af6da69a808552db669eded8ae, 0x3e0af1e4442b2ada31fc6aa05994ea, 0x003d4d], + }, + BigNum { + limbs: [0x08ab2a2ad21968eec3c5de94bad69d, 0xc186cf00b349406509fe76f63710de, 0x0054c8], + }, + BigNum { + limbs: [0xb4f8d8d52c4296113c3a206b452964, 0xe5cc5a9cc9fef2d4ce0992aba0f475, 0x001f24], + }, + BigNum { + limbs: [0x944f00370ccf4f13fb91c643fb2d66, 0x95a692611ba92c8972a756f96cb36c, 0x003bbe], + }, + BigNum { + limbs: [0x295502c8f18cafec046e38bc04d29b, 0x11ac973c619f06b06560b2a86b51e7, 0x00382f], + }, + BigNum { + limbs: [0x272c6068d63114246a617ab5b1d7c1, 0xc9ed81babb1d1bd763ca4d6bdfd295, 0x005026], + }, + BigNum { + limbs: [0x9677a297282aeadb959e844a4e2840, 0xdd65a7e2c22b1762743dbc35f832be, 0x0023c6], + }, + BigNum { + limbs: [0x951e797897dba86fdf5cf1dc0d5e2d, 0xeff498b8905fcb05b3a6dd0acdcfa0, 0x00328e], + }, + BigNum { + limbs: [0x288589876680569020a30d23f2a1d4, 0xb75e90e4ece8683424612c970a35b3, 0x00415e], + }, + BigNum { + limbs: [0x6c51f4dd49bc1edfaec8846128af8c, 0xec951e59e820a34667352ae9d5dc49, 0x00565e], + }, + BigNum { + limbs: [0x51520e22b49fe02051377a9ed75075, 0xbabe0b4395278ff370d2deb802290a, 0x001d8e], + }, + BigNum { + limbs: [0x564a7da1b902e56caf3d28aac9a3c4, 0xb58e63be683db556ce006a3e0689cf, 0x0032f3], + }, + BigNum { + limbs: [0x6759855e4559199350c2d655365c3d, 0xf1c4c5df150a7de30a079f63d17b84, 0x0040f9], + }, + BigNum { + limbs: [0xc813f4bdbc74d2b530d23b962f2a33, 0xdc158b69f2a11da67680a3c4d0af46, 0x004500], + }, + BigNum { + limbs: [0xf5900e4241e72c4acf2dc369d0d5ce, 0xcb3d9e338aa71593618765dd07560c, 0x002eec], + }, + BigNum { + limbs: [0x5b041f5f9708988f8dae3158baa4f0, 0xfeb5f831eb4b4062055dbcce3169b1, 0x00257e], + }, + BigNum { + limbs: [0x629fe3a0675366707251cda7455b11, 0xa89d316b91fcf2d7d2aa4cd3a69ba2, 0x004e6e], + }, + BigNum { + limbs: [0xd87eea1587a122a77fcdb6e01fc805, 0xddb0d6f819ff9a970fd511c11cc817, 0x005111], + }, + BigNum { + limbs: [0xe52518ea76badc588032481fe037fc, 0xc9a252a5634898a2c832f7e0bb3d3b, 0x0022db], + }, + BigNum { + limbs: [0xcbb32eecd136f3bd36b91fbcc4d9b6, 0x5004d39bdc27c60b52058c6a5d992c, 0x0036d5], + }, + BigNum { + limbs: [0xf1f0d4132d250b42c946df433b264b, 0x574e5601a1206d2e86027d377a6c26, 0x003d18], + }, + BigNum { + limbs: [0x31775507138bf4d55710af424be9d8, 0xced1d9e77067fa868a71c6f77de16d, 0x006ab5], + }, + BigNum { + limbs: [0x8c2cadf8ead00a2aa8ef4fbdb41629, 0xd8814fb60ce038b34d9642aa5a23e6, 0x000937], + }, + BigNum { + limbs: [0x22be3aea24e089a73c2d0794e42fd6, 0x2e20bfe4966c7b20ecd45027f90dba, 0x002641], + }, + BigNum { + limbs: [0x9ae5c815d97b7558c3d2f76b1bd02b, 0x793269b8e6dbb818eb33b979def799, 0x004dac], + }, + BigNum { + limbs: [0x44e9ca24af3f23db594c625e551d2f, 0xaa708ba0d9387fc2ea6188ea73aeba, 0x005797], + }, + BigNum { + limbs: [0x78ba38db4f1cdb24a6b39ca1aae2d2, 0xfce29dfca40fb376eda680b7645699, 0x001c55], + }, + BigNum { + limbs: [0x1a389fbb63a04a5f354e65971de4d9, 0x55f4c40d039d403ad68fd45a57b606, 0x00422e], + }, + BigNum { + limbs: [0xa36b63449abbb4a0cab19968e21b28, 0x515e659079aaf2ff01783547804f4d, 0x0031bf], + }, + BigNum { + limbs: [0xb6cdeb0f626ed00651b1676d885461, 0x33380951bff039cc3eca9b8f12386f, 0x0033f6], + }, + BigNum { + limbs: [0x06d617f09bed2ef9ae4e979277aba0, 0x741b204bbd57f96d993d6e12c5cce4, 0x003ff7], + }, + BigNum { + limbs: [0xda6ff3d514cd34f981d24464db09e3, 0x09b0db598773f7ce184aa37ed63aa3, 0x0007f7], + }, + BigNum { + limbs: [0xe3340f2ae98eca067e2dba9b24f61e, 0x9da24e43f5d43b6bbfbd662301caaf, 0x006bf6], + }, + BigNum { + limbs: [0xd1f0ef63638923521de4c4c32db9ab, 0xbf2f35a097b959e1e80e2b91530396, 0x0021cc], + }, + BigNum { + limbs: [0xebb3139c9ad2dbade21b3a3cd24656, 0xe823f3fce58ed957eff9de108501bc, 0x005220], + }, + BigNum { + limbs: [0xd4938d032e32e3680c16c5a25aa156, 0x3cf7027be69cc607157d64fd6ad8aa, 0x007110], + }, + BigNum { + limbs: [0xe91075fcd0291b97f3e9395da55eab, 0x6a5c272196ab6d32c28aa4a46d2ca8, 0x0002dd], + }, + BigNum { + limbs: [0x49f11bcd26167e652046ce1ccb0b04, 0x0ab5a536a2bc4ae3bc899b9f299d3d, 0x006f24], + }, + BigNum { + limbs: [0x73b2e732d845809adfb930e334f4fd, 0x9c9d8466da8be8561b7e6e02ae6816, 0x0004c9], + }, + BigNum { + limbs: [0x86d07b2a764c768bf2bded30b49e55, 0x35c886192d15cdecb2b5626ba1982a, 0x001d5e], + }, + BigNum { + limbs: [0x36d387d5880f88740d4211cf4b61ac, 0x718aa3845032654d2552a736366d29, 0x00568f], + }, + BigNum { + limbs: [0x741dccc9d3b837864148660c5ff769, 0x674a258c9a5f5df0c9cf432b619672, 0x0044a4], + }, + BigNum { + limbs: [0x498636362aa3c779beb798f3a00898, 0x40090410e2e8d5490e38c676766ee1, 0x002f49], + }, + BigNum { + limbs: [0xf349c07945e5e0edb443dca4bddafd, 0xb2d557f9bc8f70459aa181f5b2c711, 0x00091a], + }, + BigNum { + limbs: [0xca5a4286b8761e124bbc225b422504, 0xf47dd1a3c0b8c2f43d6687ac253e41, 0x006ad2], + }, + BigNum { + limbs: [0x00d055d2a9b0bc6d8a5054451ad0e3, 0x34fba2e3d54058c59b99b8084fe171, 0x007059], + }, + BigNum { + limbs: [0xbcd3ad2d54ab429275afaabae52f1e, 0x725786b9a807da743c6e51998823e2, 0x000394], + }, + BigNum { + limbs: [0xdf38bbada9907b5c19b4d0ea2cf552, 0xe3137f39dc7cc1b70fdd68b0c23c3a, 0x0064a0], + }, + BigNum { + limbs: [0xde6b475254cb83a3e64b2e15d30aaf, 0xc43faa63a0cb7182c82aa0f115c918, 0x000f4c], + }, + BigNum { + limbs: [0xf33e0433d82ab9c8eb3ce41f9b3865, 0x856912a85c660aad656ffeb6c2bf63, 0x006c1f], + }, + BigNum { + limbs: [0xca65fecc2631453714c31ae064c79c, 0x21ea16f520e2288c72980aeb1545ef, 0x0007ce], + }, + BigNum { + limbs: [0xa761ed7f56302d96809abbf18276db, 0xe1596b71f9bc589a263dde7e697951, 0x005505], + }, + BigNum { + limbs: [0x16421580a82bd1697f65430e7d8926, 0xc5f9be2b838bda9fb1ca2b236e8c02, 0x001ee7], + }, + BigNum { + limbs: [0x4999895b894e7b3bcce44cd25431fe, 0x099c42c3c3a0f3e1f8c910f610b39b, 0x00349e], + }, + BigNum { + limbs: [0x740a79a4750d83c4331bb22dabce03, 0x9db6e6d9b9a73f57df3ef8abc751b8, 0x003f4f], + }, + BigNum { + limbs: [0xef365d8f564d8665d97d20da8a4880, 0x019e35705d3df95a130822cd786187, 0x005d09], + }, + BigNum { + limbs: [0xce6da570a80e789a2682de2575b781, 0xa5b4f42d200a39dfc4ffe6d45fa3cb, 0x0016e4], + }, + BigNum { + limbs: [0xbc1a689171d2cf978fe23164f37571, 0xf0e9d4f0de132b3dd8b8c5ad4beab0, 0x0073cf], + }, + BigNum { + limbs: [0x01899a6e8c892f68701dcd9b0c8a90, 0xb66954ac9f3507fbff4f43f48c1aa3, 0x00001d], + }, + BigNum { + limbs: [0x3ffb8f77520ffff2a23b550a4ab2db, 0x0b24e9dfe12818744d82593f6f34d6, 0x0057cf], + }, + BigNum { + limbs: [0x7da87388ac4bff0d5dc4a9f5b54d26, 0x9c2e3fbd9c201ac58a85b06268d07d, 0x001c1e], + }, + BigNum { + limbs: [0x997826bfc8ad389e25e3fe6cef99eb, 0x78749cc708a949a477553bc2f4fc33, 0x000ab3], + }, + BigNum { + limbs: [0x242bdc4035aec661da1c0093106616, 0x2ede8cd6749ee99560b2cddee30920, 0x00693a], + }, + BigNum { + limbs: [0x586184211e1e67d4f1c280878dd156, 0xde92b22d5da44740e70657943af37e, 0x0059db], + }, + BigNum { + limbs: [0x65427edee03d972b0e3d7e78722eab, 0xc8c077701fa3ebf8f101b20d9d11d5, 0x001a11], + }, + BigNum { + limbs: [0xcda463a8d1c74bd10369bd08096f25, 0xee4c927ff242f2211ffa4190c7122f, 0x0005f6], + }, + BigNum { + limbs: [0xefff9f572c94b32efc9641f7f690dc, 0xb906971d8b054118b80dc81110f323, 0x006df6], + }, + BigNum { + limbs: [0x064b923b363ae2563bf5faa91ed24b, 0xba6d9970e394849ed4fd6170ed5c48, 0x0061b0], + }, + BigNum { + limbs: [0xb75870c4c8211ca9c40a0456e12db6, 0xece5902c99b3ae9b030aa830eaa90b, 0x00123c], + }, + BigNum { + limbs: [0xac287e54e95f83e124da9b67220f6a, 0x9a86ccaef3e24ca64c8224be01c20b, 0x005fe6], + }, + BigNum { + limbs: [0x117b84ab14fc7b1edb256398ddf097, 0x0ccc5cee8965e6938b85e4e3d64348, 0x001407], + }, + BigNum { + limbs: [0xbdc8bec4ca55090a1159e33226fddc, 0x01452a43350e9ccd0a8ad0d9ab6b1b, 0x004ded], + }, + BigNum { + limbs: [0xffdb443b3406f5f5eea61bcdd90225, 0xa60dff5a4839966ccd7d38c82c9a37, 0x002600], + }, + BigNum { + limbs: [0x5e1c54792bce639cc1766f87d12b83, 0xfc8a65c7f929a997bfdd4f35e3ed22, 0x003339], + }, + BigNum { + limbs: [0x5f87ae86d28d9b633e898f782ed47e, 0xaac8c3d5841e89a2182aba6bf41831, 0x0040b3], + }, + BigNum { + limbs: [0xa43adf717e6f5462df3334e6f50603, 0x78efac810f398ebea89d164fda7eb5, 0x00194a], + }, + BigNum { + limbs: [0x1969238e7fecaa9d20ccca190af9fe, 0x2e637d1c6e0ea47b2f6af351fd869e, 0x005aa3], + }, + BigNum { + limbs: [0xc24e588eeaf243b62ac02fe31ee32e, 0x8a30a21a1e10ea55f945e2ab111301, 0x004765], + }, + BigNum { + limbs: [0xfb55aa711369bb49d53fcf1ce11cd3, 0x1d2287835f3748e3dec226f6c6f251, 0x002c88], + }, + BigNum { + limbs: [0xc6c68d42f47a67560dced4fdd1fa58, 0x7540ddef6d67d1f5d35735e4bd5e3b, 0x002f01], + }, + BigNum { + limbs: [0xf6dd75bd09e197a9f2312a022e05a9, 0x32124bae0fe0614404b0d3bd1aa717, 0x0044ec], + }, + BigNum { + limbs: [0xca9e3b165ffd945b504b3bb34e64db, 0x5e2e8b0cfbfa61bd24d49a89618b24, 0x0012ad], + }, + BigNum { + limbs: [0xf305c7e99e5e6aa4afb4c34cb19b26, 0x49249e90814dd17cb3336f18767a2e, 0x006140], + }, + BigNum { + limbs: [0x96f2f1c97a5e1a3a3e804ffc87763e, 0xbb98eb7f7419a70793f2a8652ad8ed, 0x002c07], + }, + BigNum { + limbs: [0x26b1113683fde4c5c17faf037889c3, 0xebba3e1e092e8c324415613cad2c66, 0x0047e5], + }, + BigNum { + limbs: [0x140327f4c971e021cd8ea769a094a8, 0xaaff762d242c005f3353a3f16a497c, 0x002959], + }, + BigNum { + limbs: [0xa9a0db0b34ea1ede327157965f6b59, 0xfc53b370591c32daa4b465b06dbbd7, 0x004a93], + }, + BigNum { + limbs: [0x0f71e5bc71e446fdc1747a63ca7ac3, 0x9afc610afa905bd996a93f88b570c4, 0x002c32], + }, + BigNum { + limbs: [0xae321d438c77b8023e8b849c35853e, 0x0c56c89282b7d760415eca1922948f, 0x0047bb], + }, + BigNum { + limbs: [0xf4cfbb63e2c54e74aa45a97409d198, 0x989b5812a14b95b3455dc1fc4ccd45, 0x00472e], + }, + BigNum { + limbs: [0xc8d4479c1b96b08b55ba558bf62e69, 0x0eb7d18adbfc9d8692aa47a58b380d, 0x002cbf], + }, + BigNum { + limbs: [0x93cc71925057864dbe0415c94990ca, 0xc088a84a78536f2265c88b14e72ab3, 0x0036e4], + }, + BigNum { + limbs: [0x29d7916dae0478b241fbe936b66f37, 0xe6ca815304f4c417723f7e8cf0daa0, 0x003d08], + }, + BigNum { + limbs: [0x84298ae8c5a849168f04747c6dd5f6, 0xafa0841de6392d45266b5073cdd55a, 0x002780], + }, + BigNum { + limbs: [0x397a781738b3b5e970fb8a83922a0b, 0xf7b2a57f970f05f4b19cb92e0a2ff9, 0x004c6c], + }, + BigNum { + limbs: [0x3e0b597663520df89d77764e3c697d, 0x98e3d7cffb2883fe05d75d187fb448, 0x000e2d], + }, + BigNum { + limbs: [0x7f98a9899b09f107628888b1c39684, 0x0e6f51cd821faf3bd230ac8958510b, 0x0065c0], + }, + BigNum { + limbs: [0x19ce40ca252a482fa108ef1d9fd883, 0xa5be459b5d08fae658577ea875bd85, 0x0053b2], + }, + BigNum { + limbs: [0xa3d5c235d931b6d05ef70fe260277e, 0x0194e402203f38537fb08af96247ce, 0x00203b], + }, + BigNum { + limbs: [0x8e834b9d101cc30553818f08ec3792, 0x732ccb933eb66f82430836ca2cb22d, 0x002a8a], + }, + BigNum { + limbs: [0x2f20b762ee3f3bfaac7e6ff713c86f, 0x34265e0a3e91c3b794ffd2d7ab5326, 0x004963], + }, + BigNum { + limbs: [0x578c6d4d68ed7dca98bd685bd2aadb, 0xcf54a97840df560670b0af632fe115, 0x0002a8], + }, + BigNum { + limbs: [0x661795b2956e8135674296a42d5526, 0xd7fe80253c68dd3367575a3ea8243e, 0x007144], + }, + BigNum { + limbs: [0x34d2b570c678cbc0cb94250c958ba6, 0x1552c8b68e2f38b6e13590d0570de6, 0x0025a8], + }, + BigNum { + limbs: [0x88d14d8f37e3333f346bd9f36a745b, 0x920060e6ef18fa82f6d278d180f76d, 0x004e45], + }, + BigNum { + limbs: [0x1184a5a8c9d0c61c94431cded59c35, 0x120f1f2bdbbd7a988914f8099e95c1, 0x00607e], + }, + BigNum { + limbs: [0xac1f5d57348b38e36bbce2212a63cc, 0x95440a71a18ab8a14ef31198396f92, 0x00136f], + }, + BigNum { + limbs: [0xd6fefe5e71e4af3ce5516b5b587650, 0x34b9a353074fe5db498087c0b30bec, 0x002f22], + }, + BigNum { + limbs: [0xe6a504a18c774fc31aae93a4a789b1, 0x7299864a75f84d5e8e8781e124f966, 0x0044cb], + }, + BigNum { + limbs: [0x7afe2f33b2d29c01e3f791190a25d7, 0x177195db06ee6206cad3f8f8edd20f, 0x000ffe], + }, + BigNum { + limbs: [0x42a5d3cc4b8962fe1c086de6f5da2a, 0x8fe193c27659d1330d3410a8ea3344, 0x0063ef], + }, + BigNum { + limbs: [0x5406346f9e88c9af3e5868ce1e4fa4, 0xf3250b114352a07bbae29228324286, 0x0037a1], + }, + BigNum { + limbs: [0x699dce905fd33550c1a79631e1b05d, 0xb42e1e8c39f592be1d257779a5c2cd, 0x003c4b], + }, + BigNum { + limbs: [0x32052ccde9b4a9e6681bf64684319d, 0x21267ce32c4122aea787e30b9f31d8, 0x005561], + }, + BigNum { + limbs: [0x8b9ed63214a7551997e408b97bce64, 0x862cacba5107108b3080269638d37b, 0x001e8c], + }, + BigNum { + limbs: [0x7297ee3889650ac76cad1646b4761b, 0x3c8ebc9a02da5d2bc85bcb435da336, 0x00018a], + }, + BigNum { + limbs: [0x4b0c14c774f6f4389352e8b94b89e6, 0x6ac46d037a6dd60e0fac3e5e7a621d, 0x007263], + }, + BigNum { + limbs: [0x254665e6c64ce581eae2c4dce4c189, 0x28fa32bbdcdfe1800790e64116d4ae, 0x006d41], + }, + BigNum { + limbs: [0x985d9d19380f197e151d3a231b3e78, 0x7e58f6e1a06851b9d0772360c130a5, 0x0006ac], + }, + BigNum { + limbs: [0xf3441dca163541a496c81e00ff1276, 0xbde858c524939b5eade1d86f47824f, 0x00678d], + }, + BigNum { + limbs: [0xca5fe535e826bd5b6937e0ff00ed8b, 0xe96ad0d858b497db2a263132908303, 0x000c5f], + }, + BigNum { + limbs: [0xe51ebc10b57b63a5e9eab8152b4839, 0xee15d6617551bb90e37cb272360e41, 0x004f8c], + }, + BigNum { + limbs: [0xd88546ef48e09b5a161546ead4b7c8, 0xb93d533c07f677a8f48b572fa1f711, 0x002460], + }, + BigNum { + limbs: [0x22cebc18e0dfea53811fb238fd2814, 0x90a3cef9da73ce6a4f2099a0af14fb, 0x0021bb], + }, + BigNum { + limbs: [0x9ad546e71d7c14ac7ee04cc702d7ed, 0x16af5aa3a2d464cf88e7700128f058, 0x005232], + }, + BigNum { + limbs: [0xfa1af59c87e3c79575577ad3edf1cb, 0x27562b6a9a47cd994218dfd57859ef, 0x00061a], + }, + BigNum { + limbs: [0xc3890d637678376a8aa8842c120e36, 0x7ffcfe32e30065a095ef29cc5fab63, 0x006dd3], + }, + BigNum { + limbs: [0x82dfab906848c79c3c62b3f1e99da1, 0x28bbc7ee1bd43b6c686683ad41bf33, 0x0012d8], + }, + BigNum { + limbs: [0x3ac4576f96133763c39d4b0e166260, 0x7e9761af6173f7cd6fa185f4964620, 0x006115], + }, + BigNum { + limbs: [0x55abba30f4c41cd573721eba4465da, 0x1de7a6c125e8339bd6dd4c22a7b59c, 0x0014b0], + }, + BigNum { + limbs: [0x67f848cf0997e22a8c8de045bb9a27, 0x896b82dc575fff9e012abd7f304fb7, 0x005f3d], + }, + BigNum { + limbs: [0x2d52cdfd0b98891cc466c414f63fc0, 0x2c10967cc466405960131e7988212b, 0x00237a], + }, + BigNum { + limbs: [0x90513502f2c375e33b993aeb09c041, 0x7b429320b8e1f2e077f4eb284fe428, 0x005073], + }, + BigNum { + limbs: [0x1c1e85d06fe60186a9252bd472f5c3, 0xa8ec47f5c95bf245914235998e63d5, 0x003282], + }, + BigNum { + limbs: [0xa1857d2f8e75fd7956dad32b8d0a3e, 0xfe66e1a7b3ec40f446c5d40849a17e, 0x00416a], + }, + BigNum { + limbs: [0x020c89ecc0849375daa8809864b9c9, 0xcb5137860e4d96b953a9110b8bc722, 0x0047e3], + }, + BigNum { + limbs: [0xbb9779133dd76b8a25577e679b4638, 0xdc01f2176efa9c80845ef8964c3e31, 0x002c09], + }, + BigNum { + limbs: [0xdc61fcccb02913fc394ee9057469b2, 0x555589c733ab00def2f546ab11bdb3, 0x006841], + }, + BigNum { + limbs: [0xe14206334e32eb03c6b115fa8b964f, 0x51fd9fd6499d325ae512c2f6c6479f, 0x000bac], + }, + BigNum { + limbs: [0x726e23ee95bde2252d6661602d7435, 0x26d40fbaeeb2b594020b8675359421, 0x0060ae], + }, + BigNum { + limbs: [0x4b35df11689e1cdad2999d9fd28bcc, 0x807f19e28e957da5d5fc832ca27132, 0x00133f], + }, + BigNum { + limbs: [0x9a0662c6b842dae4bdeee08a005d23, 0x5a11d5a09148a256aa11611dc01ba3, 0x001d34], + }, + BigNum { + limbs: [0x239da0394619241b42111e75ffa2de, 0x4d4153fcebff90e32df6a88417e9b0, 0x0056b9], + }, + BigNum { + limbs: [0xac53ac97accee001ed731a05753b82, 0x2e90157bd61796b1028e1af5170f0b, 0x000a2c], + }, + BigNum { + limbs: [0x11505668518d1efe128ce4fa8ac47f, 0x78c31421a7309c88d579eeacc0f648, 0x0069c1], + }, + BigNum { + limbs: [0xb6f5ee2e46bfbbca14e7c13bdd9bf7, 0x1801a4e66be3bb20514a762a99af1c, 0x00441c], + }, + BigNum { + limbs: [0x06ae14d1b79c4335eb183dc422640a, 0x8f5184b71164781986bd93773e5637, 0x002fd1], + }, + BigNum { + limbs: [0x439ad148d806a7ccdf8183b63ed567, 0x8c89b8e828873394d984953e9c4dc3, 0x0010e4], + }, + BigNum { + limbs: [0x7a0931b726555733207e7b49c12a9a, 0x1ac970b554c0ffa4fe8374633bb790, 0x006309], + }, + BigNum { + limbs: [0x3e07bd495b317f1e77078e4a922207, 0x5c0d57961afe92b25ed1032a82f445, 0x0041c9], + }, + BigNum { + limbs: [0x7f9c45b6a32a7fe188f870b56dddfa, 0x4b45d2076249a0877937067755110e, 0x003224], + }, + BigNum { + limbs: [0x3ab0758cbe037ad272322f2e9b1d0f, 0xce3c4a3cd9a490a6c43e4346125662, 0x000ae3], + }, + BigNum { + limbs: [0x82f38d734058842d8dcdcfd164e2f2, 0xd916df60a3a3a29313c9c65bc5aef1, 0x006909], + }, + BigNum { + limbs: [0x466a99fb5f7bef1e6017af6230182b, 0x7eb0960434809577da230e2c88260c, 0x0003df], + }, + BigNum { + limbs: [0x773969049ee00fe19fe84f9dcfe7d6, 0x28a2939948c79dc1fde4fb754fdf47, 0x00700e], + }, + BigNum { + limbs: [0x6ed968e5c09240096c2d089156eaed, 0x5fefa464baa254d980d9d59b1f65bd, 0x005bb3], + }, + BigNum { + limbs: [0x4eca9a1a3dc9bef693d2f66ea91514, 0x47638538c2a5de60572e3406b89f96, 0x00183a], + }, + BigNum { + limbs: [0x999c758ec8080ab8e9e36ceea971b7, 0x146d0722977916eed0bc549904aba0, 0x002254], + }, + BigNum { + limbs: [0x24078d713653f447161c9211568e4a, 0x92e6227ae5cf1c4b074bb508d359b3, 0x005199], + }, + BigNum { + limbs: [0x4d72814a2d66d08895e916b75c0586, 0x130e3be6e721dff06413633821356e, 0x0023c2], + }, + BigNum { + limbs: [0x703181b5d0f52e776a16e848a3fa7b, 0x9444edb69626534973f4a669b6cfe5, 0x00502b], + }, + BigNum { + limbs: [0x4f3dcab708c5c68b54a44d5eb5f239, 0xafacdf20a18221d002ebd6d577c87d, 0x004b6e], + }, + BigNum { + limbs: [0x6e663848f5963874ab5bb1a14a0dc8, 0xf7a64a7cdbc61169d51c32cc603cd6, 0x00287e], + }, + BigNum { + limbs: [0x3cd85a008ad190414dbdcb15d0dac0, 0x18c3495bb2a9b4c1265d710a862f5f, 0x006749], + }, + BigNum { + limbs: [0x80cba8ff738a6ebeb24233ea2f2541, 0x8e8fe041ca9e7e78b1aa989751d5f4, 0x000ca4], + }, + BigNum { + limbs: [0xfc5bbb5fe6d85bf135c083512c9fe8, 0xfacd0f29438dc279c735326262a715, 0x00443c], + }, + BigNum { + limbs: [0xc14847a01783a30eca3f7baed36019, 0xac861a7439ba70c010d2d73f755e3d, 0x002fb0], + }, + BigNum { + limbs: [0xddd69a355f5807ccd7ce20289e7057, 0xc73dd7b7381292525534a336790988, 0x0021bd], + }, + BigNum { + limbs: [0xdfcd68ca9f03f7332831ded7618faa, 0xe01551e64535a0e782d3666b5efbca, 0x00522f], + }, + BigNum { + limbs: [0x2e72025de4a0c712a4159d38ee7edf, 0x93133a3a6b7193b0142074a447361e, 0x00210f], + }, + BigNum { + limbs: [0x8f3200a219bb37ed5bea61c7118122, 0x143fef6311d69f89c3e794fd90cf35, 0x0052de], + }, + BigNum { + limbs: [0x668bb61eabbf26efe8b7c5f4cdbb8a, 0x8055f6f56ceef2a6ba04234203090d, 0x005169], + }, + BigNum { + limbs: [0x57184ce1529cd8101748390b324477, 0x26fd32a8105940931e03e65fd4fc46, 0x002284], + }, + BigNum { + limbs: [0x151dff81d368d532dbe75201147c74, 0xf563dca47733442fccebb3b272904a, 0x0015aa], + }, + BigNum { + limbs: [0xa886037e2af329cd2418acfeeb838d, 0xb1ef4cf90614ef0a0b1c55ef657509, 0x005e42], + }, + BigNum { + limbs: [0x0a8dbfebab4f06748e13419b319c10, 0x1d7727add9dd135d2ad0956ba98d78, 0x00528e], + }, + BigNum { + limbs: [0xb3164314530cf88b71ecbd64ce63f1, 0x89dc01efa36b1fdcad3774362e77db, 0x00215f], + }, + BigNum { + limbs: [0x9f0e6768335b1d2b9a21f44b8839df, 0xcffa24a5ed86e22b586a2e37e5b16a, 0x0039b5], + }, + BigNum { + limbs: [0x1e959b97cb00e1d465de0ab477c622, 0xd75904f78fc1510e7f9ddb69f253e9, 0x003a37], + }, + BigNum { + limbs: [0xe12f618a02f52636e22842492675f1, 0x1578dddc06904031a5b1f1d0e35a2d, 0x00465a], + }, + BigNum { + limbs: [0xdc74a175fb66d8c91dd7bcb6d98a10, 0x91da4bc176b7f308325617d0f4ab25, 0x002d93], + }, + BigNum { + limbs: [0xfc7593aacae8f0048c998c718b18fa, 0xb132aace436810593938764cd2873c, 0x005e9f], + }, + BigNum { + limbs: [0xc12e6f5533730efb7366728e74e707, 0xf6207ecf39e022e09ecf9355057e16, 0x00154d], + }, + BigNum { + limbs: [0x855c98f03e4ec9bbc878488ea71ba8, 0x4f4d80e421236231f3707b9d46a099, 0x005765], + }, + BigNum { + limbs: [0x38476a0fc00d35443787b67158e459, 0x5805a8b95c24d107e4978e049164ba, 0x001c88], + }, + BigNum { + limbs: [0xa9e6457cbef76d1fccde66fc588d7d, 0x6964e2c2128178dec9a67d6bf69ab1, 0x004c6b], + }, + BigNum { + limbs: [0x13bdbd833f6491e033219803a77284, 0x3dee46db6ac6ba5b0e618c35e16aa2, 0x002782], + }, + BigNum { + limbs: [0x0ab900fdd04ba0c27a1a12d0f2c7b4, 0x958f86d2b38d13cebad18da8de97be, 0x004fe1], + }, + BigNum { + limbs: [0xb2eb02022e105e3d85e5ec2f0d384d, 0x11c3a2cac9bb1f6b1d367bf8f96d95, 0x00240c], + }, + BigNum { + limbs: [0xfec709676525a283ae887be3b065d2, 0x31dc646483ada7ec9b7504f5c08d9a, 0x004ea3], + }, + BigNum { + limbs: [0xbedcf99899365c7c5177831c4f9a2f, 0x7576c538f99a8b4d3c9304ac1777b8, 0x00254a], + }, + BigNum { + limbs: [0x6236400ce1a035463b81e35706dc93, 0x794174efafe9bbb1da00479695453e, 0x0008ab], + }, + BigNum { + limbs: [0x5b6dc2f31cbbc9b9c47e1ba8f9236e, 0x2e11b4adcd5e7787fe07c20b42c015, 0x006b42], + }, + BigNum { + limbs: [0xac3ff58faca4e3edadb1101621f8bf, 0x844c97b849b37e115e7879e5fe85de, 0x003d52], + }, + BigNum { + limbs: [0x11640d7051b71b12524eeee9de0742, 0x230691e53394b528798f8fbbd97f75, 0x00369b], + }, + BigNum { + limbs: [0x7c85bcff563e231e8623e352e51c35, 0xcdffedfad78d5fe87ca61ae9abc08f, 0x002b43], + }, + BigNum { + limbs: [0x411e4600a81ddbe179dc1bad1ae3cc, 0xd9533ba2a5bad3515b61eeb82c44c4, 0x0048a9], + }, + BigNum { + limbs: [0xa804027c23b9f95376802e91e05be8, 0xe9c4cef6cbefe6c9741d8956584aee, 0x001cdb], + }, + BigNum { + limbs: [0x15a00083daa205ac897fd06e1fa419, 0xbd8e5aa6b1584c7063ea804b7fba65, 0x005711], + }, + BigNum { + limbs: [0x0e0cd54bd4aa61826d2d37f94a447f, 0x63512d6507eff7e74e36ebb406ab4a, 0x0065c6], + }, + BigNum { + limbs: [0xaf972db429b19d7d92d2c706b5bb82, 0x4401fc3875583b5289d11dedd15a09, 0x000e27], + }, + BigNum { + limbs: [0x1d8f59d2e0d8f517d1f555defa4965, 0xce0a6cf41e04d1f37da3193dc2f7e1, 0x000e39], + }, + BigNum { + limbs: [0xa014a92d1d8309e82e0aa92105b69c, 0xd948bca95f4361465a64f064150d72, 0x0065b3], + }, + BigNum { + limbs: [0xe9debb01a73a7d2d2fd8f2b8879fa4, 0x9ddf450c9503f6d1e86fff13f87f5a, 0x0010af], + }, + BigNum { + limbs: [0xd3c547fe572181d2d0270c4778605d, 0x0973e490e8443c67ef980a8ddf85f8, 0x00633e], + }, + BigNum { + limbs: [0x82a869b076061adec6750f6279f487, 0xe06fd1d55ed610877582a2642dfdc9, 0x0052c8], + }, + BigNum { + limbs: [0x3afb994f8855e421398aef9d860b7a, 0xc6e357c81e7222b26285673daa078a, 0x002124], + }, + BigNum { + limbs: [0xcd0477f8b300e2e8072dcdffa22a4b, 0x0427dc1ed46b959d6213b9fb9ca34b, 0x006cfb], + }, + BigNum { + limbs: [0xf09f8b074b5b1c17f8d231005dd5b6, 0xa32b4d7ea8dc9d9c75f44fa63b6207, 0x0006f2], + }, + BigNum { + limbs: [0x6e9b05922fb4ca4db6496c5f476610, 0x7f60ea83e3914376d6422502433719, 0x004ee5], + }, + BigNum { + limbs: [0x4f08fd6dcea734b249b692a0b899f1, 0x27f23f1999b6efc301c5e49f94ce3a, 0x002508], + }, + BigNum { + limbs: [0xa62fc0089b634dbf2aac25d7d75fee, 0xdb944f0c588276cb7f8865b7d9ba3e, 0x0035ed], + }, + BigNum { + limbs: [0x177442f762f8b140d553d92828a013, 0xcbbeda9124c5bc6e587fa3e9fe4b15, 0x003dff], + }, + BigNum { + limbs: [0x98290aa8b6ad53f2043aa3f401dfdc, 0x09673fc03acedd09ac836e1ca7736a, 0x0053e1], + }, + BigNum { + limbs: [0x257af85747aeab0dfbc55b0bfe2025, 0x9debe9dd427956302b849b853091e9, 0x00200c], + }, + BigNum { + limbs: [0x647448c7b0afb7ec1c61775ab7abdd, 0x889ebec7d61b637217c82c971d9e4f, 0x005239], + }, + BigNum { + limbs: [0x592fba384dac4713e39e87a5485424, 0x1eb46ad5a72ccfc7c03fdd0aba6704, 0x0021b4], + }, + BigNum { + limbs: [0xfdccab18b6ef1df95145ce9d220f41, 0xae5fde2b4f5827052bda8626455524, 0x0033b2], + }, + BigNum { + limbs: [0xbfd757e7476ce106aeba3062ddf0c0, 0xf8f34b722df00c34ac2d837b92b02e, 0x00403a], + }, + BigNum { + limbs: [0x48364c6d02ded0006ae02ab74add69, 0x07e0704b0c97aead5c4e44e64375c3, 0x000c8d], + }, + BigNum { + limbs: [0x756db692fb7d2eff951fd448b52298, 0x9f72b95270b0848c7bb9c4bb948f90, 0x006760], + }, + BigNum { + limbs: [0x0fa82de7378c5647041bcb6bd46fcc, 0x5e373ec8ee1bbc8c8f5360d1f7b0e5, 0x00450a], + }, + BigNum { + limbs: [0xadfbd518c6cfa8b8fbe433942b9035, 0x491bead48f2c76ad48b4a8cfe0546e, 0x002ee3], + }, + BigNum { + limbs: [0xd7924989f5052ba483ec3b98206641, 0xa817449255ff6eb0398da5372b4151, 0x0008d0], + }, + BigNum { + limbs: [0xe611b9760956d35b7c13c367df99c0, 0xff3be50b2748c4899e7a646aacc401, 0x006b1c], + }, + BigNum { + limbs: [0xcaad5df72cd49bbe86414d32e186de, 0xdad728f81f15d7ed9ff23c94d4b3e1, 0x00493c], + }, + BigNum { + limbs: [0xf2f6a508d187634179beb1cd1e7923, 0xcc7c00a55e325b4c3815cd0d035171, 0x002ab0], + }, + BigNum { + limbs: [0x1247f31227b7d49e32a2c19d55f8d3, 0xded3eebc215ddeea461ee0cd7d94d6, 0x001f0e], + }, + BigNum { + limbs: [0xab5c0fedd6a42a61cd5d3d62aa072e, 0xc87f3ae15bea544f91e928d45a707d, 0x0054de], + }, + BigNum { + limbs: [0xdc89075d67ed7e317050f884ca576b, 0x281b92bda8a01a3a778c086ff4e1ad, 0x0001ed], + }, + BigNum { + limbs: [0xe11afba2966e80ce8faf067b35a896, 0x7f3796dfd4a818ff607c0131e323a5, 0x007200], + }, + BigNum { + limbs: [0xcdb87cb712877e0bf60e7c63c2437b, 0x4efb2363ab2f1ff78cb0023480e8f9, 0x001a6f], + }, + BigNum { + limbs: [0xefeb8648ebd480f409f1829c3dbc86, 0x58580639d21913424b58076d571c59, 0x00597e], + }, + BigNum { + limbs: [0xd45c8361c9f7297117194176b34fcd, 0xabbd11933f13d0bd028d2df1d8d2ea, 0x00657c], + }, + BigNum { + limbs: [0xe9477f9e3464d58ee8e6bd894cb034, 0xfb96180a3e34627cd57adbafff3268, 0x000e70], + }, + BigNum { + limbs: [0xf77a7bafa8af3673a70628281b1030, 0x37b660a6007a671cd104321d3da423, 0x00523d], + }, + BigNum { + limbs: [0xc629875055acc88c58f9d6d7e4efd1, 0x6f9cc8f77ccdcc1d0703d7849a612f, 0x0021b0], + }, + BigNum { + limbs: [0xa5adf88739a7bd9d7f8fd7d5e17d4c, 0xa451b990fd38ff18af03ba072d922e, 0x0030ed], + }, + BigNum { + limbs: [0x17f60a78c4b441628070272a1e82b5, 0x0301700c800f342129044f9aaa7325, 0x004300], + }, + BigNum { + limbs: [0xd55f49d6b5a1fa4a715cef814e4239, 0x8cd22f924921ab164cf3cbcd563e6d, 0x005b3b], + }, + BigNum { + limbs: [0xe844b92948ba04b58ea30f7eb1bdc8, 0x1a80fa0b342688238b143dd481c6e5, 0x0018b2], + }, + BigNum { + limbs: [0xaa756712f2bc015611aad4215f6c1d, 0x446d71965b3a8e20c5aa738a332574, 0x001a1a], + }, + BigNum { + limbs: [0x132e9bed0b9ffda9ee552adea093e4, 0x62e5b807220da519125d9617a4dfdf, 0x0059d3], + }, + BigNum { + limbs: [0xdf1a3727fd721d20a3252151ac98a0, 0x0d63de7126601d7386b1d14b886090, 0x001c40], + }, + BigNum { + limbs: [0xde89cbd800e9e1df5cdaddae536761, 0x99ef4b2c56e815c6515638564fa4c2, 0x0057ad], + }, + BigNum { + limbs: [0xfb22b17b1b8fce193fef7af0333d31, 0x8d54f1ac8eda45244257bc7eed74d0, 0x001373], + }, + BigNum { + limbs: [0xc2815184e2cc30e6c010840fccc2d0, 0x19fe37f0ee6dee1595b04d22ea9082, 0x00607a], + }, + BigNum { + limbs: [0xd94eb86ff1ed3c7833cda901f237d1, 0x6cac58e7d4d227ece7306d1ad0f73b, 0x003446], + }, + BigNum { + limbs: [0xe4554a900c6ec287cc3255fe0dc830, 0x3aa6d0b5a8760b4cf0d79c87070e17, 0x003fa7], + }, + BigNum { + limbs: [0x0a0b6dc3344e9740aa98279de1d272, 0x396f0bbba2006c10dffbc6e2ccfd1f, 0x0043ce], + }, + BigNum { + limbs: [0xb398953cca0d67bf5567d7621e2d8f, 0x6de41de1db47c728f80c42bf0b0834, 0x00301f], + }, + BigNum { + limbs: [0x2774aacbd8e5410e990b7ea6099539, 0x0ff19575c66a5d823a24eadcf44034, 0x00013a], + }, + BigNum { + limbs: [0x962f58342576bdf166f48059f66ac8, 0x97619427b6ddd5b79de31ec4e3c51f, 0x0072b3], + }, + BigNum { + limbs: [0x98cfc228cdac64c0f4b12f26fbee10, 0x608230bf89f522f30a822df80cebab, 0x006bbe], + }, + BigNum { + limbs: [0x24d440d730af9a3f0b4ecfd90411f1, 0x46d0f8ddf3531046cd85dba9cb19a8, 0x00082f], + }, + BigNum { + limbs: [0xfcae5ba09e0c9e7936dad504dd20d8, 0xd14ad990c5d94abc61794fedbb7b37, 0x0004fd], + }, + BigNum { + limbs: [0xc0f5a75f604f6086c92529fb22df29, 0xd608500cb76ee87d768eb9b41c8a1b, 0x006eef], + }, + BigNum { + limbs: [0x2dd2cd0d439bf99df86a7b583e6a7a, 0x334ff56b12c0fe4d544102494ce813, 0x000313], + }, + BigNum { + limbs: [0x8fd135f2bac00562079583a7c19587, 0x740334326a8734ec83c707588b1d40, 0x0070da], + }, + BigNum { + limbs: [0x012acc92ab4930bd516cd62ba82664, 0xc77d512a5bc54b53c2020e1531be45, 0x0008b1], + }, + BigNum { + limbs: [0xbc79366d5312ce42ae9328d457d99d, 0xdfd5d8732182e7e61605fb8ca6470e, 0x006b3b], + }, + BigNum { + limbs: [0xa0896f1080c1eee49d3bc9f665878a, 0x46f8c3bf1cc0a4b9f13d221641f726, 0x0029aa], + }, + BigNum { + limbs: [0x1d1a93ef7d9a101b62c435099a7877, 0x605a65de60878e7fe6cae78b960e2d, 0x004a43], + }, + BigNum { + limbs: [0x53929cdf5d53f68046a0338d19eb21, 0x4ecf71c935ff0ddb58cba88e385eb4, 0x00701c], + }, + BigNum { + limbs: [0x6a116620a108087fb95fcb72e614e0, 0x5883b7d44749255e7f3c61139fa69f, 0x0003d1], + }, + BigNum { + limbs: [0x4d116daf42538b08c8845e74a76e3c, 0x3df169bd66227d167a1aa89fd1bf92, 0x006073], + }, + BigNum { + limbs: [0x70929550bc0873f7377ba08b5891c5, 0x6961bfe01725b6235ded61020645c1, 0x00137a], + }, + BigNum { + limbs: [0x7ec84bcbd1676791088fac0c4f9032, 0x2f32a44ea3b5e5353491392eb969f1, 0x004928], + }, + BigNum { + limbs: [0x3edbb7342cf4976ef77052f3b06fcf, 0x7820854ed9924e04a376d0731e9b62, 0x002ac5], + }, + BigNum { + limbs: [0x9fefa0239bcb3e8a28db7c68591369, 0xab965ee2dd62dc7f696be9aa0ec978, 0x0028e0], + }, + BigNum { + limbs: [0x1db462dc6290c075d7248297a6ec98, 0xfbbccaba9fe556ba6e9c1ff7c93bdb, 0x004b0c], + }, + BigNum { + limbs: [0xb1df0d7f11055f353f8e344469d5db, 0xee2957ec3250ae111cfbdc4970ab0d, 0x006a85], + }, + BigNum { + limbs: [0x0bc4f580ed569fcac071cabb962a26, 0xb929d1b14af78528bb0c2d58675a46, 0x000967], + }, + BigNum { + limbs: [0xcaf14f19ed7d03a0f0d6fddf65ab78, 0x1d09b8983f31effc399a99a0f0774b, 0x001ce3], + }, + BigNum { + limbs: [0xf2b2b3e610defb5f0f2901209a5489, 0x8a4971053e16433d9e6d7000e78e07, 0x00570a], + }, + BigNum { + limbs: [0x0eb926614be1a588cdfcb063137ed0, 0xde7ab1959c4bc6a2ed06d37f167a03, 0x00407f], + }, + BigNum { + limbs: [0xaeeadc9eb27a597732034e9cec8131, 0xc8d87807e0fc6c96eb013622c18b50, 0x00336d], + }, + BigNum { + limbs: [0x7ea24c2e5ec8f8aa638667dde3590d, 0x5373bf1e91d9fef178082e44ecc0c7, 0x002ce4], + }, + BigNum { + limbs: [0x3f01b6d19f9306559c7997221ca6f4, 0x53df6a7eeb6e34485fffdb5ceb448c, 0x004709], + }, + BigNum { + limbs: [0x908be130f926723ad61f87d207308f, 0xd1772f77e6a8eea341e88434f19304, 0x004a4c], + }, + BigNum { + limbs: [0x2d1821cf05358cc529e0772df8cf72, 0xd5dbfa25969f4496961f856ce6724f, 0x0029a0], + }, + BigNum { + limbs: [0xe8222d4428fff63a9a7c5389c73e8f, 0x6f9d1eeb0abdf3bac4d64a36538a64, 0x007363], + }, + BigNum { + limbs: [0xd581d5bbd55c08c56583ab7638c172, 0x37b60ab2728a3f7f1331bf6b847aee, 0x00008a], + }, + BigNum { + limbs: [0x931b5f8b6cbdcc7974730b5c3ba924, 0x64469d1accc8fc62eef966d0253b7f, 0x003675], + }, + BigNum { + limbs: [0x2a88a374919e32868b8cf3a3c456dd, 0x430c8c82b07f36d6e90ea2d1b2c9d4, 0x003d78], + }, + BigNum { + limbs: [0x67e34e22abef508c9d7369401c9ce9, 0x6cd186a4d1bf23bfab53572bc8e62a, 0x007179], + }, + BigNum { + limbs: [0x55c0b4dd526cae73628c95bfe36318, 0x3a81a2f8ab890f7a2cb4b2760f1f29, 0x000274], + }, + BigNum { + limbs: [0x523efd9a4034293bcb639a86de8161, 0x70e5bd7314ec89710171d3095acded, 0x002dc3], + }, + BigNum { + limbs: [0x6b650565be27d5c4349c6479217ea0, 0x366d6c2a685ba9c8d69636987d3766, 0x00462a], + }, + BigNum { + limbs: [0xdc86cb3ee5aeda0dc44788191c6694, 0x85025f6fc6b635ee1289a4af9cc708, 0x000a03], + }, + BigNum { + limbs: [0xe11d37c118ad24f23bb876e6e3996d, 0x2250ca2db691fd4bc57e64f23b3e4a, 0x0069ea], + }, + BigNum { + limbs: [0xfb20b8ec99d14e44d969247a3b9ea0, 0x8d984cf2bbe3e84864fbbaf6ca1a19, 0x003a17], + }, + BigNum { + limbs: [0xc2834a13648ab0bb2696da85c46161, 0x19badcaac1644af1730c4eab0deb39, 0x0039d6], + }, + BigNum { + limbs: [0x3e4ce9b0b4d29e8ddb46c387d94289, 0x9c0f10c48a5ee2c04f5308e4117c29, 0x006e01], + }, + BigNum { + limbs: [0x7f57194f4989607224b93b7826bd78, 0x0b4418d8f2e9507988b500bdc6892a, 0x0005ec], + }, + BigNum { + limbs: [0x0843767d0372343f1f18f7ffc6877b, 0x6f733cc9941e4d1f292459f8fcb93b, 0x000f19], + }, + BigNum { + limbs: [0xb5608c82fae9cac0e0e70700397886, 0x37dfecd3e929e61aaee3afa8db4c18, 0x0064d4], + }, + BigNum { + limbs: [0x88b0025d0d21897a73822ebdcd10f4, 0xad7c3cd1771ded6b0d595d2df89be8, 0x00255b], + }, + BigNum { + limbs: [0x34f400a2f13a75858c7dd04232ef0d, 0xf9d6eccc062a45cecaaeac73df696b, 0x004e91], + }, + BigNum { + limbs: [0x33a0cc91de22b00210a61427617e32, 0xf107893997a09e1935feb8328692f2, 0x003e5f], + }, + BigNum { + limbs: [0x8a03366e20394efdef59ead89e81cf, 0xb64ba063e5a79520a209516f517261, 0x00358d], + }, + BigNum { + limbs: [0xaba4806747cbbb3ed3c6695778c414, 0x6b7fc7d64506fd4c8ab2f0d9a0c2ef, 0x001fd5], + }, + BigNum { + limbs: [0x11ff8298b69043c12c3995a8873bed, 0x3bd361c7384135ed4d5518c8374264, 0x005418], + }, + BigNum { + limbs: [0x9793cdc553268fdb8c8c9df25f113f, 0xc8b8a6bed3ce2e4295f13884893e82, 0x00569a], + }, + BigNum { + limbs: [0x2610353aab356f247373610da0eec2, 0xde9a82dea97a04f74216d11d4ec6d1, 0x001d52], + }, + BigNum { + limbs: [0x48c725f84f95c141afaf92fc44c150, 0x2ec90d8645b8541c402b6099de87a6, 0x006430], + }, + BigNum { + limbs: [0x74dcdd07aec63dbe50506c03bb3eb1, 0x788a1c17378fdf1d97dca907f97dad, 0x000fbd], + }, + BigNum { + limbs: [0x3d298b3fdcee949d23158904db414e, 0x5b2f0cdcb97b5ef4890c09efc1b9e8, 0x002c4a], + }, + BigNum { + limbs: [0x807a77c0216d6a62dcea75fb24beb3, 0x4c241cc0c3ccd4454efbffb2164b6b, 0x0047a3], + }, + BigNum { + limbs: [0x54bc8d5e005d10a64eed6a5818a4bf, 0x165bdc32edd97d8cc8889c8a298881, 0x005ab7], + }, + BigNum { + limbs: [0x68e775a1fdfeee59b11294a7e75b42, 0x90f74d6a8f6eb5ad0f7f6d17ae7cd2, 0x001936], + }, + BigNum { + limbs: [0x5d543983bbd49126324200928abe0a, 0x82d48a57fa1bf0d2b13a179c103085, 0x005e68], + }, + BigNum { + limbs: [0x604fc97c42876dd9cdbdfe6d7541f7, 0x247e9f45832c426726cdf205c7d4ce, 0x001585], + }, + BigNum { + limbs: [0x4959e25753f8727e4cddf5bbcf9e2e, 0x0e9ae069d4854261fc6d52cd9f472f, 0x001c9a], + }, + BigNum { + limbs: [0x744a20a8aa638c81b32209443061d3, 0x98b84933a8c2f0d7db9ab6d438be24, 0x005753], + }, + BigNum { + limbs: [0xfb52a4a4084049b64635a1fca37cd4, 0x97060617002b139d9e55125fd6a0da, 0x0006a1], + }, + BigNum { + limbs: [0xc2515e5bf61bb549b9ca5d035c832d, 0x104d23867d1d1f9c39b2f742016478, 0x006d4c], + }, + BigNum { + limbs: [0x46b757d37646ad5f6ed9d54ebc7dfd, 0x115e1973082b57191cb038744d3fda, 0x0059ad], + }, + BigNum { + limbs: [0x76ecab2c881551a0912629b1438204, 0x95f5102a751cdc20bb57d12d8ac579, 0x001a40], + }, + BigNum { + limbs: [0x3a3fdb27ce4620c9037884585beeed, 0x7ba852c1b35fd6ee452a97c16ac388, 0x004c29], + }, + BigNum { + limbs: [0x836427d83015de36fc877aa7a41114, 0x2baad6dbc9e85c4b92dd71e06d41cb, 0x0027c4], + }, + BigNum { + limbs: [0x5007e38c90bf5a1406a9e74470eb1c, 0x2d7256bac7644923c535f42197488e, 0x0059a7], + }, + BigNum { + limbs: [0x6d9c1f736d9ca4ebf95617bb8f14e5, 0x79e0d2e2b5e3ea1612d2158040bcc5, 0x001a46], + }, + BigNum { + limbs: [0x58596cd9180f6351eeda0bf1f9d15c, 0xdbac48ffd83b5b50fba542ee045f2d, 0x000cc1], + }, + BigNum { + limbs: [0x654a9626e64c9bae1125f30e062ea5, 0xcba6e09da50cd7e8dc62c6b3d3a626, 0x00672b], + }, + BigNum { + limbs: [0xda385259825e8ff7de74762844b59b, 0x8d1d32ee41ea7fa57c0bb07ba2861e, 0x004a07], + }, + BigNum { + limbs: [0xe36bb0a67bfd6f08218b88d7bb4a66, 0x1a35f6af3b5db3945bfc5926357f34, 0x0029e6], + }, + BigNum { + limbs: [0x663b19281ecf204a13c9090a5de344, 0x6cb1b8029d0f4ea7520a9e1f45fed2, 0x000264], + }, + BigNum { + limbs: [0x5768e9d7df8cdeb5ec36f5f5a21cbd, 0x3aa1719ae038e49285fd6b82920681, 0x007189], + }, + BigNum { + limbs: [0x424c5b7c97a6d27d1881b7fb2a11e6, 0x8b263946eb224cb0fea682711f56cf, 0x000526], + }, + BigNum { + limbs: [0x7b57a78366b52c82e77e4704d5ee1b, 0x1c2cf0569225e688d9618730b8ae84, 0x006ec7], + }, + BigNum { + limbs: [0xbf61c5f3d0832796c52d21fbc61f0f, 0xb379c9183ffc813bcf1073aceca325, 0x000ef4], + }, + BigNum { + limbs: [0xfe423d0c2dd8d7693ad2dd0439e0f2, 0xf3d960853d4bb1fe08f795f4eb622d, 0x0064f8], + }, + BigNum { + limbs: [0xe3a6cd55d29c43736afc498dd8c1d1, 0xa19828da9aab0564b5a8d1072ba42b, 0x00445e], + }, + BigNum { + limbs: [0xd9fd35aa2bbfbb8c9503b572273e30, 0x05bb00c2e29d2dd5225f389aac6127, 0x002f8f], + }, + BigNum { + limbs: [0xead8a0448ecebabcdf1235752b0ef3, 0xe8ee9237909732d4a06d7aa57eb71b, 0x006bcb], + }, + BigNum { + limbs: [0xd2cb62bb6f8d444320edc98ad4f10e, 0xbe649765ecb10065379a8efc594e37, 0x000821], + }, + BigNum { + limbs: [0x4119ad873614884d66efb4fed2279a, 0xd9900b7ae25a95dfadf106e3f002de, 0x005ae6], + }, + BigNum { + limbs: [0x7c8a5578c84776b299104a012dd867, 0xcdc31e229aed9d5a2a1702bde80275, 0x001906], + }, + BigNum { + limbs: [0xb4f7967f7e42a5fda4841718420054, 0x2f3fb51cf0a715d27b6251fc311c17, 0x0062fb], + }, + BigNum { + limbs: [0x08ac6c80801959025b7be7e7bdffad, 0x781374808ca11d675ca5b7a5a6e93c, 0x0010f2], + }, + BigNum { + limbs: [0x180e0e8b24f12309f239f760b82267, 0xba636d174692ad5a534045625d9514, 0x0058c3], + }, + BigNum { + limbs: [0xa595f474d96adbf60dc6079f47dd9a, 0xecefbc8636b585df84c7c43f7a703f, 0x001b29], + }, + BigNum { + limbs: [0xc7e8901137ff0153a93b55b4fea0eb, 0xc4a69476d9fc4bb6f34c1c58a0568e, 0x000e7c], + }, + BigNum { + limbs: [0xf5bb72eec65cfdac56c4a94b015f16, 0xe2ac9526a34be782e4bbed4937aec4, 0x006570], + }, + BigNum { + limbs: [0x72a5c3f51c283524eb6f79660ba729, 0x4cc8ec848f9932f96660e46b8b0362, 0x00548e], + }, + BigNum { + limbs: [0x4afe3f0ae233c9db14908599f458d8, 0x5a8a3d18edaf004071a725364d01f1, 0x001f5f], + }, + BigNum { + limbs: [0xb69e5da3889e1b2613fb0ba0d0c8b9, 0x48f2bdc1f969a35750fccdbd565adc, 0x0045f4], + }, + BigNum { + limbs: [0x0705a55c75bde3d9ec04f35f2f3748, 0x5e606bdb83de8fe2870b3be481aa77, 0x002df9], + }, + BigNum { + limbs: [0xeeae11e7bccf3f082cf84eeb77b539, 0xd3cae75d7dcbb02266098876489699, 0x006a92], + }, + BigNum { + limbs: [0xcef5f118418cbff7d307b014884ac8, 0xd388423fff7c831771fe812b8f6eb9, 0x00095a], + }, + BigNum { + limbs: [0x9edcfa443aea1905a885cb88412fc6, 0x71fcb801d5d5172aa6aa52827f4c0e, 0x00140c], + }, + BigNum { + limbs: [0x1ec708bbc371e5fa577a3377bed03b, 0x3556719ba7731c0f315db71f58b945, 0x005fe1], + }, + BigNum { + limbs: [0x2c95af5bc18faa930fa010bc171746, 0x7dc1d3176b166ae305e12c0d0f3845, 0x003659], + }, + BigNum { + limbs: [0x910e53a43ccc546cf05fee43e8e8bb, 0x299156861231c856d226dd94c8cd0e, 0x003d94], + }, + BigNum { + limbs: [0x85a508df2452feef976635fc779c0c, 0x54744d4336448dd7a2cb1fe4cabc60, 0x00509e], + }, + BigNum { + limbs: [0x37fefa20da0900106899c9038863f5, 0x52dedc5a4703a562353ce9bd0d48f3, 0x00234f], + }, + BigNum { + limbs: [0x2a457ac1b1515e66caf0bfe0dc71bd, 0xde54f97535615e9a245b3b982d893b, 0x007033], + }, + BigNum { + limbs: [0x935e883e4d0aa099350f3f1f238e44, 0xc8fe302847e6d49fb3acce09aa7c18, 0x0003b9], + }, + BigNum { + limbs: [0xe681ffa04fd14425cd201433440674, 0xde62396f17618541eba544010dc6e2, 0x0031d2], + }, + BigNum { + limbs: [0xd722035fae8abada32dfeaccbbf98d, 0xc8f0f02e65e6adf7ec62c5a0ca3e70, 0x00421a], + }, + BigNum { + limbs: [0x52dc972de8dd1ae0ef5504d0804371, 0xd7d00aa6d47ea06254fd521a05e75b, 0x0063c3], + }, + BigNum { + limbs: [0x6ac76bd2157ee41f10aafa2f7fbc90, 0xcf831ef6a8c992d7830ab787d21df8, 0x001029], + }, + BigNum { + limbs: [0x4804de0259a52492093ce6634374ea, 0x74a1cf96403463f289036f16b94858, 0x002037], + }, + BigNum { + limbs: [0x759f24fda4b6da6df6c3189cbc8b17, 0x32b15a073d13cf474f049a8b1ebcfb, 0x0053b6], + }, + BigNum { + limbs: [0x0b4a6523f47a1ff8e0b04c3b1af356, 0x83b623d916a3ad6c4c7ac3494271a8, 0x005a8d], + }, + BigNum { + limbs: [0xb2599ddc09e1df071f4fb2c4e50cab, 0x239d05c466a485cd8b8d46589593ab, 0x001960], + }, + BigNum { + limbs: [0x3acd5edbf5700358a7bfe4303c5b1e, 0xb52b913e7460fc8fc271fb692c97c4, 0x0021a2], + }, + BigNum { + limbs: [0x82d6a42408ebfba758401acfc3a4e3, 0xf227985f08e736aa15960e38ab6d8f, 0x00524a], + }, + BigNum { + limbs: [0x751f4f8dda18c726694b3c0708989b, 0x74e808084266d6dc71af08a18e5f03, 0x000d2f], + }, + BigNum { + limbs: [0x4884b372244337d996b4c2f8f76766, 0x326b21953ae15c5d6659010049a650, 0x0066be], + }, + BigNum { + limbs: [0x4d9b4898d2ec0030ad1815af2831cb, 0xb9b40807616a9227838f3a3ed300cf, 0x003d4c], + }, + BigNum { + limbs: [0x7008ba672b6ffecf52e7e950d7ce36, 0xed9f21961bdda1125478cf63050484, 0x0036a0], + }, + BigNum { + limbs: [0x5661caa9b88f7bc99c409c32cbe93c, 0x81febdfe94276a8aad8807a5d7050b, 0x006767], + }, + BigNum { + limbs: [0x6742385645cc833663bf62cd3416c5, 0x25546b9ee920c8af2a8001fc010048, 0x000c86], + }, + BigNum { + limbs: [0xe1b8db4b0c6ea3ab3dcd74abc0acc5, 0x518f26f7d15431ab14182ee5361144, 0x003309], + }, + BigNum { + limbs: [0xdbeb27b4f1ed5b54c2328a543f533c, 0x55c402a5abf4018ec3efdabca1f40e, 0x0040e4], + }, + BigNum { + limbs: [0xef2afdb60852031c3f34a887d3c3e1, 0xcb3506e60a81f0394c93a42b5b72e9, 0x00064c], + }, + BigNum { + limbs: [0xce790549f609fbe3c0cb56782c3c20, 0xdc1e22b772c643008b7465767c9269, 0x006da0], + }, + BigNum { + limbs: [0x8cdb76a42676ccb187cd4b5130698f, 0x41db3bd37280e077b68e7eab756cb8, 0x006959], + }, + BigNum { + limbs: [0x30c88c5bd7e5324e7832b3aecf9672, 0x6577edca0ac752c221798af662989b, 0x000a94], + }, + BigNum { + limbs: [0xb80be01829aa6e6b4e1dd7a6e41adf, 0x6de1daf8905fb9f70b105865f3b1cf, 0x004c84], + }, + BigNum { + limbs: [0x059822e7d4b19094b1e227591be522, 0x39714ea4ece87942ccf7b13be45384, 0x002769], + }, + BigNum { + limbs: [0xcad3633089749adf4e63d01af609aa, 0x0be46010a6b28fce2e90dce28a6db3, 0x003d3e], + }, + BigNum { + limbs: [0xf2d09fcf74e76420b19c2ee509f657, 0x9b6ec98cd695a36ba9772cbf4d979f, 0x0036af], + }, + BigNum { + limbs: [0x3fe56d15f19fd9d3a88f9769d85682, 0xa2628ede060eab8f2d5800a8be3b0f, 0x006281], + }, + BigNum { + limbs: [0x7dbe95ea0cbc252c5770679627a97f, 0x04f09abf773987aaaab008f919ca44, 0x00116c], + }, + BigNum { + limbs: [0x33b77d2d66205cd6436789acd58a6a, 0x0e51924a73f486c6d515c6dbbd56d8, 0x00661d], + }, + BigNum { + limbs: [0x89ec85d2983ba229bc9875532a7597, 0x990197530953ac7302f242c61aae7b, 0x000dd0], + }, + BigNum { + limbs: [0xbbd52b782f347dae0408970b4aab1a, 0x678caa916b48f296454a57be9a3dd2, 0x000554], + }, + BigNum { + limbs: [0x01ced787cf278151fbf767f4b554e7, 0x3fc67f0c11ff40a392bdb1e33dc781, 0x006e99], + }, + BigNum { + limbs: [0x7fe07d8d824b70a6b05f18a33c32b1, 0x4018a4fba9970315f7d6239cfdfbbe, 0x004ea9], + }, + BigNum { + limbs: [0x3dc385727c108e594fa0e65cc3cd50, 0x673a84a1d3b13023e031e604da0995, 0x002544], + }, + BigNum { + limbs: [0x50bf4dbafd02920d87e416425a1f5b, 0x43b8831183496fc9fedba1ca177ecf, 0x004c47], + }, + BigNum { + limbs: [0x6ce4b54501596cf2781be8bda5e0a6, 0x639aa68bf9fec36fd92c67d7c08684, 0x0027a6], + }, + BigNum { + limbs: [0x9c92782418d9a6f68d125f81344d2e, 0x3ae417d106a4752a779731a01e141a, 0x0005a4], + }, + BigNum { + limbs: [0x21118adbe582580972ed9f7ecbb2d3, 0x6c6f11cc76a3be0f6070d801b9f139, 0x006e49], + }, + BigNum { + limbs: [0xa9568098dc13297c139a093efa1190, 0x1f8538db87179f115b32fd34f9e257, 0x0044e7], + }, + BigNum { + limbs: [0x144d82672248d583ec65f5c105ee71, 0x87cdf0c1f63094287cd50c6cde22fc, 0x002f06], + }, + BigNum { + limbs: [0xdb59a295eea1fad891f7ce48c338da, 0x0bc19af45832cd3e67ec475459da28, 0x001a56], + }, + BigNum { + limbs: [0xe24a606a0fba04276e0830b73cc727, 0x9b918ea9251565fb701bc24d7e2b2a, 0x005997], + }, + BigNum { + limbs: [0x7cc816a910521c8f7f77012d9d64d2, 0xfd5789c0e146b081e9cf98bbfed9d6, 0x00483a], + }, + BigNum { + limbs: [0x40dbec56ee09e2708088fdd2629b2f, 0xa9fb9fdc9c0182b7ee3870e5d92b7d, 0x002bb2], + }, + BigNum { + limbs: [0xc356be3d0f029aa409d9ee00585213, 0xb147452598293eb810c81a72553cb7, 0x0025b3], + }, + BigNum { + limbs: [0xfa4d44c2ef59645bf62610ffa7adee, 0xf60be477e51ef481c73fef2f82c89b, 0x004e39], + }, + BigNum { + limbs: [0xb871097a9f0c6f53f1742ce989b5a2, 0xdd8280effb6326d76b58b9434f6ec5, 0x00686f], + }, + BigNum { + limbs: [0x0532f9855f4f8fac0e8bd216764a5f, 0xc9d0a8ad81e50c626caf505e88968e, 0x000b7d], + }, + BigNum { + limbs: [0x1a129e137f0039c2fcba24fbaa6740, 0xaf9519ca80d68d67bc688c2a21ffa8, 0x0046ea], + }, + BigNum { + limbs: [0xa39164ec7f5bc53d0345da045598c1, 0xf7be0fd2fc71a5d21b9f7d77b605ab, 0x002d02], + }, + BigNum { + limbs: [0x077dddb5761a734e2a017e4ffb6836, 0xe1e4f08eb7ec1e23d4338ba1fdbc33, 0x00099a], + }, + BigNum { + limbs: [0xb626254a88418bb1d5fe80b00497cb, 0xc56e390ec55c151603d47dffda4920, 0x006a52], + }, + BigNum { + limbs: [0xc00f384e56df5ab098af553e858ddc, 0x772639e0f2e0bdf93ce28c12b17e9a, 0x003d4d], + }, + BigNum { + limbs: [0xfd94cab1a77ca44f6750a9c17a7225, 0x302cefbc8a6775409b257d8f2686b8, 0x0036a0], + }, + BigNum { + limbs: [0xbbcd0457572ea4ba6f047a391e07cd, 0xdb9969605428e20283d330193c8c22, 0x00227d], + }, + BigNum { + limbs: [0x01d6fea8a72d5a4590fb84c6e1f834, 0xcbb9c03d291f51375434d9889b7931, 0x00516f], + }, + BigNum { + limbs: [0x3d78a715d35e675f5607600ebe8e85, 0x45bcd7037c97ac5bec5d064c7b2fa1, 0x0068c0], + }, + BigNum { + limbs: [0x802b5bea2afd97a0a9f89ef141717c, 0x6196529a00b086ddebab03555cd5b2, 0x000b2d], + }, + BigNum { + limbs: [0x5255f97b2f5f8a3aab39c40d504e47, 0x3931c4e8a3365aa19c692fd480ceff, 0x0022e9], + }, + BigNum { + limbs: [0x6b4e0984cefc74c554c63af2afb1ba, 0x6e2164b4da11d8983b9ed9cd573654, 0x005104], + }, + BigNum { + limbs: [0xe8628b87c4717f74298e4f1f6b05b8, 0x86ffd6389f469bbcecee7941985189, 0x006d89], + }, + BigNum { + limbs: [0xd541777839ea7f8bd671afe094fa49, 0x20535364de01977ceb1990603fb3c9, 0x000664], + }, + BigNum { + limbs: [0xc4b3dde8d99b1da59b819134b83579, 0x3f3b319dd1b9a8cc0754083d8a76de, 0x001476], + }, + BigNum { + limbs: [0xf8f0251724c0e15a647e6dcb47ca88, 0x6817f7ffab8e8a6dd0b401644d8e74, 0x005f77], + }, + BigNum { + limbs: [0x5e5d72ca14bf355b2c4072b03330aa, 0xfcb9bed9a1d0c039e6a24828a4d111, 0x0044cb], + }, + BigNum { + limbs: [0x5f469035e99cc9a4d3bf8c4fcccf57, 0xaa996ac3db7772fff165c179333442, 0x002f21], + }, + BigNum { + limbs: [0xa6b76707616830fca70889363d0810, 0x474a16a937608616f4669de6d37aa6, 0x004100], + }, + BigNum { + limbs: [0x16ec9bf89cf3ce0358f775c9c2f7f1, 0x600912f445e7ad22e3a16bbb048aad, 0x0032ed], + }, + BigNum { + limbs: [0x034ce5f2a0e16cc71a57258e59e205, 0x4a3b69d18144f376ca920c31a41df2, 0x005d4a], + }, + BigNum { + limbs: [0xba571d0d5d7a9238e5a8d971a61dfc, 0x5d17bfcbfc033fc30d75fd7033e761, 0x0016a3], + }, + BigNum { + limbs: [0x479c06b64c620e54913a5fad66493e, 0xe8eccb401e43ab35fb17c2ef06e1ff, 0x004f0e], + }, + BigNum { + limbs: [0x7607fc49b1f9f0ab6ec59f5299b6c3, 0xbe665e5d5f048803dcf046b2d12354, 0x0024de], + }, + BigNum { + limbs: [0x8301162f9b026bdf8f0a899f9ee419, 0x8d97e4ea5441615140b6e155e9ab76, 0x001aa6], + }, + BigNum { + limbs: [0x3aa2ecd06359932070f57560611be8, 0x19bb44b32906d1e89751284bee59dd, 0x005947], + }, + BigNum { + limbs: [0x9c1028848c11d02b0801fe4d03f4b3, 0xddace4e38717b5fc4d667f921f06b3, 0x001110], + }, + BigNum { + limbs: [0x2193da7b724a2ed4f7fe00b2fc0b4e, 0xc9a644b9f6307d3d8aa18a0fb8fea0, 0x0062dc], + }, + BigNum { + limbs: [0x3288fa993675c6b000ebfccd728a11, 0x3393fe4edec850a6b9493521aaddad, 0x006be2], + }, + BigNum { + limbs: [0x8b1b0866c7e6384fff1402328d75f0, 0x73bf2b4e9e7fe2931ebed4802d27a6, 0x00080b], + }, + BigNum { + limbs: [0x199a38673d1c784644f6e6d10cdb65, 0x5763a14834a7853a33904d076ea499, 0x0005fe], + }, + BigNum { + limbs: [0xa409ca98c13f86b9bb09182ef3249c, 0x4fef885548a0adffa477bc9a6960ba, 0x006def], + }, + BigNum { + limbs: [0x50d9ce6be8ab7e9afd17ae1c79b3cc, 0x6f3c81d65abe294532501559ab8009, 0x003e12], + }, + BigNum { + limbs: [0x6cca349415b0806502e850e3864c35, 0x3816a7c7228a09f4a5b7f4482c854a, 0x0035db], + }, + BigNum { + limbs: [0x2086a26309099ab289450a2c8c785c, 0x78639fbbfa1a19c8f6a5547ef0cb37, 0x005cae], + }, + BigNum { + limbs: [0x9d1d609cf552644d76baf4d37387a5, 0x2eef89e1832e1970e162b522e73a1c, 0x00173f], + }, + BigNum { + limbs: [0x726a6f11fd5d1e41a26186d0f7d95a, 0x480ded0b0a2522ed236d0d4ec5e8bf, 0x005b39], + }, + BigNum { + limbs: [0x4b3993ee00fee0be5d9e782f0826a7, 0x5f453c927323104cb49afc53121c94, 0x0018b4], + }, + BigNum { + limbs: [0xac9edb793129a56d2a3526d2c2e46a, 0x40f093ad57bc107ae64b724aae15f9, 0x006831], + }, + BigNum { + limbs: [0x11052786cd325992d5cad82d3d1b97, 0x666295f0258c22bef1bc975729ef5a, 0x000bbc], + }, + BigNum { + limbs: [0x6a7dd7ea6053089d718125b7898a67, 0xf96ecc6b5153abf178d66922bda5cb, 0x005b3c], + }, + BigNum { + limbs: [0x53262b159e08f6628e7ed94876759a, 0xade45d322bf487485f31a07f1a5f88, 0x0018b0], + }, + BigNum { + limbs: [0xa04848fde48575abf74fde099c325f, 0x7857f96a44b11675db3747d3d791a7, 0x003395], + }, + BigNum { + limbs: [0x1d5bba0219d6895408b020f663cda2, 0x2efb303338971cc3fcd0c1ce0073ac, 0x004058], + }, + BigNum { + limbs: [0x69b1ce32ce51fbe4282ad9e2553334, 0x6ea21fc2a195c87adc4b385e8304b6, 0x005bd0], + }, + BigNum { + limbs: [0x53f234cd300a031bd7d5251daacccd, 0x38b109dadbb26abefbbcd14355009d, 0x00181d], + }, + BigNum { + limbs: [0x5f6c03f0f179646b0b935e5c78f259, 0x287edbd07e2b04b4c968ebc0152690, 0x005995], + }, + BigNum { + limbs: [0x5e37ff0f0ce29a94f46ca0a3870da8, 0x7ed44dccff1d2e850e9f1de1c2dec3, 0x001a58], + }, + BigNum { + limbs: [0x5ed2cf19172e412e59452c2173c6ea, 0xb895c01840aecfda8e31c5ff001739, 0x005656], + }, + BigNum { + limbs: [0x5ed133e6e72dbdd1a6bad2de8c3917, 0xeebd69853c99635f49d643a2d7ee1a, 0x001d96], + }, + BigNum { + limbs: [0x9dcb7f92ea6a9b8d444a5beec3aaaf, 0x07e606bceb10c1d6263b3c797138ff, 0x00654d], + }, + BigNum { + limbs: [0x1fd8836d13f16372bbb5a3113c5552, 0x9f6d22e092377163b1cccd2866cc54, 0x000ea0], + }, + BigNum { + limbs: [0xb9b3a0749e60cb8768c9f875b63680, 0x291981e1a6ffd922ef4010fd623046, 0x003a9e], + }, + BigNum { + limbs: [0x03f0628b5ffb33789736068a49c981, 0x7e39a7bbd6485a16e8c7f8a475d50d, 0x00394f], + }, + BigNum { + limbs: [0xf2172bc7473892459629b66ba900be, 0xeb28f1112e24ae07a577ed5adb9833, 0x003ec2], + }, + BigNum { + limbs: [0xcb8cd738b7236cba69d6489456ff43, 0xbc2a388c4f23853232901c46fc6d1f, 0x00352a], + }, + BigNum { + limbs: [0x6c73629eb540ea3f9554aa5ac511e9, 0xba428345abaac34c773123acc36bcc, 0x004a8a], + }, + BigNum { + limbs: [0x5130a061491b14c06aab54a53aee18, 0xed10a657d19d6fed60d6e5f5149987, 0x002962], + }, + BigNum { + limbs: [0xd2b29f89691c73686d7450c33d5a33, 0x95c67b9ea2efa1729a4994ac329b4c, 0x0057b5], + }, + BigNum { + limbs: [0xeaf16376953f8b97928bae3cc2a5ce, 0x118cadfeda5891c73dbe74f5a56a06, 0x001c38], + }, + BigNum { + limbs: [0x0da05f62a2205a038764a74650d0c5, 0x264ed896f8869866cb67d02650f974, 0x00192c], + }, + BigNum { + limbs: [0xb003a39d5c3ba4fc789b57b9af2f3c, 0x8104510684c19ad30ca0397b870bdf, 0x005ac1], + }, + BigNum { + limbs: [0x07f2b8fe1b995c6f51caab160744d9, 0x45b7ef86f69047659707080c8273d8, 0x00724c], + }, + BigNum { + limbs: [0xb5b14a01e2c2a290ae3553e9f8bb28, 0x619b3a1686b7ebd44101019555917b, 0x0001a1], + }, + BigNum { + limbs: [0xe6a93079ee7cccc934e486ecc125c0, 0x355dce7eaf368f76379c2c28653e10, 0x002031], + }, + BigNum { + limbs: [0xd6fad2860fdf3236cb1b78133eda41, 0x71f55b1ece11a3c3a06bdd7972c742, 0x0053bc], + }, + BigNum { + limbs: [0xf79fc3d741bf226521696c6179297c, 0x9ae2c216552207600419c3f6115aeb, 0x0063bc], + }, + BigNum { + limbs: [0xc6043f28bc9cdc9ade96929e86d685, 0x0c70678728262bd9d3ee45abc6aa67, 0x001031], + }, + BigNum { + limbs: [0xc4ded9ffbba24056e5deedda27244b, 0x8f8601768ac3bbb9b61429944d0c24, 0x00213e], + }, + BigNum { + limbs: [0xf8c5290042b9bea91a211125d8dbb6, 0x17cd2826f284778021f3e00d8af92e, 0x0052af], + }, + BigNum { + limbs: [0xf518b492651ba347ad66c74d7bca64, 0x5064e14b100a32e73c0848a259cce0, 0x004409], + }, + BigNum { + limbs: [0xc88b4e6d99405bb8529937b284359d, 0x56ee48526d3e00529bffc0ff7e3872, 0x002fe4], + }, + BigNum { + limbs: [0x31564fda741ade70b774835f62ee3c, 0x1ce4194322964607884498bbcb8c71, 0x001e85], + }, + BigNum { + limbs: [0x8c4db3258a41208f488b7ba09d11c5, 0x8a6f105a5ab1ed324fc370e60c78e2, 0x005568], + }, + BigNum { + limbs: [0xddec933364680fd1c931b0f7188c6e, 0x2e92d9ce55819bcfd2af02a07aa006, 0x000456], + }, + BigNum { + limbs: [0xdfb76fcc99f3ef2e36ce4e08e77393, 0x78c04fcf27c6976a055907015d654c, 0x006f97], + }, + BigNum { + limbs: [0x960fc9c499955198e1e535f0666860, 0x5f24e19b3eee4df7efe5f71e0abf44, 0x0054a5], + }, + BigNum { + limbs: [0x2794393b64c6ad671e1ac90f9997a1, 0x482e48023e59e541e8221283cd460f, 0x001f48], + }, + BigNum { + limbs: [0x1bc63ba1f12ba86a96e7321bc04210, 0x5ec81887c4f43e877567664189754e, 0x0045df], + }, + BigNum { + limbs: [0xa1ddc75e0d3056956918cce43fbdf1, 0x488b1115b853f4b262a0a3604e9005, 0x002e0e], + }, + BigNum { + limbs: [0x7c81ae1d87699d225d35c86477d58b, 0x400e38958dc7f5783bcc2a7ca18b18, 0x004293], + }, + BigNum { + limbs: [0x412254e276f261dda2ca369b882a76, 0x6744f107ef803dc19c3bdf25367a3b, 0x00315a], + }, + BigNum { + limbs: [0x2611cec67dd54be518be27e7093f4e, 0x9743b4e0d46958698576f11c4a2e78, 0x0011ea], + }, + BigNum { + limbs: [0x979234398086b31ae741d718f6c0b3, 0x100f74bca8dedad0529118858dd6db, 0x006203], + }, + BigNum { + limbs: [0x0223751b720a0cf2dab1c8c4a189ff, 0xdcb7690555b9127b1606420ade2a86, 0x002ac9], + }, + BigNum { + limbs: [0xbb808de48c51f20d254e363b5e7602, 0xca9bc098278f20bec201c796f9dacd, 0x004923], + }, + BigNum { + limbs: [0xa5dd527cd71fb7976ac7f5f6c72a88, 0x6117fe37a234a60a47cec5cb1a85e6, 0x001f1c], + }, + BigNum { + limbs: [0x17c6b083273c47689538090938d579, 0x463b2b65db138d2f903943d6bd7f6d, 0x0054d1], + }, + BigNum { + limbs: [0x8b12057546a348bd571c059c104014, 0xb61776734f89d0fc55508e07bb7098, 0x00699c], + }, + BigNum { + limbs: [0x3291fd8ab7b8b642a8e3f963efbfed, 0xf13bb32a2dbe623d82b77b9a1c94bb, 0x000a50], + }, + BigNum { + limbs: [0x9e8b72db6f1e2653fd29142d3819a2, 0xd3f9439750aa38a37afc68b0fafae2, 0x0054a1], + }, + BigNum { + limbs: [0x1f1890248f3dd8ac02d6ead2c7e65f, 0xd359e6062c9dfa965d0ba0f0dd0a71, 0x001f4b], + }, + BigNum { + limbs: [0xd7c1a278ec608700a9be0299817ca4, 0x55532c1abbaf9ef11dfefbb02e5e62, 0x0007a0], + }, + BigNum { + limbs: [0xe5e2608711fb77ff5641fc667e835d, 0x51fffd82c1989448ba090df1a9a6f0, 0x006c4d], + }, + BigNum { + limbs: [0x1fd547be4b6ce2b275fb29418f4c5d, 0x428c158ed643f84e55b954bddacbef, 0x003076], + }, + BigNum { + limbs: [0x9dcebb41b2ef1c4d8a04d5be70b3a4, 0x64c7140ea7043aeb824eb4e3fd3964, 0x004377], + }, + BigNum { + limbs: [0xc86ad30700ce774a3b8d2e0f596020, 0xba2fd3948857eb766ca2207244f211, 0x006a3e], + }, + BigNum { + limbs: [0xf5392ff8fd8d87b5c472d0f0a69fe1, 0xed235608f4f047c36b65e92f931341, 0x0009ae], + }, + BigNum { + limbs: [0x855177336fb60fdca2ca5cd99ce3c3, 0xe0d6b37e59679e533b9248389fa8c1, 0x00324a], + }, + BigNum { + limbs: [0x38528bcc8ea5ef235d35a226631c3e, 0xc67c761f23e094e69c75c169385c92, 0x0041a2], + }, + BigNum { + limbs: [0xa947be6ae0adca67112eaf34e9f6be, 0x377e8099fa46465283e47a582918fe, 0x001b23], + }, + BigNum { + limbs: [0x145c44951dae3498eed14fcb160943, 0x6fd4a9038301ece754238f49aeec55, 0x0058ca], + }, + BigNum { + limbs: [0x1d79c870ba25b6c9e1715651f94edb, 0xe6471ba2107df5f9703e00bf2460a7, 0x002bbe], + }, + BigNum { + limbs: [0xa02a3a8f443648361e8ea8ae06b126, 0xc10c0dfb6cca3d4067ca08e2b3a4ac, 0x00482e], + }, + BigNum { + limbs: [0x180a97607b7b75ee0a9b7720fe18ea, 0x61caaccddcb331fc82977997ab4493, 0x003441], + }, + BigNum { + limbs: [0xa5996b9f82e08911f56487df01e717, 0x45887ccfa095013d5570900a2cc0c0, 0x003fac], + }, + BigNum { + limbs: [0x7a4cdd8c345f311415ae6f648ca4c4, 0x11970ddf05c3476edefa503afd9c0a, 0x0017ae], + }, + BigNum { + limbs: [0x43572573c9fccdebea518f9b735b3d, 0x95bc1bbe7784ebcaf90db966da6949, 0x005c3f], + }, + BigNum { + limbs: [0x2431336dffbd3ff302032d443d58d3, 0xda94c4d882d868bd470adc88c0ecd8, 0x0026c2], + }, + BigNum { + limbs: [0x9972cf91fe9ebf0cfdfcd1bbc2a72e, 0xccbe64c4fa6fca7c90fd2d1917187b, 0x004d2a], + }, + BigNum { + limbs: [0x8b73877a32f62bdfe96721a6cd7b3e, 0x0231915bdd4603e21d77f00f7c14ae, 0x004f5b], + }, + BigNum { + limbs: [0x32307b85cb65d3201698dd593284c3, 0xa5219841a0022f57ba9019925bf0a5, 0x002492], + }, + BigNum { + limbs: [0xe566e43fbfb3adcaa4621ab46a4d30, 0xe4c6b3243876efd27177d6ce56ad87, 0x00583a], + }, + BigNum { + limbs: [0xd83d1ec03ea851355b9de44b95b2d1, 0xc28c767944d14367669032d38157cb, 0x001bb2], + }, + BigNum { + limbs: [0x7e23dd40142c5f9422d2c34101124c, 0x9b8792f6512f934f79299c50142c3d, 0x0024ea], + }, + BigNum { + limbs: [0x3f8025bfea2f9f6bdd2d3bbefeedb5, 0x0bcb96a72c189fea5ede6d51c3d916, 0x004f03], + }, + BigNum { + limbs: [0xec9c0406a08f265cce2c30333b187f, 0x6ca4e92bd0ad946fec5826cc03719d, 0x000206], + }, + BigNum { + limbs: [0xd107fef95dccd8a331d3ceccc4e782, 0x3aae4071ac9a9ec9ebafe2d5d493b5, 0x0071e7], + }, + BigNum { + limbs: [0x7f3449b8bd93686beadab96405ae3a, 0x1ab61fc3015bf5412a443f8e57f148, 0x003965], + }, + BigNum { + limbs: [0x3e6fb94740c896941525459bfa51c7, 0x8c9d09da7bec3df8adc3ca1380140b, 0x003a88], + }, + BigNum { + limbs: [0xd9c57133e56dfad3ea280c5f782f2b, 0xead5a7d140e1e3fff1c4cd5cae127b, 0x0024c2], + }, + BigNum { + limbs: [0xe3de91cc18ee042c15d7f2a087d0d6, 0xbc7d81cc3c664f39e6433c4529f2d7, 0x004f2a], + }, + BigNum { + limbs: [0xa7fbcbd8c1ce86f75167878ef4c2b7, 0x118566730cb78c4efcd85ee6395889, 0x007110], + }, + BigNum { + limbs: [0x15a837273c8d7808ae9877710b3d4a, 0x95cdc32a7090a6eadb2faabb9eacca, 0x0002dd], + }, + BigNum { + limbs: [0x1ffcba3c12bc2b9ee90b3d11c2dd21, 0x102ef837861bde2c7551f9dff19445, 0x0006b7], + }, + BigNum { + limbs: [0x9da748c3eb9fd36116f4c1ee3d22e0, 0x97243165f72c550d62b60fc1e6710e, 0x006d36], + }, + BigNum { + limbs: [0xd017e31cf0cb08eef8f30684ce9026, 0x8d3c8185d7d529293c2d54cc37eba5, 0x00519e], + }, + BigNum { + limbs: [0xed8c1fe30d90f611070cf87b316fdb, 0x1a16a817a5730a109bdab4d5a019ad, 0x00224f], + }, + BigNum { + limbs: [0x7a986565c2a5d1c9be282a115f3af5, 0x9b7c85ec9ffed0759691f8350bcf77, 0x002dfe], + }, + BigNum { + limbs: [0x430b9d9a3bb62d3641d7d4eea0c50c, 0x0bd6a3b0dd4962c44176116ccc35dc, 0x0045ef], + }, + BigNum { + limbs: [0xa9e37a3c78a6f03c5e8cd07ac27967, 0xa77bf4482596c40e6ea7ec15f1e470, 0x006957], + }, + BigNum { + limbs: [0x13c088c385b50ec3a1732e853d869a, 0xffd7355557b16f2b69601d8be620e3, 0x000a95], + }, + BigNum { + limbs: [0xda1d1c2ae95f6ed46bc78329689a4e, 0xd3feed71abf08747974362d7998504, 0x005f55], + }, + BigNum { + limbs: [0xe386e6d514fc902b94387bd69765b3, 0xd3543c2bd157abf240c4a6ca3e804e, 0x001497], + }, + BigNum { + limbs: [0xdc7f318ce3896129a67c58c11af270, 0x33b32d96101f50bdf12f11ba2ba3f6, 0x004407], + }, + BigNum { + limbs: [0xe124d1731ad29dd65983a63ee50d91, 0x739ffc076d28e27be6d8f7e7ac615c, 0x002fe6], + }, + BigNum { + limbs: [0x277cbb3e7a777eeeb008d78b019434, 0xfbfe7fba4f67c98d9a4ba421a74a5e, 0x006892], + }, + BigNum { + limbs: [0x962747c183e480114ff72774fe6bcd, 0xab54a9e32de069ac3dbc658030baf5, 0x000b5a], + }, + BigNum { + limbs: [0x20997b1fdd66bd53ec18ed560e5c0c, 0x74a3e7e4ae661be49858d07f3e273d, 0x000bdf], + }, + BigNum { + limbs: [0x9d0a87e020f541ac13e711a9f1a3f5, 0x32af41b8cee217553faf392299de16, 0x00680e], + }, + BigNum { + limbs: [0xe792ae1b302effd0b0f21e5dd18de6, 0x1d8cfff841ef8c787035f36a072656, 0x0051d1], + }, + BigNum { + limbs: [0xd61154e4ce2cff2f4f0de0a22e721b, 0x89c629a53b58a6c167d21637d0defc, 0x00221c], + }, + BigNum { + limbs: [0x1a01cc28fefe11f643be94ebcf7272, 0x3a3286fa30c54b3fe9256008c92553, 0x00491c], + }, + BigNum { + limbs: [0xa3a236d6ff5ded09bc416a14308d8f, 0x6d20a2a34c82e7f9eee2a9990ee000, 0x002ad1], + }, + BigNum { + limbs: [0x3fdeea97c6fe196470728429de50e2, 0x0a1474f2943817443ffa79edc2405a, 0x003edc], + }, + BigNum { + limbs: [0x7dc51868375de59b8f8d7ad621af1f, 0x9d3eb4aae9101bf5980d8fb415c4f9, 0x003511], + }, + BigNum { + limbs: [0xeaa5fd91eb8ad60697528e66468f8b, 0xf542a4cb0e56a928854e7f46c10779, 0x0037ca], + }, + BigNum { + limbs: [0xd2fe056e12d128f968ad7099b97076, 0xb21084d26ef18a1152b98a5b16fdd9, 0x003c22], + }, + BigNum { + limbs: [0x13924feb1eeca0f1045bd496c219a4, 0x1bdcc7a762a7a1e2d45135ad7c1cf7, 0x000303], + }, + BigNum { + limbs: [0xaa11b314df6f5e0efba42a693de65d, 0x8b7661f61aa0915703b6d3f45be85c, 0x0070ea], + }, + BigNum { + limbs: [0x4daa4a99dbb5b03fbacc5e6dc71317, 0x8eb4ab2df85240fdd323261f47b06d, 0x002bbf], + }, + BigNum { + limbs: [0x6ff9b86622a64ec04533a09238ecea, 0x189e7e6f84f5f23c04e4e3829054e6, 0x00482e], + }, + BigNum { + limbs: [0x6af2a3df55476564cabfb80ccdf965, 0xa8bb5dc5e43d9aaa551e3cb295f125, 0x006bfb], + }, + BigNum { + limbs: [0x52b15f20a914999b354046f332069c, 0xfe97cbd7990a988f82e9ccef42142e, 0x0007f1], + }, + BigNum { + limbs: [0x57cb9f5410cdb13e4972bf66f482c6, 0x0a0c78d1f4e98c45d4e61e2afaf2e3, 0x006534], + }, + BigNum { + limbs: [0x65d863abed8e4dc1b68d3f990b7d3b, 0x9d46b0cb885ea6f40321eb76dd1270, 0x000eb9], + }, + BigNum { + limbs: [0x47df7ab3dcb27be44ecf3b78cfad97, 0x5daa7c9b91da67e2903db4b2328356, 0x000cb4], + }, + BigNum { + limbs: [0x75c4884c21a9831bb130c38730526a, 0x49a8ad01eb6dcb5747ca54efa581fd, 0x006739], + }, + BigNum { + limbs: [0x335495b3e381a61803b5a2380d0d30, 0xdc57672d00970d536c25c56fe7a60f, 0x0021d1], + }, + BigNum { + limbs: [0x8a4f6d4c1ada58e7fc4a5cc7f2f2d1, 0xcafbc2707cb125e66be24431f05f44, 0x00521b], + }, + BigNum { + limbs: [0xb619876811f53367d96ac4dec2a7c5, 0x205c599f30a57bf990ec45bb4a8b69, 0x003ef1], + }, + BigNum { + limbs: [0x078a7b97ec66cb9826953a213d583c, 0x86f6cffe4ca2b740471bc3e68d79ea, 0x0034fc], + }, + BigNum { + limbs: [0x41e2dc3cbcaa821d94f28bd2c67835, 0x1f70aeb2ebcd2b0325dad02c36de2e, 0x0014b9], + }, + BigNum { + limbs: [0x7bc126c341b17ce26b0d732d3987cc, 0x87e27aea917b0836b22d3975a12725, 0x005f34], + }, + BigNum { + limbs: [0x4afcc358f070656798b57cfe3321aa, 0xf69b92ab6fc454e75abe206844831d, 0x001654], + }, + BigNum { + limbs: [0x72a73fa70deb9998674a8201ccde57, 0xb0b796f20d83de527d49e939938236, 0x005d98], + }, + BigNum { + limbs: [0xb646d5a9ae7de4fb27d64d21924534, 0x29fc62fee1ef3730c5466a640457fe, 0x003c13], + }, + BigNum { + limbs: [0x075d2d564fde1a04d829b1de6dbacd, 0x7d56c69e9b58fc0912c19f3dd3ad55, 0x0037da], + }, + BigNum { + limbs: [0x89d821e1ae06b63c3d590cd42f742e, 0x63ad8b42d73f52437581fc31b4cb3b, 0x0045cb], + }, + BigNum { + limbs: [0x33cbe11e505548c3c2a6f22bd08bd3, 0x43a59e5aa608e0f662860d70233a18, 0x002e22], + }, + BigNum { + limbs: [0xd7c6c5de7c9c7598942eff1093543f, 0x475a4ded008f25944c39b09897e604, 0x006e29], + }, + BigNum { + limbs: [0xe5dd3d2181bf89676bd0ffef6cabc2, 0x5ff8dbb07cb90da58bce5909401f4e, 0x0005c4], + }, + BigNum { + limbs: [0xac5823be4c981f8af00971a8493ef2, 0x1d363d4b2f15805a9b50ec0d2d83c6, 0x003175], + }, + BigNum { + limbs: [0x114bdf41b1c3df750ff68d57b6c10f, 0x8a1cec524e32b2df3cb71d94aa818d, 0x004278], + }, + BigNum { + limbs: [0x9f60bd799619a78b235e378dc9fa7c, 0x81e948ae5bc5fe101b8c580f1b2242, 0x0067b0], + }, + BigNum { + limbs: [0x1e43458668425774dca1c772360585, 0x2569e0ef21823529bc7bb192bce311, 0x000c3d], + }, + BigNum { + limbs: [0xee8492ee3da22ff3e3e1962f75a6b8, 0x5dd7ff6f5999d3d22736d22e5d8107, 0x0073d3], + }, + BigNum { + limbs: [0xcf1f7011c0b9cf0c1c1e68d08a5949, 0x497b2a2e23ae5f67b0d137737a844b, 0x00001a], + }, + BigNum { + limbs: [0xcec740fed7840e6dbad9a23e72f81c, 0xb9a5d59ea6535f2fce20817a78d7c3, 0x004785], + }, + BigNum { + limbs: [0xeedcc20126d7f09245265cc18d07e5, 0xedad53fed6f4d40a09e788275f2d8f, 0x002c67], + }, + BigNum { + limbs: [0x069ac76165652518b66c7d8e84b7fb, 0x6824377d54128a64cca9517059cf6b, 0x0033f1], + }, + BigNum { + limbs: [0xb7093b9e98f6d9e7499381717b4806, 0x3f2ef2202935a8d50b5eb8317e35e8, 0x003ffc], + }, + BigNum { + limbs: [0x0ecd974f2a3b506efed909666fe227, 0x79afbe389bf399a8cb100ba938f0ea, 0x005eac], + }, + BigNum { + limbs: [0xaed66bb0d420ae910126f599901dda, 0x2da36b64e15499910cf7fdf89f1469, 0x001541], + }, + BigNum { + limbs: [0x010631e01cbc9f572cb84cf2c5ba09, 0x861b644b42c375aa55f89169d7ad93, 0x005b59], + }, + BigNum { + limbs: [0xbc9dd11fe19f5fa8d347b20d3a45f8, 0x2137c5523a84bd8f820f78380057c0, 0x001894], + }, + BigNum { + limbs: [0x036aeea430a057753ed7c94fb0eeb9, 0x421b969856edaeada54c5497aad2cf, 0x002aa4], + }, + BigNum { + limbs: [0xba39145bcdbba78ac12835b04f1148, 0x65379305265a848c32bbb50a2d3284, 0x004949], + }, + BigNum { + limbs: [0x27f1e0971010d57a3c81696a211fdf, 0xa91f129e2638b0ee8a91eb8b9e25cb, 0x0065f1], + }, + BigNum { + limbs: [0x95b22268ee4b2985c37e9595dee022, 0xfe3416ff570f824b4d761e1639df88, 0x000dfb], + }, + BigNum { + limbs: [0xb6b627c983a9d2e73458ac79b074ee, 0x26f9a1f2fb63a902b699f27a42bda3, 0x0066ae], + }, + BigNum { + limbs: [0x06eddb367ab22c18cba752864f8b13, 0x805987aa81e48a37216e17279547b0, 0x000d3f], + }, + BigNum { + limbs: [0x2345c5177d051a336503a91e97e5d7, 0xe82a9d82d223e607676361fe30e365, 0x002b64], + }, + BigNum { + limbs: [0x9a5e3de88156e4cc9afc55e1681a2a, 0xbf288c1aab244d3270a4a7a3a721ee, 0x004888], + }, + BigNum { + limbs: [0xb5d08955ff9e20e0480ab0fd9a31fa, 0x67c5369459aa472ce39066e706af49, 0x005bf5], + }, + BigNum { + limbs: [0x07d379a9febdde1fb7f54e0265ce07, 0x3f8df309239dec0cf477a2bad1560a, 0x0017f8], + }, + BigNum { + limbs: [0x21a614ccdb8d0356d6ec5ed1e118ad, 0x4cbaa9097311544f0b99685cfd7fc2, 0x003715], + }, + BigNum { + limbs: [0x9bfdee3322cefba92913a02e1ee754, 0x5a9880940a36deeacc6ea144da8591, 0x003cd8], + }, + BigNum { + limbs: [0x4004660ebbfc8136ef495f9fe8668d, 0xd2acd3b1314f047d8c5e8e943d7b0f, 0x00158c], + }, + BigNum { + limbs: [0x7d9f9cf1425f7dc910b69f60179974, 0xd4a655ec4bf92ebc4ba97b0d9a8a44, 0x005e60], + }, + BigNum { + limbs: [0xef7cb95c169e236f344925d273570b, 0xed4d89397e65a1e265fc1fb2d6cb41, 0x0039d6], + }, + BigNum { + limbs: [0xce2749a3e7bddb90cbb6d92d8ca8f6, 0xba05a063fee29157720be9ef013a11, 0x003a16], + }, + BigNum { + limbs: [0xbfd8fb21c9bc312aafa84a8f32c4c3, 0x725ed9887c0d76a737cfb9ec903271, 0x006fd9], + }, + BigNum { + limbs: [0xfdcb07de349fcdd55057b470cd3b3e, 0x34f45015013abc92a0384fb547d2e1, 0x000414], + }, + BigNum { + limbs: [0xac5555ad914c92614850e921b50b55, 0x888e1bc2c0f01f01546fd8631e66e8, 0x0027fc], + }, + BigNum { + limbs: [0x114ead526d0f6c9eb7af15de4af4ac, 0x1ec50ddabc5814388398313eb99e6b, 0x004bf1], + }, + BigNum { + limbs: [0x54fbc08c604c0bc827edff9f54ca63, 0xdddc6facd3a427840b4f6a4b3ffe3c, 0x0000cc], + }, + BigNum { + limbs: [0x68a842739e0ff337d811ff60ab359e, 0xc976b9f0a9a40bb5ccb89f56980717, 0x007320], + }, + BigNum { + limbs: [0xf4f876d5d1189994dd945218bdbbc2, 0xfb376ec72a786796c6567f5b161232, 0x005e8f], + }, + BigNum { + limbs: [0xc8ab8c2a2d43656b226bace742443f, 0xac1bbad652cfcba311b18a46c1f320, 0x00155d], + }, + BigNum { + limbs: [0x33fc05de37b96a5c092cddae2df4ca, 0x946abc676c5ed913df0b62773d4fbd, 0x000822], + }, + BigNum { + limbs: [0x89a7fd21c6a294a3f6d32151d20b37, 0x12e86d3610e95a25f8fca72a9ab596, 0x006bcb], + }, + BigNum { + limbs: [0x9d80b5ada11a750907a4e8b7d58e6a, 0x3c12226705777b23957d3889bcbf4d, 0x005b5e], + }, + BigNum { + limbs: [0x20234d525d4189f6f85b16482a7197, 0x6b41073677d0b816428ad1181b4606, 0x00188f], + }, + BigNum { + limbs: [0xdeb374606e7481ab9cb369c352cef9, 0x386f0661f1a7f25ded5a7525beba19, 0x0030c6], + }, + BigNum { + limbs: [0xdef08e9f8fe77d54634c953cad3108, 0x6ee4233b8ba040dbeaad947c194b39, 0x004327], + }, + BigNum { + limbs: [0x5b1a2164b6dd1896e6c704e507a68c, 0xa11049970467d95853e14bf970d3fc, 0x00736a], + }, + BigNum { + limbs: [0x6289e19b477ee6691938fa1af85975, 0x0642e00678e059e18426bda8673157, 0x000083], + }, + BigNum { + limbs: [0xa0c3b85cc1625c18889dbb4c8fc93f, 0x554ad434a3a77303d14549438829dd, 0x002db8], + }, + BigNum { + limbs: [0x1ce04aa33cf9a2e7776243b37036c2, 0x52085568d9a0c03606c2c05e4fdb76, 0x004635], + }, + BigNum { + limbs: [0x495a3f68e907e71bb3e6377c8ca828, 0x42dcd31ae38aaeeb020aab9a427042, 0x00136d], + }, + BigNum { + limbs: [0x7449c397155417e44c19c7837357d9, 0x6476568299bd844ed5fd5e07959511, 0x006080], + }, + BigNum { + limbs: [0x03fca33ae80a7fc83b37a3b9e12e68, 0x42747c135aee51c1f421f069545a96, 0x0016f8], + }, + BigNum { + limbs: [0xb9a75fc516517f37c4c85b461ed199, 0x64dead8a2259e177e3e6193883aabd, 0x005cf5], + }, + BigNum { + limbs: [0x2e14681c99205c3efbab2e58a9a902, 0xd98628e0476857354101f90fd89fc1, 0x002975], + }, + BigNum { + limbs: [0x8f8f9ae3653ba2c10454d0a75656ff, 0xcdcd00bd35dfdc0497061091ff6592, 0x004a77], + }, + BigNum { + limbs: [0x8b8205eb6bd64213c2c46305798d57, 0xc8a83119f25dcd4785621a77f02003, 0x0029a8], + }, + BigNum { + limbs: [0x3221fd149285bcec3d3b9bfa8672aa, 0xdeaaf8838aea65f252a5ef29e7e550, 0x004a44], + }, + BigNum { + limbs: [0x3a7975240c453467f53af052532623, 0x65af92d4f70159b29ee57bf65f7f96, 0x00622b], + }, + BigNum { + limbs: [0x832a8ddbf216ca980ac50eadacd9de, 0x41a396c88646d98739228dab7885bd, 0x0011c2], + }, + BigNum { + limbs: [0x63e200e9d8e2e5305f74f884460d5a, 0xf96b57d1fb5374dfde2f880fa03f19, 0x0023a8], + }, + BigNum { + limbs: [0x59c20216257919cfa08b067bb9f2a7, 0xade7d1cb81f4be59f9d8819237c63a, 0x005044], + }, + BigNum { + limbs: [0xe6f3a7aa7aa027d5ef58fc555a6545, 0xc3a26d8d2d0b63363c75ac7b61fa06, 0x001efe], + }, + BigNum { + limbs: [0xd6b05b5583bbd72a10a702aaa59abc, 0xe3b0bc10503cd0039b925d26760b4c, 0x0054ee], + }, + BigNum { + limbs: [0x8cc4e59271bc254675e44de9acb089, 0x90622d1b33952336df41aa60d8fd88, 0x002a16], + }, + BigNum { + limbs: [0x30df1d6d8c9fd9b98a1bb116534f78, 0x16f0fc8249b31002f8c65f40ff07cb, 0x0049d7], + }, + BigNum { + limbs: [0x5a4984bd3033326a314c573c060e79, 0x4308610110d950309e5d6881371a44, 0x00251f], + }, + BigNum { + limbs: [0x635a7e42ce28cc95ceb3a7c3f9f188, 0x644ac89c6c6ee30939aaa120a0eb0f, 0x004ece], + }, + BigNum { + limbs: [0x6261dae436c20e1ae655f9c67cb4ee, 0x22db31ab8d36fc199e379693433fef, 0x00590d], + }, + BigNum { + limbs: [0x5b42281bc799f0e519aa0539834b13, 0x8477f7f1f011372039d0730e94c564, 0x001ae0], + }, + BigNum { + limbs: [0x97df7b82540d7f520fa375ce78b879, 0xd257d52cc247f82e1823a6a0a604df, 0x0013e4], + }, + BigNum { + limbs: [0x25c4877daa4e7fadf05c8931874788, 0xd4fb5470bb003b0bbfe46301320074, 0x006008], + }, + BigNum { + limbs: [0x27e28d07b063a01ddcc828594b2606, 0x18800771dd7f441b5c5cba7e08c60a, 0x006e7a], + }, + BigNum { + limbs: [0x95c175f84df85ee22337d6a6b4d9fb, 0x8ed3222b9fc8ef1e7bab4f23cf3f49, 0x000573], + }, + BigNum { + limbs: [0x122a6bda001d781a1d628b12064a8f, 0xbef1ee380b4c3884583970d8ed1f28, 0x000d69], + }, + BigNum { + limbs: [0xab799725fe3e86e5e29d73edf9b572, 0xe8613b6571fbfab57fce98c8eae62b, 0x006683], + }, + BigNum { + limbs: [0x4109d826db2ff20301669f731697cb, 0xefe5327bd2b34713d04cbf2d404699, 0x005999], + }, + BigNum { + limbs: [0x7c9a2ad9232c0cfcfe995f8ce96836, 0xb76df721aa94ec2607bb4a7497beba, 0x001a53], + }, + BigNum { + limbs: [0x279b87d2e6b387fcf5fe3b045dd181, 0x1fd88f51bc49ee62c37382b0353690, 0x004f16], + }, + BigNum { + limbs: [0x96087b2d17a877030a01c3fba22e80, 0x877a9a4bc0fe44d7149486f1a2cec3, 0x0024d7], + }, + BigNum { + limbs: [0xb5d2af6411c8553712b61b70f50fdc, 0xfef871d9d6648a833323701f1e4282, 0x003dba], + }, + BigNum { + limbs: [0x07d1539bec93a9c8ed49e38f0af025, 0xa85ab7c3a6e3a8b6a4e49982b9c2d1, 0x003632], + }, + BigNum { + limbs: [0x15c80f017c9aa2a069d1dc9b7042bc, 0xa5269bf2095fdaa09ca8fc7421e5f7, 0x0019e0], + }, + BigNum { + limbs: [0xa7dbf3fe81c15c5f962e22648fbd45, 0x022c8dab73e858993b5f0d2db61f5c, 0x005a0d], + }, + BigNum { + limbs: [0x62db18feb3e506f88c9f388c0677df, 0x3b9eaedc5bb79b6f2492431540cb08, 0x005385], + }, + BigNum { + limbs: [0x5ac8ea014a76f8077360c673f98822, 0x6bb47ac1219097cab375c68c973a4b, 0x002068], + }, + BigNum { + limbs: [0x655490bf2eb5c842ba9cf6eeeeae9b, 0xd2474b10f54a9e3e5c6ba11db18f5c, 0x003d7f], + }, + BigNum { + limbs: [0x584f7240cfa636bd45630811115166, 0xd50bde8c87fd94fb7b9c68842675f7, 0x00366d], + }, + BigNum { + limbs: [0xdbd2559a884245d72951864d8fa8da, 0x1375b8c0af7b737efcd5f01ebdb95c, 0x001fb6], + }, + BigNum { + limbs: [0xe1d1ad657619b928d6ae78b2705727, 0x93dd70dccdccbfbadb3219831a4bf6, 0x005437], + }, + BigNum { + limbs: [0x5879432fea7a51222aedd803cfa5cb, 0x4886f803ad1dad27b4014dedfaed14, 0x001b15], + }, + BigNum { + limbs: [0x652abfd013e1adddd51226fc305a36, 0x5ecc3199d02a86122406bbb3dd183f, 0x0058d8], + }, + BigNum { + limbs: [0xc99defc2a29159bca5d0ce219b4711, 0x7214004ab09d69632374d00f8a2e91, 0x001737], + }, + BigNum { + limbs: [0xf406133d5bcaa5435a2f30de64b8f0, 0x353f2952ccaac9d6b49339924dd6c1, 0x005cb6], + }, + BigNum { + limbs: [0x4901bbd26428fd3608266993cc1060, 0xf73cd3a330df9a39086a6948da8562, 0x004f39], + }, + BigNum { + limbs: [0x74a2472d9a3301c9f7d9956c33efa1, 0xb01655fa4c689900cf9da058fd7ff1, 0x0024b3], + }, + BigNum { + limbs: [0x077d669930bd57b515ba906dbfc129, 0x63cbfdc3672250f2476c3902b234c3, 0x0025eb], + }, + BigNum { + limbs: [0xb6269c66cd9ea74aea456e92403ed8, 0x43872bda1625e247909bd09f25d090, 0x004e02], + }, + BigNum { + limbs: [0x63a3ef0a0dc0eda56e5338c1cb228f, 0x4dcd2085462924021dd09c3abc78e7, 0x003d7c], + }, + BigNum { + limbs: [0x5a0013f5f09b115a91acc63e34dd72, 0x59860918371f0f37ba376d671b8c6c, 0x003671], + }, + BigNum { + limbs: [0x17f78b09396083ed9be33e30f62aaa, 0xb650aa0b473d0bd9e6a77fb9d5d6ca, 0x007369], + }, + BigNum { + limbs: [0xa5ac77f6c4fb7b12641cc0cf09d557, 0xf1027f92360b275ff16089e8022e89, 0x000083], + }, + BigNum { + limbs: [0xb3ac610f977e33a5d11204dfbed99d, 0xbb4b42cf1f3a9b0feb4704453bb48b, 0x0046df], + }, + BigNum { + limbs: [0x09f7a1f066ddcb5a2eedfa20412664, 0xec07e6ce5e0d9829ecc1055c9c50c8, 0x002d0d], + }, + BigNum { + limbs: [0x55ad625c181f556065bcd7a01c30f2, 0x781a7c2239ae887a36503010401e36, 0x004f5b], + }, + BigNum { + limbs: [0x67f6a0a3e63ca99f9a43275fe3cf0f, 0x2f38ad7b4399aabfa1b7d99197e71d, 0x002492], + }, + BigNum { + limbs: [0x41edb4801671b387553452e7d61777, 0xd29ba4c63ee76548d5a502b249e7f1, 0x006dc9], + }, + BigNum { + limbs: [0x7bb64e7fe7ea4b78aacbac1829e88a, 0xd4b784d73e60cdf1026306ef8e1d62, 0x000623], + }, + BigNum { + limbs: [0xc3fa6b12b3b74ec8b70acd9cf0d865, 0x2c1755de706dc08e3aa03315ca7a63, 0x003b64], + }, + BigNum { + limbs: [0xf9a997ed4aa4b03748f531630f279c, 0x7b3bd3bf0cda72ab9d67d68c0d8aef, 0x003889], + }, + BigNum { + limbs: [0xef690241dfa3963ce8fa61277fed1a, 0x4b9f0b721eb1bf8908719fe1ec6949, 0x005e90], + }, + BigNum { + limbs: [0xce3b00be1eb868c317059dd88012e7, 0x5bb41e2b5e9673b0cf9669bfeb9c09, 0x00155d], + }, + BigNum { + limbs: [0xe791c9632c5ea306ce63b513ad4ce0, 0xe3baa6b4f02c0689adb2f9082fb65f, 0x004e36], + }, + BigNum { + limbs: [0xd612399cd1fd5bf9319c49ec52b321, 0xc39882e88d1c2cb02a551099a84ef3, 0x0025b6], + }, + BigNum { + limbs: [0x0cde3a17cbf71e5f622b1f50d9fdd2, 0x2cf1d0e1dadb041561a5e218abee3e, 0x002002], + }, + BigNum { + limbs: [0xb0c5c8e83264e0a09dd4dfaf26022f, 0x7a6158bba26d2f24766227892c1715, 0x0053eb], + }, + BigNum { + limbs: [0x537e43d8e58b2372f85bc98bc40e5a, 0xeaa7d4663a5035d056852237c9d923, 0x002481], + }, + BigNum { + limbs: [0x6a25bf2718d0db8d07a435743bf1a7, 0xbcab553742f7fd698182e76a0e2c30, 0x004f6b], + }, + BigNum { + limbs: [0x47b2f144954b140bbd1890bb6705e7, 0xff7adae82fa6558f5be8e50b86a696, 0x001707], + }, + BigNum { + limbs: [0x75f111bb6910eaf442e76e4498fa1a, 0xa7d84eb54da1ddaa7c1f2496515ebd, 0x005ce5], + }, + BigNum { + limbs: [0xe680f5dafc6153a131aa10fd632e00, 0x134c2edfd8640e2f577d0ff387b8a5, 0x005ff3], + }, + BigNum { + limbs: [0xd7230d2501faab5ece55ee029cd201, 0x9406fabda4e4250a808af9ae504cad, 0x0013fa], + }, + BigNum { + limbs: [0x52d122bd538957e4cb00352c21f113, 0x6b967a02c84b89d12a87006d579ea1, 0x0027d8], + }, + BigNum { + limbs: [0x6ad2e042aad2a71b34ffc9d3de0eee, 0x3bbcaf9ab4fca968ad8109348066b2, 0x004c15], + }, + BigNum { + limbs: [0x6069bbc672bcd63fc6e7f37a5b26a1, 0x12f82c0988ef81ca254da703f317b7, 0x002c4a], + }, + BigNum { + limbs: [0x5d3a47398b9f28c039180b85a4d960, 0x945afd93f458b16fb2ba629de4ed9c, 0x0047a3], + }, + BigNum { + limbs: [0x550d70148336689facaa64d3610ad5, 0x07745a6b893c3d980cdab38ca1760a, 0x0002f8], + }, + BigNum { + limbs: [0x689692eb7b25966053559a2c9ef52c, 0x9fdecf31f40bf5a1cb2d5615368f49, 0x0070f5], + }, + BigNum { + limbs: [0xca0410a1c9a10a62c107092a653563, 0x89b5205c01ad36eb0ad3b74e021dec, 0x002aa8], + }, + BigNum { + limbs: [0xf39ff25e34baf49d3ef8f5d59aca9e, 0x1d9e09417b9afc4ecd345253d5e766, 0x004945], + }, + BigNum { + limbs: [0x0607c9bc523c31742ddf5eef4d4eaa, 0x891e1db52597a9c0b4d6e6ac40094a, 0x00155d], + }, + BigNum { + limbs: [0xb79c3943ac1fcd8bd220a010b2b157, 0x1e350be857b08979233122f597fc09, 0x005e90], + }, + BigNum { + limbs: [0xdadda702f99ca6235747e7245ca8f3, 0x989c317709ce3761dca398879864ee, 0x0067f5], + }, + BigNum { + limbs: [0xe2c65bfd04bf58dca8b817dba3570e, 0x0eb6f8267379fbd7fb64711a3fa064, 0x000bf8], + }, + BigNum { + limbs: [0x26cb392f9cd37aa223717637b2a39a, 0x7bac12ba0cc14923b1de5d054ff5cd, 0x0008ac], + }, + BigNum { + limbs: [0x96d8c9d06188845ddc8e88c84d5c67, 0x2ba716e37086ea162629ac9c880f86, 0x006b41], + }, + BigNum { + limbs: [0xcc5d3b6c2f14c021e5adbdd7b45b67, 0xa957448e60fb4ed489c94adbeee64a, 0x004438], + }, + BigNum { + limbs: [0xf146c793cf473ede1a5241284ba49a, 0xfdfbe50f1c4ce4654e3ebec5e91f08, 0x002fb4], + }, + BigNum { + limbs: [0xbd422a206f6b6a21a0019cde8aa342, 0x4dfd3ba86f2050548384249ecf71c4, 0x00178c], + }, + BigNum { + limbs: [0x0061d8df8ef094de5ffe6221755cbf, 0x5955edf50e27e2e55483e50308938f, 0x005c61], + }, + BigNum { + limbs: [0xcc4b7382a961c6042cdc510b610c75, 0x371b67e5b1e369b3acd7001093f4a1, 0x00431e], + }, + BigNum { + limbs: [0xf1588f7d54fa38fbd323adf49ef38c, 0x7037c1b7cb64c9862b3109914410b1, 0x0030cf], + }, + BigNum { + limbs: [0x6fd201e8f5cc40a3afe5b2094fc128, 0xfe671be7bb3770be381d1d554a5b40, 0x0018bf], + }, + BigNum { + limbs: [0x4dd20117088fbe5c501a4cf6b03ed9, 0xa8ec0db5c210c27b9feaec4c8daa13, 0x005b2d], + }, + BigNum { + limbs: [0xf025db383b07030c5949b99fe0cf18, 0x293af972bc06e684d71edb9b48c8fb, 0x005514], + }, + BigNum { + limbs: [0xcd7e27c7c354fbf3a6b645601f30e9, 0x7e18302ac1414cb500e92e068f3c57, 0x001ed9], + }, + BigNum { + limbs: [0x3562ca05a2228a61650d680b8a6595, 0x9add509bfeb324c70882829c954881, 0x003f8f], + }, + BigNum { + limbs: [0x884138fa5c39749e9af296f4759a6c, 0x0c75d9017e950e72cf85870542bcd2, 0x00345e], + }, + BigNum { + limbs: [0x6b3c313aa95aee82f6451c0ffd9e4b, 0x6d8766a0943a502e6324c3508a3d5d, 0x001de8], + }, + BigNum { + limbs: [0x5267d1c55501107d09bae2f00261b6, 0x39cbc2fce90de30b74e346514dc7f6, 0x005605], + }, + BigNum { + limbs: [0x654ce80fe96082a1e43aaa7b821ea8, 0xf72b923064c0be698f7263e18fd0b9, 0x002cc7], + }, + BigNum { + limbs: [0x58571af014fb7c5e1bc554847de159, 0xb027976d188774d04895a5c048349a, 0x004725], + }, + BigNum { + limbs: [0x54ae98f2436032489a67c9866dd8ad, 0xe4d12bf37061256021f248c7908c5b, 0x005e75], + }, + BigNum { + limbs: [0x68f56a0dbafbccb765983579922754, 0xc281fdaa0ce70dd9b615c0da4778f8, 0x001577], + }, + BigNum { + limbs: [0x8497fcc49d0aa40b429d38e35259ba, 0x99a26cd1eb74403a1340a2d6a1bb64, 0x003475], + }, + BigNum { + limbs: [0x390c063b61515af4bd62c61cada647, 0x0db0bccb91d3f2ffc4c766cb3649ef, 0x003f78], + }, + BigNum { + limbs: [0x3be6ce0d94c6fa2af3b166edf32104, 0xdd86f64b2b584cdc6ccbf204e89982, 0x00386c], + }, + BigNum { + limbs: [0x81bd34f2699504d50c4e98120cdefd, 0xc9cc335251efe65d6b3c179cef6bd1, 0x003b80], + }, + BigNum { + limbs: [0xfe230845799344541d2d22e8741f95, 0xb81eac8a6b93f11de21f95fdc20639, 0x0019a3], + }, + BigNum { + limbs: [0xbf80faba84c8baabe2d2dc178be06c, 0xef347d1311b4421bf5e873a415ff19, 0x005a49], + }, + BigNum { + limbs: [0xfe8d642079b117e2b984147df9fa0c, 0x54602f81f7daddb4495985ce8faabc, 0x00268a], + }, + BigNum { + limbs: [0xbf169edf84aae71d467bea820605f5, 0x52f2fa1b856d55858eae83d3485a96, 0x004d63], + }, + BigNum { + limbs: [0xac10045770c08b8c60ff7cd1cb44b7, 0x548cbf1cc89059674f9cea35a7984c, 0x002455], + }, + BigNum { + limbs: [0x1193fea88d9b73739f00822e34bb4a, 0x52c66a80b4b7d9d2886b1f6c306d07, 0x004f98], + }, + BigNum { + limbs: [0x3682e1dd8e09eea1bf6608e5f02061, 0x4966d963f03feefe5024fc878e21d5, 0x007052], + }, + BigNum { + limbs: [0x872121227052105e4099f61a0fdfa0, 0x5dec50398d08443b87e30d1a49e37e, 0x00039b], + }, + BigNum { + limbs: [0x2e052cb748d5c0c04adf434b4e09ff, 0xf2bbe685dbe29aa1cac699a261938d, 0x00218a], + }, + BigNum { + limbs: [0x8f9ed648b5863e3fb520bbb4b1f602, 0xb4974317a16598980d416fff7671c6, 0x005262], + }, + BigNum { + limbs: [0x6d28a175fac82773be83cb00213581, 0x05a1a5d4698d5ee9e090bc999a0261, 0x002710], + }, + BigNum { + limbs: [0x507b618a0393d78c417c33ffdeca80, 0xa1b183c913bad44ff7774d083e02f2, 0x004cdd], + }, + BigNum { + limbs: [0xc71ad10f1cb57ed38797c866a2d324, 0x5a3fce4392a5b6641cef26ddbb1e10, 0x00543a], + }, + BigNum { + limbs: [0xf68931f0e1a6802c786836995d2cdd, 0x4d135b59eaa27cd5bb18e2c41ce742, 0x001fb3], + }, + BigNum { + limbs: [0x3b0e7eef22839ee457f3a8335b7c95, 0x7dc08530f7efe3a32515bfe9049360, 0x000a3e], + }, + BigNum { + limbs: [0x82958410dbd8601ba80c56cca4836c, 0x2992a46c85584f96b2f249b8d371f3, 0x0069af], + }, + BigNum { + limbs: [0x010d11ad78e67deb7dbe225750689c, 0xc1ce8fe57512b096e947760ffd71d2, 0x001478], + }, + BigNum { + limbs: [0xbc96f152857581148241dca8af9765, 0xe58499b8083582a2eec09391da9381, 0x005f74], + }, + BigNum { + limbs: [0x0d7b400461dcb7a69e3537d4ebbcf1, 0xf8671d4058336373dcdb72a544f8c7, 0x000aab], + }, + BigNum { + limbs: [0xb028c2fb9c7f475961cac72b144310, 0xaeec0c5d2514cfc5fb2c96fc930c8c, 0x006941], + }, + BigNum { + limbs: [0xbcb5780f8ed96932b18098666562a4, 0xbd71f2c2ea600d38d4f3d4ea6f549f, 0x004256], + }, + BigNum { + limbs: [0x00ee8af06f8295cd4e7f66999a9d5d, 0xe9e136da92e82601031434b768b0b4, 0x003196], + }, + BigNum { + limbs: [0x38d17454846f3841f49d74735570ea, 0x165fbd58c5a8755dc5938773609f0e, 0x0003ed], + }, + BigNum { + limbs: [0x84d28eab79ecc6be0b628a8caa8f17, 0x90f36c44b79fbddc1274822e776645, 0x007000], + }, + BigNum { + limbs: [0xfcb916c626e0e9bc29f6173ab70b65, 0x3d073a9c55cdd85ea2235bfe4d4804, 0x005b5b], + }, + BigNum { + limbs: [0xc0eaec39d77b1543d609e7c548f49c, 0x6a4bef01277a5adb35e4ada38abd4e, 0x001892], + }, + BigNum { + limbs: [0xc37b9a1dfaaf4193724cef26d4b27a, 0x9c2994f61e115e9f0991476ba4f346, 0x004ae3], + }, + BigNum { + limbs: [0xfa2868e203acbd6c8db30fd92b4d87, 0x0b2994a75f36d49ace76c23633120c, 0x00290a], + }, + BigNum { + limbs: [0x377a276c1c5329c1018e5e8284261e, 0xd80ac1ce9fe1755c33da05a269c910, 0x0053fd], + }, + BigNum { + limbs: [0x8629db93e208d53efe71a07d7bd9e3, 0xcf4867cedd66bddda42e03ff6e3c43, 0x001fef], + }, + BigNum { + limbs: [0x45dc24dbfdb880c6163bc865dd8bfa, 0x904b30cf1672d3253aaf3beeedf700, 0x0032fe], + }, + BigNum { + limbs: [0x77c7de2400a37e39e9c4369a227407, 0x1707f8ce66d560149d58cdb2ea0e53, 0x0040ef], + }, + BigNum { + limbs: [0xba16207a4ed9735b36b24c6dd788a9, 0x460aee018137df4643f06e17e34196, 0x001af7], + }, + BigNum { + limbs: [0x038de285af828ba4c94db292287758, 0x61483b9bfc1053f394179b89f4c3bd, 0x0058f6], + }, + BigNum { + limbs: [0x5051b124a48d44acceb7bbce4cc395, 0x49a9f4f29b3a002bc0adb6fdc0f664, 0x006fcb], + }, + BigNum { + limbs: [0x6d5251db59ceba5331484331b33c6c, 0x5da934aae20e330e175a52a4170eef, 0x000422], + }, + BigNum { + limbs: [0xdce6f23222f777c94bdd9d3ac706d2, 0x815b057415a7e25cd2e9271b27153d, 0x000455], + }, + BigNum { + limbs: [0xe0bd10cddb648736b42261c538f92f, 0x25f8242967a050dd051ee286b0f015, 0x006f98], + }, + BigNum { + limbs: [0x66373acc16d886ceddaf21e77fc517, 0xa9919ec5166a85cf008f30e27fbec0, 0x0010b0], + }, + BigNum { + limbs: [0x576cc833e78378312250dd18803aea, 0xfdc18ad866ddad6ad778d8bf584693, 0x00633c], + }, + BigNum { + limbs: [0xcf5dfbcdebe183e6e206d7bdffab49, 0x14f3cf6874649b5de195f3b709f16f, 0x000d09], + }, + BigNum { + limbs: [0xee460732127a7b191df927420054b8, 0x925f5a3508e397dbf67215eace13e3, 0x0066e4], + }, + BigNum { + limbs: [0x620e2e04af3cb774d607ae86c135cd, 0x379a5ac72106a7f3d9eeeea2803ed8, 0x002032], + }, + BigNum { + limbs: [0x5b95d4fb4f1f478b29f850793eca34, 0x6fb8ced65c418b45fe191aff57c67b, 0x0053bb], + }, + BigNum { + limbs: [0xbe8983b787f09a3fda16b703ae79d7, 0xc42675dd613b3489b26bb21f6c258f, 0x0056da], + }, + BigNum { + limbs: [0xff1a7f48766b64c025e947fc51862a, 0xe32cb3c01c0cfeb0259c57826bdfc3, 0x001d12], + }, + BigNum { + limbs: [0x4e939154c03c580acc2b5ef5216f61, 0x9334769b3974daaf8d6debc056151e, 0x001ead], + }, + BigNum { + limbs: [0x6f1071ab3e1fa6f533d4a00ade90a0, 0x141eb30243d3588a4a9a1de181f035, 0x005540], + }, + BigNum { + limbs: [0x6b31e32115dd92996c19a5568c67f4, 0x5347f1132f4d1e57fcce6b05f90380, 0x0036c7], + }, + BigNum { + limbs: [0x52721fdee87e6c6693e659a973980d, 0x540b388a4dfb14e1db399e9bdf01d3, 0x003d26], + }, + BigNum { + limbs: [0xf2bdccb70a6ef709cbca5b7a65aab2, 0xbd04f7f6b469d3ddff14a41bbd9dd2, 0x0036f1], + }, + BigNum { + limbs: [0xcae63648f3ed07f63435a3859a554f, 0xea4e31a6c8de5f5bd8f365861a6780, 0x003cfb], + }, + BigNum { + limbs: [0x66f13b1ab5685cd8cdc7146b807204, 0x9469afda287a4012a1a3ae0c60acc9, 0x004fd2], + }, + BigNum { + limbs: [0x56b2c7e548f3a2273238ea947f8dfd, 0x12e979c354cdf32736645b9577588a, 0x00241b], + }, + BigNum { + limbs: [0x7853b66b61d5200372e53f548f8ce3, 0x87ce2ad498442d5e019288a337976e, 0x003b03], + }, + BigNum { + limbs: [0x45504c949c86defc8d1abfab70731e, 0x1f84fec8e50405dbd67580fea06de5, 0x0038ea], + }, + BigNum { + limbs: [0x70bff3af461bc0ca31c421a753efa0, 0xa63dfd84ffaec090ac87917778335b, 0x0056b5], + }, + BigNum { + limbs: [0x4ce40f50b8403e35ce3bdd58ac1061, 0x01152c187d9972a92b80782a5fd1f8, 0x001d38], + }, + BigNum { + limbs: [0xc5373ec9c8343b1e4ca4d8ce229e36, 0x5d229a04387d9c5d5a214d0488f0ef, 0x00455e], + }, + BigNum { + limbs: [0xf86cc4363627c3e1b35b2631dd61cb, 0x4a308f9944ca96dc7de6bc9d4f1463, 0x002e8f], + }, + BigNum { + limbs: [0x5dcdee102c3ba87f2f48f3eb5d88d3, 0xa72bf8109fde405a5c49fdd0824580, 0x0013de], + }, + BigNum { + limbs: [0x5fd614efd2205680d0b70b14a2772e, 0x0027318cdd69f2df7bbe0bd155bfd3, 0x00600f], + }, + BigNum { + limbs: [0xd2826073fe1c3d9541142e4bebfa33, 0x8b9ab81f31622738fb770b6f7db0fd, 0x006321], + }, + BigNum { + limbs: [0xeb21a28c003fc16abeebd0b41405ce, 0x1bb8717e4be60c00dc90fe325a5455, 0x0010cc], + }, + BigNum { + limbs: [0x2655a4f2a71153bc164249c8f6ae4c, 0xed9f7c0b36665bc1b21db066728eec, 0x00230a], + }, + BigNum { + limbs: [0x974e5e0d574aab43e9bdb5370951b5, 0xb9b3ad9246e1d77825ea593b657667, 0x0050e2], + }, + BigNum { + limbs: [0x47c28ba9fd6add445358152fe9e30e, 0x4d75bff8bc844cda745819c6a69193, 0x000182], + }, + BigNum { + limbs: [0x75e1775600f121bbaca7e9d0161cf3, 0x59dd69a4c0c3e65f63afefdb3173c0, 0x00726b], + }, + BigNum { + limbs: [0xeccbd814da06896454b1247b57539e, 0xde70f6f89e7b9b7862421542c6ade1, 0x002cc2], + }, + BigNum { + limbs: [0xd0d82aeb2455759bab4eda84a8ac63, 0xc8e232a4decc97c175c5f45f115771, 0x00472a], + }, + BigNum { + limbs: [0x94d9614b087f3c1980045ae4b78723, 0xd97a1ce103e07e6e65b246bd533015, 0x0044dd], + }, + BigNum { + limbs: [0x28caa1b4f5dcc2e67ffba41b4878de, 0xcdd90cbc7967b4cb7255c2e484d53e, 0x002f0f], + }, + BigNum { + limbs: [0x51fbc98b29ffba9c5a4354bbba58aa, 0x3cb2c5f57ea5b26b1d49f27a08e557, 0x003f3d], + }, + BigNum { + limbs: [0x6ba83974d45c4463a5bcaa4445a757, 0x6aa063a7fea280cebabe1727cf1ffc, 0x0034b0], + }, + BigNum { + limbs: [0x61db1d1b9c0b08cb773551758ecaa4, 0xe37eb8a506acf1f91c7b55db3a8be4, 0x00593a], + }, + BigNum { + limbs: [0x5bc8e5e46250f63488caad8a71355d, 0xc3d470f8769b4140bb8cb3c69d796f, 0x001ab2], + }, + BigNum { + limbs: [0x444d8a302c8da96e37bfb94751e58e, 0x6690ae243ef976f6b24227dd5cb253, 0x005ec0], + }, + BigNum { + limbs: [0x795678cfd1ce5591c84045b8ae1a73, 0x40c27b793e4ebc4325c5e1c47b5300, 0x00152d], + }, + BigNum { + limbs: [0x3dfdc600984107cda32780a77f8f5f, 0xa1529986e0edb5dd9e2d3dd12687a9, 0x002eb2], + }, + BigNum { + limbs: [0x7fa63cff661af7325cd87e588070a2, 0x060090169c5a7d5c39dacbd0b17daa, 0x00453b], + }, + BigNum { + limbs: [0x2489344a456b47cae21e3bd7150af7, 0xea05243f47f6f7db687fb68d902acb, 0x005750], + }, + BigNum { + limbs: [0x991aceb5b8f0b7351de1c328eaf50a, 0xbd4e055e35513b5e6f88531447da88, 0x001c9c], + }, + BigNum { + limbs: [0xca05a65a819a818d65f283960c64f6, 0xfcc67803f85a9d91f530887530a761, 0x004c36], + }, + BigNum { + limbs: [0xf39e5ca57cc17d729a0d7b69f39b0b, 0xaa8cb19984ed95a7e2d7812ca75df1, 0x0027b6], + }, + BigNum { + limbs: [0x5c3a002f47ebc42d07692bea45f396, 0xa5fa42eabba5613a5c9f9b3231c3b6, 0x007192], + }, + BigNum { + limbs: [0x616a02d0b6703ad2f896d315ba0c6b, 0x0158e6b2c1a2d1ff7b686e6fa6419d, 0x00025b], + }, + BigNum { + limbs: [0xeceaad029bec7ce943f9b1660bb1a9, 0x59ff4eddaac6fee6711ca11606eba0, 0x001658], + }, + BigNum { + limbs: [0xd0b955fd626f8216bc064d99f44e58, 0x4d53dabfd281345366eb688bd119b2, 0x005d95], + }, + BigNum { + limbs: [0x218f1dd4394b56b4953e423b9c04e0, 0x87019792e16ae4979dbd6023b97478, 0x004970], + }, + BigNum { + limbs: [0x9c14e52bc510a84b6ac1bcc463fb21, 0x2051920a9bdd4ea23a4aa97e1e90db, 0x002a7d], + }, + BigNum { + limbs: [0x37f73343b719ecede15ecd60b3df65, 0x624c06087cb6ad30ccd8f447ed080a, 0x0059ba], + }, + BigNum { + limbs: [0x85accfbc474212121ea1319f4c209c, 0x45072395009186090b2f1559eafd49, 0x001a33], + }, + BigNum { + limbs: [0x467cc6e972110032c5ece8b055e8a9, 0x62d2f2b315a015393dcc435c95bf3a, 0x000274], + }, + BigNum { + limbs: [0x77273c168c4afecd3a13164faa1758, 0x448036ea67a81e009a3bc645424619, 0x007179], + }, + BigNum { + limbs: [0xc2941dbdeb3eff86bbc2821a7c954d, 0x4e5fe188f49e4f87f802ec2872f93e, 0x0043c8], + }, + BigNum { + limbs: [0xfb0fe542131cff79443d7ce5836ab4, 0x58f3481488a9e3b1e0051d79650c14, 0x003025], + }, + BigNum { + limbs: [0x5315b31507ceb8d2aa93f770b9c8e1, 0x9106ee3a43fd12880e5eefdbae2ab6, 0x004b9b], + }, + BigNum { + limbs: [0x6a8e4feaf68d462d556c078f463720, 0x164c3b63394b20b1c9a919c629da9d, 0x002852], + }, + BigNum { + limbs: [0xcbd2211181fe944077e77ff3104df5, 0xaa51988e575837557c3b5ebdfea8e8, 0x0060c6], + }, + BigNum { + limbs: [0xf1d1e1ee7c5d6abf88187f0cefb20c, 0xfd01910f25effbe45bccaae3d95c6a, 0x001326], + }, + BigNum { + limbs: [0xe7ea60eb7cbec10bffa78086fdf997, 0xf61c4bca67ebd5e3fdd1c6dc2cea86, 0x005f7c], + }, + BigNum { + limbs: [0xd5b9a214819d3df400587e7902066a, 0xb136ddd3155c5d55da3642c5ab1acc, 0x001470], + }, + BigNum { + limbs: [0xade32f51e3b92db7b324b4eaa555a9, 0xf91f5315f9552e1b95e6b724cde4ee, 0x0008b5], + }, + BigNum { + limbs: [0x0fc0d3ae1aa2d1484cdb4a155aaa58, 0xae33d68783f3051e4221527d0a2065, 0x006b37], + }, + BigNum { + limbs: [0xf8a4660d27320008b429fd878ffa9e, 0x7d7b53ab5425e3b013ebe22d4afdb4, 0x003702], + }, + BigNum { + limbs: [0xc4ff9cf2d729fef74bd60178700563, 0x29d7d5f229224f89c41c27748d079e, 0x003ceb], + }, + BigNum { + limbs: [0xd3a1081b7dc34879cad7e40b802754, 0xb1694de1defdc9b305be4031baafd7, 0x004d4c], + }, + BigNum { + limbs: [0xea02fae48098b68635281af47fd8ad, 0xf5e9dbbb9e4a6986d249c9701d557b, 0x0026a0], + }, + BigNum { + limbs: [0xbb4de382da6cec9b679276f6e92cd5, 0x81b1b3b9f48d763ed728d201436845, 0x004de2], + }, + BigNum { + limbs: [0x02561f7d23ef1264986d880916d32c, 0x25a175e388babcfb00df37a0949d0e, 0x00260b], + }, + BigNum { + limbs: [0xfea794c0e0d6b46940f19dbc185b43, 0xe9cede62c18b938f1b083fb184c56e, 0x000168], + }, + BigNum { + limbs: [0xbefc6e3f1d854a96bf0e6143e7a4be, 0xbd844b3abbbc9faabcffc9f0533fe4, 0x007284], + }, + BigNum { + limbs: [0xadf465bebef8ccebfad58878130b3d, 0xc395d5f911b303cec6f905265aae1a, 0x00446a], + }, + BigNum { + limbs: [0x0faf9d413f633214052a7687ecf4c4, 0xe3bd53a46b952f6b110f047b7d5739, 0x002f82], + }, + BigNum { + limbs: [0x9f1ddab1d4fa82932aebc0965a4202, 0xf36fa2b47ddb5a73c6e65398047a50, 0x000364], + }, + BigNum { + limbs: [0x1e86284e29617c6cd5143e69a5bdff, 0xb3e386e8ff6cd8c61121b609d38b03, 0x007088], + }, + BigNum { + limbs: [0xc769faa4402f293c314964fd4408c9, 0x849c98537bacc5b2f69cad1dade64b, 0x00177b], + }, + BigNum { + limbs: [0xf63a085bbe2cd5c3ceb69a02bbf738, 0x22b6914a019b6d86e16b5c842a1f07, 0x005c72], + }, + BigNum { + limbs: [0x79365f811d5769926a3c0cfe4005c3, 0x79a31835c7e2ccb2e5196d0deb2ba5, 0x003864], + }, + BigNum { + limbs: [0x446da37ee104956d95c3f201bffa3e, 0x2db01167b5656686f2ee9c93ecd9ae, 0x003b89], + }, + BigNum { + limbs: [0x6df44639124f2ba81be6d8edda7638, 0x668413c019df4374af12eabf982893, 0x006f87], + }, + BigNum { + limbs: [0x4fafbcc6ec0cd357e41926122589c9, 0x40cf15dd6368efc528f51ee23fdcc0, 0x000466], + }, + BigNum { + limbs: [0x43a907c09f060427d329827aa98fff, 0xb856c1b52cf9492d043c2e74cf231b, 0x00354b], + }, + BigNum { + limbs: [0x79fafb3f5f55fad82cd67c85567002, 0xeefc67e8504eea0cd3cbdb2d08e238, 0x003ea1], + }, + BigNum { + limbs: [0xb9bf92bae7e7fe896a2d7f2d01187c, 0x0f53d6c54c0941a9861e5c72b0d523, 0x000277], + }, + BigNum { + limbs: [0x03e470451674007695d27fd2fee785, 0x97ff52d8313ef19051e9ad2f273030, 0x007176], + }, + BigNum { + limbs: [0x1b0da0ac3997d798ff94a498f96017, 0x732533ddaf1a10b0beb4fee8a1769d, 0x006801], + }, + BigNum { + limbs: [0xa2966253c4c42767006b5a67069fea, 0x342df5bfce2e228919530ab9368eb6, 0x000bec], + }, + BigNum { + limbs: [0x26c30fdbf9ba3500c4ee9032afcc94, 0x105c8329a6955caccf15dda0d8ad03, 0x002fff], + }, + BigNum { + limbs: [0x96e0f32404a1c9ff3b116ecd50336d, 0x96f6a673d6b2d68d08f22c00ff5850, 0x0043ee], + }, + BigNum { + limbs: [0x236a92397b76349a0f0a5f9fbb73b7, 0x6e8046dfa7d7b0dba6fd299e303d1d, 0x000cc2], + }, + BigNum { + limbs: [0x9a3970c682e5ca65f0f59f60448c4a, 0x38d2e2bdd570825e310ae003a7c836, 0x00672b], + }, + BigNum { + limbs: [0x3b84c03955634d9dafd3593bc10665, 0x7aa88f051d3d6e47e7481dbd70b738, 0x004f3a], + }, + BigNum { + limbs: [0x821f42c6a8f8b162502ca5c43ef99c, 0x2caa9a98600ac4f1f0bfebe4674e1b, 0x0024b3], + }, + BigNum { + limbs: [0x0a98ca924c9853cdf99d946705e265, 0xb82069c37ab55ff8776e9d4b000112, 0x002b67], + }, + BigNum { + limbs: [0xb30b386db1c3ab3206626a98fa1d9c, 0xef32bfda0292d34160996c56d80441, 0x004885], + }, + BigNum { + limbs: [0x50631ef088678db03b789302413b7c, 0xcd6afbf40e773e053844b1d7c4c0ec, 0x00455e], + }, + BigNum { + limbs: [0x6d40e40f75f4714fc4876bfdbec485, 0xd9e82da96ed0f5349fc357ca134467, 0x002e8e], + }, + BigNum { + limbs: [0x1279da43e3f45b1ede5de981ebf8f8, 0xce9f04a28d115ecc4f16874611b142, 0x000db4], + }, + BigNum { + limbs: [0xab2a28bc1a67a3e121a2157e140709, 0xd8b424faf036d46d88f1825bc65411, 0x006638], + }, + BigNum { + limbs: [0x91e47e376c2e5b6ff7d691b3198b23, 0xe821190696fc5d6ecc9a8405e05629, 0x005133], + }, + BigNum { + limbs: [0x2bbf84c8922da39008296d4ce674de, 0xbf321096e64bd5cb0b6d859bf7af2a, 0x0022b9], + }, + BigNum { + limbs: [0xc528e11bb8f362bbb3efec893f294f, 0x10302a2f39be6d2099caa9324c56d8, 0x005679], + }, + BigNum { + limbs: [0xf87b21e445689c444c101276c0d6b2, 0x9722ff6e4389c6193e3d606f8bae7a, 0x001d74], + }, + BigNum { + limbs: [0xd83c84ed265e50977e9c4587dfe508, 0x739e84003bec789aed56b517a468ea, 0x000076], + }, + BigNum { + limbs: [0xe5677e12d7fdae688163b978201af9, 0x33b4a59d415bba9eeab1548a339c68, 0x007377], + }, + BigNum { + limbs: [0x235c660dcd47d87bf14d05ce8047ea, 0xef848d536f6afc0071a614f0a4770c, 0x00643c], + }, + BigNum { + limbs: [0x9a479cf2311426840eb2f9317fb817, 0xb7ce9c4a0ddd37396661f4b1338e47, 0x000fb0], + }, + BigNum { + limbs: [0x7f1ed0313f9e0fe150bea48f8d1dea, 0xe117dc9238c29fb9c14a0e4d763a00, 0x0024c9], + }, + BigNum { + limbs: [0x3e8532cebebdef1eaf415a7072e217, 0xc63b4d0b4485938016bdfb5461cb53, 0x004f23], + }, + BigNum { + limbs: [0x81791f3a6308454c51bb17349f0783, 0xe041d03cc117b367e019a720931783, 0x001d2d], + }, + BigNum { + limbs: [0x3c2ae3c59b53b9b3ae44e7cb60f87e, 0xc7115960bc307fd1f7ee628144edd0, 0x0056bf], + }, + BigNum { + limbs: [0xc3ba13d252c0e88f18500f83965a8e, 0x641539037f771f1b83b02e67527a4d, 0x0055b6], + }, + BigNum { + limbs: [0xf9e9ef2dab9b1670e7afef7c69a573, 0x433df099fdd1141e5457db3a858b05, 0x001e37], + }, + BigNum { + limbs: [0x5502a77ae6332fa6600254a7d754be, 0x4cdc36f88410f5d7bfef36de3b7834, 0x00027e], + }, + BigNum { + limbs: [0x68a15b851828cf599ffdaa5828ab43, 0x5a76f2a4f9373d621818d2c39c8d1f, 0x00716f], + }, + BigNum { + limbs: [0x8d41cd7ab1753ea7303c63152c1640, 0x4a2297423679aee4b37190faa6c7d5, 0x004f91], + }, + BigNum { + limbs: [0x306235854ce6c058cfc39bead3e9c1, 0x5d30925b46ce8455249678a7313d7e, 0x00245c], + }, + BigNum { + limbs: [0x87cba345c1658b64271241619da532, 0x46ae7297a21a8f4310cd2220399c88, 0x0037d2], + }, + BigNum { + limbs: [0x35d85fba3cf6739bd8edbd9e625acf, 0x60a4b705db2da3f6c73ae7819e68cb, 0x003c1b], + }, + BigNum { + limbs: [0x2651d853c9eca95343e645167ee188, 0x1331dca429aad2f2eb5255c656c902, 0x00258b], + }, + BigNum { + limbs: [0x97522aac346f55acbc19b9e9811e79, 0x94214cf9539d6046ecb5b3db813c51, 0x004e62], + }, + BigNum { + limbs: [0x5390d0e60bdfb3b93907b7592ea586, 0xe4164e07f2ab58063db3959fe0ef23, 0x003596], + }, + BigNum { + limbs: [0x6a133219f27c4b46c6f847a6d15a7b, 0xc33cdb958a9cdb339a547401f71630, 0x003e56], + }, + BigNum { + limbs: [0xb8b209e98b7e0f2fa61198c7de7bd4, 0x75e0a5e4145fb34bad5f4e9cfdb6f3, 0x003811], + }, + BigNum { + limbs: [0x04f1f91672ddefd059ee663821842d, 0x317283b968e87fee2aa8bb04da4e60, 0x003bdc], + }, + BigNum { + limbs: [0x6e76cf4f775ba9242cce972bd82d65, 0x812b15a0625c3583f1f0c36ae9d2f5, 0x0011d0], + }, + BigNum { + limbs: [0x4f2d33b0870055dbd33167d427d29c, 0x262813fd1aebfdb5e6174636ee325e, 0x00621d], + }, + BigNum { + limbs: [0x7524de9c02b81cf5045a21462659cf, 0x5fa6f3c3db8efc130759d8cd8c1f9d, 0x0017bf], + }, + BigNum { + limbs: [0x487f2463fba3e20afba5ddb9d9a632, 0x47ac35d9a1b93726d0ae30d44be5b6, 0x005c2e], + }, + BigNum { + limbs: [0x66175e422e5e04509c353c559ce0e4, 0xc2a34bbcc1de81c01f6a38e43c7150, 0x0028ff], + }, + BigNum { + limbs: [0x578ca4bdcffdfaaf63cac2aa631f1d, 0xe4afdde0bb69b179b89dd0bd9b9403, 0x004aed], + }, + BigNum { + limbs: [0xc17fed2efa16c0bf255236c073301f, 0x95c68591a521990ffbee982e626b47, 0x00713f], + }, + BigNum { + limbs: [0xfc2415d104453e40daadc83f8ccfe2, 0x118ca40bd8269a29dc197173759a0b, 0x0002ae], + }, + BigNum { + limbs: [0x37692cb91745a591e0a5ec1dbb4517, 0x2b1236ce1f78bd6f986d418b46797f, 0x006418], + }, + BigNum { + limbs: [0x863ad646e716596e1f5a12e244baea, 0x7c40f2cf5dcf75ca3f9ac816918bd4, 0x000fd5], + }, + BigNum { + limbs: [0x743adadff7878293e97ac2c7bf5f23, 0x47fe2645c3ccca5cf55c4cee43e80b, 0x005d20], + }, + BigNum { + limbs: [0x4969282006d47c6c16853c3840a0de, 0x5f550357b97b68dce2abbcb3941d48, 0x0016cd], + }, + BigNum { + limbs: [0x1f5b434515524094eb42b26bd7cec8, 0x5d84c1e11520848c1259d579deff61, 0x006ae4], + }, + BigNum { + limbs: [0x9e48bfbae909be6b14bd4c94283139, 0x49ce67bc6827aeadc5ae3427f905f2, 0x000909], + }, + BigNum { + limbs: [0x7a83f4b3620a8bc1ab543280174b65, 0x4fe4101d764247b839b40665b9ab31, 0x004d4e], + }, + BigNum { + limbs: [0x43200e4c9c51733e54abcc7fe8b49c, 0x576f19800705eb819e54033c1e5a22, 0x00269f], + }, + BigNum { + limbs: [0x16e6f88f393313659ed34f1ba7c758, 0x479f6d036dbe156e6d5f1cd1d95835, 0x004f05], + }, + BigNum { + limbs: [0xa6bd0a70c528eb9a612cafe45838a9, 0x5fb3bc9a0f8a1dcb6aa8eccffead1e, 0x0024e8], + }, + BigNum { + limbs: [0xb4744f8cf411c654449ec24eff1d4a, 0xae41472c7c0e590ce3fe74cee9cc36, 0x0061df], + }, + BigNum { + limbs: [0x092fb3730a4a38abbb613cb100e2b7, 0xf911e2710139da2cf40994d2ee391d, 0x00120d], + }, + BigNum { + limbs: [0x1b7ec3a436588065b8118cdf67b4c8, 0x457a8a468be812b6b2973fbcaa7c77, 0x003d49], + }, + BigNum { + limbs: [0xa2253f5bc8037e9a47ee7220984b39, 0x61d89f56f16020832570c9e52d88dc, 0x0036a4], + }, + BigNum { + limbs: [0x3412c9cd2a9b3731e9ab2413ce6403, 0x8dc1af53e39e07ae39bf50998fa407, 0x004686], + }, + BigNum { + limbs: [0x89913932d3c0c7ce1654daec319bfe, 0x19917a4999aa2b8b9e48b90848614c, 0x002d67], + }, + BigNum { + limbs: [0x89c1bd2dd357cf20f00f1e8819ff37, 0x2f0c9a6585b33115765c3d23d4949e, 0x003fb7], + }, + BigNum { + limbs: [0x33e245d22b042fdf0ff0e077e600ca, 0x78468f37f795022461abcc7e0370b5, 0x003436], + }, + BigNum { + limbs: [0xdd464b1c886d78042cef5c92e33195, 0x557b73b7e48b242355a680b717f586, 0x0025de], + }, + BigNum { + limbs: [0xe05db7e375ee86fbd310a26d1cce6c, 0x51d7b5e598bd0f16826188eac00fcc, 0x004e0f], + }, + BigNum { + limbs: [0xedf499ef3076be4475c4d42b7a4b38, 0x602954fc0ca6ba46042c3d326406d9, 0x0054de], + }, + BigNum { + limbs: [0xcfaf6910cde540bb8a3b2ad485b4c9, 0x4729d4a170a178f3d3dbcc6f73fe79, 0x001f0f], + }, + BigNum { + limbs: [0xfcd31b702dd686c47e6812cda15c19, 0xf2d45a69922bb0a0d0c53a6b502bef, 0x005861], + }, + BigNum { + limbs: [0xc0d0e78fd085783b8197ec325ea3e8, 0xb47ecf33eb1c82990742cf3687d963, 0x001b8b], + }, + BigNum { + limbs: [0x8425612ae7e671237bffd304e4fe50, 0xf9f2176adc1d48e923008e61d9c58e, 0x004067], + }, + BigNum { + limbs: [0x397ea1d516758ddc84002bfb1b01b1, 0xad611232a12aea50b5077b3ffe3fc5, 0x003385], + }, + BigNum { + limbs: [0xba411117fb1be0bb14f4f365c1b600, 0x58bcb55478df34740bade3183ade28, 0x000335], + }, + BigNum { + limbs: [0x0362f1e803401e44eb0b0b9a3e4a01, 0x4e9674490468fec5cc5a26899d272b, 0x0070b8], + }, + BigNum { + limbs: [0x9fcc4cdb6f0c10a87049c0b5897879, 0x9424325317c08c97b1f14e6a7312cd, 0x006329], + }, + BigNum { + limbs: [0x1dd7b6248f4fee578fb63e4a768788, 0x132ef74a6587a6a22616bb3764f286, 0x0010c4], + }, + BigNum { + limbs: [0x9f899703062de0d3baa1acb4e5b0f5, 0x090a68110f9092a633fc64cef521ba, 0x0065eb], + }, + BigNum { + limbs: [0x1e1a6bfcf82e1e2c455e524b1a4f0c, 0x9e48c18c6db7a093a40ba4d2e2e399, 0x000e02], + }, + BigNum { + limbs: [0xd96ff2cd8b2f2e472cb619daac4bd2, 0x0f2dbc497381f411d51f076e4466de, 0x00573a], + }, + BigNum { + limbs: [0xe4341032732cd0b8d349e52553b42f, 0x98256d5409c63f2802e90233939e74, 0x001cb3], + }, + BigNum { + limbs: [0xb84c544876a9c789aa8cb2686396ce, 0xa3313c8414b9bdb48d3a72566086b0, 0x006dbc], + }, + BigNum { + limbs: [0x0557aeb787b2377655734c979c6933, 0x0421ed19688e75854acd974b777ea3, 0x000631], + }, + BigNum { + limbs: [0xe7613894a9b5c86333defbe1eafec8, 0xecb3aff7822dc90fd38cadbdeab57e, 0x0051a0], + }, + BigNum { + limbs: [0xd642ca6b54a6369ccc21031e150139, 0xba9f79a5fb1a6a2a047b5be3ed4fd4, 0x00224c], + }, + BigNum { + limbs: [0xbd99d6f7d72c9825c9330c166c32b6, 0x656984a80d04d77f485529026c165c, 0x0008f3], + }, + BigNum { + limbs: [0x000a2c08272f66da36ccf2e993cd4b, 0x41e9a4f570435bba8fb2e09f6beef7, 0x006afa], + }, + BigNum { + limbs: [0x00ac7d231f0dcc77f716ad84ec3f4e, 0x66b749227bc79c2b526b533ce6736d, 0x001236], + }, + BigNum { + limbs: [0xbcf785dcdf4e328808e9517b13c0b3, 0x409be07b0180970e859cb664f191e6, 0x0061b7], + }, + BigNum { + limbs: [0x44df453062977b35a87e2790b1aa63, 0x70a52543032792c60337c3de194e28, 0x004ca4], + }, + BigNum { + limbs: [0x78c4bdcf9bc483ca5781d76f4e559e, 0x36ae045a7a20a073d4d045c3beb72b, 0x002749], + }, + BigNum { + limbs: [0x009c43f83b178b774638c79cf5dc1f, 0x3f6e8235ecae3905159358e0d38ebb, 0x0010c4], + }, + BigNum { + limbs: [0xbd07bf07c3447388b9c737630a23e2, 0x67e4a7679099fa34c274b0c1047698, 0x006329], + }, + BigNum { + limbs: [0x2a876351c2a2215759eb2f01eda387, 0xcb3d2bb78a0443275a5062c289ae5a, 0x0051ae], + }, + BigNum { + limbs: [0x931c9fae3bb9dda8a614cffe125c7a, 0xdc15fde5f343f0127db7a6df4e56f9, 0x00223e], + }, + BigNum { + limbs: [0xa8a3a7f2912453021ed75861bf15b2, 0xb5e368fea545ec1883b4b3c9abedbf, 0x0052cb], + }, + BigNum { + limbs: [0x15005b0d6d37abfde128a69e40ea4f, 0xf16fc09ed8024721545355d82c1794, 0x002121], + }, + BigNum { + limbs: [0x99bf3cadf47500466419f0acda4132, 0x0fab03bda4f931faf27e04e17cf31b, 0x004831], + }, + BigNum { + limbs: [0x23e4c65209e6feb99be60e5325becf, 0x97a825dfd84f013ee58a04c05b1238, 0x002bbc], + }, + BigNum { + limbs: [0x2af33beac6f68086ebdd53f2e05b8c, 0x18dfadf4968e6c38c06e52f5b19228, 0x003f52], + }, + BigNum { + limbs: [0x92b0c71537657e791422ab0d1fa475, 0x8e737ba8e6b9c7011799b6ac26732b, 0x00349b], + }, + BigNum { + limbs: [0x532ae018561e10623432bc97e66621, 0x7d758178f8009d3d7a7ff033103d20, 0x003c40], + }, + BigNum { + limbs: [0x6a7922e7a83dee9dcbcd42681999e0, 0x29dda824854795fc5d88196ec7c833, 0x0037ad], + }, + BigNum { + limbs: [0x5fdb8562ecaee38095506aaf2ed4e8, 0x40fa9e92971b3b44484802d2908ee1, 0x005327], + }, + BigNum { + limbs: [0x5dc87d9d11ad1b7f6aaf9450d12b19, 0x66588b0ae62cf7f58fc006cf477672, 0x0020c6], + }, + BigNum { + limbs: [0xc00587548157407cc2c1b551422388, 0x2433aacc79664fd54b05535ed75859, 0x0006c4], + }, + BigNum { + limbs: [0xfd9e7bab7d04be833d3e49aebddc79, 0x831f7ed103e1e3648d02b64300acf9, 0x006d29], + }, + BigNum { + limbs: [0xabf9af77e7e83655b9012175a8cc3b, 0xe87fd6b51c9c4226a334d73bebcb2b, 0x000b72], + }, + BigNum { + limbs: [0x11aa53881673c8aa46fedd8a5733c6, 0xbed352e860abf11334d33265ec3a28, 0x00687a], + }, + BigNum { + limbs: [0x1fbcdb53444abbab0181bccc152b72, 0xedc455355287c6bf314728f7672064, 0x0068e3], + }, + BigNum { + limbs: [0x9de727acba114354fe7e4233ead48f, 0xb98ed4682ac06c7aa6c0e0aa70e4ef, 0x000b09], + }, + BigNum { + limbs: [0x5603226dcddca5147d1e72d2b5d06e, 0xc12baea83c091f5a39e548082c8807, 0x0064a3], + }, + BigNum { + limbs: [0x67a0e092307f59eb82e18c2d4a2f93, 0xe6277af5413f13df9e22c199ab7d4c, 0x000f49], + }, + BigNum { + limbs: [0x2ed8500386c76648c8e50cb39616ec, 0xef6739da92bc569aa8da7c3ebc2a85, 0x005a31], + }, + BigNum { + limbs: [0x8ecbb2fc779498b7371af24c69e915, 0xb7ebefc2ea8bdc9f2f2d8d631bdace, 0x0019bb], + }, + BigNum { + limbs: [0xfe3a2e7b95c6469630cf3b08b533d4, 0x2a8f2e2a85919ad23e75d282b2d3b6, 0x006802], + }, + BigNum { + limbs: [0xbf69d4846895b869cf30c3f74acc2d, 0x7cc3fb72f7b698679992371f25319c, 0x000beb], + }, + BigNum { + limbs: [0xcae90dfb3c0064c6123fa45fb28c2e, 0xd4cb52a34e3d7519670d09634336d4, 0x0023ce], + }, + BigNum { + limbs: [0xf2baf504c25b9a39edc05aa04d73d3, 0xd287d6fa2f0abe2070fb003e94ce7e, 0x00501e], + }, + BigNum { + limbs: [0x5ca0f385906331980144927341bf91, 0xe145a4a45855dd7ae283294477734f, 0x006964], + }, + BigNum { + limbs: [0x61030f7a6df8cd67febb6c8cbe4070, 0xc60d84f924f255bef584e05d609204, 0x000a88], + }, + BigNum { + limbs: [0xa47df0bc824e8ea22755dfe7bb9750, 0xfb32f90ffda0d607ced8ce69bc11a9, 0x0046cf], + }, + BigNum { + limbs: [0x192612437c0d705dd8aa1f184468b1, 0xac20308d7fa75d32092f3b381bf3aa, 0x002d1d], + }, + BigNum { + limbs: [0xec958cdc54a63cc7a96c1c03278845, 0x14461e4a1131fa3b366dda348f3893, 0x000791], + }, + BigNum { + limbs: [0xd10e7623a9b5c2385693e2fcd877bc, 0x930d0b536c1638fea19a2f6d48ccbf, 0x006c5c], + }, + BigNum { + limbs: [0xb5abf8c3e544b7cec40dd9d4019abd, 0xe3e21a204627ca43fa39cf3715caad, 0x002b0f], + }, + BigNum { + limbs: [0x07f80a3c191747313bf2252bfe6544, 0xc3710f7d372068f5ddce3a6ac23aa6, 0x0048dd], + }, + BigNum { + limbs: [0x40722db5a2fdf30997af02bca933c9, 0x56c300383c82d6ab35ba4d5db3f1f7, 0x00688a], + }, + BigNum { + limbs: [0x7d31d54a5b5e0bf66850fc4356cc38, 0x5090296540c55c8ea24dbc4424135c, 0x000b63], + }, + BigNum { + limbs: [0x564fcbc247d6d6ac9cc344a8cfff5a, 0xeb803c23772e9c6afb16ff55ea304f, 0x004b12], + }, + BigNum { + limbs: [0x6754373db6852853633cba573000a7, 0xbbd2ed7a061996cedcf10a4bedd504, 0x0028da], + }, + BigNum { + limbs: [0xcdd1364d8cfacb93f88bc67b7b3721, 0x665f2b83a6deb7fdceb13345570e65, 0x0022a4], + }, + BigNum { + limbs: [0xefd2ccb27161336c0774388484c8e0, 0x40f3fe19d6697b3c0956d65c80f6ed, 0x005149], + }, + BigNum { + limbs: [0x0e9d35b6ed76adf7713ef284c069ff, 0xcf43948b469bcd431486dfe074f000, 0x002d69], + }, + BigNum { + limbs: [0xaf06cd4910e551088ec10c7b3f9602, 0xd80f951236ac65f6c38129c1631553, 0x004683], + }, + BigNum { + limbs: [0x67d80e0380c9dd297e9abd55f848ed, 0x70bfd3999432941131a1638c47aaf6, 0x002ffb], + }, + BigNum { + limbs: [0x55cbf4fc7d9221d6816541aa07b714, 0x36935603e9159f28a666a615905a5d, 0x0043f2], + }, + BigNum { + limbs: [0x8032cefe4d368500c64cd40384f439, 0xe7910a9571c7e580abd9bdea663091, 0x001d7f], + }, + BigNum { + limbs: [0x3d713401b12579ff39b32afc7b0bc8, 0xbfc21f080b804db92c2e4bb771d4c2, 0x00566d], + }, + BigNum { + limbs: [0x121d901c68c49123c031d18d8c2649, 0xd8bc987365098ce1593a825ad83ef5, 0x006fc8], + }, + BigNum { + limbs: [0xab8672e395976ddc3fce2d7273d9b8, 0xce96912a183ea6587ecd8746ffc65e, 0x000424], + }, + BigNum { + limbs: [0xe9d91c5935fd49f4b6cc71968e9630, 0xab942a7f28f2aeb5acc56ef4dd0686, 0x003414], + }, + BigNum { + limbs: [0xd3cae6a6c85eb50b49338d697169d1, 0xfbbeff1e545584842b429aacfafecc, 0x003fd8], + }, + BigNum { + limbs: [0x40d3a6dad17cfb58253c958a750acb, 0xd11e6709e3150b19cc92362eeaac79, 0x00503d], + }, + BigNum { + limbs: [0x7cd05c252cdf03a7dac369758af536, 0xd634c2939a3328200b75d372ed58da, 0x0023af], + }, + BigNum { + limbs: [0x25871b96c0742e75161473966a53f7, 0x032dedb0b892480e75bd26e4e2ccb3, 0x000e42], + }, + BigNum { + limbs: [0x981ce7693de7d08ae9eb8b6995ac0a, 0xa4253becc4b5eb2b624ae2bcf538a0, 0x0065ab], + }, + BigNum { + limbs: [0x309054dce40022360156e8b623013e, 0xbaeda02a6ff092a7ec5a61b18bafed, 0x003381], + }, + BigNum { + limbs: [0x8d13ae231a5bdcc9fea91649dcfec3, 0xec6589730d57a091ebada7f04c5566, 0x00406b], + }, + BigNum { + limbs: [0xa9d4bab0b502dd86edbea447c942d5, 0x0a33a25ac40a26f8483151cc7c8088, 0x0060a2], + }, + BigNum { + limbs: [0x13cf484f4959217912415ab836bd2c, 0x9d1f8742b93e0c418fd6b7d55b84cb, 0x00134b], + }, + BigNum { + limbs: [0x269bddbc2b9df4ce9a534745bfd613, 0xeb58904936dbdf2b8960761678b86c, 0x001fa4], + }, + BigNum { + limbs: [0x97082543d2be0a3165acb7ba4029ee, 0xbbfa9954466c540e4ea7938b5f4ce7, 0x005448], + }, + BigNum { + limbs: [0xc4c8739d4475765bf0e8fec7a9af22, 0xd3a3929c4bb36342213767f33397b9, 0x002c4c], + }, + BigNum { + limbs: [0xf8db8f62b9e688a40f1700385650df, 0xd3af97013194cff7b6d0a1aea46d99, 0x0047a0], + }, + BigNum { + limbs: [0x8c7a99da8938647073084001146f23, 0x948861351141f0f5093f56be4518ad, 0x000b04], + }, + BigNum { + limbs: [0x3129692575239a8f8cf7befeeb90de, 0x12cac8686c064244cec8b2e392eca6, 0x0068e9], + }, + BigNum { + limbs: [0xab88365b6035748de74346b283c145, 0xa824ff74aa74280674d32da105c40d, 0x004f97], + }, + BigNum { + limbs: [0x121bcca49e268a7218bcb84d7c3ebc, 0xff2e2a28d2d40b336334dc00d24146, 0x002455], + }, + BigNum { + limbs: [0x76d28a9be629fb69e5dad127abcc9f, 0x7efc6393c8cfe857780d4fc57e7f03, 0x003ad2], + }, + BigNum { + limbs: [0x46d17864183203961a252dd8543362, 0x2856c609b4784ae25ffab9dc598650, 0x00391b], + }, ]; diff --git a/noir-projects/noir-protocol-circuits/crates/blob/src/lib.nr b/noir-projects/noir-protocol-circuits/crates/blob/src/lib.nr new file mode 100644 index 00000000000..648f97948a9 --- /dev/null +++ b/noir-projects/noir-protocol-circuits/crates/blob/src/lib.nr @@ -0,0 +1,4 @@ +mod blob_public_inputs; +mod blob; +mod unconstrained_config; +// TODO(#9982): Replace unconstrained_config with config and import ROOTS - calculating ROOTS in unconstrained is insecure. diff --git a/noir-projects/noir-protocol-circuits/crates/blob/src/main.nr b/noir-projects/noir-protocol-circuits/crates/blob/src/main.nr deleted file mode 100644 index d4b4b06b957..00000000000 --- a/noir-projects/noir-protocol-circuits/crates/blob/src/main.nr +++ /dev/null @@ -1,605 +0,0 @@ -// ONLY IMPORT ONE OF THESE CONFIGS! The big `config` takes 11 mins to compile. - -// SMALL CONFIG ********************************************************************************* - -// mod smaller_config; - -// use crate::smaller_config::{ -// BigNum, BLS12_381_Fr_Params, F, FIELDS_PER_BLOB, LOG_FIELDS_PER_BLOB, NOIR_FIELDS_PER_BLOB, -// FIELDS_CARRYING_AN_EXTRA_BIT_PER_BLOB, D, D_INV, ROOTS, NEGATIVE_ROOTS -// }; - -//********************************************************************************* - -// BIG CONFIG ********************************************************************* - -mod config; -mod negative_roots; - -use crate::{ - config::{ - BigNum, F, FIELDS_PER_BLOB, LOG_FIELDS_PER_BLOB, NOIR_FIELDS_PER_BLOB, - FIELDS_CARRYING_AN_EXTRA_BIT_PER_BLOB, D, D_INV, ROOTS -}, - negative_roots::NEGATIVE_ROOTS -}; - -//********************************************************************************* - -use std::hash::poseidon2; - -global LIMB_MAX = 2.pow_32(120); - -unconstrained fn __batch_invert_impl(mut x: [F; N]) -> [F; N] { - let mut accumulator: F = BigNum::one(); - - let mut temporaries: [F] = &[]; - for i in 0..x.len() { - temporaries = temporaries.push_back(accumulator); - if (x[i].__is_zero() == false) { - accumulator = accumulator.__mul(x[i]); - } - } - - accumulator = accumulator.__invmod(); - let mut T0: F = BigNum::new(); - for i in 0..x.len() { - let idx = x.len() - 1 - i; - if (x[idx].__is_zero() == false) { - T0 = accumulator.__mul(temporaries[idx]); - accumulator = accumulator.__mul(x[idx]); - x[idx] = T0; - } - } - x -} - -// Not used because it resulted in "stack too deep", so it's inlined instead. -unconstrained fn __compute_fracs(z: F, ys: [F; FIELDS_PER_BLOB]) -> [F; FIELDS_PER_BLOB] { - let mut denoms: [F; FIELDS_PER_BLOB] = [BigNum::new(); FIELDS_PER_BLOB]; - for i in 0..FIELDS_PER_BLOB { - denoms[i] = z.__add(NEGATIVE_ROOTS[i]); // (z - omega^i) - } - let inv_denoms = __batch_invert_impl(denoms); // 1 / (z - omega^i), for all i - - let mut fracs: [F; FIELDS_PER_BLOB] = [BigNum::new(); FIELDS_PER_BLOB]; - for i in 0..FIELDS_PER_BLOB { - let inv_denom = inv_denoms[i]; // 1 / (z - omega^i) - - fracs[i] = ys[i].__mul(inv_denom); // y_i / (z - omega^i) - } - fracs -} - -unconstrained fn __field_to_bytes(x: Field) -> [u8; 32] { - x.to_be_bytes() -} - -unconstrained fn __field_to_bignum(x: Field) -> F { - let x_bytes = __field_to_bytes(x); - - BigNum::from_be_bytes(x_bytes) -} - -unconstrained fn __field_to_bignum_limbs(x: Field) -> [Field; 3] { - __field_to_bignum(x).limbs -} - -// Only works for bignums with modulus larger than the BN Fr size (which is true -// for the bls12-381 Fr field). -fn field_to_bignum(x: Field) -> F { - let __x_limbs = __field_to_bignum_limbs(x); - - let mut check = __x_limbs[3 - 1]; - for i in 1..3 { - check *= LIMB_MAX; - check += __x_limbs[3 - i - 1]; - } - assert(check == x); - - BigNum { limbs: __x_limbs } -} - -// DANGER: this assumes the input bignum is <= the Noir field size. -// Only use this if you _know_ the data being passed in is small enough. -// -// Or actually, maybe it's not unsafe, if Field catches overflows? -fn unsafe_bignum_to_field(x: F) -> Field { - let mut result: Field = 0; - result += x.limbs[3 - 1]; - for i in 1..3 { - result *= LIMB_MAX; - result += x.limbs[3 - i - 1]; - } - result -} - -fn bignum_to_bytes(x: F) -> [u8] { - let limb_0_bytes: [u8; 15] = x.limbs[0].to_be_bytes(); - let limb_1_bytes: [u8; 15] = x.limbs[1].to_be_bytes(); - let limb_2_bytes: [u8; 2] = x.limbs[2].to_be_bytes(); - let mut out: [u8; 32] = [0; 32]; - for i in 0..32 { - out[i] = limb_0_bytes[i]; - out[i+15] = limb_1_bytes[i]; - } - for i in 0..1 { - out[30 + i] = limb_2_bytes[i]; - } - std::static_assert(out.len() == 32, "bad byte decomposition of bignum"); - out -} - -// fn kzg_commitment_to_bytes(c: [Field; 2]) -> [u8] { -// let limb_0_bytes: [u8; 32] = x.limbs[0].to_be_bytes(); -// let limb_1_bytes: [u8; 16] = x.limbs[1].to_be_bytes(); - -// let out = limb_2_bytes.append(limb_1_bytes).append(limb_0_bytes); -// std::static_assert(out.len() == 32, "bad byte decomposition of bignum"); -// out -// } - -// DANGER: this assumes the input bignum is <= the Noir field size. -// Only use this if you _know_ the data being passed in is small enough. -// -// This is inefficient, in the sense that we discard ~1 bit of blob space per -// 255-bit blob field, when converting it to a 245-bit noir field. Over the whole blob, -// we end up discarding 1 bit * 4096 fields_per_blob = 512 bytes = 16 words of data. -// BUT, it is much simpler to do this than to reconstitute 4096 disparate bits across -// the whole blob into 16 words. Perhaps the more complex approach should only be -// taken once aztec blobs are sufficiently full? -fn unsafe_blob_to_fields(blob: [F; FIELDS_PER_BLOB]) -> [Field; FIELDS_PER_BLOB] { - let mut blob_as_fields: [Field; FIELDS_PER_BLOB] = [0; FIELDS_PER_BLOB]; - for i in 0..FIELDS_PER_BLOB { - blob_as_fields[i] = unsafe_bignum_to_field(blob[i]); - } - blob_as_fields -} - -unconstrained fn __unsafe_extract_top_bit(x: F) -> (Field, Field) { - let top_limb: Field = x.limbs[2]; - // The top_limb is at most 2 bytes (16 bits). - // 0x8000 = 2^15 = 32768 - let top_bit: Field = (top_limb as u16 / 0x8000) as Field; - let top_limb_with_top_bit_removed = top_limb - top_bit * 0x8000; - (top_bit, top_limb_with_top_bit_removed) -} - -// DANGER: it's named as "unsafe" because the caller MUST already have checked that -// each blob Field is formatted as (u1, Field). I.e. the "rhs" 254-bits should already -// fit within a Field. If the "rhs" 254 bits is larger than the field modulus, -// there will be an uncaught overflow of the 254-bits in the Field, resulting in -// an unintended tiny value. -// -// For efficiency, the top_bit is kept as a Field throughout. -fn unsafe_extract_top_bit(x: F) -> (Field, F) { - let (top_bit, top_limb_with_top_bit_removed) = __unsafe_extract_top_bit(x); - assert_eq(top_bit * 0x8000 + top_limb_with_top_bit_removed, x.limbs[2]); - - (top_bit, BigNum { limbs: [x.limbs[0], x.limbs[1], top_limb_with_top_bit_removed] }) -} - -fn blob_to_fields__tightly_packed(blob: [F; FIELDS_PER_BLOB]) -> [Field; NOIR_FIELDS_PER_BLOB] { - let mut blob_as_fields: [Field; NOIR_FIELDS_PER_BLOB] = [0; NOIR_FIELDS_PER_BLOB]; - let mut top_bits: [Field; FIELDS_CARRYING_AN_EXTRA_BIT_PER_BLOB] = [0; FIELDS_CARRYING_AN_EXTRA_BIT_PER_BLOB]; - - // We start with [F; 4096]. - // The first 4064 of these bls-fields have a 255th bit (counting from 1) which can contribute towards - // new 254-bit noir fields. That is, we extract 4064 top-bits from the first 4064 of the 4096 bls-fields, - // and reconstitute them into 4064 / 254 = 16 extra noir fields. - // So we end up with 4096 + 16 = 4112 noir fields. - - // Here we compute top_bits[0:4064] and blob_as_fields[0:4064]. - for i in 0..FIELDS_CARRYING_AN_EXTRA_BIT_PER_BLOB { - let (top_bit, field_with_top_bit_removed): (Field, F) = unsafe_extract_top_bit(blob[i]); - top_bits[i] = top_bit; - blob_as_fields[i] = unsafe_bignum_to_field(field_with_top_bit_removed); - } - // Here we compute blob_as_fields[4064:4096]. - for i in FIELDS_CARRYING_AN_EXTRA_BIT_PER_BLOB..FIELDS_PER_BLOB { - blob_as_fields[i] = unsafe_bignum_to_field(blob[i]); - } - // Here we compute blob_as_fields[4096:4112] from top_bits[0:4064] - for i in FIELDS_PER_BLOB..NOIR_FIELDS_PER_BLOB { - // the top_bits are assumed to be big-endian bit arrays: - let mut reconstituted_field = top_bits[0]; - for j in 1..254 { - let k = (i - FIELDS_PER_BLOB) * 254 + j; - reconstituted_field *= 2; - reconstituted_field += top_bits[k]; - // std::as_witness(reconstituted_field); // this was costing 4048 gates - } - blob_as_fields[i] = reconstituted_field; - } - blob_as_fields -} - -// TODO: We'll want to hash this data -// in an arrangement which makes sense to the aztec protocol. THink about this more. -fn hash_blob(blob: [F; FIELDS_PER_BLOB]) -> Field { - // let mut blob_as_fields = unsafe_blob_to_fields(blob); - let mut blob_as_fields = blob_to_fields__tightly_packed(blob); - let hash = poseidon2::Poseidon2::hash(blob_as_fields, blob_as_fields.len()); - hash -} - -fn hash_kzg_commitment(kzg_commitment: [Field; 2]) -> Field { - let hash = poseidon2::Poseidon2::hash(kzg_commitment, kzg_commitment.len()); - hash -} - -fn compute_challenge(blob: [F; FIELDS_PER_BLOB], kzg_commitment: [Field; 2]) -> Field { - let kzg_commitment_hash = hash_kzg_commitment(kzg_commitment); - let blob_hash = hash_blob(blob); - // let blob_hash = 1; - let challenge = poseidon2::Poseidon2::hash([blob_hash, kzg_commitment_hash], 2); - challenge -} - -// ~500k constraints. 30 MINUTES TO COMPILE (due to all the brillig)! -// -// Note: the kzg_commitment is technically a BLS12-381 point in (Fq, Fq), but -// we haven't implemented Fq; only Fr, and we don't actually need to operate on it; -// we just need the bits of data. So we've simply encoded it as fitting inside a -// [Field; 2], since two 254-bit fields more-than covers 381+1=382 bits. -fn main(blob: [F; FIELDS_PER_BLOB], kzg_commitment: [Field; 2]) -> pub (Field, F, [Field; 2]) { - let challenge_z: Field = compute_challenge(blob, kzg_commitment); - let challenge_z_as_bignum: F = field_to_bignum(challenge_z); - - let y: F = barycentric_evaluate_blob_at_z(challenge_z_as_bignum, blob); - // let y = challenge_z_as_bignum; // dummy constraint for when we want to skip the barycentric stuff in testing. - - // let challenge_z_as_bytes: [u8; 32] = challenge_z.to_be_bytes(); - // let y_as_bytes: [u8] = bignum_to_bytes(y); - // let kzg_commitment_as_bytes: [u8] = () - - // TODO: this return data needs to be TIGHTLY PACKED into bytes. - // TODO: then those bytes need to be sha256-hashed, to produce a single value that can be sent to ethereum for cheap snark verification. On ethereum, the bytes will be sent along with the sha256-hash of the bytes. The bytes will be used in the point evaluation precompile. The sha256-hash will form a part of the public inputs of the zk-snark proof. - (challenge_z, y, kzg_commitment) -} - -/** - * ___d-1 - * z^d - 1 \ omega^i - * p(z) = --------- . / y_i . --------- - * d /____ z - omega^i - * i=0 - * - * p(z) = factor . sum( y_i . num / denom ) - * - * - * where d = 4096 - * - * Precompute: - * - The d roots of unity omega^i (plus maybe their negatives for z - omega^i computations). - * - (1 / d) - * - * @param z - * @param ys - the many y_i's of the blob. - * - * @return y = p(z) - */ -fn barycentric_evaluate_blob_at_z(z: F, ys: [F; FIELDS_PER_BLOB]) -> F { - // z ^ D: - - let mut t1 = z.__mul(z); - - BigNum::evaluate_quadratic_expression([[z]], [[false]], [[z]], [[false]], [t1], [true]); - - let mut t2: F = BigNum::new(); - for _i in 0..LOG_FIELDS_PER_BLOB - 1 { - t2 = t1.__mul(t1); - - // GRATUITOUS USAGE OF as_witness, LIKE THROWING DARTS AT A DARTBOARD AND HOPING THIS HELPS - std::as_witness(t2.limbs[0]); - std::as_witness(t2.limbs[1]); - std::as_witness(t2.limbs[2]); - - BigNum::evaluate_quadratic_expression([[t1]], [[false]], [[t1]], [[false]], [t2], [true]); - - t1 = t2; - std::as_witness(t1.limbs[0]); - std::as_witness(t1.limbs[1]); - std::as_witness(t1.limbs[2]); - } - - let z_pow_d = t1; - - // factor: - - let one: F = BigNum::one(); - - t1 = z_pow_d.__sub(one); - std::as_witness(t1.limbs[0]); - std::as_witness(t1.limbs[1]); - std::as_witness(t1.limbs[2]); - - let factor = t1.__mul(D_INV); - - // (z_pow_d - one) * (D_INV) - factor = 0 - // z_pow_d * D_INV - D_INV - factor = 0 - BigNum::evaluate_quadratic_expression( - [[z_pow_d]], - [[false]], - [[D_INV]], - [[false]], - [factor, D_INV], - [true, true] - ); - - // This version doesn't work: - // BigNum::evaluate_quadratic_expression( - // [[z_pow_d, one]], - // [[false, true]], - // [[D_INV]], - // [[false]], - // [factor], - // [true] - // ); - - // sum: - - let mut sum: F = BigNum::new(); - - // Making a call to this function causes a "stack too deep" error, so I've put the body of that function here, instead: - // let fracs = __compute_fracs(z, ys); // { y_i / (z - omega^i) } - - // Note: it's more efficient (saving 30k constraints) to compute: - // ___d-1 - // \ / y_i \ - // / | --------- | . omega^i - // /____ \ z - omega^i / - // i=0 - // ^^^^^^^^^ - // frac - // - // ... than to compute: - // - // ___d-1 - // \ / omega^i \ - // / y_i . | --------- | - // /____ \ z - omega^i / - // i=0 - // - // perhaps because all the omega^i terms are constant witnesses? - - //***************************************************************** - // This section is only needed because `__compute_fracs` isn't working (stack too deep error). - - let mut fracs: [F; FIELDS_PER_BLOB] = [BigNum::new(); FIELDS_PER_BLOB]; // y_i / (z - omega^i), for all i - - let mut denoms = [BigNum::new(); FIELDS_PER_BLOB]; - for i in 0..FIELDS_PER_BLOB { - denoms[i] = z.__add(NEGATIVE_ROOTS[i]); // (z - omega^i) - } - - // If you're seeing a `bug` warning for this line, I think it's fine. - // Ideally, we'd be using `__compute_fracs`, anyway, but we're getting a "stack too deep" error. - let inv_denoms = __batch_invert_impl(denoms); // 1 / (z - omega^i), for all i - - for i in 0..FIELDS_PER_BLOB { - let num = ys[i]; - let inv_denom = inv_denoms[i]; // 1 / (z - omega^i) - - let frac = num.__mul(inv_denom); // y_i * (1 / (z - omega^i)) - - fracs[i] = frac; // y_i / (z - omega^i) - std::as_witness(fracs[i].limbs[0]); - std::as_witness(fracs[i].limbs[1]); - std::as_witness(fracs[i].limbs[2]); - - //End of section that is only needed because `__compute_fracs` isn't working - //***************************************************************** - - // frac <-- ys[i] / (z + neg_roots[i]) - // frac * (z + neg_roots[i]) - ys[i] = 0 - BigNum::evaluate_quadratic_expression( - [[fracs[i]]], - [[false]], - [[z, NEGATIVE_ROOTS[i]]], - [[false, false]], - [ys[i]], - [true] - ); - } - - // OK so...we can add multiple product terms into a sum...but I am not sure how many! - // we are computing 254 * 254 bit products and we need to ensure each product limb doesn't overflow - // each limb is 120 bits => 120 * 120 = 240 bits. - // however when computing a mul we add up to 5 product terms into a single field element => 243 bits (ish) - // when we do a modular reduction we validate that a field element >> 120 bits is less than 2^{126} which implies we have 246 bits to play with - // which implies...we can accomodate up to EIGHT additions of product terms before we risk overflowing - // (this is really messy! I never considered the case of giant linear sequences of products) - let mut sum: F = BigNum::new(); - - // Seeking: - // ___d-1 - // \ omega^i - // sum = / y_i . --------- - // /____ z - omega^i - // i=0 - let NUM_PARTIAL_SUMS = FIELDS_PER_BLOB / 8; - for i in 0..NUM_PARTIAL_SUMS { - let mut partial_sum: F = BigNum::new(); - let mut lhs: [F; 8] = [BigNum::new(); 8]; - let mut rhs = lhs; - - // Seeking: - // ___i*8 + 7 - // \ omega^k - // partial_sum = / y_k . --------- - // /____ z - omega^k - // k=i*8 + 0 - - for j in 0..8 { - let k = i * 8 + j; - lhs[j] = ROOTS[k]; // omega^k - rhs[j] = fracs[k]; // y_k / (z - omega^k) - std::as_witness(lhs[j].limbs[0]); - std::as_witness(lhs[j].limbs[1]); - std::as_witness(lhs[j].limbs[2]); - std::as_witness(rhs[j].limbs[0]); - std::as_witness(rhs[j].limbs[1]); - std::as_witness(rhs[j].limbs[2]); - - // y_k * ( omega^k / (z - omega^k) ) - let summand = ROOTS[k].__mul(fracs[k]); - - // partial_sum + ( y_k * ( omega^k / (z - omega^k) ) -> partial_sum - partial_sum = partial_sum.__add(summand); - std::as_witness(partial_sum.limbs[0]); - std::as_witness(partial_sum.limbs[1]); - std::as_witness(partial_sum.limbs[2]); - } - - // Seeking: - // ___i*8 - 1 ___i*8 + 7 - // \ omega^i \ / y_k \ - // sum_out = / y_i . --------- + / omega^k . | --------- | - // /____ z - omega^i /____ \ z - omega^k / - // 0 k = i*8 - // ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - // sum partial_sum - // - // ... that is: - // - // ___i*8 - 1 ___ 7 - // \ omega^i \ - // sum_out = / y_i . --------- + / lhs[j] . rhs[j] - // /____ z - omega^i /____ - // 0 j = 0 - // ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ - // sum partial_sum - // - - let mut sum_out = sum.__add(partial_sum); - - std::as_witness(sum_out.limbs[0]); - std::as_witness(sum_out.limbs[1]); - std::as_witness(sum_out.limbs[2]); - - // sum_out <- sum + (lhs[0] * rhs[0] + ... + lhs[7] * rhs[7]) - // => (lhs[0] * rhs[0] + ... + lhs[7] * rhs[7]) + sum - sum_out == 0 - BigNum::evaluate_quadratic_expression( - [[lhs[0]], [lhs[1]], [lhs[2]], [lhs[3]], [lhs[4]], [lhs[5]], [lhs[6]], [lhs[7]]], - [[false], [false], [false], [false], [false], [false], [false], [false]], - [[rhs[0]], [rhs[1]], [rhs[2]], [rhs[3]], [rhs[4]], [rhs[5]], [rhs[6]], [rhs[7]]], - [[false], [false], [false], [false], [false], [false], [false], [false]], - [sum, sum_out], - [false, true] - ); - - sum = sum_out; - std::as_witness(sum.limbs[0]); - std::as_witness(sum.limbs[1]); - std::as_witness(sum.limbs[2]); - } - - // y: - - let y = factor.__mul(sum); - - // y <- factor * sum - // => factor * sum - y == 0 - BigNum::evaluate_quadratic_expression([[factor]], [[false]], [[sum]], [[false]], [y], [true]); - - println(y); - - y -} - -#[test] -fn test_main() { - let mut blob: [F; FIELDS_PER_BLOB] = [BigNum::new(); FIELDS_PER_BLOB]; - - blob[0] = BigNum { limbs: [0x1234, 0, 0] }; - blob[1] = BigNum { limbs: [0xabcd, 0, 0] }; - blob[2] = BigNum { limbs: [0x69, 0, 0] }; - - let kzg_commitment_in = [1, 2]; // this is made-up nonsense. - - let (challenge_z, y, kzg_commitment) = main(blob, kzg_commitment_in); - - println(challenge_z); - println(y); - println(kzg_commitment); -} - -#[test] -fn test_print() { - let x = 4; - println(f"x: {x}"); -} - -#[test] -fn test_bignum_conversions() { - let x = 1000; - let x_bignum = __field_to_bignum(x); - println(f"x_bignum: {x_bignum}"); -} - -// nargo test --show-output test_barycentric -#[test] -fn test_barycentric() { - let z: F = BigNum { limbs: [2, 0, 0] }; - - // many y's form a blob: - let mut ys: [F; FIELDS_PER_BLOB] = [BigNum::new(); FIELDS_PER_BLOB]; - - ys[0] = BigNum { limbs: [0x1234, 0, 0] }; - ys[1] = BigNum { limbs: [0xabcd, 0, 0] }; - ys[2] = BigNum { limbs: [0x69, 0, 0] }; - - // evaluate the blob at z = 2 to yield y: - let y = barycentric_evaluate_blob_at_z(z, ys); - - let mut expected_y: [Field; 3] = [0; 3]; - if (FIELDS_PER_BLOB == 4096) { - // Computed with the eth consensus specs py lib - expected_y = [ - 0x0c62e352a428e8e9842eadc1c106bd, - 0x902c5b4968d755b6f49c0231e15af8, - 0x00049a - ]; - // Also computed with cKzg, in the typescript tests: - // 0x049a902c5b4968d755b6f49c0231e15af80c62e352a428e8e9842eadc1c106bd - } - if (FIELDS_PER_BLOB == 8) { - // Computed with the eth consensus specs py lib (after hacking it to cope with blobs of size 8 instead of 4096): - expected_y = [ - 0xb04cdea4304000053abffffffb203a, - 0x0000000002e30785c8afa4496f8e38, - 0x000000 - ]; - } - assert(y.limbs == expected_y); -} - -// Helper function used to populate the hard-coded double_modulus value in the bls12381Fr.nr file in the bignum library. -unconstrained fn compute_double_modulus() -> [Field; 3] { - let two_p = [0x7b4805fffcb7fdfffffffe00000002, 0x4ea6533afa906673b0101343b00aa7, 0x00e7db]; - let NUM_LIMBS = 3; // must be >= 3 - let two_pow_120 = 2.pow_32(120); - let mut double_modulus: [Field; 3] = [0; 3]; - - double_modulus[0] = two_p[0] + two_pow_120; - for i in 1..NUM_LIMBS - 1 { - double_modulus[i] = two_p[i] + two_pow_120 - 1; - } - double_modulus[NUM_LIMBS - 1] = two_p[NUM_LIMBS - 1] - 1; - double_modulus -} - -// nargo test --show-output test_compute_double_modulus -#[test] -fn test_compute_double_modulus() { - println(compute_double_modulus()); -} - -// nargo test --show-output test_compute_d_inv -#[test] -fn test_compute_d_inv() { - let D_INV = D.__invmod(); - println(D_INV); -} - diff --git a/noir-projects/noir-protocol-circuits/crates/blob/src/negative_roots.nr b/noir-projects/noir-protocol-circuits/crates/blob/src/negative_roots.nr deleted file mode 100644 index a494173e618..00000000000 --- a/noir-projects/noir-protocol-circuits/crates/blob/src/negative_roots.nr +++ /dev/null @@ -1,4102 +0,0 @@ -use dep::bigint::BigNum; - -// TODO: these negative roots are actually a rearrangement of the roots. If it is inefficient to load all 4096 of these bls fields (12k noir fields), we could perhaps modify the barycentric formula to do some clever indexing to lookup negative roots from the existing roots array. I'd be weary of auditability and bugs with such an approach, though. - -global NEGATIVE_ROOTS = [ - BigNum { limbs: [ 0xbda402fffe5bfeffffffff00000000, 0xa753299d7d483339d80809a1d80553, 0x0073ed ] } , - BigNum { limbs: [ 0x000000000000000000000000000001, 0x000000000000000000000000000000, 0x000000 ] } , - BigNum { limbs: [ 0xbaa40089fb5bfefffeffff00000001, 0xa753299d7d47a5e80b39939ed33467, 0x0073ed ] } , - BigNum { limbs: [ 0x030002760300000001000000000000, 0x0000000000008d51ccce760304d0ec, 0x000000 ] } , - BigNum { limbs: [ 0x32824078eaa4fe8dd702cb688bc087, 0x405d25a31660a733b23a98ca5b22a0, 0x003f96 ] } , - BigNum { limbs: [ 0x8b21c28713b7007228fd3397743f7a, 0x66f603fa66e78c0625cd70d77ce2b3, 0x003457 ] } , - BigNum { limbs: [ 0x4913cc6b4e0c269fc8017d5166afd3, 0xf524ccbc6d03787d7d083f1b189fc5, 0x0060b9 ] } , - BigNum { limbs: [ 0x74903694b04fd86037fe81ae99502e, 0xb22e5ce11044babc5affca86bf658e, 0x001333 ] } , - BigNum { limbs: [ 0xfef0f00df2ec88ac159e2688bd4333, 0xd8c1e977024e561dcd0fd4d314d93b, 0x00533b ] } , - BigNum { limbs: [ 0xbeb312f20b6f7653ea61d87742bcce, 0xce9140267af9dd1c0af834cec32c17, 0x0020b1 ] } , - BigNum { limbs: [ 0xc8bd90143c7a436a20b4c8fbee018e, 0x4de4b45f2d7bc4a72e43a8f20dbb34, 0x0024c1 ] } , - BigNum { limbs: [ 0xf4e672ebc1e1bb95df4b360411fe73, 0x596e753e4fcc6e92a9c460afca4a1e, 0x004f2c ] } , - BigNum { limbs: [ 0x43389604eeaf5a7f847ee47dc08d74, 0x15b4607e449bd66c91d61832fc60bd, 0x005511 ] } , - BigNum { limbs: [ 0x7a6b6cfb0faca4807b811a823f728d, 0x919ec91f38ac5ccd4631f16edba496, 0x001edc ] } , - BigNum { limbs: [ 0x010d53ccb225425e544cdf4c887948, 0xb475ab91194b687a73c92f188612fc, 0x003b25 ] } , - BigNum { limbs: [ 0xbc96af334c36bca1abb31fb37786b9, 0xf2dd7e0c63fccabf643eda8951f257, 0x0038c7 ] } , - BigNum { limbs: [ 0x4f1b07b3c56074c9f39f658c9620b3, 0x17191423f48d7e7d03f9e6ac83bc94, 0x00230d ] } , - BigNum { limbs: [ 0x6e88fb4c38fb8a360c60997369df4e, 0x903a157988bab4bcd40e22f55448bf, 0x0050e0 ] } , - BigNum { limbs: [ 0x0124a02ec3ede2c13af36ece5c935e, 0xe1cface780a62d34ccafd6d0ce6e2d, 0x000df6 ] } , - BigNum { limbs: [ 0xbc7f62d13a6e1c3ec50c9031a36ca3, 0xc5837cb5fca206050b5832d1099726, 0x0065f6 ] } , - BigNum { limbs: [ 0x7fdf9c77487ae79733f3a6ba60eaa6, 0xa2fb6162ffabd84f8612c8b6cc00bd, 0x00476f ] } , - BigNum { limbs: [ 0x3dc46688b5e11768cc0c58459f155b, 0x0457c83a7d9c5aea51f540eb0c0496, 0x002c7e ] } , - BigNum { limbs: [ 0xd460a1dbfcd267df2b12e5b0330148, 0xcd3a7fca77e38a490835c612d67951, 0x0020e9 ] } , - BigNum { limbs: [ 0xe943612401899720d4ed194fccfeb9, 0xda18a9d30564a8f0cfd2438f018c01, 0x005303 ] } , - BigNum { limbs: [ 0x8c291cbae2a361196986abd51edcb5, 0x83d4d0a0ae73ac3f6e2f24bd52fe70, 0x006f8c ] } , - BigNum { limbs: [ 0x317ae6451bb89de69679532ae1234c, 0x237e58fcced486fa69d8e4e48506e3, 0x000461 ] } , - BigNum { limbs: [ 0x6466930923ab7811a43132b1888c36, 0xf5e67a06fbd88f907adac98af5480e, 0x006f70 ] } , - BigNum { limbs: [ 0x593d6ff6dab086ee5bcecc4e7773cb, 0xb16caf96816fa3a95d2d4016e2bd45, 0x00047c ] } , - BigNum { limbs: [ 0x16d26dfeb2f7ee7d19743e43af5772, 0x4b9a3c48cf47ecaed406f9fc1065f1, 0x001cfa ] } , - BigNum { limbs: [ 0xa6d195014b641082e68bc0bc50a88f, 0x5bb8ed54ae00468b04010fa5c79f62, 0x0056f3 ] } , - BigNum { limbs: [ 0x7876bf0928e68fae34a81e1cfca2ec, 0xed8c432405d0ae25b21df6c52b2a6c, 0x005e73 ] } , - BigNum { limbs: [ 0x452d43f6d5756f51cb57e0e3035d15, 0xb9c6e6797777851425ea12dcacdae7, 0x001579 ] } , - BigNum { limbs: [ 0x2724b71d050aa97ebf2fcc0f5611ae, 0x440d3d981efb1e97f596a4c8da4826, 0x002e3e ] } , - BigNum { limbs: [ 0x967f4be2f951558140d032f0a9ee53, 0x6345ec055e4d14a1e27164d8fdbd2d, 0x0045af ] } , - BigNum { limbs: [ 0xcb9993a1e752756220b9443bf5371d, 0x77449923ce3ca1cac574d6e7aa0947, 0x004b02 ] } , - BigNum { limbs: [ 0xf20a6f5e1709899ddf46bac40ac8e4, 0x300e9079af0b916f129332ba2dfc0b, 0x0028eb ] } , - BigNum { limbs: [ 0xe1991fee0e510a7b9610b1db94977e, 0xf9e8afe7612dc1649310899759ba6e, 0x00205b ] } , - BigNum { limbs: [ 0xdc0ae311f00af48469ef4d246b6883, 0xad6a79b61c1a71d544f7800a7e4ae4, 0x005391 ] } , - BigNum { limbs: [ 0x8f60f019fd400926be16cb704b990a, 0xa2325ba21faac6e50c813baa997430, 0x002f00 ] } , - BigNum { limbs: [ 0x2e4312e6011bf5d941e9338fb466f7, 0x0520cdfb5d9d6c54cb86cdf73e9123, 0x0044ed ] } , - BigNum { limbs: [ 0xaaf80b0c55bd8430f9a5d7f0c3cdb2, 0x4257e466b84b3c8c71b5ba9e612b6f, 0x001ef3 ] } , - BigNum { limbs: [ 0x12abf7f3a89e7acf065a270f3c324f, 0x64fb4536c4fcf6ad66524f0376d9e4, 0x0054fa ] } , - BigNum { limbs: [ 0x93335cea2da31a2d03a19553a24b82, 0x66a6d1a50dea09febaa04d13f22bb2, 0x0065a5 ] } , - BigNum { limbs: [ 0x2a70a615d0b8e4d2fc5e69ac5db47f, 0x40ac57f86f5e293b1d67bc8de5d9a1, 0x000e48 ] } , - BigNum { limbs: [ 0x9e4af408c2b9413f0eca84af71a186, 0xa6a78265e48883e0070b973ffd92c2, 0x001b29 ] } , - BigNum { limbs: [ 0x1f590ef73ba2bdc0f1357a508e5e7b, 0x00aba73798bfaf59d0fc7261da7291, 0x0058c4 ] } , - BigNum { limbs: [ 0xbabf1e9e172de6223c4fc056e43d9a, 0x2f0122e8072dabac70f83e4acd519b, 0x001095 ] } , - BigNum { limbs: [ 0x02e4e461e72e18ddc3b03ea91bc267, 0x785206b5761a878d670fcb570ab3b8, 0x006358 ] } , - BigNum { limbs: [ 0xf9b80ec36bb2b55ba6c1e4335d3495, 0x1c76ad9e668d4f4bc1c2f86897360c, 0x002026 ] } , - BigNum { limbs: [ 0xc3ebf43c92a949a4593e1acca2cb6c, 0x8adc7bff16bae3ee1645113940cf46, 0x0053c7 ] } , - BigNum { limbs: [ 0xd6586048a1b7870bb1eb8b66cd55ce, 0x56c914ef83eed9620388e8f73902f9, 0x003c1a ] } , - BigNum { limbs: [ 0xe74ba2b75ca477f44e14739932aa33, 0x508a14adf95959d7d47f20aa9f0259, 0x0037d3 ] } , - BigNum { limbs: [ 0x1e85011d426b52b891fa3f982b68c5, 0xdaee7b3c79d6566009b5882952d6a4, 0x00199c ] } , - BigNum { limbs: [ 0x9f1f01e2bbf0ac476e05bf67d4973c, 0xcc64ae610371dcd9ce528178852eaf, 0x005a50 ] } , - BigNum { limbs: [ 0xa2bee506858fc6870b11e11ba54d0f, 0xa3d0ddae097ebcf95c6ee2bfcfce81, 0x000596 ] } , - BigNum { limbs: [ 0x1ae51df978cc3878f4ee1de45ab2f2, 0x03824bef73c976407b9926e20836d2, 0x006e57 ] } , - BigNum { limbs: [ 0x4910119f300f47d64b34dde86304f3, 0x2dc00c9fa4b3b3c03b15fa3a7826e9, 0x007082 ] } , - BigNum { limbs: [ 0x7493f160ce4cb729b4cb21179cfb0e, 0x79931cfdd8947f799cf20f675fde6a, 0x00036b ] } , - BigNum { limbs: [ 0xb73f5d9958580573ea3fa3e6fe310f, 0xba2461933c32412d801131c542d24e, 0x0068f0 ] } , - BigNum { limbs: [ 0x0664a566a603f98c15c05b1901cef2, 0xed2ec80a4115f20c57f6d7dc953305, 0x000afc ] } , - BigNum { limbs: [ 0xdb96c6037b2ae2f8d84c914e68b10d, 0xd155db6e78824b6f2c61beab61e404, 0x004b26 ] } , - BigNum { limbs: [ 0xe20d3cfc83311c0727b36db1974ef4, 0xd5fd4e2f04c5e7caaba64af676214e, 0x0028c6 ] } , - BigNum { limbs: [ 0x872ef3dce28e788d28c143168bba2c, 0x097461a2eeaf4e84b3cd7dc75b61db, 0x00640d ] } , - BigNum { limbs: [ 0x36750f231bcd8672d73ebbe97445d5, 0x9ddec7fa8e98e4b5243a8bda7ca378, 0x000fe0 ] } , - BigNum { limbs: [ 0xecd9567808eac2aecf3d3d99feda43, 0x963f1644f6057b734cba89c47734ba, 0x000b55 ] } , - BigNum { limbs: [ 0xd0caac87f5713c5130c2c1660125be, 0x111413588742b7c68b4d7fdd60d098, 0x006898 ] } , - BigNum { limbs: [ 0x8d00b4a1b1e1cd5f6d85cc838aefbe, 0x0f15498c6f24f1f9df7fc191d3ac9b, 0x00431b ] } , - BigNum { limbs: [ 0x30a34e5e4c7a31a0927a327c751043, 0x983de0110e23413ff88848100458b8, 0x0030d2 ] } , - BigNum { limbs: [ 0x9f9c8b080ee81bd10899b24dbbf12d, 0xb19b5e5f8ee9313b8642525d5075f6, 0x0022df ] } , - BigNum { limbs: [ 0x1e0777f7ef73e32ef7664cb2440ed4, 0xf5b7cb3dee5f01fe51c5b744878f5d, 0x00510d ] } , - BigNum { limbs: [ 0x5d206f9aa2eeccc15168ac46d068db, 0x8d3bec0cc3466f0af7c7244a3da1a4, 0x005e3f ] } , - BigNum { limbs: [ 0x608393655b6d323eae9752b92f9726, 0x1a173d90ba01c42ee040e5579a63af, 0x0015ae ] } , - BigNum { limbs: [ 0xaa3be95461c35c8ad72a76bc61a4ef, 0x6c715d7a8ee18506b7660550ec6994, 0x00595e ] } , - BigNum { limbs: [ 0x136819ab9c98a27528d588439e5b12, 0x3ae1cc22ee66ae3320a20450eb9bbf, 0x001a8f ] } , - BigNum { limbs: [ 0x0cc5569e6281d1bfff4f4b898366d9, 0x9c52d10eaa78a7a111083c39ad633a, 0x003e27 ] } , - BigNum { limbs: [ 0xb0deac619bda2d4000b0b3767c9928, 0x0b00588ed2cf8b98c6ffcd682aa219, 0x0035c6 ] } , - BigNum { limbs: [ 0x286adfae56d25be72cfc5c9966d09e, 0x3ba0fa4b6f560e09b1a3879520095f, 0x006e5f ] } , - BigNum { limbs: [ 0x95392351a789a318d303a266992f63, 0x6bb22f520df225302664820cb7fbf4, 0x00058e ] } , - BigNum { limbs: [ 0x75c4fd31a9bdfbb14b44a23cfe6f92, 0xfa6a84eec93cd9bbb5adebfdc2994f, 0x0002a8 ] } , - BigNum { limbs: [ 0x47df05ce549e034eb4bb5cc301906f, 0xace8a4aeb40b597e225a1da4156c04, 0x007144 ] } , - BigNum { limbs: [ 0x40042d8d8ef0be12605a3ecd13f5de, 0x0024e28a13e18ee8aa1b9e97d4cdd5, 0x0014be ] } , - BigNum { limbs: [ 0x7d9fd5726f6b40ed9fa5c032ec0a23, 0xa72e47136966a4512dec6b0a03377e, 0x005f2f ] } , - BigNum { limbs: [ 0x82d714b1cb5d445b0e07816f77b3a7, 0x47e7840143b38aeed579d92544a1d4, 0x005199 ] } , - BigNum { limbs: [ 0x3accee4e32febaa4f1f87d90884c5a, 0x5f6ba59c3994a84b028e307c93637f, 0x002254 ] } , - BigNum { limbs: [ 0x1dff643be95635b750da4cab28e208, 0xc802a94a946e8cbe2437f0b4b27650, 0x0007d0 ] } , - BigNum { limbs: [ 0x9fa49ec41505c948af25b254d71df9, 0xdf508052e8d9a67bb3d018ed258f03, 0x006c1c ] } , - BigNum { limbs: [ 0xb2b183f7ec0b194222925245f4e2fb, 0x0c47d9f8e63309b97ddd04dcc90920, 0x001878 ] } , - BigNum { limbs: [ 0x0af27f081250e5bddd6dacba0b1d06, 0x9b0b4fa4971529805a2b04c50efc33, 0x005b75 ] } , - BigNum { limbs: [ 0xbdb5218d05af8af6a1cd7025d071a5, 0x21e17d3cd87a2ed1234cde5d6927a9, 0x004ae9 ] } , - BigNum { limbs: [ 0xffeee172f8ac74095e328eda2f8e5c, 0x8571ac60a4ce0468b4bb2b446edda9, 0x002904 ] } , - BigNum { limbs: [ 0xc0551ac0e33765241de8ab6c75208d, 0x9d9a302401865eec2340271598ef87, 0x005944 ] } , - BigNum { limbs: [ 0xfd4ee83f1b2499dbe21753938adf74, 0x09b8f9797bc1d44db4c7e28c3f15cb, 0x001aa9 ] } , - BigNum { limbs: [ 0xc2217b84b789f1c0f0045c15eb6cca, 0x23f0bdd367bbf9b36026bf15201e3d, 0x001bd8 ] } , - BigNum { limbs: [ 0xfb82877b46d20d3f0ffba2ea149337, 0x83626bca158c398677e14a8cb7e715, 0x005815 ] } , - BigNum { limbs: [ 0xccffd43f1931b63ff630d3f89c4c2c, 0x34a0f387add7faa1f3804fdb73d008, 0x001f38 ] } , - BigNum { limbs: [ 0xf0a42ec0e52a48c009cf2b0763b3d5, 0x72b23615cf703897e487b9c664354a, 0x0054b5 ] } , - BigNum { limbs: [ 0xffe63827d533369b173ba8dd620212, 0xd4bf2035cba62b52573b968efab1e1, 0x000c3f ] } , - BigNum { limbs: [ 0xbdbdcad82928c864e8c456229dfdef, 0xd2940967b1a207e780cc7312dd5371, 0x0067ad ] } , - BigNum { limbs: [ 0x7294c2bb71bbb2bba97efd27ba08e2, 0x925014876109c4ae3115d25772a7b6, 0x0020d5 ] } , - BigNum { limbs: [ 0x4b0f40448ca04c44568101d845f71f, 0x150315161c3e6e8ba6f2374a655d9d, 0x005318 ] } , - BigNum { limbs: [ 0xdb89e0a4a5765fe2c1b6af78029270, 0x1b5dc39ecc507541df17373a065728, 0x004f53 ] } , - BigNum { limbs: [ 0xe21a225b58e59f1d3e494f87fd6d91, 0x8bf565feb0f7bdf7f8f0d267d1ae2a, 0x00249a ] } , - BigNum { limbs: [ 0x28fb6cae51baff7ef262ffa8f8c918, 0x611dcedcb15b720543223d96f0ac8d, 0x0007aa ] } , - BigNum { limbs: [ 0x94a89651aca0ff810d9cff570736e9, 0x46355ac0cbecc13494e5cc0ae758c6, 0x006c43 ] } , - BigNum { limbs: [ 0x291d47986d31d3bbf254b932e053a6, 0xa37bb55ee341bde19c2cf633387e72, 0x005950 ] } , - BigNum { limbs: [ 0x9486bb67912a2b440dab45cd1fac5b, 0x03d7743e9a0675583bdb136e9f86e1, 0x001a9d ] } , - BigNum { limbs: [ 0x4dee80538980eca8e45d0230d79fe6, 0xacc5d6a40c8de1f7cc23d4a0a0fa3d, 0x005a56 ] } , - BigNum { limbs: [ 0x6fb582ac74db12571ba2fccf28601b, 0xfa8d52f970ba51420be43501370b16, 0x001996 ] } , - BigNum { limbs: [ 0x333e46f0700ee03227ea10b26bd413, 0x06f483d66e532628df85d7c3f50e72, 0x0040b7 ] } , - BigNum { limbs: [ 0x8a65bc0f8e4d1ecdd815ee4d942bee, 0xa05ea5c70ef50d10f88231dde2f6e1, 0x003336 ] } , - BigNum { limbs: [ 0x66f8a0dc0e6bbe91e8a1ba3b6f3441, 0x2d20409a835fe1b2c3aa0eb455ffbe, 0x001a11 ] } , - BigNum { limbs: [ 0x56ab6223eff0406e175e44c490cbc0, 0x7a32e902f9e85187145dfaed820595, 0x0059dc ] } , - BigNum { limbs: [ 0x79114c0bc2a6e035825224af0aaa1d, 0x1712a762f4607c95a954c7a25068a3, 0x0013c8 ] } , - BigNum { limbs: [ 0x4492b6f43bb51eca7dadda50f555e4, 0x9040823a88e7b6a42eb341ff879cb0, 0x006025 ] } , - BigNum { limbs: [ 0xf54484042843734f76a9059bae8f9f, 0x7bd601e8bb0a29c34d9781b10bdf29, 0x006097 ] } , - BigNum { limbs: [ 0xc85f7efbd6188bb08956f964517062, 0x2b7d27b4c23e09768a7087f0cc2629, 0x001356 ] } , - BigNum { limbs: [ 0x0f59e12c64384016236e58af56f1b8, 0x4d7bbcfd52504045ee80a2a90eecf7, 0x005d2a ] } , - BigNum { limbs: [ 0xae4a21d39a23bee9dc91a650a90e49, 0x59d76ca02af7f2f3e98766f8c9185c, 0x0016c3 ] } , - BigNum { limbs: [ 0xf69b4a47af75655a9a50847f96ec43, 0x90b59abcf615a6231d154bcbeebf11, 0x004636 ] } , - BigNum { limbs: [ 0xc708b8b84ee699a565af7a806913be, 0x169d8ee087328d16baf2bdd5e94641, 0x002db7 ] } , - BigNum { limbs: [ 0xc290a30beab8a82a0a83854a64dccf, 0x33e0bb0973b096c09431666614720d, 0x0011fb ] } , - BigNum { limbs: [ 0xfb135ff413a356d5f57c79b59b2332, 0x73726e9409979c7943d6a33bc39345, 0x0061f2 ] } , - BigNum { limbs: [ 0x4c9bd5d6faba529cc2c16c38357332, 0x4d8c8ac99daef21979ec507b8b9ad7, 0x00374e ] } , - BigNum { limbs: [ 0x71082d2903a1ac633d3e92c7ca8ccf, 0x59c69ed3df9941205e1bb9264c6a7c, 0x003c9f ] } , - BigNum { limbs: [ 0x7d0aaebb6e8b5c2433b50af8bb7619, 0xc2eca698be862c164da00c6f5f076d, 0x00581e ] } , - BigNum { limbs: [ 0x409954448fd0a2dbcc4af4074489e8, 0xe4668304bec207238a67fd3278fde6, 0x001bce ] } , - BigNum { limbs: [ 0x81066e578d78bf6207cd2f20df9d12, 0xefec34093e9a725ce48f79bf9cd600, 0x0060c7 ] } , - BigNum { limbs: [ 0x3c9d94a870e33f9df832cfdf2062ef, 0xb766f5943eadc0dcf3788fe23b2f53, 0x001325 ] } , - BigNum { limbs: [ 0xb53e5a66157cffb6ca42cf7e8096b6, 0x66ba46b38c19c80356e65d94e35849, 0x002452 ] } , - BigNum { limbs: [ 0x0865a899e8deff4935bd2f817f694b, 0x4098e2e9f12e6b368121ac0cf4ad0a, 0x004f9b ] } , - BigNum { limbs: [ 0x6d471fd7d619f99d47ae1b2d5cb20c, 0x9cb1d4e5cd90d2ed0c39d81ba4edef, 0x000db0 ] } , - BigNum { limbs: [ 0x505ce32828420562b851e3d2a34df5, 0x0aa154b7afb7604ccbce3186331764, 0x00663d ] } , - BigNum { limbs: [ 0x83c14c0425182e523db144c948a873, 0x7e100025cede2c14671f92089bc7df, 0x0019e7 ] } , - BigNum { limbs: [ 0x39e2b6fbd943d0adc24eba36b7578e, 0x29432977ae6a072570e877993c3d74, 0x005a06 ] } , - BigNum { limbs: [ 0xf14a39fc751f567d6dcabcb43adfeb, 0xa40efa6dcac098af3a8f44a3055298, 0x0026b8 ] } , - BigNum { limbs: [ 0xcc59c903893ca8829235424bc52016, 0x03442f2fb2879a8a9d78c4fed2b2ba, 0x004d35 ] } , - BigNum { limbs: [ 0x393a229e5c956ea8e747e70c3352b9, 0x0fa52ca5f2b6074231113972d1f31e, 0x0020b8 ] } , - BigNum { limbs: [ 0x8469e061a1c6905718b817f3ccad48, 0x97adfcf78a922bf7a6f6d02f061235, 0x005335 ] } , - BigNum { limbs: [ 0x964479e66a29b26678ce10f387bc87, 0x504e08859b66e14f851900aff7991b, 0x00284a ] } , - BigNum { limbs: [ 0x275f891994324c998731ee0c78437a, 0x57052117e1e151ea52ef08f1e06c38, 0x004ba3 ] } , - BigNum { limbs: [ 0xe0cfc513638e8df766c4aadd94806e, 0x67fad38d59a038f1bab4965c08a022, 0x0031e5 ] } , - BigNum { limbs: [ 0xdcd43dec9acd7108993b54226b7f93, 0x3f58561023a7fa481d537345cf6530, 0x004208 ] } , - BigNum { limbs: [ 0x0a9a547af7f7203c1d97dd9423b5d1, 0x39c63dcea51c6dfda5ce9bf2fc0c49, 0x0067dc ] } , - BigNum { limbs: [ 0xb309ae850664dec3e268216bdc4a30, 0x6d8cebced82bc53c32396daedbf90a, 0x000c11 ] } , - BigNum { limbs: [ 0xacb6a751c4cf62e9b77e2a455758d3, 0x702adadc3bea54f132dd768cbcd025, 0x002fbb ] } , - BigNum { limbs: [ 0x10ed5bae398c9c164881d4baa8a72e, 0x37284ec1415dde48a52a93151b352e, 0x004432 ] } , - BigNum { limbs: [ 0x3dd930616645bb8acad28c5f36ac67, 0xc138ef72e20e3645eba92f93fcb1b3, 0x00314a ] } , - BigNum { limbs: [ 0x7fcad29e98164375352d72a0c9539a, 0xe61a3a2a9b39fcf3ec5eda0ddb53a0, 0x0042a2 ] } , - BigNum { limbs: [ 0x4adbcf1b2f27651340a28ffe15d019, 0xcbbd0503595ec98da723e86bdc412c, 0x002b92 ] } , - BigNum { limbs: [ 0x72c833e4cf3499ecbf5d6f01ea2fe8, 0xdb96249a23e969ac30e42135fbc427, 0x00485a ] } , - BigNum { limbs: [ 0xc72871c1151445d010a9edb4b638a4, 0x9164dbe6739dc4f0a81758d181ac9c, 0x00713a ] } , - BigNum { limbs: [ 0xf67b913ee947b92fef56114b49c75d, 0x15ee4db709aa6e492ff0b0d05658b6, 0x0002b3 ] } , - BigNum { limbs: [ 0x66372d5f7944f1045697cc52056d9b, 0x984a697ff768d986c0c20a39fc66c8, 0x0025b9 ] } , - BigNum { limbs: [ 0x576cd5a085170dfba96832adfa9266, 0x0f08c01d85df59b31745ff67db9e8b, 0x004e34 ] } , - BigNum { limbs: [ 0xb1ae62415a9910cca54ea0331495d4, 0xaecf5af2f4abb40ec2b38999673e05, 0x00163d ] } , - BigNum { limbs: [ 0x0bf5a0bea3c2ee335ab15ecceb6a2d, 0xf883ceaa889c7f2b1554800870c74e, 0x005daf ] } , - BigNum { limbs: [ 0xef7d53496e420711c4c75b7ec9cc10, 0xfa7c095d48bff317e2f8e7ee39e7bc, 0x000ca9 ] } , - BigNum { limbs: [ 0xce26afb69019f7ee3b38a3813633f1, 0xacd7204034884021f50f21b39e1d96, 0x006743 ] } , - BigNum { limbs: [ 0x1cb8c070f0ce322e9a4db5f138dab3, 0x5980dade66efbcca660ee327eb377a, 0x006a94 ] } , - BigNum { limbs: [ 0xa0eb428f0d8dccd165b2490ec7254e, 0x4dd24ebf1658766f71f92679eccdd9, 0x000959 ] } , - BigNum { limbs: [ 0x2fb0fde29479defdde6c4bcc3c47ac, 0x7ee321cfb3ba051f83121c342bf6e5, 0x003d6a ] } , - BigNum { limbs: [ 0x8df3051d69e220022193b333c3b855, 0x287007cdc98e2e1a54f5ed6dac0e6e, 0x003683 ] } , - BigNum { limbs: [ 0x0dd8d1bcb91626d103024fb1d9a54a, 0xf2c9a0e3a19998e526154ae4ed7989, 0x00443a ] } , - BigNum { limbs: [ 0xafcb31434545d82efcfdaf4e265ab7, 0xb48988b9dbae9a54b1f2bebcea8bca, 0x002fb2 ] } , - BigNum { limbs: [ 0x4a95d2c3e71de2f6f43227eaade450, 0x2e127d4b36ff388a3903558023a261, 0x002d43 ] } , - BigNum { limbs: [ 0x730e303c173e1c090bcdd715521bb1, 0x7940ac524648faaf9f04b421b462f2, 0x0046aa ] } , - BigNum { limbs: [ 0x170673bd1b99a3d922fa1a3b513f68, 0x4ce5aa3941ee054ba2513a8f6466a4, 0x003629 ] } , - BigNum { limbs: [ 0xa69d8f42e2c25b26dd05e4c4aec099, 0x5a6d7f643b5a2dee35b6cf12739eaf, 0x003dc4 ] } , - BigNum { limbs: [ 0x807acfac7a7564eb7d8810073f5d6a, 0x4339fb741fc31769583e0d6d2c1a7a, 0x00415e ] } , - BigNum { limbs: [ 0x3d29335383e69a148277eef8c0a297, 0x64192e295d851bd07fc9fc34abead9, 0x00328f ] } , - BigNum { limbs: [ 0x911f0feabd369ed3545212d01cdd49, 0xccf9865fb1560092a559ef66cd15de, 0x004557 ] } , - BigNum { limbs: [ 0x2c84f3154125602cabadec2fe322b8, 0xda59a33dcbf232a732ae1a3b0aef75, 0x002e95 ] } , - BigNum { limbs: [ 0x483352f033ff64adf373b18b704af8, 0x51ecd7358cb0e80451eb57c7c2cac8, 0x0036e7 ] } , - BigNum { limbs: [ 0x7570b00fca5c9a520c8c4d748fb509, 0x55665267f0974b35861cb1da153a8b, 0x003d06 ] } , - BigNum { limbs: [ 0x8a9a8b48559c156358cf18763f4063, 0x2a235b185c763e293867324c9a71d9, 0x007343 ] } , - BigNum { limbs: [ 0x330977b7a8bfe99ca730e689c0bf9e, 0x7d2fce8520d1f5109fa0d7553d937a, 0x0000aa ] } , - BigNum { limbs: [ 0x777b4d984f404a1c2a241e2d08c1c0, 0xf0091746f546751b65160340510aef, 0x000522 ] } , - BigNum { limbs: [ 0x4628b567af1bb4e3d5dbe0d2f73e41, 0xb74a12568801be1e72f2066186fa64, 0x006eca ] } , - BigNum { limbs: [ 0x5e4d6e9cbd5e02c4d432320e1384eb, 0x08d50d96eba478550062e390c312e4, 0x001e0b ] } , - BigNum { limbs: [ 0x5f56946340fdfc3b2bcdccf1ec7b16, 0x9e7e1c0691a3bae4d7a5261114f26f, 0x0055e2 ] } , - BigNum { limbs: [ 0xbbd67710e3399ec1e9f9b456588891, 0x86052e81456eb383cca0626033166f, 0x000db8 ] } , - BigNum { limbs: [ 0x01cd8bef1b22603e16064aa9a77770, 0x214dfb1c37d97fb60b67a741a4eee4, 0x006635 ] } , - BigNum { limbs: [ 0x12655fec382b488ab3113c021da780, 0x7d875f42d925180ea84a5115cfd262, 0x0053aa ] } , - BigNum { limbs: [ 0xab3ea313c630b6754ceec2fde25881, 0x29cbca5aa4231b2b2fbdb88c0832f1, 0x002043 ] } , - BigNum { limbs: [ 0x68befea0679e494b94920969459132, 0xd44cddf6abc21d51a2e03b9c9cf237, 0x001e03 ] } , - BigNum { limbs: [ 0x54e5045f96bdb5b46b6df596ba6ecf, 0xd3064ba6d18615e83527ce053b131c, 0x0055e9 ] } , - BigNum { limbs: [ 0x693fdc8713f747bf7579b9d2eebd4d, 0x92aeafc59bc1963edac49c2696da4d, 0x00178b ] } , - BigNum { limbs: [ 0x54642678ea64b7408a86452d1142b4, 0x14a479d7e1869cfafd436d7b412b06, 0x005c62 ] } , - BigNum { limbs: [ 0x46869d4d10052be675fcb3e18fa3f3, 0x95e215d7a7a452f66ec2c60b147c17, 0x004e91 ] } , - BigNum { limbs: [ 0x771d65b2ee56d3198a034b1e705c0e, 0x117113c5d5a3e04369454396c3893c, 0x00255c ] } , - BigNum { limbs: [ 0xf464cb4256a3b3f3f90bd2b05e602e, 0xebe124834a8fcfdc1da7bf59004b42, 0x0036e1 ] } , - BigNum { limbs: [ 0xc93f37bda7b84b0c06f42c4fa19fd3, 0xbb72051a32b8635dba604a48d7ba10, 0x003d0b ] } , - BigNum { limbs: [ 0x40515e8a158dedad5b3bb2b65b60e3, 0x8b7ffb85398c18fae2b2b0ec6a9811, 0x0005ff ] } , - BigNum { limbs: [ 0x7d52a475e8ce1152a4c44c49a49f1e, 0x1bd32e1843bc1a3ef55558b56d6d42, 0x006dee ] } , - BigNum { limbs: [ 0x6eaf3c40be7b3838159f7147329ad5, 0x2aac2d0686c83e013c718435ef5413, 0x0055f8 ] } , - BigNum { limbs: [ 0x4ef4c6bf3fe0c6c7ea608db8cd652c, 0x7ca6fc96f67ff5389b96856be8b140, 0x001df5 ] } , - BigNum { limbs: [ 0x84d7b3f8b7cf132874e1098b7e9b1a, 0x5092e98ac1b47a9970f370ae50cbc6, 0x001585 ] } , - BigNum { limbs: [ 0x38cc4f07468cebd78b1ef5748164e7, 0x56c04012bb93b8a0671498f387398d, 0x005e68 ] } , - BigNum { limbs: [ 0x5d62341f399e527a79183fcde843c9, 0x31feceffb21884061f9f18bf5ab67d, 0x006974 ] } , - BigNum { limbs: [ 0x6041cee0c4bdac8586e7bf3217bc38, 0x75545a9dcb2faf33b868f0e27d4ed6, 0x000a79 ] } , - BigNum { limbs: [ 0x3c92294a7df3115dd34f3efbca7e49, 0x47e9d645599344915a4a7e63657193, 0x0032d5 ] } , - BigNum { limbs: [ 0x8111d9b58068eda22cb0c0043581b8, 0x5f69535823b4eea87dbd8b3e7293c0, 0x004118 ] } , - BigNum { limbs: [ 0xbba87982f8a3ab72032b6dd9980aa2, 0x7eba81db23a02297d49fc28271cf6b, 0x000f0a ] } , - BigNum { limbs: [ 0x01fb897d05b8538dfcd4912667f55f, 0x2898a7c259a810a20368471f6635e8, 0x0064e3 ] } , - BigNum { limbs: [ 0x50e43a80a9bd4cf0ea8a73552c030d, 0x2863a6f63f83bb09fed64b951d7aa3, 0x005b0c ] } , - BigNum { limbs: [ 0x6cbfc87f549eb20f15758baad3fcf4, 0x7eef82a73dc4782fd931be0cba8ab0, 0x0018e1 ] } , - BigNum { limbs: [ 0xb901d9b44bf6cee9dd22a497765719, 0x994d9fc0040d8e1dd927f6f6bf4ac2, 0x003dbe ] } , - BigNum { limbs: [ 0x04a2294bb265301622dd5a6889a8e8, 0x0e0589dd793aa51bfee012ab18ba91, 0x00362f ] } , - BigNum { limbs: [ 0xa2163218d48aa1c0ef0c55544da820, 0x239cd9c777f74c72f50d0dde0ecfa2, 0x003cd5 ] } , - BigNum { limbs: [ 0x1b8dd0e729d15d3f10f3a9abb257e1, 0x83b64fd60550e6c6e2fafbc3c935b1, 0x003718 ] } , - BigNum { limbs: [ 0xf812a0fada0ad9898a4a40149eac37, 0x2f025b748d0949212bd8afe3031a1c, 0x002fe8 ] } , - BigNum { limbs: [ 0xc59162052451257675b5beeb6153ca, 0x7850ce28f03eea18ac2f59bed4eb36, 0x004405 ] } , - BigNum { limbs: [ 0x3cae032393991be9561c176a2f777a, 0xed25272e58ee91b000235a5bfd4fc0, 0x006d64 ] } , - BigNum { limbs: [ 0x80f5ffdc6ac2e316a9e3e795d08887, 0xba2e026f2459a189d7e4af45dab593, 0x000688 ] } , - BigNum { limbs: [ 0x44f49758f2e4f90e5070b9bada029b, 0xf6421e7859bbb5c8af93f751a2bcf2, 0x0027b9 ] } , - BigNum { limbs: [ 0x78af6ba70b7705f1af8f454525fd66, 0xb1110b25238c7d7128741250354861, 0x004c33 ] } , - BigNum { limbs: [ 0x7edb7e69c459f44c191129505eef66, 0xd87eefb9b5beb3e1674c00ddcfeef2, 0x001638 ] } , - BigNum { limbs: [ 0x3ec884963a020ab3e6eed5afa1109b, 0xced439e3c7897f5870bc08c4081661, 0x005db4 ] } , - BigNum { limbs: [ 0xbe0261fa1ef0748bd63e0485773dba, 0xc5875ac931fbed257db1ed5ff5da83, 0x006ceb ] } , - BigNum { limbs: [ 0xffa1a105df6b8a7429c1fa7a88c247, 0xe1cbced44b4c46145a561c41e22acf, 0x000701 ] } , - BigNum { limbs: [ 0x4b7d976c7acfe832b49690815bdc10, 0x941c73d35adbfe74944fa524ee2707, 0x00677b ] } , - BigNum { limbs: [ 0x72266b93838c16cd4b696e7ea423f1, 0x1336b5ca226c34c543b8647ce9de4c, 0x000c72 ] } , - BigNum { limbs: [ 0x5354ab6e8c2ab4f007bdc150d024b1, 0xaa7aeef7d8dee0eb9d91cdecccfbbf, 0x001f2c ] } , - BigNum { limbs: [ 0x6a4f579172314a0ff8423daf2fdb50, 0xfcd83aa5a469524e3a763bb50b0994, 0x0054c0 ] } , - BigNum { limbs: [ 0x8db8d2298d3f8e16a0c798f162eacb, 0xcf811bf1365ac48ba1f92b1fec5c78, 0x006bba ] } , - BigNum { limbs: [ 0x2feb30d6711c70e95f38660e9d1536, 0xd7d20dac46ed6eae360ede81eba8db, 0x000832 ] } , - BigNum { limbs: [ 0xaf7f13d0a74f74dbbc76a74c1da9e8, 0x98fa4cbff0603b174240d6d0c662a1, 0x005987 ] } , - BigNum { limbs: [ 0x0e24ef2f570c8a24438957b3e25619, 0x0e58dcdd8ce7f82295c732d111a2b2, 0x001a66 ] } , - BigNum { limbs: [ 0x1a65f594b099268117a83fe0dacaef, 0x1bfda43188b512712448c25af0595d, 0x002b76 ] } , - BigNum { limbs: [ 0xa33e0d6b4dc2d87ee857bf1f253512, 0x8b55856bf49320c8b3bf4746e7abf6, 0x004877 ] } , - BigNum { limbs: [ 0xa63f546586f6d2da37c449f8b60f52, 0x2b8b7d02f5cf2f49c52c6190369d3b, 0x0015e2 ] } , - BigNum { limbs: [ 0x1764ae9a77652c25c83bb50749f0af, 0x7bc7ac9a877903f012dba811a16818, 0x005e0b ] } , - BigNum { limbs: [ 0xf315a6b2d095ff2d787c980313ea47, 0x372554761399758318df7c28ca7b95, 0x0016d4 ] } , - BigNum { limbs: [ 0xca8e5c4d2dc5ffd2878366fcec15ba, 0x702dd52769aebdb6bf288d790d89bd, 0x005d19 ] } , - BigNum { limbs: [ 0x80256afc11e71d85fcf33c21a24ad6, 0xcb61c12c11e74dc142b14aa249269d, 0x0056da ] } , - BigNum { limbs: [ 0x3d7e9803ec74e17a030cc2de5db52b, 0xdbf168716b60e5789556beff8edeb6, 0x001d12 ] } , - BigNum { limbs: [ 0x408d95d9268abf109873789332cd2a, 0x9110624b32011b2911f5ddb3864aca, 0x000190 ] } , - BigNum { limbs: [ 0x7d166d26d7d13fef678c866ccd32d7, 0x1642c7524b471810c6122bee51ba89, 0x00725d ] } , - BigNum { limbs: [ 0xba2b752da27a4e8d66b6b5017225bb, 0x7601029a4196d247f1687a9eb754cb, 0x0011c1 ] } , - BigNum { limbs: [ 0x03788dd25be1b072994949fe8dda46, 0x315227033bb160f1e69f8f0320b088, 0x00622c ] } , - BigNum { limbs: [ 0x45442a4caa31c65b585be1aadcb79d, 0x7c4e35f66b90ebafe0c16826da6975, 0x004fce ] } , - BigNum { limbs: [ 0x785fd8b3542a38a4a7a41d55234864, 0x2b04f3a711b74789f746a17afd9bde, 0x00241f ] } , - BigNum { limbs: [ 0xfdab76f48019b80ffc32908c1049f0, 0x9775428ee41b2674c1244e803b82a8, 0x005f80 ] } , - BigNum { limbs: [ 0xbff88c0b7e4246f003cd6e73efb611, 0x0fdde70e992d0cc516e3bb219c82aa, 0x00146d ] } , - BigNum { limbs: [ 0x7cbc17fe538ac37a355caf264d4933, 0xf579f5325dd3ffbe4b7354be35fc6e, 0x000177 ] } , - BigNum { limbs: [ 0x40e7eb01aad13b85caa34fd9b2b6ce, 0xb1d9346b1f74337b8c94b4e3a208e5, 0x007275 ] } , - BigNum { limbs: [ 0x560ac1281b27b43e0664b6a44982e0, 0xcd6eb725f684d2d28fd9dc0d920b64, 0x0018fd ] } , - BigNum { limbs: [ 0x679941d7e3344ac1f99b485bb67d21, 0xd9e4727786c36067482e2d9445f9ef, 0x005aef ] } , - BigNum { limbs: [ 0xe32750901a3f7f194e60f3a1520636, 0x8aeb7895fc66a495eee2bbe6b01a7b, 0x0057eb ] } , - BigNum { limbs: [ 0xda7cb26fe41c7fe6b19f0b5eadf9cb, 0x1c67b10780e18ea3e9254dbb27ead7, 0x001c02 ] } , - BigNum { limbs: [ 0x0dca122075b980101710f74afb7107, 0x332fb92a0335f1d522fdb2753b9f65, 0x006916 ] } , - BigNum { limbs: [ 0xafd9f0df88a27eefe8ef07b5048efa, 0x742370737a124164b50a572c9c65ee, 0x000ad7 ] } , - BigNum { limbs: [ 0xdf56fce8bd22da93050b36e83ec01b, 0x993461faf18fdb43e6645492ac8622, 0x007328 ] } , - BigNum { limbs: [ 0xde4d06174139246cfaf4c817c13fe6, 0x0e1ec7a28bb857f5f1a3b50f2b7f30, 0x0000c5 ] } , - BigNum { limbs: [ 0x7b4ee66e4caccb7d01866add958780, 0x7658084c71a467e701a945e9b713df, 0x0018ba ] } , - BigNum { limbs: [ 0x42551c91b1af3382fe7994226a7881, 0x30fb21510ba3cb52d65ec3b820f174, 0x005b33 ] } , - BigNum { limbs: [ 0x268d78c59e5b00babe46ffd11fbcb3, 0x4100d476d6f3f93aebe3fc216f657d, 0x006a9c ] } , - BigNum { limbs: [ 0x97168a3a6000fe4541b8ff2ee0434e, 0x66525526a65439feec240d80689fd6, 0x000951 ] } , - BigNum { limbs: [ 0x1d256641a44b4fd5a18486a7be5e27, 0xf0d85715c2389db00efaaefd61d069, 0x000d5f ] } , - BigNum { limbs: [ 0xa07e9cbe5a10af2a5e7b785841a1da, 0xb67ad287bb0f9589c90d5aa47634ea, 0x00668d ] } , - BigNum { limbs: [ 0x51124d9f38a3d264d11e5e40eed6d0, 0xcafd455e05aa248cee69c0ae043a7d, 0x004fb2 ] } , - BigNum { limbs: [ 0x6c91b560c5b82c9b2ee1a0bf112931, 0xdc55e43f779e0eace99e48f3d3cad6, 0x00243a ] } , - BigNum { limbs: [ 0x7b55024e5ba8cf5f15555ba7c59481, 0x15b1a10112962edb5dd3926d465f42, 0x00408b ] } , - BigNum { limbs: [ 0x424f00b1a2b32fa0eaaaa3583a6b80, 0x91a1889c6ab2045e7a34773491a611, 0x003362 ] } , - BigNum { limbs: [ 0xb19c81ab2696c55b36bed952623e8b, 0x9e2178411af206551ddbbdaeb8d015, 0x000ae8 ] } , - BigNum { limbs: [ 0x0c078154d7c539a4c94125ad9dc176, 0x0931b15c62562ce4ba2c4bf31f353e, 0x006905 ] } , - BigNum { limbs: [ 0x22d0dee6c4fa9c8c8d1d91a8df6b62, 0x7aacf872a63ad4ff231a7b85a381a9, 0x006f49 ] } , - BigNum { limbs: [ 0x9ad324193961627372e26d5720949f, 0x2ca6312ad70d5e3ab4ed8e1c3483aa, 0x0004a4 ] } , - BigNum { limbs: [ 0xde1cdf309627554e936d6ec3cf97e5, 0x2c5d26f96239e8c982570f56a5560e, 0x0049ba ] } , - BigNum { limbs: [ 0xdf8723cf6834a9b16c92903c30681c, 0x7af602a41b0e4a7055b0fa4b32af44, 0x002a33 ] } , - BigNum { limbs: [ 0x1d9f02709eb90093277736a35fa518, 0xb8a187109e2da14d12d4e142af50a6, 0x00588b ] } , - BigNum { limbs: [ 0xa005008f5fa2fe6cd888c85ca05ae9, 0xeeb1a28cdf1a91ecc533285f28b4ad, 0x001b61 ] } , - BigNum { limbs: [ 0xd19bc8cbd2faac2393abcd485fee6d, 0x63042b0b017f91f84ff7a4d483324e, 0x00493e ] } , - BigNum { limbs: [ 0xec083a342b6152dc6c5431b7a01194, 0x444efe927bc8a141881064cd54d304, 0x002aaf ] } , - BigNum { limbs: [ 0xfe867dc61896f386642e87c3c5520f, 0xd064608e5f2f072d1252b0ee8768db, 0x002e8e ] } , - BigNum { limbs: [ 0xbf1d8539e5c50b799bd1773c3aadf2, 0xd6eec90f1e192c0cc5b558b3509c77, 0x00455e ] } , - BigNum { limbs: [ 0x7c5b52db2a5c58e302dccf4853d300, 0x18783b6e925b1875aba524351eafb0, 0x001b40 ] } , - BigNum { limbs: [ 0x4148b024d3ffa61cfd232fb7ac2d01, 0x8edaee2eeaed1ac42c62e56cb955a3, 0x0058ad ] } , - BigNum { limbs: [ 0x31b0356f6a9b5c49182c727dbb9b2e, 0x482e7e3453a9b0c1aa8a59aec67c30, 0x0051b3 ] } , - BigNum { limbs: [ 0x8bf3cd9093c0a2b6e7d38c824464d3, 0x5f24ab69299e82782d7daff3118923, 0x00223a ] } , - BigNum { limbs: [ 0xecd8830dcc0a87a87aba4a19b4551b, 0x20593e7aa7d629114bed4238dad377, 0x003fa2 ] } , - BigNum { limbs: [ 0xd0cb7ff2325177578545b4e64baae6, 0x86f9eb22d5720a288c1ac768fd31db, 0x00344b ] } , - BigNum { limbs: [ 0x749ce3d6806cc2df259f8f0b5c45d6, 0x9de85005026e67409b01de51fdb529, 0x00012e ] } , - BigNum { limbs: [ 0x49071f297def3c20da606ff4a3ba2b, 0x096ad9987ad9cbf93d062b4fda502a, 0x0072bf ] } , - BigNum { limbs: [ 0x206fbc4adcbd25d3873ed3a6ec005f, 0xa54afcaeb187f4382c695d1c52f9a4, 0x002a07 ] } , - BigNum { limbs: [ 0x9d3446b5219ed92c78c12b5913ffa2, 0x02082ceecbc03f01ab9eac85850baf, 0x0049e6 ] } , - BigNum { limbs: [ 0x05eef4a96aad48bd7831edbb030fe8, 0x5814750a6cbe6d7b9d657ca5570433, 0x003ec1 ] } , - BigNum { limbs: [ 0xb7b50e5693aeb64287ce1144fcf019, 0x4f3eb4931089c5be3aa28cfc810120, 0x00352c ] } , - BigNum { limbs: [ 0x8cca56e78e96b9e0a8ac1b333b6dd3, 0x735d04dc0040e8378be639ffa7e013, 0x00323f ] } , - BigNum { limbs: [ 0x30d9ac186fc5451f5753e3ccc4922e, 0x33f624c17d074b024c21cfa2302540, 0x0041ae ] } , - BigNum { limbs: [ 0x6fbe9550966ceedce70e087bbfc955, 0xa59c190e10e0d2f740262a46581b55, 0x000356 ] } , - BigNum { limbs: [ 0x4de56daf67ef102318f1f6844036ac, 0x01b7108f6c67604297e1df5b7fe9fe, 0x007097 ] } , - BigNum { limbs: [ 0xe18e474ae247464219652d417991d9, 0x59e2fa4a0e2d43e305da5e1bbe7b40, 0x001cac ] } , - BigNum { limbs: [ 0xdc15bbb51c14b8bde69ad1be866e28, 0x4d702f536f1aef56d22dab86198a12, 0x005741 ] } , - BigNum { limbs: [ 0xa918bc0373c6c8466b081672596f68, 0xe2053bec9fec3247210a1e7da36c46, 0x001f43 ] } , - BigNum { limbs: [ 0x148b46fc8a9536b994f7e88da69099, 0xc54dedb0dd5c00f2b6fdeb2434990d, 0x0054a9 ] } , - BigNum { limbs: [ 0xdd6fb6b626c0980deb33b55635d786, 0x2b7ad6b8e554b9e31698cf2929dc64, 0x002201 ] } , - BigNum { limbs: [ 0xe0344c49d79b66f214cc49a9ca287b, 0x7bd852e497f37956c16f3a78ae28ee, 0x0051ec ] } , - BigNum { limbs: [ 0x93bae27d7c8966716d5f7d8adc97ea, 0x1b0361161a437bc9bc70a777b79a25, 0x006474 ] } , - BigNum { limbs: [ 0x29e9208281d2988e92a08175236817, 0x8c4fc8876304b7701b97622a206b2e, 0x000f79 ] } , - BigNum { limbs: [ 0x903c61723623d784ae05866017ee40, 0x39f9472de76f53fe5729a1399f1093, 0x0031e3 ] } , - BigNum { limbs: [ 0x2d67a18dc838277b51fa789fe811c1, 0x6d59e26f95d8df3b80de686838f4c0, 0x00420a ] } , - BigNum { limbs: [ 0x24d57952c2179c0ade8d476f637dd2, 0x97e408eec004f78e806eb0f4022ff0, 0x0071b5 ] } , - BigNum { limbs: [ 0x98ce89ad3c4462f52172b7909c822f, 0x0f6f20aebd433bab579958add5d563, 0x000238 ] } , - BigNum { limbs: [ 0x10182ef83597e2fd1d06b2287e2963, 0xbaf250f91eab2bea3d671d9097441d, 0x005c2b ] } , - BigNum { limbs: [ 0xad8bd407c8c41c02e2f94cd781d69e, 0xec60d8a45e9d074f9aa0ec1140c136, 0x0017c1 ] } , - BigNum { limbs: [ 0xb07fa0fdd65a6b01583cca695cba0f, 0xec810deb108a31e2fa98dc4b1e43c1, 0x001a4a ] } , - BigNum { limbs: [ 0x0d246202280193fea7c33496a345f2, 0xbad21bb26cbe0156dd6f2d56b9c192, 0x0059a2 ] } , - BigNum { limbs: [ 0x03e8294f5b02f3d11b3fcd84beba66, 0x1b38f45499d57d71ada7cd3a346199, 0x005cf0 ] } , - BigNum { limbs: [ 0xb9bbd9b0a3590b2ee4c0317b41459b, 0x8c1a3548e372b5c82a603c67a3a3ba, 0x0016fd ] } , - BigNum { limbs: [ 0xf819f7fbd18722ca2e518d542f5ab4, 0x35118c1d063b5c7bd78eafd2363f37, 0x005c5a ] } , - BigNum { limbs: [ 0xc58a0b042cd4dc35d1ae71abd0a54d, 0x72419d80770cd6be007959cfa1c61b, 0x001793 ] } , - BigNum { limbs: [ 0x4c749d2221afabc6570d2ea95bfd84, 0x230b34c24e2299c8a193d439a310dd, 0x001a41 ] } , - BigNum { limbs: [ 0x712f65dddcac5339a8f2d056a4027d, 0x8447f4db2f2599713674356834f476, 0x0059ac ] } , - BigNum { limbs: [ 0x5b986955de3d638aab34fd0a699f92, 0x5244f60d187bbb3dd6f817e650250b, 0x00730f ] } , - BigNum { limbs: [ 0x620b99aa201e9b7554cb01f596606f, 0x550e339064cc77fc010ff1bb87e048, 0x0000de ] } , - BigNum { limbs: [ 0x3db510e55d16a3e67a1afdf2e1d708, 0xaf7b83040141e91596d67292f596fa, 0x0016f9 ] } , - BigNum { limbs: [ 0x7feef21aa1455b1985e5010d1e28f9, 0xf7d7a6997c064a244131970ee26e59, 0x005cf3 ] } , - BigNum { limbs: [ 0xce9513fd14fa7340e4c962f57bba4b, 0x7452c5c978665bef62d338fc0848a3, 0x000809 ] } , - BigNum { limbs: [ 0xef0eef02e9618bbf1b369c0a8445b6, 0x330063d404e1d74a7534d0a5cfbcaf, 0x006be4 ] } , - BigNum { limbs: [ 0x7ab3a7d22d6c5592b4c291774613b8, 0x79855eaa576ca9326e0004f6e7c7e8, 0x00196f ] } , - BigNum { limbs: [ 0x42f05b2dd0efa96d4b3d6d88b9ec49, 0x2dcdcaf325db8a076a0804aaf03d6b, 0x005a7e ] } , - BigNum { limbs: [ 0x961fc06f917f456838fa701f0cdbfe, 0x91826d1ea37ca6b777d6a373de1df3, 0x000773 ] } , - BigNum { limbs: [ 0x278442906cdcb997c7058ee0f32403, 0x15d0bc7ed9cb8c826031662df9e760, 0x006c7a ] } , - BigNum { limbs: [ 0x3bea52fcee5c63623d46a32577733e, 0x40908d912fb4d3aadb67990338294c, 0x0024e3 ] } , - BigNum { limbs: [ 0x81b9b0030fff9b9dc2b95bda888cc3, 0x66c29c0c4d935f8efca0709e9fdc07, 0x004f0a ] } , - BigNum { limbs: [ 0x0c65a059be118a25093e32d48647fc, 0x89a064a13d0524e66bbc118025ac0b, 0x004560 ] } , - BigNum { limbs: [ 0xb13e62a6404a74daf6c1cc2b79b805, 0x1db2c4fc40430e536c4bf821b25948, 0x002e8d ] } , - BigNum { limbs: [ 0x72d3eac34989c0c460bf22c6dd910f, 0xebc8ca0be3db6b57d03403d311f62f, 0x002789 ] } , - BigNum { limbs: [ 0x4ad0183cb4d23e3b9f40dc39226ef2, 0xbb8a5f91996cc7e207d405cec60f24, 0x004c63 ] } , - BigNum { limbs: [ 0xa058e2c2a8dc2b2f4286ba7a4e32a8, 0xa84ec3c5e8eac82a05812d8bb32c75, 0x00595f ] } , - BigNum { limbs: [ 0x1d4b203d557fd3d0bd794485b1cd59, 0xff0465d7945d6b0fd286dc1624d8de, 0x001a8d ] } , - BigNum { limbs: [ 0x3e55838f11d552fa1d1933f24d7bfd, 0x35a06ce0919752c9a55bbbc7e37efe, 0x0051c0 ] } , - BigNum { limbs: [ 0x7f4e7f70ec86ac05e2e6cb0db28404, 0x71b2bcbcebb0e07032ac4dd9f48655, 0x00222d ] } , - BigNum { limbs: [ 0x8bcd5f497503b12d0f0a19166b00c7, 0x0e645548e4bcc54b5ed9c1a33946bd, 0x004185 ] } , - BigNum { limbs: [ 0x31d6a3b689584dd2f0f5e5e994ff3a, 0x98eed454988b6dee792e47fe9ebe96, 0x003268 ] } , - BigNum { limbs: [ 0xebfd640c6d99e1b579a40cf2801b02, 0x2aab2ab6864674ce062206a898e6d8, 0x00698d ] } , - BigNum { limbs: [ 0xd1a69ef390c21d4a865bf20d7fe4ff, 0x7ca7fee6f701be6bd1e602f93f1e7a, 0x000a60 ] } , - BigNum { limbs: [ 0x5afb20b758d4c56810b3b69d253b76, 0x48761d47bb2dbdcc28003263f82d28, 0x00736a ] } , - BigNum { limbs: [ 0x62a8e248a5873997ef4c4862dac48b, 0x5edd0c55c21a756db007d73ddfd82b, 0x000083 ] } , - BigNum { limbs: [ 0xc1ad4c687f28a233811ea1fe0c65f4, 0x66679a5d88b1ecfbede342dee7f415, 0x001bb4 ] } , - BigNum { limbs: [ 0xfbf6b6977f335ccc7ee15d01f39a0d, 0x40eb8f3ff496463dea24c6c2f0113d, 0x005839 ] } , - BigNum { limbs: [ 0x140b7174540d1ee0723c72eb58f584, 0x0d469c569786f01e6f45ceee8419f9, 0x002153 ] } , - BigNum { limbs: [ 0xa998918baa4ee01f8dc38c14a70a7d, 0x9a0c8d46e5c1431b68c23ab353eb5a, 0x00529a ] } , - BigNum { limbs: [ 0xc7ab07e301263fbe92da98becd1980, 0xfa81cc9e333fd5f34d908dff438caa, 0x00104b ] } , - BigNum { limbs: [ 0xf5f8fb1cfd35bf416d25664132e681, 0xacd15cff4a085d468a777ba29478a8, 0x0063a1 ] } , - BigNum { limbs: [ 0x1c5b62960ddd7bf7a3f674f9b19bf4, 0x8a0fee2cab3a400753b97514ed7663, 0x001a30 ] } , - BigNum { limbs: [ 0xa148a069f07e83085c098a064e640d, 0x1d433b70d20df332844e948cea8ef0, 0x0059bd ] } , - BigNum { limbs: [ 0x8b6515f4891a079d93099bed238a2d, 0xb683645e7a9b063a79a35d016c0793, 0x006ecb ] } , - BigNum { limbs: [ 0x323eed0b7541f7626cf66312dc75d4, 0xf0cfc53f02ad2cff5e64aca06bfdc0, 0x000521 ] } , - BigNum { limbs: [ 0x50700bdc4b9b68122fe2e0669a2cc8, 0xc18d055596827a36b26c3985d06330, 0x00035b ] } , - BigNum { limbs: [ 0x6d33f723b2c096edd01d1e9965d339, 0xe5c62447e6c5b903259bd01c07a223, 0x007091 ] } , - BigNum { limbs: [ 0xeecf7cd0cd4949b5cc4b34b05aff2c, 0xc104bb6ae704668000c77dfd2ab5db, 0x002d17 ] } , - BigNum { limbs: [ 0xced4862f3112b54a33b4ca4fa500d5, 0xe64e6e329643ccb9d7408ba4ad4f77, 0x0046d5 ] } , - BigNum { limbs: [ 0x15b63f114c71efc32c2d1d3fc57bb5, 0xe009cb95e995039beacf8acebb1062, 0x006195 ] } , - BigNum { limbs: [ 0xa7edc3eeb1ea0f3cd3d2e1c03a844c, 0xc7495e0793b32f9ded387ed31cf4f1, 0x001257 ] } , - BigNum { limbs: [ 0xf304939c366da7fa6ceef222eb879a, 0x9af90ed12f4499f61f4617deac542e, 0x0006d4 ] } , - BigNum { limbs: [ 0xca9f6f63c7ee570593110cdd147867, 0x0c5a1acc4e039943b8c1f1c32bb124, 0x006d19 ] } , - BigNum { limbs: [ 0x1a907743c3d4b3b9f177b76f473cbc, 0x1ce244d73adbedbfb8fc9a7be5d5c8, 0x002a44 ] } , - BigNum { limbs: [ 0xa3138bbc3a874b460e884790b8c345, 0x8a70e4c6426c457a1f0b6f25f22f8b, 0x0049a9 ] } , - BigNum { limbs: [ 0xac3a69d3f05c06b6526124c54da696, 0xba3f3484126d34771621130c70cbfc, 0x0007ba ] } , - BigNum { limbs: [ 0x1169992c0dfff849ad9eda3ab2596b, 0xed13f5196adafec2c1e6f695673957, 0x006c32 ] } , - BigNum { limbs: [ 0x680114a074f1baf65070e6d99ba93c, 0xfb30ee127ca0dc895e94a770ff3373, 0x002096 ] } , - BigNum { limbs: [ 0x55a2ee5f896a4409af8f18266456c5, 0xac223b8b00a756b079736230d8d1e0, 0x005356 ] } , - BigNum { limbs: [ 0x9258044aa060587c5dfd459fa42382, 0xd9cfdbfc9d66f6151fb652c0f57149, 0x0018b5 ] } , - BigNum { limbs: [ 0x2b4bfeb55dfba683a202b9605bdc7f, 0xcd834da0dfe13d24b851b6e0e2940a, 0x005b37 ] } , - BigNum { limbs: [ 0x27a423c7cc92cc140700f6f5ad1992, 0x160d7fc7387b84be2f7125588a799d, 0x003da1 ] } , - BigNum { limbs: [ 0x95ffdf3831c932ebf8ff080a52e66f, 0x9145a9d644ccae7ba896e4494d8bb6, 0x00364c ] } , - BigNum { limbs: [ 0x69193792854e59eaa83d0bb9842e37, 0x55f8128b96e1bec7f66e6610a74bbd, 0x006d34 ] } , - BigNum { limbs: [ 0x548acb6d790da51557c2f3467bd1ca, 0x515b1711e6667471e199a39130b996, 0x0006b9 ] } , - BigNum { limbs: [ 0xba514cd0bf3bc04c72f9b057bbbeda, 0xad4f7c60faf33102bf19312d4f8a02, 0x0018fe ] } , - BigNum { limbs: [ 0x0352b62f3f203eb38d064ea8444127, 0xfa03ad3c8255023718eed874887b51, 0x005aee ] } , - BigNum { limbs: [ 0x50400a4d7958bad4bc9284b961cfbc, 0xd3b1f84b876e27307b162670856cd9, 0x002777 ] } , - BigNum { limbs: [ 0x6d63f8b28503442b436d7a469e3045, 0xd3a13151f5da0c095cf1e33152987a, 0x004c75 ] } , - BigNum { limbs: [ 0x5aad4b9c1dd14b87b9261d38ab4a25, 0x5c5bb54b12a82b3248a8f8582464c8, 0x004171 ] } , - BigNum { limbs: [ 0x62f6b763e08ab37846d9e1c754b5dc, 0x4af774526aa008078f5f1149b3a08b, 0x00327c ] } , - BigNum { limbs: [ 0xd7a64cccac9b12ac9567be9a36d522, 0xc447ce21b78aefacaa48c2c4827459, 0x006b54 ] } , - BigNum { limbs: [ 0xe5fdb63351c0ec536a984065c92adf, 0xe30b5b7bc5bd438d2dbf46dd5590f9, 0x000898 ] } , - BigNum { limbs: [ 0x8feed2f822e3f634d926b66d9a40d9, 0x7051d2cfcef60b4704bcfac11d52d8, 0x0012ea ] } , - BigNum { limbs: [ 0x2db53007db7808cb26d9489265bf28, 0x370156cdae5227f2d34b0ee0bab27b, 0x006103 ] } , - BigNum { limbs: [ 0xd479a309a7768d1dad095b97e1f99c, 0x5f2b8f504ab5b1261c30d1e2c9a258, 0x000c36 ] } , - BigNum { limbs: [ 0xe92a5ff656e571e252f6a3681e0665, 0x48279a4d32928213bbd737bf0e62fa, 0x0067b7 ] } , - BigNum { limbs: [ 0x736de903ce2b7aaddcfc96a506dae2, 0xbb19b5815e67af1b0f713a146c9387, 0x00346c ] } , - BigNum { limbs: [ 0x4a3619fc303084522303685af9251f, 0xec39741c1ee0841ec896cf8d6b71cc, 0x003f80 ] } , - BigNum { limbs: [ 0xb3f165d554150970217c6264ef06a7, 0xb2d1c312e47ba1d384187ac0cbd3f3, 0x0068a5 ] } , - BigNum { limbs: [ 0x09b29d2aaa46f58fde839c9b10f95a, 0xf481668a98cc916653ef8ee10c3160, 0x000b47 ] } , - BigNum { limbs: [ 0x305485b09dd0d77ce50ec0e597b1be, 0xbc95e93142ab188f4c46937150a9b9, 0x004d83 ] } , - BigNum { limbs: [ 0x8d4f7d4f608b27831af13e1a684e43, 0xeabd406c3a9d1aaa8bc17630875b9a, 0x002669 ] } , - BigNum { limbs: [ 0x5e4ac091a8413b5f2fb9c8ee9f3784, 0xb0d68f671db5f1b534e07ce710985d, 0x0055c4 ] } , - BigNum { limbs: [ 0x5f59426e561ac3a0d046361160c87d, 0xf67c9a365f924184a3278cbac76cf6, 0x001e28 ] } , - BigNum { limbs: [ 0x089f3a743c502732d4d0b2be200c36, 0x89a7a2513fddbc12df9658c7b4a74b, 0x000a5e ] } , - BigNum { limbs: [ 0xb504c88bc20bd7cd2b2f4c41dff3cb, 0x1dab874c3d6a7726f871b0da235e08, 0x00698f ] } , - BigNum { limbs: [ 0x5e6f6b805b1acb8faa4aea5baef097, 0x701853308eaff1326910bc966667fe, 0x001616 ] } , - BigNum { limbs: [ 0x5f34977fa341337055b514a4510f6a, 0x373ad66cee9842076ef74d0b719d55, 0x005dd7 ] } , - BigNum { limbs: [ 0x515de81a8f54d10bdbcbe1522354a4, 0x99bc6abc5e8ce134e3c781697fafab, 0x00294c ] } , - BigNum { limbs: [ 0x6c461ae56f072df424341daddcab5d, 0x0d96bee11ebb5204f44088385855a8, 0x004aa1 ] } , - BigNum { limbs: [ 0xaf1958d3f38148b9522b20ae99e8eb, 0x8fab0ad3ea6c60070f1a3e701e4021, 0x000461 ] } , - BigNum { limbs: [ 0x0e8aaa2c0adab646add4de51661716, 0x17a81ec992dbd332c8edcb31b9c532, 0x006f8c ] } , - BigNum { limbs: [ 0x2736107d34be5daadbf867e295fe4e, 0xe2b1413ae56b13c6ed1276f03221d7, 0x006388 ] } , - BigNum { limbs: [ 0x966df282c99da1552407971d6a01b3, 0xc4a1e86297dd1f72eaf592b1a5e37c, 0x001064 ] } , - BigNum { limbs: [ 0xde4e04f17d1bbebad332c47b502202, 0xe6965a8b5056b3aff7b76fe8a3969e, 0x002429 ] } , - BigNum { limbs: [ 0xdf55fe0e814040452ccd3a84afddff, 0xc0bccf122cf17f89e05099b9346eb4, 0x004fc3 ] } , - BigNum { limbs: [ 0x2d7ed96060d2064f5bf1a980b4b953, 0xef839c67e73b2b58548adad886286f, 0x0067de ] } , - BigNum { limbs: [ 0x9025299f9d89f8b0a40e557f4b46ae, 0xb7cf8d35960d07e1837d2ec951dce4, 0x000c0e ] } , - BigNum { limbs: [ 0x5b275c4ae15be49062ff9a0538ec84, 0xecbcd74b6124435ea8ffe19c8c85a0, 0x000496 ] } , - BigNum { limbs: [ 0x627ca6b51d001a6f9d0064fac7137d, 0xba9652521c23efdb2f0828054b7fb3, 0x006f56 ] } , - BigNum { limbs: [ 0x65da083310e06da099ecb7d80ab778, 0xe6259f2dfb34f6430aea6aa55bf0e5, 0x0007de ] } , - BigNum { limbs: [ 0x57c9facced7b915f66134727f54889, 0xc12d8a6f82133cf6cd1d9efc7c146e, 0x006c0e ] } , - BigNum { limbs: [ 0x8a0bce9fdfac61064a5280cb9b0a5c, 0x564df61c66ea2dca882e26bcc0c102, 0x0022de ] } , - BigNum { limbs: [ 0x339834601eaf9df9b5ad7e3464f5a5, 0x51053381165e056f4fd9e2e5174451, 0x00510f ] } , - BigNum { limbs: [ 0xd388dec8bdb5c912e39b8b4c1ce30a, 0x38f4465cd0832f946b3f886734d3ac, 0x00512a ] } , - BigNum { limbs: [ 0xea1b243740a635ed1c6473b3e31cf7, 0x6e5ee340acc503a56cc8813aa331a6, 0x0022c3 ] } , - BigNum { limbs: [ 0x1803cb0ce55a68b138b29831a31ae4, 0xd5b1c6859a593bf47374fb414144fe, 0x000b9a ] } , - BigNum { limbs: [ 0xa5a037f31901964ec74d66ce5ce51d, 0xd1a16317e2eef74564930e6096c055, 0x006852 ] } , - BigNum { limbs: [ 0x62075a6764c01e1be69f3270830aad, 0x969225ba3389447bddbac2fd51ed68, 0x005807 ] } , - BigNum { limbs: [ 0x5b9ca898999be0e41960cc8f7cf554, 0x10c103e349beeebdfa4d46a48617eb, 0x001be6 ] } , - BigNum { limbs: [ 0xf3bdbc0f422b0a94e53fb564bdd489, 0x70ead42b9162943f2b9abaa7250db0, 0x005c61 ] } , - BigNum { limbs: [ 0xc9e646f0bc30f46b1ac0499b422b78, 0x36685571ebe59efaac6d4efab2f7a2, 0x00178c ] } , - BigNum { limbs: [ 0x7715244985e12969c563a89174294c, 0x146a268b13c20cc5580a897bad41f4, 0x0035f0 ] } , - BigNum { limbs: [ 0x468edeb6787ad5963a9c566e8bd6b5, 0x92e90312698626747ffd80262ac35f, 0x003dfd ] } , - BigNum { limbs: [ 0x1bb332b4e8ce845d8e6990bfa23004, 0xbc8a3a58c72ad4fbf85ba3c7b295cb, 0x003c5d ] } , - BigNum { limbs: [ 0xa1f0d04b158d7aa271966e405dcffd, 0xeac8ef44b61d5e3ddfac65da256f88, 0x00378f ] } , - BigNum { limbs: [ 0x4c06153eb88810ba7f245503b95a8d, 0x1b18f176a5e0bf948a2120473a20d3, 0x0063c2 ] } , - BigNum { limbs: [ 0x719dedc145d3ee4580dba9fc46a574, 0x8c3a3826d76773a54de6e95a9de480, 0x00102b ] } , - BigNum { limbs: [ 0x501e5b050695d67acc968a7ee39687, 0xe9acd483910f8d1373f244cb09332b, 0x0038b7 ] } , - BigNum { limbs: [ 0x6d85a7faf7c62885336974811c697a, 0xbda65519ec38a6266415c4d6ced228, 0x003b35 ] } , - BigNum { limbs: [ 0x6c95434baa21c004caf2400fd5ee93, 0x01e4a8a5521a3cc485d9d1f4893b37, 0x005ae6 ] } , - BigNum { limbs: [ 0x510ebfb4543a3efb350dbef02a116e, 0xa56e80f82b2df675522e37ad4eca1c, 0x001907 ] } , - BigNum { limbs: [ 0xaca11799075f19a1afe59459ec7a6c, 0x1932f58837e2fd33cb428c4702ad69, 0x0006b0 ] } , - BigNum { limbs: [ 0x1102eb66f6fce55e501a6aa6138595, 0x8e203415456536060cc57d5ad557ea, 0x006d3d ] } , - BigNum { limbs: [ 0x3fb9a2d6fcdc22625384be62a7a2e8, 0xe66c7ea5ba6f2c5ded5ceeccb2adf6, 0x00109d ] } , - BigNum { limbs: [ 0x7dea6029017fdc9dac7b409d585d19, 0xc0e6aaf7c2d906dbeaab1ad525575d, 0x00634f ] } , - BigNum { limbs: [ 0x863f5f009ecad09830635b160a4e50, 0xe86e2ca5471eb6794f0e98b62bca80, 0x0014cc ] } , - BigNum { limbs: [ 0x3764a3ff5f912e67cf9ca3e9f5b1b1, 0xbee4fcf836297cc088f970ebac3ad3, 0x005f20 ] } , - BigNum { limbs: [ 0x4a14f4b69dcc7f13c76b01443a1a6a, 0x3f2176d7176b4e16fbfa13619ed849, 0x00455c ] } , - BigNum { limbs: [ 0x738f0e49608f7fec3894fdbbc5e597, 0x6831b2c665dce522dc0df640392d0a, 0x002e91 ] } , - BigNum { limbs: [ 0x0bd5440656804fe785f7e33fdf3618, 0x5d764886ee710487aa8f6987c373cb, 0x002b27 ] } , - BigNum { limbs: [ 0xb1cebef9a7dbaf187a081bc020c9e9, 0x49dce1168ed72eb22d78a01a149188, 0x0048c6 ] } , - BigNum { limbs: [ 0x4537fd0d912eeaf8d0009cc2a6c535, 0x61eb978ffd8a5d8cb9d35a162fdbd5, 0x0028de ] } , - BigNum { limbs: [ 0x786c05f26d2d14072fff623d593acc, 0x4567920d7fbdd5ad1e34af8ba8297e, 0x004b0f ] } , - BigNum { limbs: [ 0x1d1aec1b762d2b71962ed94d9ec469, 0x8340e97d268e6db2b2d9ca2e4902c2, 0x005ea0 ] } , - BigNum { limbs: [ 0xa08916e4882ed38e69d125b2613b98, 0x2412402056b9c587252e3f738f0291, 0x00154d ] } , - BigNum { limbs: [ 0x1959d9d4d000d57d8a7a6c8da4a98a, 0x695f56d8f6c543c94f59a6eb37f312, 0x00278e ] } , - BigNum { limbs: [ 0xa44a292b2e5b2982758592725b5677, 0x3df3d2c48682ef7088ae62b6a01241, 0x004c5f ] } , - BigNum { limbs: [ 0x7fe3b9ce8d4477e7b70dbad015d339, 0x391ed371c0f55135022b211d95bd0a, 0x00473d ] } , - BigNum { limbs: [ 0x3dc049317117871848f2442fea2cc8, 0x6e34562bbc52e204d5dce884424849, 0x002cb0 ] } , - BigNum { limbs: [ 0xeb83e42ef3f6bff9ed4f03933eef85, 0xdbabda2a09d6a9ca21650de7491c30, 0x0007d1 ] } , - BigNum { limbs: [ 0xd2201ed10a653f0612b0fb6cc1107c, 0xcba74f737371896fb6a2fbba8ee922, 0x006c1b ] } , - BigNum { limbs: [ 0xde1994dace1ccf2f3ec47bd8b0ba51, 0xec2473e12abc21c1bcc99837c8b4f4, 0x00480f ] } , - BigNum { limbs: [ 0xdf8a6e25303f2fd0c13b83274f45b0, 0xbb2eb5bc528c11781b3e716a0f505e, 0x002bdd ] } , - BigNum { limbs: [ 0xeb78f9f7d520bba268f1f3f9991f29, 0xa0cff984144a7eec9c9f7a1d45bf48, 0x0018ea ] } , - BigNum { limbs: [ 0xd22b0908293b435d970e0b0666e0d8, 0x0683301968fdb44d3b688f8492460a, 0x005b03 ] } , - BigNum { limbs: [ 0xf811d4c6505005d5191d3dde403c3e, 0x091c4b9d1142e84835306f7d058a71, 0x0003ed ] } , - BigNum { limbs: [ 0xc5922e39ae0bf92ae6e2c121bfc3c3, 0x9e36de006c054af1a2d79a24d27ae1, 0x007000 ] } , - BigNum { limbs: [ 0xd7699069b48f58d70edde47d675fa1, 0xc4567150a5beaddfcf3650346bbe9e, 0x00617a ] } , - BigNum { limbs: [ 0xe63a729649cca628f1221a8298a060, 0xe2fcb84cd789855a08d1b96d6c46b4, 0x001272 ] } , - BigNum { limbs: [ 0x5dbfac1f1fe4b9be012e3d0f88b8f7, 0xb7b62c9021abf738c5833b75cdaa6d, 0x001b02 ] } , - BigNum { limbs: [ 0x5fe456e0de774541fed1c1f077470a, 0xef9cfd0d5b9c3c011284ce2c0a5ae6, 0x0058ea ] } , - BigNum { limbs: [ 0x6f2857c36a7e1d9b6c9285b13538ad, 0x18566cfd81a49b5745a08aa3699d08, 0x005ac0 ] } , - BigNum { limbs: [ 0x4e7bab3c93dde164936d794ecac754, 0x8efcbc9ffba397e292677efe6e684b, 0x00192d ] } , - BigNum { limbs: [ 0xca09572342def7ba5726e06aa67c30, 0xb9bfed75084452e1463e0a059e7d7e, 0x006c8f ] } , - BigNum { limbs: [ 0xf39aabdcbb7d0745a8d91e955983d1, 0xed933c287503e05891c9ff9c3987d4, 0x00075d ] } , - BigNum { limbs: [ 0xb8cb20a77d72301e268819ba508ef6, 0x479ce465498369c5df0b617bd142d6, 0x002170 ] } , - BigNum { limbs: [ 0x04d8e25880e9cee1d977e545af710b, 0x5fb6453833c4c973f8fca82606c27d, 0x00527d ] } , - BigNum { limbs: [ 0x26621eaacc2ecdd7a9ede4acccf961, 0xd336fe1aa081805c3d7296833b35a8, 0x001689 ] } , - BigNum { limbs: [ 0x9741e455322d312856121a533306a0, 0xd41c2b82dcc6b2dd9a95731e9ccfab, 0x005d63 ] } , - BigNum { limbs: [ 0x201a5821e639da07da2d48f5cd0787, 0x5c66a3e483f153122fd2b0ffde049a, 0x0055f9 ] } , - BigNum { limbs: [ 0x9d89aade182224f825d2b60a32f87a, 0x4aec85b8f956e027a83558a1fa00b9, 0x001df4 ] } , - BigNum { limbs: [ 0x9026546d768efac20b830cc925e818, 0xb21e5543ecce6dc01e733db2cbd86a, 0x0060e6 ] } , - BigNum { limbs: [ 0x2d7dae9287cd043df47cf236da17e9, 0xf534d4599079c579b994cbef0c2ce9, 0x001306 ] } , - BigNum { limbs: [ 0xf1f245ca8edb3130d3acddb0356ceb, 0xc3bb68888454c3916432097245e578, 0x003f57 ] } , - BigNum { limbs: [ 0xcbb1bd356f80cdcf2c53214fca9316, 0xe397c114f8f36fa873d6002f921fda, 0x003495 ] } , - BigNum { limbs: [ 0x5b416bad06a7528bc1932b0d274a1d, 0xf02be95b1a9e70f081507724a71a88, 0x005b78 ] } , - BigNum { limbs: [ 0x62629752f7b4ac743e6cd3f2d8b5e4, 0xb727404262a9c24956b7927d30eacb, 0x001874 ] } , - BigNum { limbs: [ 0xb0a7d87187c5c0e304a47cfe2c39f0, 0xcba79e856c22293082360528eebee2, 0x003b4a ] } , - BigNum { limbs: [ 0x0cfc2a8e76963e1cfb5b8201d3c611, 0xdbab8b1811260a0955d20478e94671, 0x0038a2 ] } , - BigNum { limbs: [ 0x6d86f1951712e83bf2a9b9d4a639c1, 0x251c92d55cc1d86c4cbda4eb5e6270, 0x004105 ] } , - BigNum { limbs: [ 0x501d116ae74916c40d56452b59c640, 0x823696c820865acd8b4a64b679a2e3, 0x0032e8 ] } , - BigNum { limbs: [ 0x2032b420d1fe8b1602cb7786c1f5e3, 0x2fd57acdc0bc3bc2e754e78bbdb068, 0x0067eb ] } , - BigNum { limbs: [ 0x9d714edf2c5d73e9fd3487793e0a1e, 0x777daecfbc8bf776f0b322161a54eb, 0x000c02 ] } , - BigNum { limbs: [ 0x1d8a62b9c4f076d098777bae4c5131, 0x62c281967ad887b5b1048c57291040, 0x00730e ] } , - BigNum { limbs: [ 0xa019a046396b882f67888351b3aed0, 0x4490a807026fab8427037d4aaef513, 0x0000df ] } , - BigNum { limbs: [ 0x05c9aa3ad941421836ad1a4285082d, 0x64bedefa515a0baf4bd9cc81ff243e, 0x001568 ] } , - BigNum { limbs: [ 0xb7da58c5251abce7c952e4bd7af7d4, 0x42944aa32bee278a8c2e3d1fd8e115, 0x005e85 ] } , - BigNum { limbs: [ 0x0c3ae2947f2aaaf882c6f1282fa4bf, 0x9ceaf4033df64e318d58820a2e95f5, 0x003256 ] } , - BigNum { limbs: [ 0xb169206b7f3154077d390dd7d05b42, 0x0a68359a3f51e5084aaf8797a96f5e, 0x004197 ] } , - BigNum { limbs: [ 0x819e5ef22725f40d41b8bf60aef96b, 0x217edb6cee5eb6a386acee69958ad7, 0x0024eb ] } , - BigNum { limbs: [ 0x3c05a40dd7360af2be473f9f510696, 0x85d44e308ee97c96515b1b38427a7c, 0x004f02 ] } , - BigNum { limbs: [ 0xfd86cce858f8c8c3adf3d3e5d685bf, 0x8c1e703f7f808df483f139d30e3c13, 0x001c1c ] } , - BigNum { limbs: [ 0xc01d3617a563363c520c2b1a297a42, 0x1b34b95dfdc7a5455416cfcec9c93f, 0x0057d1 ] } , - BigNum { limbs: [ 0xed617941b103b9bd7360167f49690f, 0xb7898c657ed61486518d8c5f968955, 0x0040b5 ] } , - BigNum { limbs: [ 0xd04289be4d5845428c9fe880b696f2, 0xefc99d37fe721eb3867a7d42417bfd, 0x003337 ] } , - BigNum { limbs: [ 0x768cbb400f3ad33232c7280ee80ad2, 0x20190a0862687ce549bde2dd6b0f1c, 0x004ddf ] } , - BigNum { limbs: [ 0x471747bfef212bcdcd38d6f117f52f, 0x873a1f951adfb6548e4a26c46cf637, 0x00260e ] } , - BigNum { limbs: [ 0xa1ce0189080895ba7d4348b3e9e6a5, 0xafb08780ceadafb713389188cd094f, 0x002e26 ] } , - BigNum { limbs: [ 0x1bd60176f653694582bcb64c16195c, 0xf7a2a21cae9a8382c4cf78190afc04, 0x0045c6 ] } , - BigNum { limbs: [ 0xaacd273b23eb136d7e35ad7dffbdb8, 0x386c09e2fd3d3b841c065526cbf892, 0x00219e ] } , - BigNum { limbs: [ 0x12d6dbc4da70eb9281ca5182004249, 0x6ee71fba800af7b5bc01b47b0c0cc1, 0x00524f ] } , - BigNum { limbs: [ 0xe01bf0fda622ef30b5dbc87cc84197, 0xeafa5e3ec783e66fd8bc18071b1f97, 0x00430b ] } , - BigNum { limbs: [ 0xdd88120258390fcf4a24368337be6a, 0xbc58cb5eb5c44cc9ff4bf19abce5bb, 0x0030e1 ] } , - BigNum { limbs: [ 0x144a26488e76c5f3f78dff3e64eff2, 0xd8c786d8f2a3a9f4d11fa88cb30729, 0x004479 ] } , - BigNum { limbs: [ 0xa959dcb76fe5390c0871ffc19b100f, 0xce8ba2c48aa4894506e8611524fe2a, 0x002f73 ] } , - BigNum { limbs: [ 0x4a1bd4592fe1551ea4d56a5d6a3654, 0x279f667a6ff2c62477cbd8d1dc7282, 0x003679 ] } , - BigNum { limbs: [ 0x73882ea6ce7aa9e15b2a94a295c9ad, 0x7fb3c3230d556d15603c30cffb92d1, 0x003d74 ] } , - BigNum { limbs: [ 0xc5e9ec9c4b3efb8902bffd4b07db39, 0x60cdeaa382f0eeb4135df31350fa9f, 0x00042f ] } , - BigNum { limbs: [ 0xf7ba1663b31d0376fd4001b4f824c8, 0x46853ef9fa574485c4aa168e870ab3, 0x006fbe ] } , - BigNum { limbs: [ 0xbc8a5b856414d3e0fda947724a81e9, 0xb0c5760e32cd0b9943d2d6d61529eb, 0x002ca0 ] } , - BigNum { limbs: [ 0x0119a77a9a472b1f0256b78db57e18, 0xf68db38f4a7b27a0943532cbc2db68, 0x00474c ] } , - BigNum { limbs: [ 0xa8119ed34f68195796130c33f27af7, 0xcfc06aac46bac4a4a9bfd42acfd1e9, 0x003288 ] } , - BigNum { limbs: [ 0x1592642caef3e5a869ecf2cc0d850a, 0xd792bef1368d6e952e48357708336a, 0x004164 ] } , - BigNum { limbs: [ 0xd34dc48b542a7916654b4e3193f385, 0xdbd781fc6d1c881dab49e15d37277d, 0x006a61 ] } , - BigNum { limbs: [ 0xea563e74aa3185e99ab4b0ce6c0c7c, 0xcb7ba7a1102bab1c2cbe2844a0ddd5, 0x00098b ] } , - BigNum { limbs: [ 0x7a246cd90253a0c3d729985a3d27ad, 0xf18f4ade05a6a3ebf7dbfa2a6d1169, 0x00418f ] } , - BigNum { limbs: [ 0x437f9626fc085e3c28d666a5c2d854, 0xb5c3debf77a18f4de02c0f776af3ea, 0x00325d ] } , - BigNum { limbs: [ 0xb978246a8a9751e006a537b0b22aa3, 0xb23b00803f2306393249e58f2e6d9d, 0x002324 ] } , - BigNum { limbs: [ 0x042bde9573c4ad1ff95ac74f4dd55e, 0xf518291d3e252d00a5be2412a997b6, 0x0050c8 ] } , - BigNum { limbs: [ 0xe9771aed2a45e4ed7a973f12c92d2b, 0x457c8751bd35931fcee5dda872f979, 0x000ec9 ] } , - BigNum { limbs: [ 0xd42ce812d4161a128568bfed36d2d6, 0x61d6a24bc012a01a09222bf9650bd9, 0x006524 ] } , - BigNum { limbs: [ 0x6eb9c39f25a1b6cad4adcb40845700, 0x0cf7a259f141112e10699e587abfb4, 0x0040e9 ] } , - BigNum { limbs: [ 0x4eea3f60d8ba48352b5233bf7ba901, 0x9a5b87438c07220bc79e6b495d459f, 0x003304 ] } , - BigNum { limbs: [ 0x55c873c327fe57370ab333c6f92093, 0x6ef876296e2b29311f879db097f3e9, 0x0033fd ] } , - BigNum { limbs: [ 0x67db8f3cd65da7c8f54ccb3906df6e, 0x385ab3740f1d0a08b8806bf140116a, 0x003ff0 ] } , - BigNum { limbs: [ 0xacb2cf03455d20a2195045a974862a, 0x51f5fedf54ea303d37414fe2284f56, 0x005f4e ] } , - BigNum { limbs: [ 0x10f133fcb8fede5de6afb9568b79d7, 0x555d2abe285e02fca0c6b9bfafb5fd, 0x00149f ] } , - BigNum { limbs: [ 0x063a5dd416fc7e587523b2c6c0bf06, 0x1a5ea6afd85d4791dc7d89fc483f7a, 0x006bfa ] } , - BigNum { limbs: [ 0xb769a52be75f80a78adc4c393f40fb, 0x8cf482eda4eaeba7fb8a7fa58fc5d9, 0x0007f3 ] } , - BigNum { limbs: [ 0xa066fe71d2adad04740fcd7b80fc99, 0x2a441d7ffda7d2a707cdd6d20c23ac, 0x00289e ] } , - BigNum { limbs: [ 0x1d3d048e2bae51fb8bf031847f0368, 0x7d0f0c1d7fa06092d03a32cfcbe1a7, 0x004b4f ] } , - BigNum { limbs: [ 0xede3875d96e2cd62979d1865413cb8, 0x278129efd34cb651d7c4276bdb209c, 0x004c48 ] } , - BigNum { limbs: [ 0xcfc07ba26779319d6862e69abec349, 0x7fd1ffada9fb7ce80043e235fce4b6, 0x0027a5 ] } , - BigNum { limbs: [ 0x9211824fd34cc6c76b6f5d6b8f1730, 0x4123de61856ae8ce8c8ee3d05f4bd7, 0x007381 ] } , - BigNum { limbs: [ 0x2b9280b02b0f38389490a19470e8d1, 0x662f4b3bf7dd4a6b4b7925d178b97c, 0x00006c ] } , - BigNum { limbs: [ 0x5b371e85e4ebbbc9ac443b6b1fe6b2, 0x987f518a9bb8270cb9aa18e75c64c6, 0x0058e6 ] } , - BigNum { limbs: [ 0x626ce47a1970433653bbc394e0194f, 0x0ed3d812e1900c2d1e5df0ba7ba08d, 0x001b07 ] } , - BigNum { limbs: [ 0xfe4a2d19b29c5bbc553c7e42f7b311, 0xc047cb8e976f912d2496f5d3df5ba3, 0x00209e ] } , - BigNum { limbs: [ 0xbf59d5e64bbfa343aac380bd084cf0, 0xe70b5e0ee5d8a20cb37113cdf8a9af, 0x00534e ] } , - BigNum { limbs: [ 0x6428df20f92acf73d509e47ebe32d7, 0x977fc989d6e9a45a613d58124dcd8c, 0x006af7 ] } , - BigNum { limbs: [ 0x597b23df05312f8c2af61a8141cd2a, 0x0fd36013a65e8edf76cab18f8a37c7, 0x0008f6 ] } , - BigNum { limbs: [ 0xa4cbd9833c3a414a181389f87bece1, 0x7743368184aff1caddd8e5b9862c15, 0x00428e ] } , - BigNum { limbs: [ 0x18d8297cc221bdb5e7ec7507841320, 0x300ff31bf898416efa2f23e851d93e, 0x00315f ] } , - BigNum { limbs: [ 0x03d461c35feb8959f37ab9f484d0ba, 0x402f68d642046c844b24b5fb7d2304, 0x007268 ] } , - BigNum { limbs: [ 0xb9cfa13c9e7075a60c85450b7b2f47, 0x6723c0c73b43c6b58ce353a65ae24f, 0x000185 ] } , - BigNum { limbs: [ 0x72fb7ca4c58800a9c8a7ac0afc154b, 0x9cf9569612de921e2c6b2e2b0e5b1f, 0x0045d0 ] } , - BigNum { limbs: [ 0x4aa8865b38d3fe56375852f503eab6, 0x0a59d3076a69a11bab9cdb76c9aa34, 0x002e1d ] } , - BigNum { limbs: [ 0x8e8e79ce1738afcbd889784fc85af0, 0x70adf3759a105ad6b00db8c6608aa4, 0x0037ee ] } , - BigNum { limbs: [ 0x2f158931e7234f34277686b037a511, 0x36a53627e337d86327fa50db777aaf, 0x003bff ] } , - BigNum { limbs: [ 0x62920b1726c6fbf8c8655cbd410ec7, 0x2205bb5233768eac7b3e1e56a597ad, 0x003714 ] } , - BigNum { limbs: [ 0x5b11f7e8d7950307379aa242bef13a, 0x854d6e4b49d1a48d5cc9eb4b326da6, 0x003cd9 ] } , - BigNum { limbs: [ 0x48da51a3ceef7da8462d95102f2604, 0x6380b57ff9a33393332f846410f366, 0x003f53 ] } , - BigNum { limbs: [ 0x74c9b15c2f6c8157b9d269efd0d9fd, 0x43d2741d83a4ffa6a4d8853dc711ed, 0x00349a ] } , - BigNum { limbs: [ 0x2b763fc1c4da11dee3b94096c967be, 0x2e2ea7ca3dc3e00372501f9a620697, 0x0029b9 ] } , - BigNum { limbs: [ 0x922dc33e3981ed211c46be69369843, 0x792481d33f84533665b7ea0775febc, 0x004a34 ] } , - BigNum { limbs: [ 0x4dfad4798e80cf4f71fa87d693d5dd, 0xf99d1c130150cf2f177d4c65cf9085, 0x000a52 ] } , - BigNum { limbs: [ 0x6fa92e866fdb2fb08e0577296c2a24, 0xadb60d8a7bf7640ac08abd3c0874ce, 0x00699a ] } , - BigNum { limbs: [ 0xace76ff79739280558a1daf69bb76b, 0x9a1d28915435498040eea16a597630, 0x002e21 ] } , - BigNum { limbs: [ 0x10bc93086722d6faa75e2409644896, 0x0d36010c2912e9b9971968377e8f23, 0x0045cc ] } , - BigNum { limbs: [ 0xab0cb85cf1ab233c52f846b770de97, 0x4db8b5ea55272bd9b05bc47234f06c, 0x004bf5 ] } , - BigNum { limbs: [ 0x12974aa30cb0dbc3ad07b8488f216a, 0x599a73b32821076027ac452fa314e7, 0x0027f8 ] } , - BigNum { limbs: [ 0xb5e1c37fc947d5601dede2df479679, 0xf7525102cbcbf698a3d11158073f9c, 0x002149 ] } , - BigNum { limbs: [ 0x07c23f803514299fe2121c20b86988, 0xb000d89ab17c3ca13436f849d0c5b7, 0x0052a3 ] } , - BigNum { limbs: [ 0x68b4524370c27f0fb67041c5129a32, 0xee2c40319d20456713bee1b503ea19, 0x0051f3 ] } , - BigNum { limbs: [ 0x54efb0bc8d997ff0498fbd3aed65cf, 0xb926e96be027edd2c44927ecd41b3a, 0x0021f9 ] } , - BigNum { limbs: [ 0xfa6503c4d05ba1ea36d1e453fdd087, 0xa362bd6b6a042cf83a952b74d32af6, 0x003b10 ] } , - BigNum { limbs: [ 0xc33eff3b2e005d15c92e1aac022f7a, 0x03f06c32134406419d72de2d04da5c, 0x0038dd ] } , - BigNum { limbs: [ 0x87bbd026fa86d5ef038837f0987616, 0xa4f668519c9b01f7d5c2d383ee5424, 0x001c8e ] } , - BigNum { limbs: [ 0x35e832d903d52910fc77c70f6789eb, 0x025cc14be0ad31420245361de9b12f, 0x00575f ] } , - BigNum { limbs: [ 0x05f87df80ac9fddd41e574458fd37c, 0x816f5ff8d2418cc7fecf9873ce9cbd, 0x001b37 ] } , - BigNum { limbs: [ 0xb7ab8507f3920122be1a8aba702c85, 0x25e3c9a4ab06a671d938712e096896, 0x0058b6 ] } , - BigNum { limbs: [ 0x53e58810b1cee006b3eb0cdec6a8c2, 0x381661c95526543f42237adbe725d4, 0x0025db ] } , - BigNum { limbs: [ 0x69be7aef4c8d1ef94c14f22139573f, 0x6f3cc7d42821defa95e48ec5f0df7f, 0x004e12 ] } , - BigNum { limbs: [ 0x49692c1d29ea093ad9908c78bbc1ba, 0x47e252806a5387191b04b833d6601d, 0x004911 ] } , - BigNum { limbs: [ 0x743ad6e2d471f5c5266f7287443e47, 0x5f70d71d12f4ac20bd03516e01a536, 0x002adc ] } , - BigNum { limbs: [ 0x917e3da2b9bb315d38cedd8d0fdb2c, 0x21e71d042942367c1710447002b2b9, 0x0026d7 ] } , - BigNum { limbs: [ 0x2c25c55d44a0cda2c7312172f024d5, 0x856c0c995405fcbdc0f7c531d5529a, 0x004d16 ] } , - BigNum { limbs: [ 0x9b656972e6cc487fbbf17bc15c64ac, 0x649c9174faecd5912df70ec1b97947, 0x005bd1 ] } , - BigNum { limbs: [ 0x223e998d178fb680440e833ea39b55, 0x42b69828825b5da8aa10fae01e8c0c, 0x00181c ] } , - BigNum { limbs: [ 0xad0b658b878cd33e40d756ff854ab9, 0xbbd5cab87cf836cd562985291f2333, 0x005353 ] } , - BigNum { limbs: [ 0x10989d7476cf2bc1bf28a8007ab548, 0xeb7d5ee5004ffc6c81de8478b8e220, 0x002099 ] } , - BigNum { limbs: [ 0x26cc6375bfcdf36c4d75133cfc0f8d, 0xde42ff094ff6c332b08fb7b9293b69, 0x004f11 ] } , - BigNum { limbs: [ 0x96d79f8a3e8e0b93b28aebc303f074, 0xc9102a942d517007277851e8aec9ea, 0x0024db ] } , - BigNum { limbs: [ 0x767fed4f084e0f5570c083ce5628ee, 0x4ba0c5dc95e95840ede1d53ed438c2, 0x00337f ] } , - BigNum { limbs: [ 0x472415b0f60defaa8f3f7b31a9d713, 0x5bb263c0e75edaf8ea26346303cc91, 0x00406e ] } , - BigNum { limbs: [ 0x9ae2975cf67ec45f2f249eac565c21, 0xc69b6a0ef1385b7d1adc6c9e1f5278, 0x0073aa ] } , - BigNum { limbs: [ 0x22c16ba307dd3aa0d0db6053a9a3e0, 0xe0b7bf8e8c0fd7bcbd2b9d03b8b2db, 0x000042 ] } , - BigNum { limbs: [ 0xe4aa0df97601afe87b01434fc4bad2, 0xd6874a3acdd969b93a9f9581e6db22, 0x0066b6 ] } , - BigNum { limbs: [ 0xd8f9f506885a4f1784febbb03b452f, 0xd0cbdf62af6ec9809d68741ff12a30, 0x000d36 ] } , - BigNum { limbs: [ 0x58269e818e3fc33ed6b1470d0d0994, 0x9febd6e43d38d853c0570cdbfc0b89, 0x004b66 ] } , - BigNum { limbs: [ 0x657d647e701c3bc1294eb7f2f2f66d, 0x076752b9400f5ae617b0fcc5dbf9ca, 0x002887 ] } , - BigNum { limbs: [ 0xc9c7c25300308ca93031353fe3c003, 0xcca26b4c54709d683b0430a4a5c85b, 0x000afc ] } , - BigNum { limbs: [ 0xf3dc40acfe2b7256cfcec9c01c3ffe, 0xdab0be5128d795d19d03d8fd323cf7, 0x0068f0 ] } , - BigNum { limbs: [ 0x83dcbb8737c64f21f698c3549e1769, 0xc7db395ba0b0fd78657de7686e3365, 0x006024 ] } , - BigNum { limbs: [ 0x39c74778c695afde09673bab61e898, 0xdf77f041dc9735c1728a223969d1ee, 0x0013c8 ] } , - BigNum { limbs: [ 0xa6da970c07d2f4672fbfd4c682cf8d, 0x054f510f1adf0d3a5af0340cd39621, 0x001c0e ] } , - BigNum { limbs: [ 0x16c96bf3f6890a98d0402a397d3074, 0xa203d88e626925ff7d17d595046f32, 0x0057df ] } , - BigNum { limbs: [ 0xeb1d39384b680169843829431e57fd, 0xc9fcdddf203264a8313119df103abc, 0x000379 ] } , - BigNum { limbs: [ 0xd286c9c7b2f3fd967bc7d5bce1a804, 0xdd564bbe5d15ce91a6d6efc2c7ca96, 0x007073 ] } , - BigNum { limbs: [ 0xd863493a775f14a7aaf7b62fda6cba, 0xece0e9a4b842539c3d85087d66ffb0, 0x006f80 ] } , - BigNum { limbs: [ 0xe540b9c586fcea58550848d0259347, 0xba723ff8c505df9d9a8301247105a2, 0x00046c ] } , - BigNum { limbs: [ 0x25f767bd489fccc3c1676c47894ba0, 0xd13e09d7af1a26b78eaf3df8bc95bc, 0x0062c4 ] } , - BigNum { limbs: [ 0x97ac9b42b5bc323c3e9892b876b461, 0xd6151fc5ce2e0c824958cba91b6f97, 0x001128 ] } , - BigNum { limbs: [ 0xda9d4dc7871d4a47af2d5b15406a72, 0x33fe081daf40e72e21fce524caa0b9, 0x004011 ] } , - BigNum { limbs: [ 0xe306b538773eb4b850d2a3eabf958f, 0x7355217fce074c0bb60b247d0d6499, 0x0033dc ] } , - BigNum { limbs: [ 0xe89be72af25d72b654f9c26799dcc7, 0x1a1266ade51931c4dadec9aeb860cb, 0x001f7e ] } , - BigNum { limbs: [ 0xd5081bd50bfe8c49ab063c9866233a, 0x8d40c2ef982f0174fd293ff31fa487, 0x00546f ] } , - BigNum { limbs: [ 0xe8c6934d213fe213b5cd83a2997e0e, 0x0fc72fbf98558aa91c8fa2a68184ad, 0x0031d3 ] } , - BigNum { limbs: [ 0xd4dd6fb2dd1c1cec4a327b5d6681f3, 0x978bf9dde4f2a890bb7866fb5680a5, 0x00421a ] } , - BigNum { limbs: [ 0x76bd1d8b43599a9af9ec6b82136fc7, 0xe2555448411c9fdd3bcb27daee1540, 0x006f03 ] } , - BigNum { limbs: [ 0x46e6e574bb0264650613937dec903a, 0xc4fdd5553c2b935c9c3ce1c6e9f013, 0x0004e9 ] } , - BigNum { limbs: [ 0x27279edc58fd1ce3909bdfa35ee205, 0x7df04eb2ae3e8875f56db1fbe72c64, 0x0072fc ] } , - BigNum { limbs: [ 0x967c6423a55ee21c6f641f5ca11dfc, 0x2962daeacf09aac3e29a57a5f0d8ef, 0x0000f1 ] } , - BigNum { limbs: [ 0x19167dd03b0082caa9050b145fc8ff, 0x29b3b56e181b7de6598d54383a7743, 0x0069c5 ] } , - BigNum { limbs: [ 0xa48d852fc35b7c3556faf3eba03702, 0x7d9f742f652cb5537e7ab5699d8e10, 0x000a28 ] } , - BigNum { limbs: [ 0x6ed594862ae70796b282ba55bd550f, 0x81d01c4a001d3738c02808219767c6, 0x001755 ] } , - BigNum { limbs: [ 0x4ece6e79d374f7694d7d44aa42aaf2, 0x25830d537d2afc0117e00180409d8d, 0x005c98 ] } , - BigNum { limbs: [ 0x0d80f013eb6d129170990306486340, 0xf2286dd35bc1d03f8875b901a1ea3f, 0x004758 ] } , - BigNum { limbs: [ 0xb02312ec12eeec6e8f66fbf9b79cc1, 0xb52abbca218662fa4f9250a0361b14, 0x002c94 ] } , - BigNum { limbs: [ 0xb6ee7abb0b512c4aff92c0ab6779fd, 0x9e6ca7456d51a8f9ddce3882b20010, 0x002222 ] } , - BigNum { limbs: [ 0x06b58844f30ad2b5006d3e54988604, 0x08e682580ff68a3ffa39d11f260543, 0x0051cb ] } , - BigNum { limbs: [ 0xb5bb56ff3185f6a6958a4de8220461, 0x8adb129134d545dcaef866cec41447, 0x00524d ] } , - BigNum { limbs: [ 0x07e8ac00ccd608596a75b117ddfba0, 0x1c78170c4872ed5d290fa2d313f10c, 0x0021a0 ] } , - BigNum { limbs: [ 0x8d0b8f5ef4f45aa414b4187bf0cefd, 0xc86e1684b663c2b3fd7da0d1731abe, 0x001859 ] } , - BigNum { limbs: [ 0x309873a10967a45beb4be6840f3104, 0xdee51318c6e47085da8a68d064ea95, 0x005b93 ] } , - BigNum { limbs: [ 0x51d705b1446605453da88542fd72f9, 0x5b3a9e5d2c3aede5eb002c2b60b93f, 0x00539f ] } , - BigNum { limbs: [ 0x6bccfd4eb9f5f9bac25779bd028d08, 0x4c188b40510d4553ed07dd76774c14, 0x00204e ] } , - BigNum { limbs: [ 0x20c5e1ac91e7043eb55cb297533407, 0xfaa743efbaf221d99fc92763044ae6, 0x005c43 ] } , - BigNum { limbs: [ 0x9cde21536c74fac14aa34c68accbfa, 0xacabe5adc2561160383ee23ed3ba6d, 0x0017a9 ] } , - BigNum { limbs: [ 0xaf9e2530eab9cf4264d6404a2733ac, 0x27f12d3a9a9ee77632a0defe39c33e, 0x006795 ] } , - BigNum { limbs: [ 0x0e05ddcf13a22fbd9b29beb5d8cc55, 0x7f61fc62e2a94bc3a5672aa39e4215, 0x000c58 ] } , - BigNum { limbs: [ 0x8648e1bd9e0ece0b288ed46081a8e5, 0xdc9e2560b853a8674746f1368083cd, 0x0018b0 ] } , - BigNum { limbs: [ 0x375b2142604d30f4d7712a9f7e571c, 0xcab5043cc4f48ad290c1186b578186, 0x005b3c ] } , - BigNum { limbs: [ 0xb072e3c322e74eb23d90e7a150a81f, 0x0e2241ddb7f31f96bcabcb3f5b3eff, 0x0073e0 ] } , - BigNum { limbs: [ 0x0d311f3cdb74b04dc26f175eaf57e2, 0x9930e7bfc55513a31b5c3e627cc654, 0x00000d ] } , - BigNum { limbs: [ 0xb307c4acc098af9cb7d0a095380a13, 0x3f93d39b0e35ce4610ed89ddafa938, 0x0054f5 ] } , - BigNum { limbs: [ 0x0a9c3e533dc34f63482f5e6ac7f5ee, 0x67bf56026f1264f3c71a7fc4285c1b, 0x001ef8 ] } , - BigNum { limbs: [ 0xc96dc7bd14fd4cc6265320eb04df1f, 0x03162d547d0b04b715cf2986e1bd7c, 0x003eef ] } , - BigNum { limbs: [ 0xf4363b42e95eb239d9acde14fb20e2, 0xa43cfc49003d2e82c238e01af647d6, 0x0034fe ] } , - BigNum { limbs: [ 0x6a261391ef2b05dcba1da9c0ea4d84, 0x6db34aa2ef6bab4614b52835830458, 0x001907 ] } , - BigNum { limbs: [ 0x537def6e0f30f92345e2553f15b27d, 0x399fdefa8ddc87f3c352e16c5500fb, 0x005ae6 ] } , - BigNum { limbs: [ 0x8e53b94e2d7a777de0dbdf025ab85c, 0x181891141667e186be8536666f274c, 0x00679f ] } , - BigNum { limbs: [ 0x2f5049b1d0e187821f241ffda547a5, 0x8f3a988966e051b31982d33b68de07, 0x000c4e ] } , - BigNum { limbs: [ 0xae7460b333dded75dc07e6b09841ae, 0x73938b410ebea7cc7d4d32121c4242, 0x001959 ] } , - BigNum { limbs: [ 0x0f2fa24cca7e118a23f8184f67be53, 0x33bf9e5c6e898b6d5abad78fbbc311, 0x005a94 ] } , - BigNum { limbs: [ 0x64ec99029da116a22f45c8ff3de158, 0xdbac28c819ba8cacb9af89cb58ec17, 0x002fc2 ] } , - BigNum { limbs: [ 0x58b769fd60bae85dd0ba3600c21ea9, 0xcba700d5638da68d1e587fd67f193c, 0x00442a ] } , - BigNum { limbs: [ 0x73ff57fd162c88611aff08b8082bc6, 0xf00eba8d17bc2c4bf77e923ee5026a, 0x00372b ] } , - BigNum { limbs: [ 0x49a4ab02e82f769ee500f647f7d43b, 0xb7446f10658c06ede0897762f302e9, 0x003cc1 ] } , - BigNum { limbs: [ 0x6c8c0251e16956675a23bf595affed, 0x3edbaffb7067814b2a4f9ae135c4b2, 0x006450 ] } , - BigNum { limbs: [ 0x511800ae1cf2a898a5dc3fa6a50014, 0x687779a20ce0b1eeadb86ec0a240a1, 0x000f9d ] } , - BigNum { limbs: [ 0x1b05e2e48b2c9152b3b5b80abf68c0, 0xf3bed6f2430129e041031e004e4e4d, 0x005bf9 ] } , - BigNum { limbs: [ 0xa29e201b732f6dad4c4a46f5409741, 0xb39452ab3a4709599704eba189b706, 0x0017f3 ] } , - BigNum { limbs: [ 0x3113167ed5e21da7624e7e7d9cdb91, 0x99ee54290f334230f56b2d54e5aaa3, 0x006816 ] } , - BigNum { limbs: [ 0x8c90ec812879e1589db18082632470, 0x0d64d5746e14f108e29cdc4cf25ab0, 0x000bd7 ] } , - BigNum { limbs: [ 0xd5832d79ecd0b4adec57b39d5976fd, 0x54978826cc78e85cbd472ff7cb3b7a, 0x002d0a ] } , - BigNum { limbs: [ 0xe820d586118b4a5213a84b62a68904, 0x52bba176b0cf4add1ac0d9aa0cc9d8, 0x0046e3 ] } , - BigNum { limbs: [ 0x954a71cbe1cb702768549ef50d9562, 0x6029a0323eb4708b2ba556f0c0a801, 0x000caa ] } , - BigNum { limbs: [ 0x285991341c908ed897ab600af26a9f, 0x4729896b3e93c2aeac62b2b1175d52, 0x006743 ] } , - BigNum { limbs: [ 0xcf3f09884d9f7cec479b5abada171d, 0x4fe37b3abad3b49c7e5f0832dcc06a, 0x0058a0 ] } , - BigNum { limbs: [ 0xee64f977b0bc8213b864a44525e8e4, 0x576fae62c2747e9d59a9016efb44e8, 0x001b4d ] } , - BigNum { limbs: [ 0x0250f48d469c3b7aa035dd3fba17b8, 0x82b51da12ff666d4ff4fe4de8341dc, 0x00501a ] } , - BigNum { limbs: [ 0xbb530e72b7bfc3855fca21c045e849, 0x249e0bfc4d51cc64d8b824c354c377, 0x0023d3 ] } , - BigNum { limbs: [ 0x3b1f635d5fc7cc8a01bada5c2066ed, 0x5fcb606dc747f4725150e337e2a86e, 0x006fae ] } , - BigNum { limbs: [ 0x82849fa29e943275fe4524a3df9914, 0x4787c92fb6003ec786b72669f55ce5, 0x00043f ] } , - BigNum { limbs: [ 0x52347c40e9ad023dcc7526c32059aa, 0xf213d0cefbb428b4392029b4096c62, 0x00174f ] } , - BigNum { limbs: [ 0x6b6f86bf14aefcc2338ad83cdfa657, 0xb53f58ce81940a859ee7dfedce98f1, 0x005c9d ] } , - BigNum { limbs: [ 0xe0af91d785eedd767ce31ad39ec74e, 0x5dc4713f0d24d25e7f23bfb2ad7c28, 0x006ff7 ] } , - BigNum { limbs: [ 0xdcf47128786d2189831ce42c6138b3, 0x498eb85e702360db58e449ef2a892a, 0x0003f6 ] } , - BigNum { limbs: [ 0xc509359dec7597fa4a62b198187d9a, 0x55adc7a91433e2710626e8e387ea5b, 0x00360f ] } , - BigNum { limbs: [ 0xf89acd6211e66705b59d4d67e78267, 0x51a561f4691450c8d1e120be501af7, 0x003dde ] } , - BigNum { limbs: [ 0x6141d7458572909d52919d7329c038, 0xc14e478b55b07e3d7cd77d927340a2, 0x0004d1 ] } , - BigNum { limbs: [ 0x5c622bba78e96e62ad6e618cd63fc9, 0xe604e2122797b4fc5b308c0f64c4b1, 0x006f1b ] } , - BigNum { limbs: [ 0x3f0ba16d9f1f798d749c6f55b6f3ba, 0x17cd54e1e0b2ca3cc0bb4809745d14, 0x005e5d ] } , - BigNum { limbs: [ 0x7e9861925f3c85728b638faa490c47, 0x8f85d4bb9c9568fd174cc19863a83f, 0x001590 ] } , - BigNum { limbs: [ 0x60e24fd4d442ae546c0da3d6f92de7, 0x3db28c42d6efb645e1a4810837fbd5, 0x000ccf ] } , - BigNum { limbs: [ 0x5cc1b32b2a1950ab93f25b2906d21a, 0x69a09d5aa6587cf3f6638899a0097e, 0x00671e ] } , - BigNum { limbs: [ 0xf4ae259cce48fc73025a78d6a157b6, 0x2a8493910d2041ee514c8d8fd2a6cf, 0x00364d ] } , - BigNum { limbs: [ 0xc8f5dd633013028cfda586295ea84b, 0x7cce960c7027f14b86bb7c12055e83, 0x003da0 ] } , - BigNum { limbs: [ 0x4bd3293e18494166467f37ad6acacb, 0x808eb6c3dadf3f67a56addd0a74c6c, 0x0022c7 ] } , - BigNum { limbs: [ 0x71d0d9c1e612bd99b980c752953536, 0x26c472d9a268f3d2329d2bd130b8e7, 0x005126 ] } , - BigNum { limbs: [ 0x4a46043dc9fa03bb8ef7568e987dfb, 0x4e1376cb98cec3b5a6dbbcd0298f91, 0x00666b ] } , - BigNum { limbs: [ 0x735dfec23461fb447108a871678206, 0x593fb2d1e4796f84312c4cd1ae75c2, 0x000d82 ] } , - BigNum { limbs: [ 0x9490f7e75dcd289448486b546b2984, 0xcd9aaa9e76bd9ca162e764f989b23e, 0x000666 ] } , - BigNum { limbs: [ 0x29130b18a08ed66bb7b793ab94d67d, 0xd9b87eff068a96987520a4a84e5315, 0x006d86 ] } , - BigNum { limbs: [ 0xcdcd52a8f26af52a75a50ad2fef008, 0xf6bad0a94058f46302ada65165e7d9, 0x0044c5 ] } , - BigNum { limbs: [ 0xefd6b0570bf109d58a5af42d010ff9, 0xb09858f43cef3ed6d55a6350721d79, 0x002f27 ] } , - BigNum { limbs: [ 0x2630a24cfce639d244d30cd8ea7bcd, 0x77725f8abc93e7c90da100aec7bcec, 0x0050d5 ] } , - BigNum { limbs: [ 0x977360b30175c52dbb2cf227158434, 0x2fe0ca12c0b44b70ca6708f3104867, 0x002318 ] } , - BigNum { limbs: [ 0x3a476657e66ec984ccab00b208b2e0, 0x021de21f69c33790707ffd6c682af6, 0x00069b ] } , - BigNum { limbs: [ 0x835c9ca817ed357b3354fe4df74d21, 0xa535477e1384fba967880c356fda5d, 0x006d52 ] } , - BigNum { limbs: [ 0x5aaef6e05e419040ed2e6880add73b, 0xda87a31501872a2b361d0b35042e63, 0x005225 ] } , - BigNum { limbs: [ 0x62f50c1fa01a6ebf12d1967f5228c6, 0xcccb86887bc1090ea1eafe6cd3d6f0, 0x0021c7 ] } , - BigNum { limbs: [ 0x4565eab0ef4b24b52b9cfaf405946b, 0x1d79893ac2b83c595e90e2afa653dd, 0x0028db ] } , - BigNum { limbs: [ 0x783e184f0f10da4ad463040bfa6b96, 0x89d9a062ba8ff6e0797726f231b176, 0x004b12 ] } , - BigNum { limbs: [ 0x3dd810d20c496d3587decdf7bdaa27, 0xf2bbd8bfc515df8f48abf33cd40538, 0x005288 ] } , - BigNum { limbs: [ 0x7fcbf22df21291ca782131084255da, 0xb49750ddb83253aa8f5c166504001b, 0x002164 ] } , - BigNum { limbs: [ 0xcefb8080afbd38fd46d94c88ac4eda, 0xab95aa7cb97959d2edb08e5b49e499, 0x0024de ] } , - BigNum { limbs: [ 0xeea8827f4e9ec602b926b27753b127, 0xfbbd7f20c3ced966ea577b468e20b9, 0x004f0e ] } , - BigNum { limbs: [ 0x147027983c0f8e8e92f6b7a949929e, 0x8cad13ea364f478c702a489564da6b, 0x006f1b ] } , - BigNum { limbs: [ 0xa933db67c24c70716d094756b66d63, 0x1aa615b346f8ebad67ddc10c732ae8, 0x0004d2 ] } , - BigNum { limbs: [ 0xc610f12b9e1d4099f34ca4605bd68f, 0xcbed867978e43f186ccae13678a464, 0x006871 ] } , - BigNum { limbs: [ 0xf79311d4603ebe660cb35a9fa42972, 0xdb65a3240463f4216b3d286b5f60ee, 0x000b7b ] } , - BigNum { limbs: [ 0x0ddd0120cf62cffd5caa9f3a11da0a, 0x603682fe9fd4a90e241ecc89caa243, 0x002c9c ] } , - BigNum { limbs: [ 0xafc701df2ef92f02a3555fc5ee25f7, 0x471ca69edd738a2bb3e93d180d6310, 0x004751 ] } , - BigNum { limbs: [ 0x39f2f88e75b4a31b2f74c46426a23f, 0xe66af1d7932ad362456d75681d0549, 0x00612b ] } , - BigNum { limbs: [ 0x83b10a7188a75be4d08b3a9bd95dc2, 0xc0e837c5ea1d5fd7929a9439bb000a, 0x0012c1 ] } , - BigNum { limbs: [ 0x7ccd6a86be44a45afc5292bb43a009, 0xf56c69e40d222b3c9b710572b491af, 0x0019e9 ] } , - BigNum { limbs: [ 0x40d6987940175aa503ad6c44bc5ff8, 0xb1e6bfb9702607fd3c97042f2373a4, 0x005a03 ] } , - BigNum { limbs: [ 0x214e0c0015ea14a22443b06499ea49, 0xa33d50975d0a9f6e1923a2a4b4dcbc, 0x007391 ] } , - BigNum { limbs: [ 0x9c55f6ffe871ea5ddbbc4e9b6615b8, 0x0415d906203d93cbbee466fd232897, 0x00005c ] } , - BigNum { limbs: [ 0xeaa2e037baf3baf72dcbd4ee24d39a, 0xc546aa30e6bbe2e10ddec548608fb9, 0x0047d8 ] } , - BigNum { limbs: [ 0xd30122c843684408d2342a11db2c67, 0xe20c7f6c968c5058ca294459777599, 0x002c14 ] } , - BigNum { limbs: [ 0xee0baf3ab52c8e241d4950959a1c81, 0x5c07c691a601433a25b11b79630111, 0x006759 ] } , - BigNum { limbs: [ 0xcf9853c5492f70dbe2b6ae6a65e380, 0x4b4b630bd746efffb256ee28750441, 0x000c94 ] } , - BigNum { limbs: [ 0x1b63605f954ac2ea65f987bc35193c, 0xbbd397fcaca0416914466c9808724d, 0x001b92 ] } , - BigNum { limbs: [ 0xa240a2a069113c159a067743cae6c5, 0xeb7f91a0d0a7f1d0c3c19d09cf9306, 0x00585a ] } , - BigNum { limbs: [ 0xfaa20e0cddd4ba8766a6b4eea4bd15, 0x021925886da6a106358b0ea4c998aa, 0x0045a1 ] } , - BigNum { limbs: [ 0xc301f4f32087447899594a115b42ec, 0xa53a04150fa19233a27cfafd0e6ca8, 0x002e4c ] } , - BigNum { limbs: [ 0x0c741345a901b26974f21222a37402, 0xe98ca62b53227f386fec48ffba5725, 0x00579c ] } , - BigNum { limbs: [ 0xb12fefba555a4c968b0decdd5c8bff, 0xbdc683722a25b401681bc0a21dae2e, 0x001c50 ] } , - BigNum { limbs: [ 0xcdf2a4df205c566d342b664751b8b9, 0x7aac979f99d2f628a70262abb5b8a7, 0x003c45 ] } , - BigNum { limbs: [ 0xefb15e20ddffa892cbd498b8ae4748, 0x2ca691fde3753d113105a6f6224cab, 0x0037a8 ] } , - BigNum { limbs: [ 0xdf3781210e04f7222b74ab3f9cd482, 0xefc0f255ee76feb34b02af2903342b, 0x000f6a ] } , - BigNum { limbs: [ 0xde6c81def05707ddd48b53c0632b7f, 0xb79237478ed134868d055a78d4d127, 0x006482 ] } , - BigNum { limbs: [ 0x2d459a176b849968acb5abcae514e0, 0xe49b48fef478de731b11f75f47a2d2, 0x0057d1 ] } , - BigNum { limbs: [ 0x905e68e892d76597534a53351aeb21, 0xc2b7e09e88cf54c6bcf61242906281, 0x001c1b ] } , - BigNum { limbs: [ 0x8d4a502532c28e6e1fa05bb77f119a, 0xefb5e006cff6c98b53c795188a5a0b, 0x005078 ] } , - BigNum { limbs: [ 0x3059b2dacb997091e05fa34880ee67, 0xb79d4996ad5169ae844074894dab48, 0x002374 ] } , - BigNum { limbs: [ 0x3bfddab2017f2386535fda205c415b, 0x5a5aef0bbd1f7eee7fbc801335bcd5, 0x00413e ] } , - BigNum { limbs: [ 0x81a6284dfcdcdb79aca024dfa3bea6, 0x4cf83a91c028b44b584b898ea2487e, 0x0032af ] } , - BigNum { limbs: [ 0xdb4e2aef22df835a8bd76b81c8f97a, 0x78d408ec44ceebf8005827d0646a5e, 0x0026f6 ] } , - BigNum { limbs: [ 0xe255d810db7c7ba57428937e370687, 0x2e7f20b138794741d7afe1d1739af4, 0x004cf7 ] } , - BigNum { limbs: [ 0x936d72b19928b1afb86759927b47e6, 0x58eed6c70605ed202ef373dc7dccd9, 0x005a8a ] } , - BigNum { limbs: [ 0x2a36904e65334d504798a56d84b81b, 0x4e6452d677424619a91495c55a387a, 0x001963 ] } , - BigNum { limbs: [ 0x347d893a3ed84b41240552aa7372e9, 0xbda6e04b700a69a05c17cf5cbd9f23, 0x003c98 ] } , - BigNum { limbs: [ 0x892679c5bf83b3bedbfaac558c8d18, 0xe9ac49520d3dc9997bf03a451a6630, 0x003754 ] } , - BigNum { limbs: [ 0xcb4f0c95186dabe3ebd6d30fdaa02c, 0x885359d63febad14b5a4357eafab79, 0x00217f ] } , - BigNum { limbs: [ 0xf254f66ae5ee531c14292bf0255fd5, 0x1effcfc73d5c86252263d4232859d9, 0x00526e ] } , - BigNum { limbs: [ 0xdc256927d8f49d065a52ec3e0c7ac2, 0x7110edd98c4d50fabf7d6f4d5c8851, 0x000980 ] } , - BigNum { limbs: [ 0xe17e99d8256761f9a5ad12c1f3853f, 0x36423bc3f0fae23f188a9a547b7d01, 0x006a6d ] } , - BigNum { limbs: [ 0x8d3d79f6e39d2bde112abd7a8e53ce, 0x1479cf4e8c2ab65c067e38b58ae4b3, 0x0065b0 ] } , - BigNum { limbs: [ 0x306689091abed321eed5418571ac33, 0x92d95a4ef11d7cddd189d0ec4d20a0, 0x000e3d ] } , - BigNum { limbs: [ 0x8086ae070bc3d11bc024c840b8433e, 0xecef36ebf26bc40b39fcc48e6ab637, 0x0004f1 ] } , - BigNum { limbs: [ 0x3d1d54f8f2982de43fdb36bf47bcc3, 0xba63f2b18adc6f2e9e0b45136d4f1c, 0x006efb ] } , - BigNum { limbs: [ 0x2d74caec959b4df578c292627d3424, 0x2c5313faac4a00c8b1843ee3d0d104, 0x0022ff ] } , - BigNum { limbs: [ 0x902f381368c0b10a873d6c9d82cbdd, 0x7b0015a2d0fe32712683cabe07344f, 0x0050ee ] } , - BigNum { limbs: [ 0xcf42b161d631e688549e5f6c934620, 0xb48f1d3b4fec1e9238d1a4e8a71125, 0x00458a ] } , - BigNum { limbs: [ 0xee61519e282a1877ab619f936cb9e1, 0xf2c40c622d5c14a79f3664b930f42d, 0x002e62 ] } , - BigNum { limbs: [ 0xf8c738132c60091b074f4e6b57c34e, 0xfe66eaad172ed475976325a4a96406, 0x006eb3 ] } , - BigNum { limbs: [ 0xc4dccaecd1fbf5e4f8b0b094a83cb3, 0xa8ec3ef066195ec440a4e3fd2ea14c, 0x000539 ] } , - BigNum { limbs: [ 0xd37c4a9d7a65620d7dee1433f8ef02, 0x9cf12e56f6319dc1d778f39327e520, 0x005d45 ] } , - BigNum { limbs: [ 0xea27b86283f69cf28211eacc0710ff, 0x0a61fb4687169578008f160eb02032, 0x0016a8 ] } , - BigNum { limbs: [ 0x69b768b5d39b86cf7e7c09c345bf6a, 0x130e6f604f4e6321de3462e322a634, 0x002434 ] } , - BigNum { limbs: [ 0x53ec9a4a2ac078308183f53cba4097, 0x9444ba3d2df9d017f9d3a6beb55f1f, 0x004fb9 ] } , - BigNum { limbs: [ 0xeb960d6a0abcd4023d030dac526fc5, 0x7884b1d5501c2736269918a1a78ae4, 0x0066ba ] } , - BigNum { limbs: [ 0xd20df595f39f2afdc2fcf153ad903c, 0x2ece77c82d2c0c03b16ef100307a6e, 0x000d33 ] } , - BigNum { limbs: [ 0xb2dd5fcf5a47dd0ab1196d1f9bc88a, 0x57bc56f0e20f0f70fe1ee409d50d7c, 0x005259 ] } , - BigNum { limbs: [ 0x0ac6a330a41421f54ee691e0643777, 0x4f96d2ac9b3923c8d9e9259802f7d7, 0x002194 ] } , - BigNum { limbs: [ 0xaf66b07fd2b89b14d4dbb8e4c988de, 0x9998cb776df0869b997c65b4575e03, 0x000585 ] } , - BigNum { limbs: [ 0x0e3d52802ba363eb2b24461b367723, 0x0dba5e260f57ac9e3e8ba3ed80a750, 0x006e68 ] } , - BigNum { limbs: [ 0xf61d3f6170e53d97f8f008cf768a76, 0x5b602c58269c8ef028376b9685c9b8, 0x002c20 ] } , - BigNum { limbs: [ 0xc786c39e8d76c168070ff63089758b, 0x4bf2fd4556aba449afd09e0b523b9a, 0x0047cd ] } , - BigNum { limbs: [ 0x622ff754d375d84c5d77199341945f, 0x78893b8d266ef3ddf8f1f8e8f7d951, 0x00122f ] } , - BigNum { limbs: [ 0x5b740bab2ae626b3a288e56cbe6ba2, 0x2ec9ee1056d93f5bdf1610b8e02c02, 0x0061be ] } , - BigNum { limbs: [ 0x0aefb294a5d9e3687d2670f622df6c, 0x95d2457d5d6b293ef92ea67a692ab7, 0x005cd6 ] } , - BigNum { limbs: [ 0xb2b4506b58821b9782d98e09dd2095, 0x1180e4201fdd09faded963276eda9c, 0x001717 ] } , - BigNum { limbs: [ 0x63d364c9ba00d272890840b00420f5, 0x29c2ab9eba06a3fb843e6f883875ae, 0x001602 ] } , - BigNum { limbs: [ 0x59d09e36445b2c8d76f7be4ffbdf0c, 0x7d907dfec3418f3e53c99a199f8fa5, 0x005deb ] } , - BigNum { limbs: [ 0x62e5ef54d446d001dd7dd94f4c83f0, 0x2e6610db2be579e285d21c3be96a52, 0x001d6c ] } , - BigNum { limbs: [ 0x5abe13ab2a152efe228225b0b37c11, 0x78ed18c25162b9575235ed65ee9b01, 0x005681 ] } , - BigNum { limbs: [ 0xe4dc21d66c88a5c58b87357f57f234, 0xefb1629354e4d34f93e73013f72753, 0x006c6d ] } , - BigNum { limbs: [ 0xd8c7e12991d3593a7478c980a80dcd, 0xb7a1c70a28635fea4420d98de0ddff, 0x00077f ] } , - BigNum { limbs: [ 0xff24fa0bcfa8e4bfefc24704198a6b, 0x313aaab6b721937ae0819ff6472d7a, 0x00173a ] } , - BigNum { limbs: [ 0xbe7f08f42eb31a40103db7fbe67596, 0x76187ee6c6269fbef78669ab90d7d8, 0x005cb3 ] } , - BigNum { limbs: [ 0xab6f0ea079a6e4dba78a63795564bb, 0xea6ea42ae469d892949d7b60807964, 0x00590e ] } , - BigNum { limbs: [ 0x1234f45f84b51a2458759b86aa9b46, 0xbce4857298de5aa7436a8e41578bef, 0x001ade ] } , - BigNum { limbs: [ 0xd4d8d238af27685a21f57246d64bcc, 0x3610625447c700e379bdca7a6a2783, 0x004db0 ] } , - BigNum { limbs: [ 0xe8cb30c74f3496a5de0a8cb929b435, 0x7142c749358132565e4a3f276dddcf, 0x00263d ] } , - BigNum { limbs: [ 0xfd3bf0033dd6fe1e4c57f1c23661a7, 0xc9277b211191ac0755754412cef056, 0x006972 ] } , - BigNum { limbs: [ 0xc06812fcc08500e1b3a80d3dc99e5a, 0xde2bae7c6bb687328292c58f0914fc, 0x000a7a ] } , - BigNum { limbs: [ 0xf4f2863d6f00a5eb8cf558ae23eb3b, 0x9d2ac6d6cc9db539528902a8e6d4bf, 0x005623 ] } , - BigNum { limbs: [ 0xc8b17cc28f5b5914730aa651dc14c6, 0x0a2862c6b0aa7e00857f06f8f13093, 0x001dca ] } , - BigNum { limbs: [ 0xab7346f1c5dd69a742ad16020f0c07, 0x98cd60ef84bf73f1b64511c0021f98, 0x003c98 ] } , - BigNum { limbs: [ 0x1230bc0e387e9558bd52e8fdf0f3fa, 0x0e85c8adf888bf4821c2f7e1d5e5bb, 0x003755 ] } , - BigNum { limbs: [ 0xdb5ac19e95471752eef10592d37478, 0x78280afce1c17f500934d635381119, 0x005831 ] } , - BigNum { limbs: [ 0xe24941616914e7ad110ef96d2c8b89, 0x2f2b1ea09b86b3e9ced3336c9ff439, 0x001bbc ] } , - BigNum { limbs: [ 0x087316430ad9438cf77e056331d4fc, 0x0f9abac161455397d635854b193f18, 0x007363 ] } , - BigNum { limbs: [ 0xb530ecbcf382bb730881f99cce2b05, 0x97b86edc1c02dfa201d28456bec63b, 0x00008a ] } , - BigNum { limbs: [ 0x167cabcf48aae9ea0b1c34224fbd61, 0xb6b181ffb7e11ae9d1320a2c5beb55, 0x001d24 ] } , - BigNum { limbs: [ 0xa7275730b5b11515f4e3caddb042a0, 0xf0a1a79dc567185006d5ff757c19fe, 0x0056c8 ] } , - BigNum { limbs: [ 0x5bed60b7df5038076491b23c075728, 0xdb8369f69b7d6e35580692da3e8018, 0x0023a4 ] } , - BigNum { limbs: [ 0x61b6a2481f0bc6f89b6e4cc3f8a8d9, 0xcbcfbfa6e1cac504800176c799853b, 0x005048 ] } , - BigNum { limbs: [ 0x57c68d7415396c2de50d5f536e30db, 0xb1543cca2a1fb1eec4853a3a35d891, 0x0023ad ] } , - BigNum { limbs: [ 0x65dd758be92292d21af29fac91cf26, 0xf5feecd35328814b1382cf67a22cc2, 0x00503f ] } , - BigNum { limbs: [ 0x9e4983675d87e1d04fe1856b5161fa, 0x80f0b3ede8ab143ae61d73677668e6, 0x0002a8 ] } , - BigNum { limbs: [ 0x1f5a7f98a0d41d2fb01e7994ae9e07, 0x266275af949d1efef1ea963a619c6d, 0x007145 ] } , - BigNum { limbs: [ 0x302bd0f30daa22f40997d4e0cdb369, 0xcdf6ec9a06b06690843e61cac4ade1, 0x0025e8 ] } , - BigNum { limbs: [ 0x8d78320cf0b1dc0bf6682a1f324c98, 0xd95c3d037697cca953c9a7d7135772, 0x004e04 ] } , - BigNum { limbs: [ 0x126166bddccd1462e572f220fa4c0c, 0xed111ae29c7e0eb4cf7a3c92ea0844, 0x002e7b ] } , - BigNum { limbs: [ 0xab429c42218eea9d1a8d0cdf05b3f5, 0xba420ebae0ca2485088dcd0eedfd0f, 0x004571 ] } , - BigNum { limbs: [ 0x339c0906b87b56568f4b0b097df9fb, 0xdfc74d69529870a13c9e329eb8dd18, 0x003e79 ] } , - BigNum { limbs: [ 0x8a07f9f945e0a8a970b4f3f6820606, 0xc78bdc342aafc2989b69d7031f283b, 0x003573 ] } , - BigNum { limbs: [ 0xa5c4ac27eb44e2aae5c2b5313d9002, 0xd2e5157046db1ad6ff97430335c818, 0x003f0d ] } , - BigNum { limbs: [ 0x17df56d813171c551a3d49cec26fff, 0xd46e142d366d1862d870c69ea23d3b, 0x0034df ] } , - BigNum { limbs: [ 0x4c7bf3f8b147be2cbed7f0bf090098, 0x5e1556dbfbb27f64e8055e8cdb1d7c, 0x003d96 ] } , - BigNum { limbs: [ 0x71280f074d1440d341280e40f6ff69, 0x493dd2c18195b3d4f002ab14fce7d7, 0x003657 ] } , - BigNum { limbs: [ 0x404608c5b6bf709eecc8e7ede857ab, 0x1ce95d845fd76979d9369a57471b9a, 0x004ff7 ] } , - BigNum { limbs: [ 0x7d5dfa3a479c8e611337171217a856, 0x8a69cc191d70c9bffed16f4a90e9b9, 0x0023f6 ] } , - BigNum { limbs: [ 0x9b0c2b81d681413f774225fa5aa0e0, 0xc198b4f1edccb9f6c4aa4c9d097385, 0x006526 ] } , - BigNum { limbs: [ 0x2297d77e27dabdc088bdd905a55f21, 0xe5ba74ab8f7b7943135dbd04ce91ce, 0x000ec6 ] } , - BigNum { limbs: [ 0xa6230c9f9b8b900243a36f7f89fae5, 0xa8409974793c2046ca955ddeaaf043, 0x0051d8 ] } , - BigNum { limbs: [ 0x1780f66062d06efdbc5c8f8076051c, 0xff129029040c12f30d72abc32d1510, 0x002214 ] } , - BigNum { limbs: [ 0xbe2f06e8c58c2a19bf210063c2e679, 0x47b8fcec34f0ce000121051220f6e1, 0x004808 ] } , - BigNum { limbs: [ 0xff74fc1738cfd4e640defe9c3d1988, 0x5f9a2cb148576539d6e7048fb70e71, 0x002be5 ] } , - BigNum { limbs: [ 0xbec3196e627413dbd79f51edccc9e4, 0x55dcd186a03fc273e1ba09ad8bf571, 0x00219c ] } , - BigNum { limbs: [ 0xfee0e9919be7eb242860ad1233361d, 0x51765816dd0870c5f64dfff44c0fe1, 0x005251 ] } , - BigNum { limbs: [ 0xa062883d272c787e214c505cc37bb8, 0xb19461ae3758739bee8ef3518d5981, 0x004beb ] } , - BigNum { limbs: [ 0x1d417ac2d72f8681deb3aea33c8449, 0xf5bec7ef45efbf9de97916504aabd2, 0x002801 ] } , - BigNum { limbs: [ 0xbdca35bc89cf2e818683ca0e981e53, 0xabcc07dbc25a9d40c19692ced6937a, 0x00411c ] } , - BigNum { limbs: [ 0xffd9cd43748cd07e797c34f167e1ae, 0xfb8721c1baed95f9167176d30171d8, 0x0032d0 ] } , - BigNum { limbs: [ 0x76b4372a3289a33215dfcaf179a125, 0x4a5b3f291c611783ec1b207387edc9, 0x003832 ] } , - BigNum { limbs: [ 0x46efcbd5cbd25bcdea20340e865edc, 0x5cf7ea7460e71bb5ebece92e50178a, 0x003bbb ] } , - BigNum { limbs: [ 0xa2d66a05b0421da524c859157d01be, 0x43031dbf32617e16d937f8e8873c46, 0x003a36 ] } , - BigNum { limbs: [ 0x1acd98fa4e19e15adb37a5ea82fe43, 0x64500bde4ae6b522fed010b950c90d, 0x0039b7 ] } , - BigNum { limbs: [ 0xc428110192350213760ef8046fdba5, 0xdad815b390567ce98b35604515d398, 0x000370 ] } , - BigNum { limbs: [ 0xf97bf1fe6c26fcec89f106fb90245c, 0xcc7b13e9ecf1b6504cd2a95cc231ba, 0x00707c ] } , - BigNum { limbs: [ 0x09a3d15c678111e2a72c91d778db77, 0xb77eaaecc8b737ee782500a1480a23, 0x004e16 ] } , - BigNum { limbs: [ 0xb40031a396daed1d58d36d2887248a, 0xefd47eb0b490fb4b5fe309008ffb30, 0x0025d6 ] } , - BigNum { limbs: [ 0x050de9d5c78215b0b1b60a24681e28, 0x7754d7ae1281cf955a039d047aeee7, 0x00341d ] } , - BigNum { limbs: [ 0xb896192a36d9e94f4e49f4db97e1d9, 0x2ffe51ef6ac663a47e046c9d5d166c, 0x003fd0 ] } , - BigNum { limbs: [ 0x812a31c427febd6c35d2e338026d9e, 0x40a4e5d8b982cb0880ad6c1e36a6a1, 0x003aba ] } , - BigNum { limbs: [ 0x3c79d13bd65d4193ca2d1bc7fd9263, 0x66ae43c4c3c56831575a9d83a15eb2, 0x003933 ] } , - BigNum { limbs: [ 0x386f8d921bce1f63f68d7c07ae7401, 0x78cd5c4a2cc22b1f82c24c49a6a38b, 0x001429 ] } , - BigNum { limbs: [ 0x8534756de28ddf9c097282f8518c00, 0x2e85cd535086081a5545bd583161c8, 0x005fc4 ] } , - BigNum { limbs: [ 0x42ced375a1f9831695feeee6ebbb23, 0xd17c31c23df923d33c5281359d1088, 0x006c99 ] } , - BigNum { limbs: [ 0x7ad52f8a5c627be96a0110191444de, 0xd5d6f7db3f4f0f669bb5886c3af4cb, 0x000753 ] } , - BigNum { limbs: [ 0xc0e4c27b09624c3cf4c3c8b82268de, 0x24ae8c3220d3bb0dbb32d6f021f23f, 0x00487a ] } , - BigNum { limbs: [ 0xfcbf4084f4f9b2c30b3c3647dd9723, 0x82a49d6b5c74782c1cd532b1b61313, 0x002b73 ] } , - BigNum { limbs: [ 0x6c3c4c1e3774f5b1c6930c377f7040, 0x7c135543154ef67cf84ec44d0f01fd, 0x0033b1 ] } , - BigNum { limbs: [ 0x5167b6e1c6e7094e396cf2c8808fc1, 0x2b3fd45a67f93cbcdfb94554c90356, 0x00403c ] } , - BigNum { limbs: [ 0x12ca311f7fd12d398fb5e547b671b5, 0x0cc4ba4853e11ccbbaa4383233ec38, 0x0046f1 ] } , - BigNum { limbs: [ 0xaad9d1e07e8ad1c6704a19b8498e4c, 0x9a8e6f552967166e1d63d16fa4191b, 0x002cfc ] } , - BigNum { limbs: [ 0x16b36d3c1ac814874529ef17d6a510, 0x55fc1bc3b5fe65b56a1a1234552ec5, 0x005afc ] } , - BigNum { limbs: [ 0xa6f095c3e393ea78bad60fe8295af1, 0x51570dd9c749cd846dedf76d82d68e, 0x0018f1 ] } , - BigNum { limbs: [ 0xe92a68efce58edae9be2c9a128b7a8, 0xff24306585a01aeba02b847008d252, 0x0017b9 ] } , - BigNum { limbs: [ 0xd4799a1030031151641d355ed74859, 0xa82ef937f7a8184e37dc8531cf3300, 0x005c33 ] } , - BigNum { limbs: [ 0x2c20261d6f63fdb01729273b501f58, 0xd773fa1a1bff31abec1184bb529d60, 0x00487c ] } , - BigNum { limbs: [ 0x9183dce28ef8014fe8d6d7c4afe0a9, 0xcfdf2f836149018debf684e68567f3, 0x002b70 ] } , - BigNum { limbs: [ 0x4511e37ec0a0e6c38e58bed13d112c, 0x5c7d802ce23ea4f3a7a686812ee345, 0x003eee ] } , - BigNum { limbs: [ 0x78921f813dbb183c71a7402ec2eed5, 0x4ad5a9709b098e4630618320a9220e, 0x0034ff ] } , - BigNum { limbs: [ 0x0c9fa08508aad414ea074c1f23ba30, 0xf799394ba267d5c451b52ac38a7015, 0x001c87 ] } , - BigNum { limbs: [ 0xb104627af5b12aeb15f8b2e0dc45d1, 0xafb9f051dae05d758652dede4d953e, 0x005765 ] } , - BigNum { limbs: [ 0xb637bb3a3b9a8596dac2ba21e1b301, 0x8e70d46598eddeff558cd1ceec3f42, 0x006a7d ] } , - BigNum { limbs: [ 0x076c47c5c2c17969253d44de1e4d00, 0x18e25537e45a543a827b37d2ebc611, 0x000970 ] } , - BigNum { limbs: [ 0xa32c41aa67e0beb0ad80034eb71aa6, 0x9508a3dad316105f067219141f4450, 0x002bcd ] } , - BigNum { limbs: [ 0x1a77c155967b404f527ffbb148e55b, 0x124a85c2aa3222dad195f08db8c103, 0x004820 ] } , - BigNum { limbs: [ 0x6b3940c718bb3958fd9a1ddf213be7, 0xee356d71662cd22a979f6b15fc86ce, 0x001f4a ] } , - BigNum { limbs: [ 0x526ac238e5a0c5a70265e120dec41a, 0xb91dbc2c171b610f40689e8bdb7e85, 0x0054a2 ] } , - BigNum { limbs: [ 0x0164a97d188ac0ad5367ab4e7b9e84, 0xd76d92812edc0b2170f8fa33b90723, 0x001637 ] } , - BigNum { limbs: [ 0xbc3f5982e5d13e52ac9853b184617d, 0xcfe5971c4e6c2818670f0f6e1efe30, 0x005db5 ] } , - BigNum { limbs: [ 0xd38af418dcea4940696f931cef27c7, 0xf2b39ee7c1f14c64da2d1c87fee4ab, 0x001510 ] } , - BigNum { limbs: [ 0xea190ee72171b5bf96906be310d83a, 0xb49f8ab5bb56e6d4fddaed19d920a7, 0x005edc ] } , - BigNum { limbs: [ 0xa0fc06f956f6d131762634135d8773, 0x660adcd8596d1256ead3bd82cadd77, 0x00043b ] } , - BigNum { limbs: [ 0x1ca7fc06a7652dce89d9caeca2788e, 0x41484cc523db20e2ed344c1f0d27dc, 0x006fb2 ] } , - BigNum { limbs: [ 0x98b5990f7dd55dba4f3fedebd06bc5, 0xeac74899e255532e7960de94f43902, 0x004481 ] } , - BigNum { limbs: [ 0x24ee69f08086a145b0c011142f943c, 0xbc8be1039af2e00b5ea72b0ce3cc51, 0x002f6b ] } , - BigNum { limbs: [ 0x6f602b2b358f7ef3a6617be19d472b, 0xa8e515acb6396cee5a925bf81b7077, 0x005326 ] } , - BigNum { limbs: [ 0x4e43d7d4c8cc800c599e831e62b8d6, 0xfe6e13f0c70ec64b7d75ada9bc94dc, 0x0020c6 ] } , - BigNum { limbs: [ 0x18d4d95a863f36470f4ebc84a1bd09, 0x925d1a9cc5785dcf1a4388a868b3e5, 0x00591e ] } , - BigNum { limbs: [ 0xa4cf29a5781cc8b8f0b1427b5e42f8, 0x14f60f00b7cfd56abdc480f96f516e, 0x001acf ] } , - BigNum { limbs: [ 0x37975f1f4d9331f2d9f84be1cb409f, 0x6d9d6d6d6548788364ba04c31cffc8, 0x002d3a ] } , - BigNum { limbs: [ 0x860ca3e0b0c8cd0d2607b31e34bf62, 0x39b5bc3017ffbab6734e04debb058b, 0x0046b3 ] } , - BigNum { limbs: [ 0x13995efabb2e08108045b70a904c29, 0x68e227088a0c18c2811a831726b411, 0x001626 ] } , - BigNum { limbs: [ 0xaa0aa405432df6ef7fba47f56fb3d8, 0x3e710294f33c1a7756ed868ab15142, 0x005dc7 ] } , - BigNum { limbs: [ 0xd904c73a6df631a566da4dc6969ff2, 0x233a4e20eddc2b3f3429032441631e, 0x00113b ] } , - BigNum { limbs: [ 0xe49f3bc59065cd5a9925b13969600f, 0x8418db7c8f6c07faa3df067d96a234, 0x0062b2 ] } , - BigNum { limbs: [ 0xb4ad674a5b0e84b2be9919fe7beb09, 0x9b7a1f04d514ebbd8e4a6a5f39d332, 0x000818 ] } , - BigNum { limbs: [ 0x08f69bb5a34d7a4d4166e5018414f8, 0x0bd90a98a833477c49bd9f429e3221, 0x006bd5 ] } , - BigNum { limbs: [ 0x3815ad2b4e0bed39a9ab3291ebcb6d, 0x481a65dceabc6ce9304f5ee5ab74a3, 0x001073 ] } , - BigNum { limbs: [ 0x858e55d4b05011c65654cc6e143494, 0x5f38c3c0928bc650a7b8aabc2c90b0, 0x00637a ] } , - BigNum { limbs: [ 0x675ee8f0cfc4fbe1c53bdc5c414033, 0x6ff3dc88c3c951715c36a0edc53b77, 0x006c1f ] } , - BigNum { limbs: [ 0x56451a0f2e97031e3ac422a3bebfce, 0x375f4d14b97ee1c87bd168b412c9dc, 0x0007ce ] } , - BigNum { limbs: [ 0x9d6b9010e7aedcfd961ec7e5265cdf, 0x3797d5d3852d318d7031d74e4c3e13, 0x0000d3 ] } , - BigNum { limbs: [ 0x203872ef16ad220269e1371ad9a322, 0x6fbb53c9f81b01ac67d632538bc740, 0x00731a ] } , - BigNum { limbs: [ 0x76d9747869e6fb998944eb24e3022a, 0xf60ba4afea247aeba5e346b9d70e94, 0x002f0d ] } , - BigNum { limbs: [ 0x46ca8e879475036676bb13db1cfdd7, 0xb14784ed9323b84e3224c2e800f6bf, 0x0044df ] } , - BigNum { limbs: [ 0x7e74e6253d9e28eb6f05198583cc5a, 0xc3fb75a40eda9e7820f403bec3fa34, 0x006263 ] } , - BigNum { limbs: [ 0x3f2f1cdac0bdd61490fae57a7c33a7, 0xe357b3f96e6d94c1b71405e3140b1f, 0x001189 ] } , - BigNum { limbs: [ 0x67b6ccb7cb52aa6311b7eb3aeec353, 0x45181092c55b725895bec22d77a19f, 0x00082e ] } , - BigNum { limbs: [ 0x55ed36483309549cee4813c5113cae, 0x623b190ab7ecc0e1424947746063b4, 0x006bbf ] } , - BigNum { limbs: [ 0xa2948b0f28fd5df91fc60871a54c24, 0x2150f3f639fc833e844a9af6b85d52, 0x003d89 ] } , - BigNum { limbs: [ 0x1b0f77f0d55ea106e039f68e5ab3dd, 0x860235a7434baffb53bd6eab1fa801, 0x003664 ] } , - BigNum { limbs: [ 0xd623dc41d0fd8aa88e850ca72894b1, 0xcc83e375c0ec4ed37d208f6077d205, 0x006501 ] } , - BigNum { limbs: [ 0xe78026be2d5e7457717af258d76b50, 0xdacf4627bc5be4665ae77a4160334d, 0x000eeb ] } , - BigNum { limbs: [ 0x55e876c3e0a5147afa35ae1fc29be8, 0x0a9434ce3e69fda9e3cc5bacdeab09, 0x0030ad ] } , - BigNum { limbs: [ 0x67bb8c3c1db6ea8505ca50e03d6419, 0x9cbef4cf3ede358ff43badf4f95a4a, 0x004340 ] } , - BigNum { limbs: [ 0x5e38e331c8b4975bd310c3a66c9537, 0x7452f50c70e72cd060f51bbb1a5c14, 0x0007e0 ] } , - BigNum { limbs: [ 0x5f6b1fce35a767a42cef3b59936aca, 0x330034910c6106697712ede6bda93f, 0x006c0d ] } , - BigNum { limbs: [ 0x839e93b61ed367713054cb61f934a6, 0x86e13262538cbcd386b654d64e49aa, 0x006697 ] } , - BigNum { limbs: [ 0x3a056f49df88978ecfab339e06cb5b, 0x2071f73b29bb76665151b4cb89bba9, 0x000d56 ] } , - BigNum { limbs: [ 0xce77b6b91a5bff3496d2f9d70bbbed, 0xfa867056ef0bf0b6fbbe96fe0b5f57, 0x006e22 ] } , - BigNum { limbs: [ 0xef2c4c46e3ffffcb692d0528f44414, 0xacccb9468e3c4282dc4972a3cca5fb, 0x0005ca ] } , - BigNum { limbs: [ 0x35851865696a5fe7449852b6744cfb, 0xca1910b4c0d6c2301c80b5355c202d, 0x006397 ] } , - BigNum { limbs: [ 0x881eea9a94f19f18bb67ac498bb306, 0xdd3a18e8bc717109bb87546c7be526, 0x001055 ] } , - BigNum { limbs: [ 0x15b13cd94b772008f85d2cfd89da4e, 0x0bba06096d7f32862846c576ee59a4, 0x00044c ] } , - BigNum { limbs: [ 0xa7f2c626b2e4def707a2d2027625b3, 0x9b9923940fc900b3afc1442ae9abaf, 0x006fa1 ] } , - BigNum { limbs: [ 0xad4e7565595253f1a51657f2a2f9e7, 0xe3fc58bf7b73a3423aa9719209a14a, 0x00257d ] } , - BigNum { limbs: [ 0x10558d9aa509ab0e5ae9a70d5d061a, 0xc356d0de01d48ff79d5e980fce6409, 0x004e6f ] } , - BigNum { limbs: [ 0x99e27a2081799b4eca385586eb2c8a, 0x6e1e917d3c28d3709d3de66e349da2, 0x004217 ] } , - BigNum { limbs: [ 0x23c188df7ce263b135c7a97914d377, 0x39349820411f5fc93aca2333a367b1, 0x0031d6 ] } , - BigNum { limbs: [ 0x5b5d18505549feee6bc914fa35124f, 0xa94623e44bc1990ff506a2cd6b3d9d, 0x00288e ] } , - BigNum { limbs: [ 0x6246eaafa91200119436ea05caedb2, 0xfe0d05b931869a29e30166d46cc7b6, 0x004b5e ] } , - BigNum { limbs: [ 0x200aebafc5ea98d70b82be17d2ea44, 0x9e1350d0f12ec8c9b38256147ffc5f, 0x0002b0 ] } , - BigNum { limbs: [ 0x9d99175038716628f47d40e82d15bd, 0x093fd8cc8c196a702485b38d5808f4, 0x00713d ] } , - BigNum { limbs: [ 0xd22bffba2587708972aa6c93818ac3, 0x0d75320a98111865427c3fbad80109, 0x001d89 ] } , - BigNum { limbs: [ 0xeb780345d8d48e768d55926c7e753e, 0x99ddf792e5371ad4958bc9e7000449, 0x005664 ] } , - BigNum { limbs: [ 0x987808ecddda052fa970fa47b4d601, 0x73f9895e0b1dddf69a51b191869389, 0x00017f ] } , - BigNum { limbs: [ 0x252bfa132081f9d0568f04b84b2a00, 0x3359a03f722a55433db658105171ca, 0x00726e ] } , - BigNum { limbs: [ 0x797372b5768dd9ebb076877911c04b, 0x9e39ebc0279c4f5b7a8a85b70bc7fe, 0x004478 ] } , - BigNum { limbs: [ 0x4430904a87ce25144f897786ee3fb6, 0x09193ddd55abe3de5d7d83eacc3d55, 0x002f75 ] } , - BigNum { limbs: [ 0xd8a8d534b0bce4b5614227d84785d3, 0x7c149fa74f614d379f099408001942, 0x001142 ] } , - BigNum { limbs: [ 0xe4fb2dcb4d9f1a4a9ebdd727b87a2e, 0x2b3e89f62de6e60238fe7599d7ec10, 0x0062ab ] } , - BigNum { limbs: [ 0xe783d9c51d6ce1625d7b4024d0bc31, 0x8f48d8897bd8b9ad44bff146d48270, 0x003884 ] } , - BigNum { limbs: [ 0xd620293ae0ef1d9da284bedb2f43d0, 0x180a5114016f798c9348185b0382e2, 0x003b69 ] } , - BigNum { limbs: [ 0x4f5998407582cb8e651766a21aabf7, 0x222338f5c90837822f5731ee9d1207, 0x00453f ] } , - BigNum { limbs: [ 0x6e4a6abf88d933719ae8985de5540a, 0x852ff0a7b43ffbb7a8b0d7b33af34c, 0x002eae ] } , - BigNum { limbs: [ 0xf11b943e0a5c1e2e4846815bb5cb67, 0x91e813585d0a31b10c4d0834e51570, 0x000ab9 ] } , - BigNum { limbs: [ 0xcc886ec1f3ffe0d1b7b97da44a349a, 0x156b1645203e0188cbbb016cf2efe2, 0x006934 ] } , - BigNum { limbs: [ 0x1a72e496b8439b36cd4db1bbe5ca69, 0x5ceb01a76fced43cc0d2474edd1a13, 0x001243 ] } , - BigNum { limbs: [ 0xa3311e69461863c932b24d441a3598, 0x4a6827f60d795efd1735c252faeb40, 0x0061aa ] } , - BigNum { limbs: [ 0x3b6fa83d80ddb697498cee10f65636, 0x145c26afc67740e95ba8f06421ede8, 0x0062de ] } , - BigNum { limbs: [ 0x82345ac27d7e4868b67310ef09a9cb, 0x92f702edb6d0f2507c5f193db6176b, 0x00110f ] } , - BigNum { limbs: [ 0xe294866778dba7eed0691c4f064c24, 0x4e726428a8545d0980355d73eb438a, 0x005985 ] } , - BigNum { limbs: [ 0xdb0f7c98858057112f96e2b0f9b3dd, 0x58e0c574d4f3d63057d2ac2decc1c8, 0x001a68 ] } , - BigNum { limbs: [ 0x3127d801dca32a39962c609da710e3, 0xa4b1ab2b9df1738156030e0c00b4b8, 0x005d57 ] } , - BigNum { limbs: [ 0x8c7c2afe21b8d4c669d39e6258ef1e, 0x02a17e71df56bfb88204fb95d7509b, 0x001696 ] } , - BigNum { limbs: [ 0x7235137c96ca150abf67a5fa6f0687, 0x8eaab1e5d22ab63f8399bdf5936d8f, 0x004978 ] } , - BigNum { limbs: [ 0x4b6eef836791e9f54098590590f97a, 0x18a877b7ab1d7cfa546e4bac4497c4, 0x002a75 ] } , - BigNum { limbs: [ 0xe34c60b7c083e55fade10d7514eed6, 0x3333ea0f66fa627540c1307c98c144, 0x001ac5 ] } , - BigNum { limbs: [ 0xda57a2483dd819a0521ef18aeb112b, 0x741f3f8e164dd0c49746d9253f440e, 0x005928 ] } , - BigNum { limbs: [ 0x500508fe3d0e6a914a23cd6857106f, 0x136a2fdf95ef346770ba87cbc4ad1e, 0x005fb4 ] } , - BigNum { limbs: [ 0x6d9efa01c14d946eb5dc3197a8ef92, 0x93e8f9bde758fed2674d81d6135835, 0x001439 ] } , - BigNum { limbs: [ 0x526fc51e926eed088ea3d3a61591a0, 0x5b7ee5750ad9dde09fa1fc42c5aba4, 0x003f9c ] } , - BigNum { limbs: [ 0x6b343de16bed11f7715c2b59ea6e61, 0x4bd44428726e555938660d5f1259af, 0x003451 ] } , - BigNum { limbs: [ 0xe5f6189a91d3131e38ce660312f615, 0x21c3f659c625eb5509c25b6653d9e7, 0x006f33 ] } , - BigNum { limbs: [ 0xd7adea656c88ebe1c73198fced09ec, 0x858f3343b72247e4ce45ae3b842b6b, 0x0004ba ] } , - BigNum { limbs: [ 0x7a0d81db669673c291f14cd98a7d2a, 0x8d612d2d97a693c03dbd4683c4baa6, 0x003fbe ] } , - BigNum { limbs: [ 0x4396812497c58b3d6e0eb2267582d7, 0x19f1fc6fe5a19f799a4ac31e134aad, 0x00342f ] } , - BigNum { limbs: [ 0x8a993fc6880486691832e8a41ee752, 0x5621a1853029eb3b5bfee47aaa41ce, 0x0007ed ] } , - BigNum { limbs: [ 0x330ac33976577896e7cd165be118af, 0x513188184d1e47fe7c0925272dc385, 0x006c00 ] } , - BigNum { limbs: [ 0x09811b9ecc3cdd2f69ba00cf49e3de, 0x0de23f4bcc6180fb5cd21c7d361f8c, 0x003a91 ] } , - BigNum { limbs: [ 0xb422e761321f21d09645fe30b61c23, 0x9970ea51b0e6b23e7b35ed24a1e5c7, 0x00395c ] } , - BigNum { limbs: [ 0xb28df60d27e28a6f0bea9e4dba4f9a, 0xa7903b327a3446326e6d7100f47412, 0x002992 ] } , - BigNum { limbs: [ 0x0b160cf2d6797490f41560b245b067, 0xffc2ee6b0313ed07699a98a0e39141, 0x004a5a ] } , - BigNum { limbs: [ 0x11fd20282d1b25e0833b7c617bdc5d, 0xf09ed8b68a8d837045222b2c384419, 0x0052dc ] } , - BigNum { limbs: [ 0xaba6e2d7d140d91f7cc4829e8423a4, 0xb6b450e6f2baafc992e5de759fc13a, 0x002110 ] } , - BigNum { limbs: [ 0x1d92ba5065f372af722cf7829fab72, 0x13f833701b1eabc3f1fbd860bb881d, 0x006004 ] } , - BigNum { limbs: [ 0xa01148af98688c508dd3077d60548f, 0x935af62d62298775e60c31411c7d36, 0x0013e9 ] } , - BigNum { limbs: [ 0xf67c97f1fdd432814ece7435bcf923, 0x637daaeb4a5bdc3e971128e27174e4, 0x002f9c ] } , - BigNum { limbs: [ 0xc7276b0e0087cc7eb1318aca4306de, 0x43d57eb232ec56fb40f6e0bf66906e, 0x004451 ] } , - BigNum { limbs: [ 0xd1fc0d8c4aab114fc7d67bfcec6520, 0xc284a67515dc83cfc755da62fd7c91, 0x005dc3 ] } , - BigNum { limbs: [ 0xeba7f573b3b0edb038298303139ae1, 0xe4ce8328676baf6a10b22f3eda88c1, 0x001629 ] } , - BigNum { limbs: [ 0x21d9526aec07103e286a9ea36bab20, 0x583453a9a25dc5a592e88c3fc46d0a, 0x00431c ] } , - BigNum { limbs: [ 0x9bcab0951254eec1d795605c9454e1, 0x4f1ed5f3daea6d94451f7d62139849, 0x0030d1 ] } , - BigNum { limbs: [ 0xbc49eed496ecddb02181d185aa602e, 0x379c4b7bd1be32fa560b3c056fed6e, 0x006bb0 ] } , - BigNum { limbs: [ 0x015a142b676f214fde7e2d7a559fd3, 0x6fb6de21ab8a003f81fccd9c6817e5, 0x00083d ] } , - BigNum { limbs: [ 0x0d4cb24f88de63e4ada96b3b020d8b, 0x0732880a87c2e260e20d201f1dc558, 0x0011c7 ] } , - BigNum { limbs: [ 0xb05750b0757d9b1b525693c4fdf276, 0xa020a192f58550d8f5fae982ba3ffb, 0x006226 ] } , - BigNum { limbs: [ 0x281a3c2fd0196ddb35b650d9ab3014, 0x13a14cf58033dcd23a6d13a1561f3f, 0x007398 ] } , - BigNum { limbs: [ 0x9589c6d02e429124ca49ae2654cfed, 0x93b1dca7fd1456679d9af60081e614, 0x000055 ] } , - BigNum { limbs: [ 0xd7aba520c240a24ce5e53162d931c5, 0x9aee630fab443b1f1ed6a578f80def, 0x003ee8 ] } , - BigNum { limbs: [ 0xe5f85ddf3c1b5cb31a1acd9d26ce3c, 0x0c64c68dd203f81ab9316428dff763, 0x003505 ] } , - BigNum { limbs: [ 0x134e66da5b38f8967d351412b79c04, 0x5553ee0a4e4a941d33b1f8e336b54e, 0x006fe8 ] } , - BigNum { limbs: [ 0xaa559c25a323066982caeaed4863fd, 0x51ff3b932efd9f1ca45610bea15005, 0x000405 ] } , - BigNum { limbs: [ 0x414e3836e3157a8288c66f4fdacbf8, 0x52a8c981ab3a1e7d85b985abf82649, 0x005b43 ] } , - BigNum { limbs: [ 0x7c55cac91b46847d77398fb0253409, 0x54aa601bd20e14bc524e83f5dfdf0a, 0x0018aa ] } , - BigNum { limbs: [ 0x4ab805ac95beda104662889534a02c, 0x539e4674f2d136fa5c7dcdca12fd92, 0x005b3e ] } , - BigNum { limbs: [ 0x72ebfd53689d24efb99d766acb5fd5, 0x53b4e3288a76fc3f7b8a3bd7c507c1, 0x0018af ] } , - BigNum { limbs: [ 0xc08825ca2a922d393400b40d41c6eb, 0x890fb076d6c0dae0712f321c7aee7d, 0x004ca0 ] } , - BigNum { limbs: [ 0xfd1bdd35d3c9d1c6cbff4af2be3916, 0x1e437926a687585966d8d7855d16d5, 0x00274d ] } , - BigNum { limbs: [ 0x0630f155a7283ed1c9abe0a3bb223d, 0xb0488d87edd87d3d3093d21097e608, 0x000f50 ] } , - BigNum { limbs: [ 0xb77311aa5733c02e36541e5c44ddc4, 0xf70a9c158f6fb5fca7743791401f4b, 0x00649c ] } , - BigNum { limbs: [ 0xfee2872cd133059b478876f4842e9f, 0x8ac51357d5355dd7ecde8c306bc5e4, 0x002cbb ] } , - BigNum { limbs: [ 0xbec17bd32d28f964b877880b7bd162, 0x1c8e1645a812d561eb297d716c3f6e, 0x004732 ] } , - BigNum { limbs: [ 0x7209469bf06555dc6de7f9dc3cf057, 0xda9a17c0cb99deeaf901bbb17f4cad, 0x006861 ] } , - BigNum { limbs: [ 0x4b9abc640df6a92392180523c30faa, 0xccb911dcb1ae544edf064df058b8a6, 0x000b8b ] } , - BigNum { limbs: [ 0x79a8628ff9a0c9d04682224497a483, 0xac3d44a1626a5e5a49672c61ad1248, 0x005d42 ] } , - BigNum { limbs: [ 0x43fba07004bb352fb97ddcbb685b7e, 0xfb15e4fc1addd4df8ea0dd402af30b, 0x0016aa ] } , - BigNum { limbs: [ 0x66c147052435b8c52cd3cb674b34f7, 0xb6bdb257b845b08cd87970cb89e28a, 0x004357 ] } , - BigNum { limbs: [ 0x56e2bbfada26463ad32c3398b4cb0a, 0xf0957745c50282acff8e98d64e22c9, 0x003095 ] } , - BigNum { limbs: [ 0x8bc41357f8ecf34b52bf5ff565037f, 0x1602f720f2c6cb73d20cbefccdbf11, 0x00456c ] } , - BigNum { limbs: [ 0x31dfefa8056f0bb4ad409f0a9afc82, 0x9150327c8a8167c605fb4aa50a4642, 0x002e81 ] } , - BigNum { limbs: [ 0xd49563f5999b733d36e6c8d5c85d0c, 0x16953595435748ad3268533efd6733, 0x003b7b ] } , - BigNum { limbs: [ 0xe90e9f0a64c08bc2c919362a37a2f5, 0x90bdf40839f0ea8ca59fb662da9e1f, 0x003872 ] } , - BigNum { limbs: [ 0xb693f1fdc1ba0de7ecc99fd1b22cc2, 0x4379a23142572df8d45c0c2cc85d70, 0x000015 ] } , - BigNum { limbs: [ 0x071011023ca1f11813365f2e4dd33f, 0x63d9876c3af1054103abfd750fa7e3, 0x0073d8 ] } , - BigNum { limbs: [ 0x54551ac51be1b7412c65f5e605243e, 0x5d17e1be209e075f004f9b4bf64387, 0x004307 ] } , - BigNum { limbs: [ 0x694ee83ae27a47bed39a0919fadbc3, 0x4a3b47df5caa2bdad7b86e55e1c1cc, 0x0030e6 ] } , - BigNum { limbs: [ 0x5f4e9992ab4edb37d62c4d138d2f72, 0xe6bd27170f4a688b7dc622905567a8, 0x0037ce ] } , - BigNum { limbs: [ 0x5e55696d530d23c829d3b1ec72d08f, 0xc09602866dfdcaae5a41e711829dab, 0x003c1e ] } , - BigNum { limbs: [ 0x95171015da9c0f569350c43c0745df, 0xf42bd04cd34e6ef5bca284efc7b5c6, 0x00024d ] } , - BigNum { limbs: [ 0x288cf2ea23bfefa96caf3ac3f8ba22, 0xb3275950a9f9c4441b6584b2104f8d, 0x00719f ] } , - BigNum { limbs: [ 0x31e04ad7a1c291452b2c882eaec899, 0x34fc43e610951bdad4b55e2f230cdf, 0x001530 ] } , - BigNum { limbs: [ 0x8bc3b8285c996dbad4d376d1513768, 0x7256e5b76cb3175f0352ab72b4f874, 0x005ebd ] } , - BigNum { limbs: [ 0x3459c934ecefaca50981741a41e44f, 0x1ae656312fef5318e11dc9b1ca9119, 0x001190 ] } , - BigNum { limbs: [ 0x894a39cb116c525af67e8ae5be1bb2, 0x8c6cd36c4d58e020f6ea3ff00d743a, 0x00625d ] } , - BigNum { limbs: [ 0x97c25d899137c6d44daf086afcf9b8, 0xd1a4bc0456eca420f0afb1451cc192, 0x001a75 ] } , - BigNum { limbs: [ 0x25e1a5766d24382bb250f695030649, 0xd5ae6d99265b8f18e758585cbb43c1, 0x005977 ] } , - BigNum { limbs: [ 0xad19ee483751942d93bf8912cc93b0, 0x9c4f8b2315b52fea09cc230ac20329, 0x003210 ] } , - BigNum { limbs: [ 0x108a14b7c70a6ad26c4075ed336c51, 0x0b039e7a6793034fce3be69716022a, 0x0041dd ] } , - BigNum { limbs: [ 0x49d37738918ca35cb7f86764fdea09, 0x402ed2d26efaccfdb0625b8ce63bd7, 0x0008a5 ] } , - BigNum { limbs: [ 0x73d08bc76ccf5ba34807979b0215f8, 0x672456cb0e4d663c27a5ae14f1c97c, 0x006b48 ] } , - BigNum { limbs: [ 0x0c0f30d36b082eb0dc17816cb0e06b, 0xd4b929a9031fcbefd73174b145ab8d, 0x000997 ] } , - BigNum { limbs: [ 0xb194d22c9353d04f23e87d934f1f96, 0xd299fff47a28674a00d694f09259c6, 0x006a55 ] } , - BigNum { limbs: [ 0xd79d9b5cf0b02f4ad1ec37bc4668a5, 0x0b9445efe18018da6541112be98f50, 0x005f8d ] } , - BigNum { limbs: [ 0xe60667a30dabcfb52e13c743b9975c, 0x9bbee3ad9bc81a5f72c6f875ee7602, 0x001460 ] } , - BigNum { limbs: [ 0x121d282465bdad0f34141c7d3da09a, 0x0ef76b4c80691a776f67d16dfe80bc, 0x006c4d ] } , - BigNum { limbs: [ 0xab86dadb989e51f0cbebe282c25f67, 0x985bbe50fcdf18c268a03833d98497, 0x0007a0 ] } , - BigNum { limbs: [ 0xe32d00989071c592863b2deccd28d4, 0x78def8f9daa7a035b7beb65789703d, 0x002513 ] } , - BigNum { limbs: [ 0xda7702676dea396d79c4d11332d72d, 0x2e7430a3a2a093042049534a4e9515, 0x004eda ] } , - BigNum { limbs: [ 0x7db9aa83b35c113fb0d31aeeacbb65, 0x84ab3bcdeda0cd33828d5f406885fb, 0x003543 ] } , - BigNum { limbs: [ 0x3fea587c4affedc04f2ce41153449c, 0x22a7edcf8fa76606557aaa616f7f58, 0x003eaa ] } , - BigNum { limbs: [ 0xe78a85938af37e0af32e561b3d24e8, 0x8ff9c4252ab7abacc0ad5a0f8108c1, 0x00380e ] } , - BigNum { limbs: [ 0xd6197d6c736880f50cd1a8e4c2db19, 0x175965785290878d175aaf9256fc91, 0x003bdf ] } , - BigNum { limbs: [ 0xe862487904d0ab1b561347c6a47727, 0xca4cf7456c9b942c20e45c3ad14d9c, 0x005164 ] } , - BigNum { limbs: [ 0xd541ba86f98b53e4a9ecb7395b88da, 0xdd06325810ac9f0db723ad6706b7b6, 0x002288 ] } , - BigNum { limbs: [ 0xd33bf14161f9d1b57c74a1a632861c, 0x8837cd53b51429480da6ff98e69efd, 0x0006ea ] } , - BigNum { limbs: [ 0xea6811be9c622d4a838b5d59cd79e5, 0x1f1b5c49c83409f1ca610a08f16655, 0x006d03 ] } , - BigNum { limbs: [ 0x6f85c75c7104048219119f4ee37970, 0xe3b668951f44d83642143e5116021a, 0x006661 ] } , - BigNum { limbs: [ 0x4e1e3ba38d57fa7de6ee5fb11c8691, 0xc39cc1085e035b0395f3cb50c20339, 0x000d8b ] } , - BigNum { limbs: [ 0xabe8a42bca4648155c5db70536fba5, 0x1a6d0e45b70438852afca87a27475e, 0x0011ed ] } , - BigNum { limbs: [ 0x11bb5ed43415b6eaa3a247fac9045c, 0x8ce61b57c643fab4ad0b6127b0bdf5, 0x006200 ] } , - BigNum { limbs: [ 0x56b609aec53dfd8fd8477795ff4e24, 0x9098661b7f0098c6a168ae263847ed, 0x004d4f ] } , - BigNum { limbs: [ 0x66edf951391e017027b8876a00b1dd, 0x16bac381fe479a73369f5b7b9fbd66, 0x00269e ] } , - BigNum { limbs: [ 0x3068288d002952aa9bb95d1b374ed5, 0xc885613baf7578fdbf732896904a2d, 0x00034b ] } , - BigNum { limbs: [ 0x8d3bda72fe32ac556446a1e4c8b12c, 0xdecdc861cdd2ba3c1894e10b47bb26, 0x0070a1 ] } , - BigNum { limbs: [ 0xfaf5246bdc6160df264050cf3e22ae, 0x814196ce178247b7c36d8edbda6053, 0x00323e ] } , - BigNum { limbs: [ 0xc2aede9421fa9e20d9bfae30c1dd53, 0x261192cf65c5eb82149a7ac5fda4ff, 0x0041af ] } , - BigNum { limbs: [ 0x83b05c24992a3135e348767c4aafe2, 0x8130b73aebc3ce227e8fb926f40cd9, 0x000ede ] } , - BigNum { limbs: [ 0x39f3a6db6531cdca1cb78883b5501f, 0x26227262918465175978507ae3f87a, 0x00650f ] } , - BigNum { limbs: [ 0xfa262ea0e733170f29a0b04e9a8146, 0xdb5d01b6e9702207cb5d3f177f64f8, 0x001672 ] } , - BigNum { limbs: [ 0xc37dd45f1728e7f0d65f4eb1657ebb, 0xcbf627e693d811320caaca8a58a05a, 0x005d7a ] } , - BigNum { limbs: [ 0xcd82c8828701da73a34913a9e841e9, 0x69cdffa8d7cafcb50dee8ce8259bd4, 0x004147 ] } , - BigNum { limbs: [ 0xf0213a7d775a248c5cb6eb5617be18, 0x3d8529f4a57d3684ca197cb9b2697e, 0x0032a6 ] } , - BigNum { limbs: [ 0x94f0b4c9df1485e97b95616c3a6fef, 0x3edc1705b7526883f2507b3751c473, 0x006835 ] } , - BigNum { limbs: [ 0x28b34e361f477916846a9d93c59012, 0x68771297c5f5cab5e5b78e6a8640e0, 0x000bb8 ] } , - BigNum { limbs: [ 0x8dd787b3ad291ab1521b0d5ecedcc4, 0x82b9f56777bee241f5a44452f15b9e, 0x00200a ] } , - BigNum { limbs: [ 0x2fcc7b4c5132e44eade4f1a131233d, 0x24993436058950f7e263c54ee6a9b5, 0x0053e3 ] } , - BigNum { limbs: [ 0xd9ef271dd3186ccee2ccfa249bc96c, 0x3aebd897ae71b531e25c39151709d1, 0x006261 ] } , - BigNum { limbs: [ 0xe3b4dbe22b4392311d3304db643695, 0x6c675105ced67e07f5abd08cc0fb81, 0x00118c ] } , - BigNum { limbs: [ 0xcc8504f991529c7e5c204ab3282e9c, 0x10c06ce25a54f297d011f3f4779043, 0x004296 ] } , - BigNum { limbs: [ 0xf11efe066d096281a3dfb44cd7d165, 0x9692bcbb22f340a207f615ad60750f, 0x003157 ] } , - BigNum { limbs: [ 0xe0ed66ad5979117d3b59206b37406b, 0xf99d726505dc5b4365cceb71e6cc29, 0x006e26 ] } , - BigNum { limbs: [ 0xdcb69c52a4e2ed82c4a6de94c8bf96, 0xadb5b738776bd7f6723b1e2ff13929, 0x0005c6 ] } , - BigNum { limbs: [ 0xffc63674068e602b7a8144bbcd69c5, 0xf8e0e7abdd4583aa7aaa8a5d528ad3, 0x005a65 ] } , - BigNum { limbs: [ 0xbdddcc8bf7cd9ed4857eba4432963c, 0xae7241f1a002af8f5d5d7f44857a7f, 0x001987 ] } , - BigNum { limbs: [ 0x7d6416a22630d3fd06627b42ef60df, 0xf9d79aea135c6db595852b0bc9e469, 0x0025d3 ] } , - BigNum { limbs: [ 0x403fec5dd82b2b02f99d83bd109f22, 0xad7b8eb369ebc5844282de960e20ea, 0x004e19 ] } , - BigNum { limbs: [ 0x572b91ccaf01e737ebaf0350b4539e, 0x1b19e36b145443404dbc8e67ffaff0, 0x001f1c ] } , - BigNum { limbs: [ 0x667871334f5a17c81450fbaf4bac63, 0x8c39463268f3eff98a4b7b39d85563, 0x0054d1 ] } , - BigNum { limbs: [ 0xd7ac7c2c9bde34674cde84dbe81470, 0x7c3cd8f74f3b31619e9a529ee63694, 0x0000cb ] } , - BigNum { limbs: [ 0xe5f786d3627dca98b3217a2417eb91, 0x2b1650a62e0d01d8396db702f1cebe, 0x007322 ] } , - BigNum { limbs: [ 0xa95fd87e28812feed0f1e2e15ed07a, 0x199195db48b029afda9a43a0090477, 0x003a0e ] } , - BigNum { limbs: [ 0x14442a81d5dacf112f0e1c1ea12f87, 0x8dc193c234980989fd6dc601cf00dc, 0x0039df ] } , - BigNum { limbs: [ 0x2b8714689ebb197b31b51d176d5c3c, 0xe1242db051eb464a672cc470201226, 0x0067bd ] } , - BigNum { limbs: [ 0x921cee975fa0e584ce4ae1e892a3c5, 0xc62efbed2b5cecef70db4531b7f32d, 0x000c2f ] } , - BigNum { limbs: [ 0x3cbdd8a6e048f12007970e58be3166, 0x33f1b315af0fd1980c2d159e845906, 0x0016c2 ] } , - BigNum { limbs: [ 0x80e62a591e130ddff868f0a741ce9b, 0x73617687ce3861a1cbdaf40353ac4d, 0x005d2b ] } , - BigNum { limbs: [ 0xfee8040aec8c1b21876fef338861b6, 0x48f5fc192eed7bab0a897de2a8f403, 0x002725 ] } , - BigNum { limbs: [ 0xbebbfef511cfe3de78900fcc779e4b, 0x5e5d2d844e5ab78ecd7e8bbf2f114f, 0x004cc8 ] } , - BigNum { limbs: [ 0xc23fb356e882cb58c9b96eb9c473a7, 0x69aaaeeede1f442a3183fc9227d33e, 0x003df9 ] } , - BigNum { limbs: [ 0xfb644fa915d933a7364690463b8c5a, 0x3da87aae9f28ef0fa6840d0fb03214, 0x0035f4 ] } , - BigNum { limbs: [ 0x94938a3faced68a2e0778d5371aa24, 0xceb0996b830d198b7c6783f5c910ad, 0x00195a ] } , - BigNum { limbs: [ 0x291078c0516e965d1f8871ac8e55dd, 0xd8a29031fa3b19ae5ba085ac0ef4a6, 0x005a92 ] } , - BigNum { limbs: [ 0xff4d68c5cc6a9938a37e9fbda3520b, 0x15803f81c70dcc1409ac0a82f404fc, 0x003786 ] } , - BigNum { limbs: [ 0xbe569a3a31f165c75c815f425cadf6, 0x91d2ea1bb63a6725ce5bff1ee40056, 0x003c67 ] } , - BigNum { limbs: [ 0xe8bb12eb4447c40dcc1e860326fca3, 0x8ed923b9bbd942fb5be8827759c83c, 0x0000e4 ] } , - BigNum { limbs: [ 0xd4e8f014ba143af233e178fcd9035e, 0x187a05e3c16ef03e7c1f872a7e3d16, 0x007309 ] } , - BigNum { limbs: [ 0x4adbc5153b03755ad82db249fcc494, 0x19a4f89360d960c87e36158349361b, 0x004976 ] } , - BigNum { limbs: [ 0x72c83deac35889a527d24cb6033b6d, 0x8dae310a1c6ed27159d1f41e8ecf38, 0x002a77 ] } , - BigNum { limbs: [ 0xd06bc72939ea9a0f0b5d731502b4fc, 0xa8bd32d060ed4e1a4ccbda7027a088, 0x0028d3 ] } , - BigNum { limbs: [ 0xed383bd6c47164f0f4a28beafd4b05, 0xfe95f6cd1c5ae51f8b3c2f31b064ca, 0x004b19 ] } , - BigNum { limbs: [ 0xfaf4b473e66f63ed292d9ec211f01f, 0xf755c839b702b7f1381a8091ff1f94, 0x001e3c ] } , - BigNum { limbs: [ 0xc2af4e8c17ec9b12d6d2603dee0fe2, 0xaffd6163c6457b489fed890fd8e5be, 0x0055b0 ] } , - BigNum { limbs: [ 0x24a11c49898e7b3bb56210f46b445f, 0xc5ea4ace31b95f11446f4b1f4fdbed, 0x005b56 ] } , - BigNum { limbs: [ 0x9902e6b674cd83c44a9dee0b94bba2, 0xe168decf4b8ed4289398be82882966, 0x001896 ] } , - BigNum { limbs: [ 0x6f5e54d4f027ac5bad62e1af726a05, 0x30306ecaf3fa1c87b7ca9aec4a5134, 0x003ffc ] } , - BigNum { limbs: [ 0x4e45ae2b0e3452a4529d1d508d95fc, 0x7722bad2894e16b2203d6eb58db41f, 0x0033f1 ] } , - BigNum { limbs: [ 0x85c9632db6a4b24bef8e0f80d5157c, 0x85e0f879619f68358d191aaeef76af, 0x003f86 ] } , - BigNum { limbs: [ 0x37da9fd247b74cb41071ef7f2aea85, 0x217231241ba8cb044aeeeef2e88ea4, 0x003467 ] } , - BigNum { limbs: [ 0x7e418610e6300609ec655a96950036, 0x96a6cc49dbfef1d56e569388e1650c, 0x002089 ] } , - BigNum { limbs: [ 0x3f627cef182bf8f6139aa4696affcb, 0x10ac5d53a149416469b17618f6a047, 0x005364 ] } , - BigNum { limbs: [ 0x3f0be78d99500000cea642590ebc16, 0xab00ba22d325f03fa5b968775aa902, 0x006218 ] } , - BigNum { limbs: [ 0x7e981b72650bfeff3159bca6f143eb, 0xfc526f7aaa2242fa324ea12a7d5c51, 0x0011d4 ] } , - BigNum { limbs: [ 0xea4e19668e715782042e05ddb7752a, 0xf74d99ab54b7ec9f8b181a83fad3b4, 0x001ba4 ] } , - BigNum { limbs: [ 0xd355e9996feaa77dfbd1f922488ad7, 0xb0058ff22890469a4cefef1ddd319e, 0x005848 ] } , - BigNum { limbs: [ 0x4c336a761e4581bf60523dc6f3dea6, 0x32a8f7310d4638b6bb7d490afd305a, 0x000aae ] } , - BigNum { limbs: [ 0x71709889e0167d409fadc1390c215b, 0x74aa326c7001fa831c8ac096dad4f9, 0x00693f ] } , - BigNum { limbs: [ 0x3e67ad1973bd409807a6e05531681c, 0x70aa028a2ef45d5b62df0f11ae65bf, 0x006c86 ] } , - BigNum { limbs: [ 0x7f3c55e68a9ebe67f8591eaace97e5, 0x36a927134e53d5de7528fa90299f94, 0x000767 ] } , - BigNum { limbs: [ 0xe717b4de70fa810795a88a3a2252bc, 0x6fc224829e1a6434fe5c34476208aa, 0x006e82 ] } , - BigNum { limbs: [ 0xd68c4e218d617df86a5774c5ddad45, 0x3791051adf2dcf04d9abd55a75fca8, 0x00056b ] } , - BigNum { limbs: [ 0x4283ef0cd948c46de4c7756a415804, 0x0f838a7f9cfe5497048871f79513b8, 0x0060e8 ] } , - BigNum { limbs: [ 0x7b2013f325133a921b388995bea7fd, 0x97cf9f1de049dea2d37f97aa42f19b, 0x001305 ] } , - BigNum { limbs: [ 0x32eb25ed865d8a753b31683fa6dd39, 0x966dbaad8e05e14dfe2ee8716930f9, 0x0016ab ] } , - BigNum { limbs: [ 0x8ab8dd1277fe748ac4ce96c05922c8, 0x10e56eefef4251ebd9d921306ed45a, 0x005d42 ] } , - BigNum { limbs: [ 0xb3548fbd0e36ae4822c9601db5b4d5, 0xa86df049b80d263ce2230e80f40b30, 0x006d28 ] } , - BigNum { limbs: [ 0x0a4f7342f02550b7dd369ee24a4b2c, 0xfee53953c53b0cfcf5e4fb20e3fa23, 0x0006c4 ] } , - BigNum { limbs: [ 0x405360681e405f89ed751a5b13fc35, 0x5e64d07b6631b2a5b57903a8320da2, 0x007020 ] } , - BigNum { limbs: [ 0x7d50a297e01b9f76128ae4a4ec03cc, 0x48ee592217168094228f05f9a5f7b1, 0x0003cd ] } , - BigNum { limbs: [ 0xa7b4c41bfe96e37702c146acabf566, 0xa04f78c9dafbc3e1ff474a6d35e8b9, 0x0056c0 ] } , - BigNum { limbs: [ 0x15ef3ee3ffc51b88fd3eb853540a9b, 0x0703b0d3a24c6f57d8c0bf34a21c9a, 0x001d2d ] } , - BigNum { limbs: [ 0x1cbb84cdda266dbb22ab2c4a38aa7a, 0x5c8ebe53d0423309862f1db8081658, 0x0042c7 ] } , - BigNum { limbs: [ 0xa0e87e3224359144dd54d2b5c75587, 0x4ac46b49ad06003051d8ebe9cfeefb, 0x003126 ] } , - BigNum { limbs: [ 0x320b95d64b1d490f210d0f0ba87923, 0xe1b4b7a01995741c5814d5130a8fc8, 0x00332e ] } , - BigNum { limbs: [ 0x8b986d29b33eb5f0def2eff45786de, 0xc59e71fd63b2bf1d7ff3348ecd758b, 0x0040be ] } , - BigNum { limbs: [ 0x23f2668433fa8a28e9d267e676f09d, 0x0c0d2f68cc92142eaa7c005473e533, 0x0038bd ] } , - BigNum { limbs: [ 0x99b19c7bca6174d7162d9719890f64, 0x9b45fa34b0b61f0b2d8c094d642020, 0x003b30 ] } , - BigNum { limbs: [ 0xec9c72dcc8734dc425ca19861ee552, 0xa1b4bb68c4254dc4593c3329bca6f0, 0x00452b ] } , - BigNum { limbs: [ 0xd107902335e8b13bda35e579e11aaf, 0x059e6e34b922e5757ecbd6781b5e62, 0x002ec2 ] } , - BigNum { limbs: [ 0x1f67edc6afede3df74adaaa1cca9a7, 0x5e0842a169ebac8106ac15c98c18ed, 0x005ad2 ] } , - BigNum { limbs: [ 0x9e3c15394e6e1b208b52545e33565a, 0x494ae6fc135c86b8d15bf3d84bec66, 0x00191b ] } , - BigNum { limbs: [ 0x4058bec7b133ca651afefb29a9939c, 0x0a1b0f3b4c751890003cd3ebaf5e8c, 0x001c40 ] } , - BigNum { limbs: [ 0x7d4b44384d28349ae50103d6566c65, 0x9d381a6230d31aa9d7cb35b628a6c7, 0x0057ad ] } , - BigNum { limbs: [ 0x36ab8ea81583c4c1bac540e381c8f0, 0x1aaa7e12f469e4cd7d8ce2c990dfaf, 0x00228b ] } , - BigNum { limbs: [ 0x86f87457e8d83a3e453abe1c7e3711, 0x8ca8ab8a88de4e6c5a7b26d84725a4, 0x005162 ] } , - BigNum { limbs: [ 0xcc000a11e4802951f21cd6dbea7c2a, 0xb2123d13636d445f7082bc8207c8de, 0x0040e1 ] } , - BigNum { limbs: [ 0xf1a3f8ee19dbd5ae0de328241583d7, 0xf540ec8a19daeeda67854d1fd03c74, 0x00330b ] } , - BigNum { limbs: [ 0x3e599117e9cb952d607598bcc1e83b, 0x0c2ab77ef28c6f50de31578cfaa24a, 0x0057db ] } , - BigNum { limbs: [ 0x7f4a71e8149069d29f8a66433e17c6, 0x9b28721e8abbc3e8f9d6b214dd6309, 0x001c12 ] } , - BigNum { limbs: [ 0x1799f058035dcbd96ba5757dda8575, 0x50a13bd906972b0df5d780044f449b, 0x0046ae ] } , - BigNum { limbs: [ 0xa60a12a7fafe3326945a8982257a8c, 0x56b1edc476b1082be230899d88c0b8, 0x002d3f ] } , - BigNum { limbs: [ 0xd251991f9b1b248b5290db47cce484, 0x26250c7b5ea46f67582902c36e8328, 0x006bd0 ] } , - BigNum { limbs: [ 0xeb5269e06340da74ad6f23b8331b7d, 0x812e1d221ea3c3d27fdf06de69822a, 0x00081d ] } , - BigNum { limbs: [ 0x6031729518c4b8a9bfdced5c3773f4, 0x86953de4b81e7bbf620c45bb9d997c, 0x001328 ] } , - BigNum { limbs: [ 0x5d72906ae5974656402311a3c88c0d, 0x20bdebb8c529b77a75fbc3e63a6bd7, 0x0060c5 ] } , - BigNum { limbs: [ 0x32c32f9153cf104f13adf78f0ab22e, 0xa23781992517af63a50cecf710ddd8, 0x0015df ] } , - BigNum { limbs: [ 0x8ae0d36eaa8ceeb0ec520770f54dd3, 0x051ba804583083d632fb1caac7277b, 0x005e0e ] } , - BigNum { limbs: [ 0x4cd9e894db2eabe96ae51954f195b5, 0x98b9143180684b98c91a50bad0d8c1, 0x006e54 ] } , - BigNum { limbs: [ 0x70ca1a6b232d5316951ae5ab0e6a4c, 0x0e9a156bfcdfe7a10eedb8e7072c92, 0x000599 ] } , - BigNum { limbs: [ 0xae1798878e7216996be5ea4dc5beac, 0x20333d0b9da9e2636e6e51aab939ce, 0x004de0 ] } , - BigNum { limbs: [ 0x0f8c6a786fe9e866941a14b23a4155, 0x871fec91df9e50d66999b7f71ecb85, 0x00260d ] } , - BigNum { limbs: [ 0x4b1482a8d939c5fa9b75f82a40b888, 0x083d359637c206f39bf89d8be3b31f, 0x006541 ] } , - BigNum { limbs: [ 0x728f805725223905648a06d5bf4779, 0x9f15f40745862c463c0f6c15f45234, 0x000eac ] } , - BigNum { limbs: [ 0x0c9aca5890366ec871b857734dcd5f, 0x0d89eb0a9d7dda72356f321f529289, 0x006e9d ] } , - BigNum { limbs: [ 0xb10938a76e2590378e47a78cb232a2, 0x99c93e92dfca58c7a298d7828572ca, 0x000550 ] } , - BigNum { limbs: [ 0xd568dfeaa8afc9152957dd7e3e6d6e, 0x0519af22b8c6ef03dcb464a2d69029, 0x0054ca ] } , - BigNum { limbs: [ 0xe83b231555ac35ead6a82181c19293, 0xa2397a7ac4814435fb53a4ff017529, 0x001f23 ] } , - BigNum { limbs: [ 0x4e5a1345f539f8413b50b95c227c97, 0x1d1e8c04c2f02e593273988bfecb24, 0x001e84 ] } , - BigNum { limbs: [ 0x6f49efba092206bec4af45a3dd836a, 0x8a349d98ba5804e0a5947115d93a2f, 0x005569 ] } , - BigNum { limbs: [ 0xa233d82ae54a6891aab45ac7da93f8, 0x59e206cc655847d1ca20dca2c17542, 0x000643 ] } , - BigNum { limbs: [ 0x1b702ad51911966e554ba438256c09, 0x4d7122d117efeb680de72cff169011, 0x006daa ] } , - BigNum { limbs: [ 0x81e21fc24c6141198168d81deef562, 0x4b60c7562ad9d99a2cadbf83be355f, 0x002c49 ] } , - BigNum { limbs: [ 0x3bc1e33db1fabde67e9726e2110a9f, 0x5bf26247526e599fab5a4a1e19cff4, 0x0047a4 ] } , - BigNum { limbs: [ 0x2ac7666544ba6c5bdbe9e8a2c79508, 0x78e857f2fceaabddbfda8da360393c, 0x003e34 ] } , - BigNum { limbs: [ 0x92dc9c9ab9a192a42416165d386af9, 0x2e6ad1aa805d875c182d7bfe77cc17, 0x0035b9 ] } , - BigNum { limbs: [ 0xe1aa2efec5bded7ca93d1f2babd583, 0x8b67f646955d6a841374b0bdab42f1, 0x0016ad ] } , - BigNum { limbs: [ 0xdbf9d401389e118356c2dfd4542a7e, 0x1beb3356e7eac8b5c49358e42cc261, 0x005d40 ] } , - BigNum { limbs: [ 0xdf9ac37921d95019c73db3049e70c2, 0xdae9d3069be8ff8367d0e70c66c376, 0x002895 ] } , - BigNum { limbs: [ 0xde093f86dc82aee638c24bfb618f3f, 0xcc695696e15f33b6703722957141dc, 0x004b57 ] } , - BigNum { limbs: [ 0x79d4bf47595d55596ef2bd27f6682b, 0xeeb9d3a9d140dca62ce144961f8e25, 0x0058e2 ] } , - BigNum { limbs: [ 0x43cf43b8a4fea9a6910d41d80997d6, 0xb89955f3ac075693ab26c50bb8772e, 0x001b0a ] } , - BigNum { limbs: [ 0x4facbb773e7e09b87f65f96c3ad3d8, 0x391df1f55b0d02979cb2d4cc998a57, 0x002805 ] } , - BigNum { limbs: [ 0x6df74788bfddf547809a0593c52c29, 0x6e3537a8223b30a23b5534d53e7afc, 0x004be8 ] } , - BigNum { limbs: [ 0xd0e546f44b9d2078d754457c3efb5f, 0xd4f96511eb5d8b3395e1139c918196, 0x004369 ] } , - BigNum { limbs: [ 0xecbebc0bb2bede8728abb983c104a2, 0xd259c48b91eaa8064226f6054683bc, 0x003083 ] } , - BigNum { limbs: [ 0xea24105782b04b7f3936dc7724635b, 0x34b12fcff435e4896a758b7a3407b4, 0x000164 ] } , - BigNum { limbs: [ 0xd37ff2a87babb380c6c92288db9ca6, 0x72a1f9cd89124eb06d927e27a3fd9e, 0x007289 ] } , - BigNum { limbs: [ 0x832e7d3aaf999a1c1179cca00ad0ff, 0x72d9bafd451d01694913a55df2bc6e, 0x006856 ] } , - BigNum { limbs: [ 0x3a7585c54ec264e3ee86325ff52f02, 0x34796ea0382b31d08ef46443e548e5, 0x000b97 ] } , - BigNum { limbs: [ 0x3a42eafa204ae672603ed6fc998242, 0xcf0a8c02601cb5a1bcab4261caffc9, 0x000d60 ] } , - BigNum { limbs: [ 0x83611805de11188d9fc12803667dbf, 0xd8489d9b1d2b7d981b5cc7400d058a, 0x00668c ] } , - BigNum { limbs: [ 0x52d564119aef005ef9322cf6cdde3d, 0x81b0aeee3b09dd2c54924fac5a29f4, 0x003289 ] } , - BigNum { limbs: [ 0x6ace9eee636cfea106cdd2093221c4, 0x25a27aaf423e560d8375b9f57ddb5f, 0x004164 ] } , - BigNum { limbs: [ 0x3d565b98633cd44e275792a663eedc, 0x6f68a5eae59b7e650d3e617391f7d9, 0x006e8b ] } , - BigNum { limbs: [ 0x804da7679b1f2ab1d8a86c599c1125, 0x37ea83b297acb4d4cac9a82e460d7a, 0x000562 ] } , - BigNum { limbs: [ 0x112248f15f34d66533436ad9623014, 0xdcd347682fb0f40c711506a4cdc44a, 0x001164 ] } , - BigNum { limbs: [ 0xac81ba0e9f27289accbc94269dcfed, 0xca7fe2354d973f2d66f302fd0a4109, 0x006288 ] } , - BigNum { limbs: [ 0x1311a73508c66be5689312f36abcf3, 0xb5bee2af44c7ab836980235fbd2d5f, 0x0005d5 ] } , - BigNum { limbs: [ 0xaa925bcaf595931a976cec0c95430e, 0xf19446ee388087b66e87e6421ad7f4, 0x006e17 ] } , - BigNum { limbs: [ 0x3eb832b8329919e3a13eda58db0a31, 0xb4ffd054f4599939200f5eb7e9c0e6, 0x0049fb ] } , - BigNum { limbs: [ 0x7eebd047cbc2e51c5ec124a724f5d0, 0xf253594888ee9a00b7f8aae9ee446d, 0x0029f1 ] } , - BigNum { limbs: [ 0xfa31e45936c2a5caf319587d7506f7, 0x416e56363160221a894c0a012beffe, 0x0034d3 ] } , - BigNum { limbs: [ 0xc3721ea6c79959350ce6a6828af90a, 0x65e4d3674be8111f4ebbffa0ac1554, 0x003f1a ] } , - BigNum { limbs: [ 0xf44e1f9a185814a744d29457cdb826, 0xcbf1e9231053b05d210c27af8f2fd3, 0x0010c9 ] } , - BigNum { limbs: [ 0xc955e365e603ea58bb2d6aa83247db, 0xdb61407a6cf482dcb6fbe1f248d57f, 0x006323 ] } , - BigNum { limbs: [ 0x4500302beb3b59756e185b9c1b40d8, 0xb0f92770adc552b6eb1a6b54249500, 0x0033a9 ] } , - BigNum { limbs: [ 0x78a3d2d41320a58a91e7a363e4bf29, 0xf65a022ccf82e082eced9e4db37053, 0x004043 ] } , - BigNum { limbs: [ 0x6c92f7b27e37a7103f16ad6df67bb9, 0x870878cad4e4a5157fc804f6310ab1, 0x0056a3 ] } , - BigNum { limbs: [ 0x51110b4d802457efc0e95192098448, 0x204ab0d2a8638e24584004aba6faa2, 0x001d4a ] } , - BigNum { limbs: [ 0x1637458ec6750a8191a7fdaabff692, 0x8f6f552333b5b25ea66d74943cccdc, 0x004ef6 ] } , - BigNum { limbs: [ 0xa76cbd7137e6f47e6e58015540096f, 0x17e3d47a499280db319a950d9b3877, 0x0024f7 ] } , - BigNum { limbs: [ 0x76d7d1cd4ff3465a0d33c3931997b5, 0xf86347300fe04628c2b613f30a739e, 0x000d58 ] } , - BigNum { limbs: [ 0x46cc3132ae68b8a5f2cc3b6ce6684c, 0xaeefe26d6d67ed111551f5aecd91b5, 0x006694 ] } , - BigNum { limbs: [ 0x8835476fc695fb930f39ba1eefa047, 0xc08499ab579dac5f8647bd10a76514, 0x00217b ] } , - BigNum { limbs: [ 0x356ebb9037c6036cf0c644e1105fba, 0xe6ce8ff225aa86da51c04c9130a03f, 0x005271 ] } , - BigNum { limbs: [ 0x4c0ce1f80702a84ac78a1e41bde2d7, 0xea12997cfd66c71a3d29a165c2b6ca, 0x000230 ] } , - BigNum { limbs: [ 0x71972107f75956b53875e0be421d2a, 0xbd4090207fe16c1f9ade683c154e89, 0x0071bc ] } , - BigNum { limbs: [ 0x5ad7c44d43f038084a1a22a4112bd2, 0x6450648b2a2e87de6c939571d6acfc, 0x000c1c ] } , - BigNum { limbs: [ 0x62cc3eb2ba6bc6f7b5e5dc5beed42f, 0x4302c5125319ab5b6b747430015857, 0x0067d1 ] } , - BigNum { limbs: [ 0x6fb6a479ad0676bf64bd5d39dd507f, 0xe5ca04d37de69de68a9ca30d676334, 0x000633 ] } , - BigNum { limbs: [ 0x4ded5e86515588409b42a1c622af82, 0xc18924c9ff6195534d6b669470a21f, 0x006db9 ] } , - BigNum { limbs: [ 0xc4635810e4c6eb4d6bd1e069cca493, 0x07a292323bd5d2e8cb274c64cfe48f, 0x002ae5 ] } , - BigNum { limbs: [ 0xf940aaef199513b2942e1e96335b6e, 0x9fb0976b417260510ce0bd3d0820c3, 0x004908 ] } , - BigNum { limbs: [ 0x23aa9f7b424b89f9d773a6dd31a57c, 0x60287ef28c3dae7e2106b45ddfa44e, 0x004249 ] } , - BigNum { limbs: [ 0x99f96384bc107506288c5822ce5a85, 0x472aaaaaf10a84bbb7015543f86105, 0x0031a4 ] } , - BigNum { limbs: [ 0x85943b9f8f65779cf781766c8f4147, 0x02c4a03e2fce92ee778b5ca3fb4c1f, 0x001b2f ] } , - BigNum { limbs: [ 0x380fc7606ef68763087e889370beba, 0xa48e895f4d79a04b607cacfddcb934, 0x0058be ] } , - BigNum { limbs: [ 0xb09601710d39e51469d7644aa53bd0, 0x4f177093e6741b09aae337a88fe4be, 0x004017 ] } , - BigNum { limbs: [ 0x0d0e018ef12219eb96289ab55ac431, 0x583bb90996d418302d24d1f9482095, 0x0033d6 ] } , - BigNum { limbs: [ 0x4b952110f12481f98e3c63fa2ede65, 0x9916c272df3034a6cc45edbf8d1e16, 0x00483b ] } , - BigNum { limbs: [ 0x720ee1ef0d377d0671c39b05d1219c, 0x0e3c672a9e17fe930bc21be24ae73d, 0x002bb2 ] } , - BigNum { limbs: [ 0x2e1085a75f37e69c04e98949156ce6, 0x8b31afb3c2e037a317f15f37df06d8, 0x0062fa ] } , - BigNum { limbs: [ 0x8f937d589f241863fb1675b6ea931b, 0x1c2179e9ba67fb96c016aa69f8fe7b, 0x0010f3 ] } , - BigNum { limbs: [ 0x66c3f5a0e05b76d6fddacf37a23a65, 0x68c30ab81e098624b9ed69a3313373, 0x005316 ] } , - BigNum { limbs: [ 0x56e00d5f1e00882902252fc85dc59c, 0x3e901ee55f3ead151e1a9ffea6d1e0, 0x0020d7 ] } , - BigNum { limbs: [ 0x01804dbba870bbae53d143440a70f2, 0x16fc2e317371ac14a94fc40ad271c7, 0x005c88 ] } , - BigNum { limbs: [ 0xbc23b54455eb4351ac2ebbbbf58f0f, 0x9056fb6c09d687252eb8459705938c, 0x001765 ] } , - BigNum { limbs: [ 0x29dd5298a9bad6200efa9202a1379c, 0xb00533bd66708dfa6cff8142851dcf, 0x0015c2 ] } , - BigNum { limbs: [ 0x93c6b06754a128dff1056cfd5ec865, 0xf74df5e016d7a53f6b08885f52e784, 0x005e2a ] } , - BigNum { limbs: [ 0x7bd10c3805b2c5a8e85718ebdc3fa6, 0x6a52d5f60ae45016df9c12d0fbcc2f, 0x002b3f ] } , - BigNum { limbs: [ 0x41d2f6c7f8a9395717a8e61423c05b, 0x3d0053a77263e322f86bf6d0dc3924, 0x0048ae ] } , - BigNum { limbs: [ 0x4d05533f920c0d6527f5b384be953c, 0x7dc43d7b104d492273078d50dd212e, 0x0041f1 ] } , - BigNum { limbs: [ 0x709eafc06c4ff19ad80a4b7b416ac5, 0x298eec226cfaea1765007c50fae425, 0x0031fc ] } , - BigNum { limbs: [ 0x549a66d486356d7ddebe37986d5dfe, 0x9b7449bcaba834265cbbada025d639, 0x003c64 ] } , - BigNum { limbs: [ 0x69099c2b782691822141c76792a203, 0x0bdedfe0d19fff137b4c5c01b22f1a, 0x003789 ] } , - BigNum { limbs: [ 0xb3f0d905e8e3ffaab366d69df72013, 0x3fdc3813ec383f93d176bd69b38a2e, 0x00196e ] } , - BigNum { limbs: [ 0x09b329fa1577ff554c99286208dfee, 0x6776f189910ff3a606914c38247b25, 0x005a7f ] } , - BigNum { limbs: [ 0x98f7335896a32fc2d353716fa6d165, 0xf6933307848d19b0edbf3386cd297c, 0x0045e0 ] } , - BigNum { limbs: [ 0x24accfa767b8cf3d2cac8d90592e9c, 0xb0bff695f8bb1988ea48d61b0adbd7, 0x002e0c ] } , - BigNum { limbs: [ 0xa1293eeeb767643e7069d2d06a75be, 0x76d3772b2f16c83e19ebe8e2be6eec, 0x000e14 ] } , - BigNum { limbs: [ 0x1c7ac41146f49ac18f962c2f958a43, 0x307fb2724e316afbbe1c20bf199667, 0x0065d9 ] } , - BigNum { limbs: [ 0xf045901941ab9c683870ca7608f917, 0x887d1a94af41885e2689177c805052, 0x00197e ] } , - BigNum { limbs: [ 0xcd5e72e6bcb06297c78f3489f706ea, 0x1ed60f08ce06aadbb17ef22557b500, 0x005a6f ] } , - BigNum { limbs: [ 0xd6ec5f40117d9bbdbb2badb386ed54, 0x9a9b4159737169c92da1e38aef4d0b, 0x003bf8 ] } , - BigNum { limbs: [ 0xe6b7a3bfecde634244d4514c7912ad, 0x0cb7e84409d6c970aa662616e8b847, 0x0037f5 ] } , - BigNum { limbs: [ 0x9d08e6e47b90b583b835f626d2c7ac, 0x4ef52d61cacc3e4d4311785303c13e, 0x006459 ] } , - BigNum { limbs: [ 0x209b1c1b82cb497c47ca08d92d3855, 0x585dfc3bb27bf4ec94f6914ed44415, 0x000f94 ] } , - BigNum { limbs: [ 0xb16ca10e7b13cb91bd06a5f7e5320a, 0xdf6c57efd496f1fde065b5338cdb27, 0x004dfc ] } , - BigNum { limbs: [ 0x0c3761f18348336e42f959081acdf7, 0xc7e6d1ada8b1413bf7a2546e4b2a2c, 0x0025f0 ] } , - BigNum { limbs: [ 0x009ff716f23cf57420570de9b9402b, 0x637eb9d26164bff0f8f45c95ada9fe, 0x006304 ] } , - BigNum { limbs: [ 0xbd040be90c1f098bdfa8f11646bfd6, 0x43d46fcb1be37348df13ad0c2a5b55, 0x0010e9 ] } , - BigNum { limbs: [ 0xa0095b88847cc8cdeaf9a4b193d544, 0xe0b2d25c204333e6b4cc30a5faffcd, 0x002448 ] } , - BigNum { limbs: [ 0x1d9aa77779df363215065a4e6c2abd, 0xc6a057415d04ff53233bd8fbdd0586, 0x004fa4 ] } , - BigNum { limbs: [ 0x20f0e3f46c5b4e9b753e749f384be8, 0xb9954ec4b35a966daf4d7cc0a90a41, 0x005601 ] } , - BigNum { limbs: [ 0x9cb31f0b9200b0648ac18a60c7b419, 0xedbddad8c9ed9ccc28ba8ce12efb12, 0x001deb ] } , - BigNum { limbs: [ 0x8f32c4023955e5d3c02daef28b1297, 0xb189df0c4773bfac54740c82767584, 0x0019ae ] } , - BigNum { limbs: [ 0x2e713efdc506192c3fd2500d74ed6a, 0xf5c94a9135d4738d8393fd1f618fcf, 0x005a3e ] } , - BigNum { limbs: [ 0xbc04ddde4fbaed9c024eca8192c366, 0x03dfa83d15f94c61ac68816c8ce1fa, 0x005dfd ] } , - BigNum { limbs: [ 0x019f2521aea11163fdb1347e6d3c9b, 0xa3738160674ee6d82b9f88354b2359, 0x0015f0 ] } , - BigNum { limbs: [ 0x2aa65962a6c6c509f3e270cdac6114, 0x8ee3323292b85d181069983b204164, 0x003099 ] } , - BigNum { limbs: [ 0x92fda99d579539f60c1d8e32539eed, 0x186ff76aea8fd621c79e7166b7c3ef, 0x004354 ] } , - BigNum { limbs: [ 0x767f066e1d355ec70777b85d85bd10, 0x3f7b000013450d00659ec6d69651a8, 0x000aea ] } , - BigNum { limbs: [ 0x4724fc91e126a038f88846a27a42f1, 0x67d8299d6a032639726942cb41b3ab, 0x006903 ] } , - BigNum { limbs: [ 0x86f14710a0c60382b81b694a693618, 0x284df013918967c1a3064fb5c83c31, 0x00003b ] } , - BigNum { limbs: [ 0x36b2bbef5d95fb7d47e495b596c9e9, 0x7f053989ebbecb783501b9ec0fc922, 0x0073b2 ] } , - BigNum { limbs: [ 0x0b675ac26be5dd2ceff4b9eabb114f, 0xfc46367bc78fb7bdf71eb7ceba6d44, 0x007201 ] } , - BigNum { limbs: [ 0xb23ca83d927621d3100b451544eeb2, 0xab0cf321b5b87b7be0e951d31d980f, 0x0001eb ] } , - BigNum { limbs: [ 0x67d3fdfe1c34267fb409d92c672ebc, 0x751bf9d74c1920ef0be8c74d59ab69, 0x0023bb ] } , - BigNum { limbs: [ 0x55d00501e227d8804bf625d398d145, 0x32372fc6312f124acc1f42547e59ea, 0x005032 ] } , - BigNum { limbs: [ 0xa605cdd0280abe54167aab921ad75d, 0xd895e17b6d6153c155126ee82c3fac, 0x006e55 ] } , - BigNum { limbs: [ 0x179e352fd65140abe985536de528a4, 0xcebd48220fe6df7882f59ab9abc5a7, 0x000597 ] } , - BigNum { limbs: [ 0x593b4103f282733c09174c741c249e, 0x285f75480e515cc0293d3840fbdfdd, 0x0042ae ] } , - BigNum { limbs: [ 0x6468c1fc0bd98bc3f6e8b28be3db63, 0x7ef3b4556ef6d679aecad160dc2576, 0x00313f ] } , - BigNum { limbs: [ 0xaa5cf3e54a81e00a29e1b9f41875b0, 0x78373cc7b11efee96d855eda51bd9a, 0x0067e8 ] } , - BigNum { limbs: [ 0x13470f1ab3da1ef5d61e450be78a51, 0x2f1becd5cc2934506a82aac78647b9, 0x000c05 ] } , - BigNum { limbs: [ 0x5787a85a8ad80764ed38f466cc646d, 0x6075a276af447af87c7fbed30d110f, 0x0060d4 ] } , - BigNum { limbs: [ 0x661c5aa57383f79b12c70a99339b94, 0x46dd8726ce03b8415b884acecaf444, 0x001319 ] } , - BigNum { limbs: [ 0xef446a7a4b64b94059994992a5cee7, 0x80eb170f331c6afe2e7ca14a847e3c, 0x00697c ] } , - BigNum { limbs: [ 0xce5f9885b2f745bfa666b56d5a311a, 0x2668128e4a2bc83ba98b6857538716, 0x000a71 ] } , - BigNum { limbs: [ 0x52b6e8a9b24796cd2ca9f1a41e8209, 0x547cdc0221188abc7520e483386e2c, 0x000885 ] } , - BigNum { limbs: [ 0x6aed1a564c146832d3560d5be17df8, 0x52d64d9b5c2fa87d62e7251e9f9727, 0x006b68 ] } , - BigNum { limbs: [ 0xe591fc7535689984ba1cc31d9ad221, 0x76b998e5eed9197ba9335eb992b5c0, 0x0032d2 ] } , - BigNum { limbs: [ 0xd812068ac8f3657b45e33be2652de0, 0x309990b78e6f19be2ed4aae8454f92, 0x00411b ] } , - BigNum { limbs: [ 0x0052bcded554f9cc3ce48d77cd0a19, 0x8e10bb99cce6ac57f9a7bad1d03ba3, 0x000aea ] } , - BigNum { limbs: [ 0xbd51462129070533c31b718832f5e8, 0x19426e03b06186e1de604ed007c9b0, 0x006903 ] } , - BigNum { limbs: [ 0x67cb8c716dcc05da02d26634924413, 0x19a261479e8aafcf2501dc022e2c7a, 0x001f73 ] } , - BigNum { limbs: [ 0x55d8768e908ff925fd2d98cb6dbbee, 0x8db0c855debd836ab3062d9fa9d8d9, 0x00547a ] } , - BigNum { limbs: [ 0x2f985dd811b7e7c9aeb6fca0fea2e3, 0xe43dfba63e2390136ea68b2ce6aa72, 0x0002f0 ] } , - BigNum { limbs: [ 0x8e0ba527eca417365149025f015d1e, 0xc3152df73f24a32669617e74f15ae1, 0x0070fc ] } , - BigNum { limbs: [ 0x3b2e3f6b50892051ac5f1c8a02f30d, 0x2c283e4b4c4e07207d0c1f8045483a, 0x0003be ] } , - BigNum { limbs: [ 0x8275c394add2deae53a0e275fd0cf4, 0x7b2aeb5230fa2c195afbea2192bd19, 0x00702f ] } , - BigNum { limbs: [ 0x09e0312ae609bb688ab9d204ea6d73, 0x4c4f3b12df3c0f2f6c60b76602ec13, 0x006d5e ] } , - BigNum { limbs: [ 0xb3c3d1d51852439775462cfb15928e, 0x5b03ee8a9e0c240a6ba7523bd51940, 0x00068f ] } , - BigNum { limbs: [ 0x9244f54f20cc9cbd740c2e9acdcbcb, 0x75bdd01354702a0e067d8abf8ae3f2, 0x00720a ] } , - BigNum { limbs: [ 0x2b5f0db0dd8f62428bf3d065323436, 0x3195598a28d8092bd18a7ee24d2161, 0x0001e3 ] } , - BigNum { limbs: [ 0x1fab93d7e50a8d0e01cbebed0676dd, 0x5267be66b7fc9d37298da89f9d1dc2, 0x00423a ] } , - BigNum { limbs: [ 0x9df86f28195171f1fe341312f98924, 0x54eb6b36c54b9602ae7a61023ae791, 0x0031b3 ] } , - BigNum { limbs: [ 0x8ac2b45a37fc267d0f921f1a8048b8, 0x02cde70a7c09c8056cbdbe9feff479, 0x006353 ] } , - BigNum { limbs: [ 0x32e14ea5c65fd882f06ddfe57fb749, 0xa4854293013e6b346b4a4b01e810da, 0x00109a ] } , - BigNum { limbs: [ 0x7b679152d34e04a8dece301c9ff807, 0x739967be2d4b18284c0c266605b3b3, 0x005f86 ] } , - BigNum { limbs: [ 0x423c71ad2b0dfa572131cee36007fa, 0x33b9c1df4ffd1b118bfbe33bd251a0, 0x001467 ] } , - BigNum { limbs: [ 0x7a91559929a415f2d4925d85547e3e, 0xc278c591c29bb03d265627490d0d5c, 0x005262 ] } , - BigNum { limbs: [ 0x4312ad66d4b7e90d2b6da17aab81c3, 0xe4da640bbaac82fcb1b1e258caf7f7, 0x00218a ] } , - BigNum { limbs: [ 0x4267fbbcd21046b9288ae7a647dda9, 0xea9abd37b3a89c041a1c143f4f6ca7, 0x000eb2 ] } , - BigNum { limbs: [ 0x7b3c07432c4bb846d7751759b82258, 0xbcb86c65c99f9735bdebf5628898ac, 0x00653a ] } , - BigNum { limbs: [ 0x20bc406852ceaa249ea48ce197772c, 0x1eb3c42887f49092fdf3e5a73d7adb, 0x0050da ] } , - BigNum { limbs: [ 0x9ce7c297ab8d54db615b721e6888d5, 0x889f6574f553a2a6da1423fa9a8a78, 0x002313 ] } , - BigNum { limbs: [ 0x4a4f9418f5280f001cf10956ad7124, 0x98fa42d6ae453480c62bcbf49dc9a6, 0x001f31 ] } , - BigNum { limbs: [ 0x73546ee70933efffe30ef5a9528edd, 0x0e58e6c6cf02feb911dc3dad3a3bad, 0x0054bc ] } , - BigNum { limbs: [ 0x722fcbce277d953506a9d8a8c47b63, 0x2c047d09e6aa43c84005f04d88b57b, 0x005c09 ] } , - BigNum { limbs: [ 0x4b743731d6de69caf95626573b849e, 0x7b4eac93969def71980219544f4fd8, 0x0017e4 ] } , - BigNum { limbs: [ 0x4723717d44293e6a2bb8f8519763f5, 0xfd5ebeb588acb2f81d2e3763f0f360, 0x000318 ] } , - BigNum { limbs: [ 0x76809182ba32c095d44706ae689c0c, 0xa9f46ae7f49b8041bad9d23de711f3, 0x0070d4 ] } , - BigNum { limbs: [ 0x7a92ede4bc691a574e7721e595b40b, 0x4055fb331b2c90bc912322b62d5a2b, 0x004acd ] } , - BigNum { limbs: [ 0x4311151b41f2e4a8b188dd1a6a4bf6, 0x66fd2e6a621ba27d46e4e6ebaaab28, 0x002920 ] } , - BigNum { limbs: [ 0x60f1c20ba5bbbde506c821877b4a44, 0x4b1a025a917ca45fc8f6440fcd4dbf, 0x0027a7 ] } , - BigNum { limbs: [ 0x5cb240f458a0411af937dd7884b5bd, 0x5c392742ebcb8eda0f11c5920ab794, 0x004c46 ] } , - BigNum { limbs: [ 0x527d43c5a2bf113b218a0665fef46a, 0x2fcc0761b44bd8e6e524766255c80c, 0x000992 ] } , - BigNum { limbs: [ 0x6b26bf3a5b9cedc4de75f89a010b97, 0x7787223bc8fc5a52f2e3933f823d47, 0x006a5b ] } , - BigNum { limbs: [ 0x2d3653abd830a4926ec374de29e5ed, 0xaa325b5df1ea463718e7ac80d41a92, 0x000f7e ] } , - BigNum { limbs: [ 0x906daf54262b5a6d913c8a21d61a14, 0xfd20ce3f8b5ded02bf205d2103eac1, 0x00646e ] } , - BigNum { limbs: [ 0xe9a9fb96fdb98ee23d1730e5fffe1c, 0x1d4d0d487864269d6a93bcba686fe2, 0x00283f ] } , - BigNum { limbs: [ 0xd3fa076900a2701dc2e8ce1a0001e5, 0x8a061c5504e40c9c6d744ce76f9570, 0x004bae ] } , - BigNum { limbs: [ 0x398407bd5546c18e0f535efdd37921, 0x9c08f875051d85ae6219511b7f5180, 0x0048ce ] } , - BigNum { limbs: [ 0x841ffb42a9153d71f0aca0022c86e0, 0x0b4a3128782aad8b75eeb88658b3d3, 0x002b1f ] } , - BigNum { limbs: [ 0x8b14f126306387c6b17c9b5398b4d8, 0xa8b31a1058889b674d9b3f91856732, 0x0028cb ] } , - BigNum { limbs: [ 0x328f11d9cdf877394e8363ac674b29, 0xfea00f8d24bf97d28a6cca10529e21, 0x004b21 ] } , - BigNum { limbs: [ 0x6a485f6f1c316bb0d7782485b9ec55, 0x92e36171362ad33332e15bb2e1f042, 0x0016c1 ] } , - BigNum { limbs: [ 0x535ba390e22a934f2887da7a4613ac, 0x146fc82c471d6006a526adeef61511, 0x005d2c ] } , - BigNum { limbs: [ 0xd771fe6079f7bc937464d307ea552a, 0x5e86314b2b4b9eec67b5a1f2e78bbd, 0x004408 ] } , - BigNum { limbs: [ 0xe632049f8464426c8b9b2bf815aad7, 0x48ccf85251fc944d705267aef07995, 0x002fe5 ] } , - BigNum { limbs: [ 0xd9ae7f680402348117368aa68f76cb, 0x5d9ed8a59c481379f60b7c17caa56b, 0x000159 ] } , - BigNum { limbs: [ 0xe3f58397fa59ca7ee8c97459708936, 0x49b450f7e1001fbfe1fc8d8a0d5fe7, 0x007294 ] } , - BigNum { limbs: [ 0x1fc0dadceaca88a43b0ab71e8051fd, 0x2c6f4e1721a0c1ec0b79d76cd0ce91, 0x00465a ] } , - BigNum { limbs: [ 0x9de328231391765bc4f547e17fae04, 0x7ae3db865ba7714dcc8e32350736c2, 0x002d93 ] } , - BigNum { limbs: [ 0x23ba80b7dfaa7739c75477b3eb93f7, 0x225308144ddd224619711fcd716cc1, 0x0058e9 ] } , - BigNum { limbs: [ 0x99e982481eb187c638ab874c146c0a, 0x850021892f6b10f3be96e9d4669892, 0x001b04 ] } , - BigNum { limbs: [ 0x9b0d7ad7c93190c0b40ad9ab2c7192, 0xb58b822bef231d3217a49c28472ec4, 0x004dc2 ] } , - BigNum { limbs: [ 0x22968828352a6e3f4bf52554d38e6f, 0xf1c7a7718e251607c0636d7990d68f, 0x00262a ] } , - BigNum { limbs: [ 0xa3cf505b7b89033dc3911653a5b552, 0xdda82e3cc08d71de413766ac84106f, 0x004657 ] } , - BigNum { limbs: [ 0x19d4b2a482d2fbc23c6ee8ac5a4aaf, 0xc9aafb60bcbac15b96d0a2f553f4e4, 0x002d95 ] } , - BigNum { limbs: [ 0x22dc9449aaa3f782a014c7fa762234, 0x8a68cb6fdf57bff88ef4995a268ce5, 0x003861 ] } , - BigNum { limbs: [ 0x9ac76eb653b8077d5feb370589ddcd, 0x1cea5e2d9df0734149137047b1786e, 0x003b8c ] } , - BigNum { limbs: [ 0x4efa67116b946b4ded911c1aa2a486, 0x542e25e42c80e69c1e6e52260eaa40, 0x0004f0 ] } , - BigNum { limbs: [ 0x6ea99bee92c793b2126ee2e55d5b7b, 0x532503b950c74c9db999b77bc95b13, 0x006efd ] } , - BigNum { limbs: [ 0x72e6c2a22806353545a890ce83ae41, 0x4bd3e1c5996a532e8fecb6067f5020, 0x00058e ] } , - BigNum { limbs: [ 0x4abd405dd655c9caba576e317c51c0, 0x5b7f47d7e3dde00b481b539b58b533, 0x006e5f ] } , - BigNum { limbs: [ 0x9a84e938dfd48b259bac3a06a946e5, 0xa5b83bd25df17e11842dd229db3ce1, 0x00653e ] } , - BigNum { limbs: [ 0x231f19c71e8773da6453c4f956b91c, 0x019aedcb1f56b52853da3777fcc872, 0x000eaf ] } , - BigNum { limbs: [ 0xa43d7891a7839805bb4d2fa15631c3, 0x6d07b0f220c699dfe4462dd3b328a1, 0x001d73 ] } , - BigNum { limbs: [ 0x19668a6e56d866fa44b2cf5ea9ce3e, 0x3a4b78ab5c819959f3c1dbce24dcb2, 0x00567a ] } , - BigNum { limbs: [ 0x2de01648b1388e7e75e6a3bfcf47d4, 0xccf2a9c7259646744e0974c8d57207, 0x00475e ] } , - BigNum { limbs: [ 0x8fc3ecb74d2370818a195b4030b82d, 0xda607fd657b1ecc589fe94d902934c, 0x002c8e ] } , - BigNum { limbs: [ 0x381d54e0a6107a38f6083124b65103, 0x0a29b1700d25aaeb125f3c7b6e0d87, 0x0059f3 ] } , - BigNum { limbs: [ 0x8586ae1f584b84c709f7cddb49aefe, 0x9d29782d7022884ec5a8cd2669f7cc, 0x0019fa ] } , - BigNum { limbs: [ 0x264ee58149e2cd96fcf6d28b2e4c9e, 0xe6735a8ecec17085e99f8186a6d36b, 0x0028de ] } , - BigNum { limbs: [ 0x97551d7eb479316903092c74d1b363, 0xc0dfcf0eae86c2b3ee68881b3131e8, 0x004b0e ] } , - BigNum { limbs: [ 0x2e2b00af9bd8d14d1eb0088e369937, 0x6d79b2f7b0d3cb23d8dbabaf79b908, 0x0023e1 ] } , - BigNum { limbs: [ 0x8f79025062832db2e14ff671c966ca, 0x39d976a5cc746815ff2c5df25e4c4b, 0x00500c ] } , - BigNum { limbs: [ 0x208d2848d1ed566cafe0e55d5164c1, 0x14cd34e701a7c1ea26b9d3b0c16d25, 0x003779 ] } , - BigNum { limbs: [ 0x9d16dab72c6ea893501f19a2ae9b40, 0x9285f4b67ba0714fb14e35f116982e, 0x003c74 ] } , - BigNum { limbs: [ 0x86397c3abea15e184f07b20e96c595, 0xd3805f8e5143e31ad883ea37080113, 0x0014c7 ] } , - BigNum { limbs: [ 0x376a86c53fbaa0e7b0f84cf1693a6c, 0xd3d2ca0f2c04501eff841f6ad00440, 0x005f25 ] } , - BigNum { limbs: [ 0xeddcc14773ee6ecae1858cee84b9a1, 0xe858c609420b9383b44a8c12917d2b, 0x00508e ] } , - BigNum { limbs: [ 0xcfc741b88a6d90351e7a72117b4660, 0xbefa63943b3c9fb623bd7d8f468827, 0x00235e ] } , - BigNum { limbs: [ 0x49cd172c0b8bb0427e7385164be73e, 0xfeb5c085ae12c384b091e423900e96, 0x000650 ] } , - BigNum { limbs: [ 0x73d6ebd3f2d04ebd818c79e9b418c3, 0xa89d6917cf356fb52776257e47f6bd, 0x006d9c ] } , - BigNum { limbs: [ 0xf1b6dc5efcd28ca79a0b62517b3e11, 0x55a7369e62cd7124df59020f561c90, 0x005764 ] } , - BigNum { limbs: [ 0xcbed26a10189725865f49cae84c1f0, 0x51abf2ff1a7ac214f8af079281e8c2, 0x001c89 ] } , - BigNum { limbs: [ 0x6179dde81432c6f287b27bacd2a75d, 0xc19566aa0658f37a288b16353f1317, 0x004921 ] } , - BigNum { limbs: [ 0x5c2a2517ea29380d784d83532d58a4, 0xe5bdc2f376ef3fbfaf7cf36c98f23c, 0x002acb ] } , - BigNum { limbs: [ 0xb16a986057dd5881d59fbafcf8978a, 0xfe19cce4a8d1388647e315378ea37a, 0x0040b8 ] } , - BigNum { limbs: [ 0x0c396a9fa67ea67e2a604403076877, 0xa9395cb8d476fab39024f46a4961d9, 0x003334 ] } , - BigNum { limbs: [ 0x580822447fe3e06954ee3cf1a52eb0, 0xe7b4e38ad5a7e7b49a5954396d8634, 0x0014de ] } , - BigNum { limbs: [ 0x659be0bb7e781e96ab11c20e5ad151, 0xbf9e4612a7a04b853daeb5686a7f1f, 0x005f0e ] } , - BigNum { limbs: [ 0x88f4ee49e051408b5e098d73ecfb8a, 0x2cc75f7858d547d28deda799472dae, 0x00309b ] } , - BigNum { limbs: [ 0x34af14b61e0abe74a1f6718c130477, 0x7a8bca252472eb674a1a620890d7a5, 0x004352 ] } , - BigNum { limbs: [ 0x2536b36b780756223302d56e34e33a, 0x54b60c26a4ef66ce37ae9af3b0406f, 0x0038d5 ] } , - BigNum { limbs: [ 0x986d4f948654a8ddccfd2991cb1cc7, 0x529d1d76d858cc6ba0596eae27c4e4, 0x003b18 ] } , - BigNum { limbs: [ 0x1ffbf5380ebcefdff4a889348380cd, 0xf9b2dc3f08c6a0d72e9aff4c8e4f62, 0x006d73 ] } , - BigNum { limbs: [ 0x9da80dc7ef9f0f200b5775cb7c7f34, 0xada04d5e74819262a96d0a5549b5f1, 0x000679 ] } , - BigNum { limbs: [ 0x3d2d62bfbb6194b51dc2b6788cd33a, 0x226341f45ef3712e3143faa55798ce, 0x0020c6 ] } , - BigNum { limbs: [ 0x8076a04042fa6a4ae23d4887732cc7, 0x84efe7a91e54c20ba6c40efc806c85, 0x005327 ] } , - BigNum { limbs: [ 0x1070753693080e926426c25106abcc, 0x6081be8f8fffb8c2b296202481ff69, 0x002929 ] } , - BigNum { limbs: [ 0xad338dc96b53f06d9bd93caef95435, 0x46d16b0ded487a772571e97d5605ea, 0x004ac4 ] } , - BigNum { limbs: [ 0x5996156b5c46bfb0c30e46d27870d1, 0x4546d9820fecfe87d9c59e016e16e4, 0x006ae9 ] } , - BigNum { limbs: [ 0x640ded94a2153f4f3cf1b82d878f30, 0x620c501b6d5b34b1fe426ba069ee6f, 0x000904 ] } , - BigNum { limbs: [ 0x7dd77341301c0b97cd3f1830dc7c31, 0xf165ed312bdf5b942297f627abb6c4, 0x004349 ] } , - BigNum { limbs: [ 0x3fcc8fbece3ff36832c0e6cf2383d0, 0xb5ed3c6c5168d7a5b570137a2c4e8f, 0x0030a3 ] } , - BigNum { limbs: [ 0x2898797e96266fef5d157126acd2f6, 0x67acf67fbc21c982897daa0e02a779, 0x00304c ] } , - BigNum { limbs: [ 0x950b898168358f10a2ea8dd9532d0b, 0x3fa6331dc12669b74e8a5f93d55dda, 0x0043a1 ] } , - BigNum { limbs: [ 0x35c67c83d6151f33c480ccbeff31f6, 0xc9bfe369ff49247267f1dfa06d9193, 0x006ab8 ] } , - BigNum { limbs: [ 0x87dd867c2846dfcc3b7f324100ce0b, 0xdd9346337dff0ec770162a016a73c0, 0x000934 ] } , - BigNum { limbs: [ 0xd30f7ac72ab6608eb01a055ce60f76, 0xcd993fe17302769595e1fc927b3dd1, 0x0059ed ] } , - BigNum { limbs: [ 0xea948838d3a59e714fe5f9a319f08b, 0xd9b9e9bc0a45bca442260d0f5cc781, 0x0019ff ] } , - BigNum { limbs: [ 0x7ab95fc3dcb53b0717aa4735b71dde, 0x7ccaf19aadbad4bf2a46e92bbce3fc, 0x005fbd ] } , - BigNum { limbs: [ 0x42eaa33c21a6c3f8e855b7ca48e223, 0x2a883802cf8d5e7aadc120761b2157, 0x001430 ] } , - BigNum { limbs: [ 0xd37d1f179c72580fcdfa1a7fe0f991, 0x5537e61ce0d8f1faceee055ed9ca48, 0x001c0b ] } , - BigNum { limbs: [ 0xea26e3e861e9a6f03205e4801f0670, 0x521b43809c6f413f091a0442fe3b0a, 0x0057e2 ] } , - BigNum { limbs: [ 0x351938a0d16a75c81463f659452f5c, 0xf3ea67e03e845995718a4b0a20bee8, 0x0007c8 ] } , - BigNum { limbs: [ 0x888aca5f2cf18937eb9c08a6bad0a5, 0xb368c1bd3ec3d9a4667dbe97b7466b, 0x006c24 ] } , - BigNum { limbs: [ 0xf35dcbc7525e321519080c36809225, 0x6faa6bed367eb2431601f560a55dfb, 0x002023 ] } , - BigNum { limbs: [ 0xca463738abfdcceae6f7f2c97f6ddc, 0x37a8bdb046c980f6c206144132a757, 0x0053ca ] } , - BigNum { limbs: [ 0x89c1ba44e2270b2c2515a84580e958, 0xb6d19d3684162ca6cff740b60035e4, 0x004796 ] } , - BigNum { limbs: [ 0x33e248bb1c34f3d3daea56ba7f16a9, 0xf0818c66f93206930810c8ebd7cf6f, 0x002c56 ] } , - BigNum { limbs: [ 0xc36fd3d1a988a3c1050fc0e0b3dc5c, 0x5881b8de5b8d70b35d2e4c3f90b58e, 0x00317f ] } , - BigNum { limbs: [ 0xfa342f2e54d35b3efaf03e1f4c23a5, 0x4ed170bf21bac2867ad9bd62474fc4, 0x00426e ] } , - BigNum { limbs: [ 0xcf2f9e33d7c852380d4f370682feaa, 0xd9fe3b29dc1ad914a1bc5e386a2e4b, 0x002efa ] } , - BigNum { limbs: [ 0xee7464cc2693acc7f2b0c7f97d0157, 0xcd54ee73a12d5a25364bab696dd707, 0x0044f2 ] } , - BigNum { limbs: [ 0xb3e8c88110c74911e34917d47d3930, 0x7a598943e6f23f9c04af617e5510ed, 0x0049b2 ] } , - BigNum { limbs: [ 0x09bb3a7eed94b5ee1cb6e72b82c6d1, 0x2cf9a0599655f39dd358a82382f466, 0x002a3b ] } , - BigNum { limbs: [ 0xded28970fe3f7b67b451d3561a8915, 0x5064eeaad10f68b41a63a294abe24b, 0x006a78 ] } , - BigNum { limbs: [ 0xded1798f001c83984bae2ba9e576ec, 0x56ee3af2ac38ca85bda4670d2c2307, 0x000975 ] } , - BigNum { limbs: [ 0x6fdca641f466fd5f4db13b235e0d33, 0x76407d0d4f344503648ad13821a34f, 0x004207 ] } , - BigNum { limbs: [ 0x4dc75cbe09f501a0b24ec3dca1f2ce, 0x3112ac902e13ee36737d3869b66204, 0x0031e6 ] } , - BigNum { limbs: [ 0xa83925afe43f95c84ee1ce740f5439, 0x7115804a277b3b1dee30543009ffa2, 0x0035c4 ] } , - BigNum { limbs: [ 0x156add501a1c6937b11e308bf0abc8, 0x363da95355ccf81be9d7b571ce05b1, 0x003e29 ] } , - BigNum { limbs: [ 0x08977f02defff1329232e07592d6c9, 0x42d5895e520b5e11815cb0df88d45d, 0x004e40 ] } , - BigNum { limbs: [ 0xb50c83fd1f5c0dcd6dcd1e8a6d2938, 0x647da03f2b3cd52856ab58c24f30f6, 0x0025ad ] } , - BigNum { limbs: [ 0x166f8907aa9a1372eb4b1113ad8991, 0x3984fb3eb6e52894b5c6bd1d6a61d9, 0x005f9d ] } , - BigNum { limbs: [ 0xa73479f853c1eb8d14b4edec527670, 0x6dce2e5ec6630aa522414c846da37a, 0x001450 ] } , - BigNum { limbs: [ 0xec4673f68766a0f90711a0688869b4, 0x1168d4ece0379aba89db27ea447c91, 0x0032b0 ] } , - BigNum { limbs: [ 0xd15d8f0976f55e06f8ee5e9777964d, 0x95ea54b09d10987f4e2ce1b79388c1, 0x00413d ] } , - BigNum { limbs: [ 0x06f42869c68f47775c2b41e719925b, 0x55d1101d10655a75faeb3de022db67, 0x001e6c ] } , - BigNum { limbs: [ 0xb6afda9637ccb788a3d4bd18e66da6, 0x518219806ce2d8c3dd1ccbc1b529ec, 0x005581 ] } , - BigNum { limbs: [ 0x2488de55d880f0bf79e47c93531782, 0x486b8cf439dcc719e80ced806894ad, 0x0002a4 ] } , - BigNum { limbs: [ 0x991b24aa25db0e40861b826cace87f, 0x5ee79ca9436b6c1feffb1c216f70a6, 0x007149 ] } , - BigNum { limbs: [ 0xc21324ae9c8854f1b061a497ab7c95, 0x30227edece212b662b588e2fa371d7, 0x006f9a ] } , - BigNum { limbs: [ 0xfb90de5161d3aa0e4f9e5a6854836c, 0x7730aabeaf2707d3acaf7b7234937b, 0x000453 ] } , - BigNum { limbs: [ 0x6c572e1fbbe93ef71d04ee71ed1dd7, 0x26719610acab98fef2c58c13bf39ff, 0x006407 ] } , - BigNum { limbs: [ 0x514cd4e04272c008e2fb108e12e22a, 0x80e1938cd09c9a3ae5427d8e18cb54, 0x000fe6 ] } , - BigNum { limbs: [ 0x1041c70cbe30298569cb4ca9c83deb, 0x62b6bf35c35a9fa1c4913fd4c3f13b, 0x003b84 ] } , - BigNum { limbs: [ 0xad623bf3402bd57a9634b25637c216, 0x449c6a67b9ed93981376c9cd141418, 0x003869 ] } , - BigNum { limbs: [ 0xfac45adceaaeb5c5c1e5845d9ff884, 0xea707f87574f8683a888f21e5ddfdb, 0x0057c7 ] } , - BigNum { limbs: [ 0xc2dfa82313ad493a3e1a7aa260077d, 0xbce2aa1625f8acb62f7f17837a2577, 0x001c25 ] } , - BigNum { limbs: [ 0x9fef9dfe936f0e61908bf6b3717a5b, 0xb375cdaee22376104c3c6e5bd5ab3b, 0x00072e ] } , - BigNum { limbs: [ 0x1db465016aecf09e6f74084c8e85a6, 0xf3dd5bee9b24bd298bcb9b46025a18, 0x006cbe ] } , - BigNum { limbs: [ 0xb5e9c0a4e50cc317973cd4a46b0b1c, 0x8043147cb895521ca47450d1ce5b27, 0x006533 ] } , - BigNum { limbs: [ 0x07ba425b194f3be868c32a5b94f4e5, 0x27101520c4b2e11d3393b8d009aa2c, 0x000eba ] } , - BigNum { limbs: [ 0xd7b547d39c9c379277871836d3e69d, 0x68af303179073aad02c9bcb3aa9bc5, 0x002371 ] } , - BigNum { limbs: [ 0xe5eebb2c61bfc76d8878e6c92c1964, 0x3ea3f96c0440f88cd53e4cee2d698d, 0x00507c ] } , - BigNum { limbs: [ 0xf2b4d4e4c6bf419a0de099de4a001e, 0xee242df09127ad427b37d05359f0bf, 0x0027dc ] } , - BigNum { limbs: [ 0xcaef2e1b379cbd65f21f6521b5ffe3, 0xb92efbacec2085f75cd0394e7e1493, 0x004c10 ] } , - BigNum { limbs: [ 0x63132a6fcf2710d0000452d166f4cf, 0x216fe03353ad190e8d5ae4ca948c28, 0x00311f ] } , - BigNum { limbs: [ 0x5a90d8902f34ee2ffffbac2e990b32, 0x85e3496a299b1a2b4aad24d743792b, 0x0042ce ] } , - BigNum { limbs: [ 0x07ef8748d88e55812b41fc642b8224, 0x39476f18f51e508abc80e905cbfffd, 0x00013e ] } , - BigNum { limbs: [ 0xb5b47bb725cda97ed4be029bd47ddd, 0x6e0bba848829e2af1b87209c0c0556, 0x0072af ] } , - BigNum { limbs: [ 0x91f42dbb5cc25b01dec31b0bf3d060, 0xa585369dfba981c5208f0b13ae1132, 0x005e62 ] } , - BigNum { limbs: [ 0x2bafd544a199a3fe213ce3f40c2fa1, 0x01cdf2ff819eb174b778fe8e29f421, 0x00158b ] } , - BigNum { limbs: [ 0xd5aa9c89d5f0b73bcc501a2ef94bc4, 0x7645da9c7e681bdd356e72f2ad0704, 0x00289b ] } , - BigNum { limbs: [ 0xe7f96676286b47c433afe4d106b43d, 0x310d4f00fee0175ca29996af2afe4e, 0x004b52 ] } , - BigNum { limbs: [ 0xf377b32eebd2323607f6f416ef9552, 0x34f0f60b55fda7fec39544f7105246, 0x001b7e ] } , - BigNum { limbs: [ 0xca2c4fd11289ccc9f8090ae9106aaf, 0x72623392274a8b3b1472c4aac7b30c, 0x00586f ] } , - BigNum { limbs: [ 0xdfd8c851eca70857ca96242932be18, 0x04b24592689af879551c06397f3f00, 0x003122 ] } , - BigNum { limbs: [ 0xddcb3aae11b4f6a83569dad6cd41e9, 0xa2a0e40b14ad3ac082ec036858c652, 0x0042cb ] } , - BigNum { limbs: [ 0x177017d42c09460cc72eeaa440f42c, 0x2356f048ddd06e8428699bb2b8ab25, 0x000a9a ] } , - BigNum { limbs: [ 0xa633eb2bd252b8f338d1145bbf0bd5, 0x83fc39549f77c4b5af9e6def1f5a2e, 0x006953 ] } , - BigNum { limbs: [ 0xf00cd2e494cecbdda94ada27476176, 0x3204c03686ad02c82b1432217da911, 0x002492 ] } , - BigNum { limbs: [ 0xcd97301b698d332256b524d8b89e8b, 0x754e6966f69b3071acf3d7805a5c41, 0x004f5b ] } , - BigNum { limbs: [ 0x37aa6ae97bd23480dbdcc5d5251a48, 0xcfaa561c560c1810d5f48266f68f7c, 0x002415 ] } , - BigNum { limbs: [ 0x85f998168289ca7f2423392adae5b9, 0xd7a8d381273c1b290213873ae175d7, 0x004fd7 ] } , - BigNum { limbs: [ 0x7787cf3e5d6b47a741f874994f9b60, 0xc5b136d10cc056d2e35000ae73a0e8, 0x003bf8 ] } , - BigNum { limbs: [ 0x461c33c1a0f0b758be078a66b064a1, 0xe1a1f2cc7087dc66f4b808f364646b, 0x0037f4 ] } , - BigNum { limbs: [ 0xad6fb7de7ffa41fcb01abe0c7a5ed8, 0x360968a38d8820954020e70cd9f838, 0x00729c ] } , - BigNum { limbs: [ 0x10344b217e61bd034fe540f385a129, 0x7149c0f9efc012a497e72294fe0d1b, 0x000151 ] } , - BigNum { limbs: [ 0x1391282fc53b477f3ef0dd8ef1346a, 0x7b4a7e90340b7cfa11d904bc2a55cc, 0x003b38 ] } , - BigNum { limbs: [ 0xaa12dad03920b780c10f21710ecb97, 0x2c08ab0d493cb63fc62f04e5adaf87, 0x0038b5 ] } , - BigNum { limbs: [ 0xf42ba4b4e445e5ac5acac9f2b7cfe8, 0x4453cda4aac637f2ace42e0ce3d7c4, 0x0031e2 ] } , - BigNum { limbs: [ 0xc9785e4b1a161953a535350d483019, 0x62ff5bf8d281fb472b23db94f42d8e, 0x00420b ] } , - BigNum { limbs: [ 0xc4883a0144aaec7f70afa2ba34fea5, 0x15d5640ee38825d87fc45df9199d6c, 0x00634f ] } , - BigNum { limbs: [ 0xf91bc8feb9b112808f505c45cb015c, 0x917dc58e99c00d615843aba8be67e6, 0x00109e ] } , - BigNum { limbs: [ 0x1cf13a5b569fd0965a151b1f5c8b8c, 0x35137a1a2b37c02d62a0000c2de544, 0x000438 ] } , - BigNum { limbs: [ 0xa0b2c8a4a7bc2e69a5eae3e0a37475, 0x723faf835210730c75680995aa200f, 0x006fb5 ] } , - BigNum { limbs: [ 0x60aa14a95d88c0cafbd8da3a4bc946, 0xe6646ceb88d104457700da5d79946c, 0x006bde ] } , - BigNum { limbs: [ 0x5cf9ee56a0d33e35042724c5b436bb, 0xc0eebcb1f4772ef461072f445e70e7, 0x00080e ] } , - BigNum { limbs: [ 0xd8b4b5ac8b89b5d17e3126dde06077, 0x8855f1a58567bca23f48cf4c846d45, 0x001336 ] } , - BigNum { limbs: [ 0xe4ef4d5372d2492e81ced8221f9f8a, 0x1efd37f7f7e0769798bf3a5553980d, 0x0060b7 ] } , - BigNum { limbs: [ 0xf77ed540e329966d0b264bddf7d934, 0xa8a7bcf71c010de2d3ea75ccc08c10, 0x00603b ] } , - BigNum { limbs: [ 0xc6252dbf1b326892f4d9b3220826cd, 0xfeab6ca661472557041d93d5177942, 0x0013b1 ] } , - BigNum { limbs: [ 0x221ee5f78bdebc96787ac75f654db0, 0xc4a11a69f85c1f8e4378ddc113cfc6, 0x002086 ] } , - BigNum { limbs: [ 0x9b851d08727d4269878537a09ab251, 0xe2b20f3384ec13ab948f2be0c4358d, 0x005366 ] } , - BigNum { limbs: [ 0x25a997aaca374219e45e4f9dfdca67, 0x44da1cfeb7d79eb5f92f98205af5ff, 0x004c1e ] } , - BigNum { limbs: [ 0x97fa6b553424bce61ba1af6202359a, 0x62790c9ec5709483ded871817d0f54, 0x0027cf ] } , - BigNum { limbs: [ 0xf77ae21933b2060dd6d4871396bb4a, 0x8f7020cc353bad3bfd33acfd410946, 0x000611 ] } , - BigNum { limbs: [ 0xc62920e6caa9f8f2292b77ec6944b7, 0x17e308d1480c85fddad45ca496fc0c, 0x006ddc ] } , - BigNum { limbs: [ 0xf13f6f0050f68fae151ccd2ba1ba9a, 0x12da86cd6a145c90afb69d358eda60, 0x002b3a ] } , - BigNum { limbs: [ 0xcc6493ffad656f51eae331d45e4567, 0x9478a2d01333d6a928516c6c492af2, 0x0048b3 ] } , - BigNum { limbs: [ 0x18ea5b264a0c8199f6ecb2702fa8ed, 0xb7dfed7cf378c801dbdaddd33dbb5d, 0x0010e8 ] } , - BigNum { limbs: [ 0xa4b9a7d9b44f7d6609134c8fd05714, 0xef733c2089cf6b37fc2d2bce9a49f6, 0x006304 ] } , - BigNum { limbs: [ 0xbc7b88571bcd10663deb92bbb1ae67, 0xfccdfca6dfaf9a4cd88846c18c9da8, 0x004e02 ] } , - BigNum { limbs: [ 0x01287aa8e28eee99c2146c444e519a, 0xaa852cf69d9898ecff7fc2e04b67ab, 0x0025ea ] } , - BigNum { limbs: [ 0x519ed9a49ea7e247294b1210663619, 0x35b28cf61ea9643893877eabc6d688, 0x005c6a ] } , - BigNum { limbs: [ 0x6c05295b5fb41cb8d6b4ecef99c9e8, 0x71a09ca75e9ecf0144808af6112ecb, 0x001783 ] } , - BigNum { limbs: [ 0xaff8b6b5d3f851dc961078b87e26a3, 0x77d6c985d3f89837fdb1e203222b6e, 0x00371c ] } , - BigNum { limbs: [ 0x0dab4c4a2a63ad2369ef864781d95e, 0x2f7c6017a94f9b01da56279eb5d9e5, 0x003cd1 ] } , - BigNum { limbs: [ 0xc1e4fd9fa039fa6f77f78f1cba3068, 0x0df054fee4500e9168f751be38dd09, 0x002a98 ] } , - BigNum { limbs: [ 0xfbbf05605e22049088086fe345cf99, 0x9962d49e98f824a86f10b7e39f2849, 0x004955 ] } , - BigNum { limbs: [ 0x4efba467a5dfb4ecf97bf5437d1dbd, 0x3367add1d7d5a992634881173e95b7, 0x002126 ] } , - BigNum { limbs: [ 0x6ea85e98587c4a13068409bc82e244, 0x73eb7bcba57289a774bf888a996f9c, 0x0052c7 ] } , - BigNum { limbs: [ 0xa801a6a95c0ae810b99e2f97e53771, 0x952f93d73f865b294de8c6ce81f12a, 0x007296 ] } , - BigNum { limbs: [ 0x15a25c56a25116ef4661cf681ac890, 0x122395c63dc1d8108a1f42d3561429, 0x000157 ] } , - BigNum { limbs: [ 0xc31e426e03a26b0d2959e2d9b445f0, 0xdd74ef3f91de66a2cc3216bb0fefae, 0x001f83 ] } , - BigNum { limbs: [ 0xfa85c091fab993f2d6a61c264bba11, 0xc9de3a5deb69cc970bd5f2e6c815a4, 0x005469 ] } , - BigNum { limbs: [ 0x20ac0b6a6e14b1a6b831f42ce6323a, 0xbe10cb647d7bba84324ecc607ef608, 0x001f13 ] } , - BigNum { limbs: [ 0x9cf7f79590474d5947ce0ad319cdc7, 0xe9425e38ffcc78b5a5b93d41590f4b, 0x0054d9 ] } , - BigNum { limbs: [ 0xb80aff1fac13961aa49f7df5807886, 0xc0782b929fa6e15b02c1741e6d294e, 0x000802 ] } , - BigNum { limbs: [ 0x059903e0524868e55b60810a7f877b, 0xe6dafe0adda151ded54695836adc05, 0x006bea ] } , - BigNum { limbs: [ 0xd78c7b658b836b4992ec1ff47af2a0, 0x9265acec05d67d9c20e3f05e4ae055, 0x0045e6 ] } , - BigNum { limbs: [ 0xe617879a72d893b66d13df0b850d61, 0x14ed7cb17771b59db72419438d24fd, 0x002e07 ] } , - BigNum { limbs: [ 0xd921b3453863175de53bb10cb88f8b, 0x61de46594e66fc8b1ce472e488fb7d, 0x00113a ] } , - BigNum { limbs: [ 0xe4824fbac5f8e7a21ac44df3477076, 0x4574e3442ee136aebb2396bd4f09d5, 0x0062b3 ] } , - BigNum { limbs: [ 0x04b714e680c10e1c8ed47580774b30, 0xa68ece476bce74f198804177440f14, 0x0059d7 ] } , - BigNum { limbs: [ 0xb8ecee197d9af0e3712b897f88b4d1, 0x00c45b561179be483f87c82a93f63f, 0x001a16 ] } , - BigNum { limbs: [ 0x28b47e1946a2695efbe06a77097253, 0x78912d3c448b114306945f9d682089, 0x004d27 ] } , - BigNum { limbs: [ 0x94ef84e6b7b995a1041f9488f68dae, 0x2ec1fc6138bd21f6d173aa046fe4ca, 0x0026c6 ] } , - BigNum { limbs: [ 0x504d612ff7a5c7d053b226d1aa16bc, 0x223aaea217a46abd8439ca2761aeb8, 0x0032c4 ] } , - BigNum { limbs: [ 0x6d56a1d006b6372fac4dd82e55e945, 0x85187afb65a3c87c53ce3f7a76569b, 0x004129 ] } , - BigNum { limbs: [ 0x59b4bd52b553180e8d06cc8d51063b, 0x01bfea0019b20b7ced4c5fe09c39b9, 0x006238 ] } , - BigNum { limbs: [ 0x63ef45ad4908e6f172f93272aef9c6, 0xa5933f9d639627bceabba9c13bcb9a, 0x0011b5 ] } , - BigNum { limbs: [ 0x7a46bd207c5fadc1db30762d92eb44, 0x58d048f8a8828ccd93a209c0789971, 0x00115e ] } , - BigNum { limbs: [ 0x435d45df81fc513e24cf88d26d14bd, 0x4e82e0a4d4c5a66c4465ffe15f6be2, 0x00628f ] } , - BigNum { limbs: [ 0x664e8cd12d7fd0e025fbee3b1b298d, 0x5e547bd4a434e9474eda1e916f112f, 0x004dee ] } , - BigNum { limbs: [ 0x5755762ed0dc2e1fda0410c4e4d674, 0x48feadc8d91349f2892deb1068f424, 0x0025ff ] } , - BigNum { limbs: [ 0x2639fea8800bbab43a1ee604bda4cc, 0xbf020593b9c2bbc625eb854d072e8c, 0x006179 ] } , - BigNum { limbs: [ 0x976a04577e50444bc5e118fb425b35, 0xe8512409c3857773b21c8454d0d6c7, 0x001273 ] } , - BigNum { limbs: [ 0x6deda5d7670c976dfe7153dfa53c20, 0x1a2cd56342e73b2559407ab5c9362f, 0x000647 ] } , - BigNum { limbs: [ 0x4fb65d28974f6792018eab205ac3e1, 0x8d26543a3a60f8147ec78eec0ecf24, 0x006da6 ] } , - BigNum { limbs: [ 0x24a5979784783cda5d6ff9c897772a, 0xa4c51da8134b170eb54379e26f5726, 0x006532 ] } , - BigNum { limbs: [ 0x98fe6b6879e3c225a29005376888d7, 0x028e0bf569fd1c2b22c48fbf68ae2d, 0x000ebb ] } , - BigNum { limbs: [ 0x615ae56a038c1cc6c4ab71bdfb5ae2, 0xe3444ad2ae705509bb0f713594efee, 0x00532c ] } , - BigNum { limbs: [ 0x5c491d95facfe2393b548d4204a51f, 0xc40edecaced7de301cf8986c431565, 0x0020c0 ] } , - BigNum { limbs: [ 0x1090665023b48c2919e9353ebde363, 0x9d160b348537dbb6d130e5efc54014, 0x003f62 ] } , - BigNum { limbs: [ 0xad139cafdaa772d6e616c9c1421c9e, 0x0a3d1e68f810578306d723b212c53f, 0x00348b ] } , - BigNum { limbs: [ 0x4d998925d39838f7a08952a7c08661, 0x93476572756dc7a40723fe19230652, 0x004554 ] } , - BigNum { limbs: [ 0x700a79da2ac3c6085f76ac583f79a0, 0x140bc42b07da6b95d0e40b88b4ff01, 0x002e99 ] } , - BigNum { limbs: [ 0x3c2282be8ad00d17b806bbc8890150, 0x989680fa13428d830f2a25062a8504, 0x004ae3 ] } , - BigNum { limbs: [ 0x81818041738bf1e847f9433776feb1, 0x0ebca8a36a05a5b6c8dde49bad804f, 0x00290a ] } , - BigNum { limbs: [ 0x8d0589f19955b0cdcf950bbf3e24d4, 0x3eebc4f6e3d55aba27a407c48b5d4e, 0x00681d ] } , - BigNum { limbs: [ 0x309e790e65064e32306af340c1db2d, 0x686764a69972d87fb06401dd4ca805, 0x000bd0 ] } , - BigNum { limbs: [ 0xdf48b03058eda0068fd2fc3194cf80, 0xc965e63b8f8510a6232e009a5dd37f, 0x006057 ] } , - BigNum { limbs: [ 0xde5b52cfa56e5ef9702d02ce6b3081, 0xdded4361edc32293b4da09077a31d3, 0x001395 ] } , - BigNum { limbs: [ 0x8329c8cf1cf713076e7b2f38dd4262, 0x96482f60912963e6ccdbc96d7906ae, 0x0067de ] } , - BigNum { limbs: [ 0x3a7a3a30e164ebf89184cfc722bd9f, 0x110afa3cec1ecf530b2c40345efea5, 0x000c0f ] } , - BigNum { limbs: [ 0x3adc58d0ad958d7367066af7a885da, 0x4d99b2ba5456b0cefa0837797a506e, 0x005394 ] } , - BigNum { limbs: [ 0x82c7aa2f50c6718c98f99408577a27, 0x59b976e328f1826addffd2285db4e5, 0x002059 ] } , - BigNum { limbs: [ 0x2dcc1406da0f4c6704b9c8bb9bf61e, 0xa58b3a749bc62c8e657fe47ea551f3, 0x002c6a ] } , - BigNum { limbs: [ 0x8fd7eef9244cb298fb4636446409e3, 0x01c7ef28e18206ab7288252332b360, 0x004783 ] } , - BigNum { limbs: [ 0x8af5341425fbd83b0140f36e397f94, 0x01f2957118af6a295bf1d42da0837f, 0x006146 ] } , - BigNum { limbs: [ 0x32aeceebd86026c4febf0b91c6806d, 0xa560942c6498c9107c1635743781d4, 0x0012a7 ] } , - BigNum { limbs: [ 0xa024d738a27752e498f42f30e07b67, 0x56b426fc6fed01cf6826f82b270bab, 0x0037bd ] } , - BigNum { limbs: [ 0x1d7f2bc75be4ac1b670bcfcf1f849a, 0x509f02a10d5b316a6fe11176b0f9a8, 0x003c30 ] } , - BigNum { limbs: [ 0x0dfad0e4ff4435ffb3a1ed146afa08, 0x9f5d5ebbdbb32af466405e2b412092, 0x004554 ] } , - BigNum { limbs: [ 0xafa9321aff17c9004c5e11eb9505f9, 0x07f5cae1a195084571c7ab7696e4c1, 0x002e99 ] } , - BigNum { limbs: [ 0x9476ded7c39504ed6111bf67947bac, 0xa18ebc3f4354adddcaedf9ec551f49, 0x003b9b ] } , - BigNum { limbs: [ 0x292d24283ac6fa129eee3f986b8455, 0x05c46d5e39f3855c0d1a0fb582e60a, 0x003852 ] } , - BigNum { limbs: [ 0xbe36fec0ea82f1187e5a4951c7d7aa, 0xe55fe37b82da99175032107fc9d59b, 0x003742 ] } , - BigNum { limbs: [ 0xff6d043f13d90de781a5b5ae382857, 0xc1f34621fa6d9a2287d5f9220e2fb7, 0x003caa ] } , - BigNum { limbs: [ 0x86ff35293930089215d24e851304d5, 0xf6dcc395132656b4ca29edfdb75bdb, 0x006bcd ] } , - BigNum { limbs: [ 0x36a4cdd6c52bf66dea2db07aecfb2c, 0xb07666086a21dc850dde1ba420a978, 0x00081f ] } , - BigNum { limbs: [ 0xedab698f1611cf2bca8922099fe097, 0x115590c2b33244f1da034d30a5f1d4, 0x00531d ] } , - BigNum { limbs: [ 0xcff89970e84a2fd43576dcf6601f6a, 0x95fd98daca15ee47fe04bc7132137e, 0x0020d0 ] } , - BigNum { limbs: [ 0x71aef23081df72618978fa0fb1d481, 0x7a37b3fb7d8202a510a6edc4c569d1, 0x004ec6 ] } , - BigNum { limbs: [ 0x4bf510cf7c7c8c9e768704f04e2b80, 0x2d1b75a1ffc63094c7611bdd129b82, 0x002527 ] } , - BigNum { limbs: [ 0xf63d287e12fcc4ef3457325ecd5b52, 0x0ebd4f47ddcc671a405c3af1f4748f, 0x0048fe ] } , - BigNum { limbs: [ 0xc766da81eb5f3a10cba8cca132a4af, 0x9895da559f7bcc1f97abceafe390c3, 0x002aef ] } , - BigNum { limbs: [ 0x45d705f19567a17e3c52e0ca097561, 0xa32e8f753bf6e6abe067578ca59383, 0x0001d9 ] } , - BigNum { limbs: [ 0x77ccfd0e68f45d81c3ad1e35f68aa0, 0x04249a2841514c8df7a0b2153271d0, 0x007214 ] } , - BigNum { limbs: [ 0xd978ce79991986ced3257771015feb, 0x3d9e5e50884d374ca8041a159d8414, 0x005726 ] } , - BigNum { limbs: [ 0xe42b3486654278312cda878efea016, 0x69b4cb4cf4fafbed3003ef8c3a813e, 0x001cc7 ] } , - BigNum { limbs: [ 0xe19b48772cdb25ce772be5d43047b4, 0x0077e02f21b0bfe5620485ff6e59e4, 0x0055e8 ] } , - BigNum { limbs: [ 0xdc08ba88d180d93188d4192bcfb84d, 0xa6db496e5b977354760383a269ab6e, 0x001e05 ] } , - BigNum { limbs: [ 0x278c5867ae0c4220a86f6315f5d25d, 0x54e0c96f8eacc0cfb4f62bf35360b9, 0x001daa ] } , - BigNum { limbs: [ 0x9617aa98504fbcdf57909bea0a2da4, 0x5272602dee9b726a2311ddae84a49a, 0x005643 ] } , - BigNum { limbs: [ 0x49039008a03d4f394851b24166e722, 0x9ab12f80da79b768a7c4d36af60e3a, 0x003a8a ] } , - BigNum { limbs: [ 0x74a072f75e1eafc6b7ae4cbe9918df, 0x0ca1fa1ca2ce7bd130433636e1f719, 0x003963 ] } , - BigNum { limbs: [ 0xaf5ebe48a9443d98ee7999f64fee83, 0x18f1ea8d09353bdaa2a9548038b82a, 0x001b8d ] } , - BigNum { limbs: [ 0x0e4544b75517c16711866509b0117e, 0x8e613f107412f75f355eb5219f4d29, 0x005860 ] } , - BigNum { limbs: [ 0x5280a0391b3b940ccf38acc802cd7a, 0xd7b56ab20336f5f6abefaaf303ee30, 0x003ad4 ] } , - BigNum { limbs: [ 0x6b2362c6e3206af330c75237fd3287, 0xcf9dbeeb7a113d432c185eaed41723, 0x003918 ] } , - BigNum { limbs: [ 0xbf42c13a8fd48ea2e5b21ace4eb6ff, 0xf05b902a8aceefcf46feb733e8eb96, 0x006ddb ] } , - BigNum { limbs: [ 0xfe6141c56e87705d1a4de431b14902, 0xb6f79972f279436a9109526def19bc, 0x000611 ] } , - BigNum { limbs: [ 0x46893ee126085ca87f4400fc13aa2c, 0x01ef53e860c727a5aeeca3c44f4cfe, 0x0067f7 ] } , - BigNum { limbs: [ 0x771ac41ed853a25780bbfe03ec55d5, 0xa563d5b51c810b94291b65dd88b855, 0x000bf6 ] } , - BigNum { limbs: [ 0x7eb0daa5eb77a23795f13f98d06ac8, 0x33b13326a536d5fb78c46ac7a98aa1, 0x0058c6 ] } , - BigNum { limbs: [ 0x3ef3285a12e45cc86a0ebf672f9539, 0x73a1f676d8115d3e5f439eda2e7ab2, 0x001b27 ] } , - BigNum { limbs: [ 0xb6184e5cb935bcff4a91d5a37814d0, 0x1a2f6b1937a2cbe141e40ba93b8907, 0x00478a ] } , - BigNum { limbs: [ 0x078bb4a345264200b56e295c87eb31, 0x8d23be8445a567589623fdf89c7c4c, 0x002c63 ] } , - BigNum { limbs: [ 0xf97b0a5d9916e64ade99baf2064979, 0x69c94958b0dbb1a80ba834b6917e21, 0x004529 ] } , - BigNum { limbs: [ 0xc428f8a2654518b52166440df9b688, 0x3d89e044cc6c8191cc5fd4eb468731, 0x002ec4 ] } , - BigNum { limbs: [ 0x883a00bd39c06f4cded2085f1d249d, 0x664a248714e180f7a16441b8a5071c, 0x00270f ] } , - BigNum { limbs: [ 0x356a0242c49b8fb3212df6a0e2db64, 0x410905166866b24236a3c7e932fe37, 0x004cde ] } , - BigNum { limbs: [ 0x731128adcb310e4d90e093e647fd5f, 0x171777c1e39865d7778c9c727d8a66, 0x001508 ] } , - BigNum { limbs: [ 0x4a92da52332af0b26f1f6b19b802a2, 0x903bb1db99afcd62607b6d2f5a7aed, 0x005ee5 ] } , - BigNum { limbs: [ 0x88f1a1209932d061409bbb445f0d14, 0x8d96135bfbf040ecf1209ccf07b9d5, 0x001339 ] } , - BigNum { limbs: [ 0x34b261df65292e9ebf6443bba0f2ed, 0x19bd16418157f24ce6e76cd2d04b7e, 0x0060b4 ] } , - BigNum { limbs: [ 0x874f129eedc438495d73dfe6eb3e00, 0x4493dce84e5429ba09cef3db435f8e, 0x0025bd ] } , - BigNum { limbs: [ 0x3654f0611097c6b6a28c1f1914c201, 0x62bf4cb52ef4097fce3915c694a5c5, 0x004e30 ] } , - BigNum { limbs: [ 0x1d50eee0811e8206f9a183352303e8, 0xf0fd58b73fee4bec2b787a3d54e5c7, 0x00080b ] } , - BigNum { limbs: [ 0xa053141f7d3d7cf9065e7bcadcfc19, 0xb655d0e63d59e74dac8f8f64831f8c, 0x006be1 ] } , - BigNum { limbs: [ 0xab92aedf8495c4fb4a85c673193da0, 0x2ba6ca0cdbbc7faa59844c34278d53, 0x000a4f ] } , - BigNum { limbs: [ 0x1211542079c63a04b57a388ce6c261, 0x7bac5f90a18bb38f7e83bd6db07800, 0x00699e ] } , - BigNum { limbs: [ 0xaec33cb072e13d00845dfcb5c84846, 0x136ec0225fab5275a6512e89d0955a, 0x006bb9 ] } , - BigNum { limbs: [ 0x0ee0c64f8b7ac1ff7ba2024a37b7bb, 0x93e4697b1d9ce0c431b6db18076ff9, 0x000834 ] } , - BigNum { limbs: [ 0xbba9eadb95a182a6a1bba441bbd237, 0x1fc1e4cc8075367070ffd15db1bd70, 0x002205 ] } , - BigNum { limbs: [ 0x01fa182468ba7c595e445abe442dca, 0x879144d0fcd2fcc9670838442647e3, 0x0051e8 ] } , - BigNum { limbs: [ 0x22a6bce7387a427f50330cd59075af, 0x92127d5382417773114e5fa5467a58, 0x0022ec ] } , - BigNum { limbs: [ 0x9afd4618c5e1bc80afccf22a6f8a52, 0x1540ac49fb06bbc6c6b9a9fc918afb, 0x005101 ] } , - BigNum { limbs: [ 0x9ebedd4e11f42d3a36a7edca585499, 0x7668fb81393aa8160612bcc2b856d8, 0x003f4f ] } , - BigNum { limbs: [ 0x1ee525b1ec67d1c5c9581135a7ab68, 0x30ea2e1c440d8b23d1f54cdf1fae7b, 0x00349e ] } , - BigNum { limbs: [ 0x0f793a1eac2c49dab684ead675638b, 0x7d971682f3e80356b9fc2f9ded09b8, 0x00152f ] } , - BigNum { limbs: [ 0xae2ac8e1522fb525497b14298a9c76, 0x29bc131a89602fe31e0bda03eafb9b, 0x005ebe ] } , - BigNum { limbs: [ 0x627492d5ba88838547253c80c1dab5, 0x647de281bb01d0d6b2a531d9cdb1ea, 0x000f44 ] } , - BigNum { limbs: [ 0x5b2f702a43d37b7ab8dac27f3e254c, 0x42d5471bc24662632562d7c80a5369, 0x0064a9 ] } , - BigNum { limbs: [ 0x45dae47e7d0c73a7110714fe4cdddc, 0xeb840d77404c05f16dd2f56f6616d6, 0x003549 ] } , - BigNum { limbs: [ 0x77c91e81814f8b58eef8ea01b32225, 0xbbcf1c263cfc2d486a35143271ee7d, 0x003ea3 ] } , - BigNum { limbs: [ 0x3f702db9fc8191c76df718ca968656, 0xe6b789f89d961ab843df419c6ae81a, 0x004b2b ] } , - BigNum { limbs: [ 0x7e33d54601da6d389208e6356979ab, 0xc09b9fa4dfb218819428c8056d1d39, 0x0028c1 ] } , - BigNum { limbs: [ 0x1813abc939ed5a3ab8a4ed61ca9d9c, 0xd6ba2d8dfb407c3ee72732525df52e, 0x000ae1 ] } , - BigNum { limbs: [ 0xa5905736c46ea4c5475b119e356265, 0xd098fc0f8207b6faf0e0d74f7a1025, 0x00690b ] } , - BigNum { limbs: [ 0xfa31f6840cbcf2bd55779ad6aecbde, 0xb8084da0a6aabb41e1e22ed63a2a17, 0x002e01 ] } , - BigNum { limbs: [ 0xc3720c7bf19f0c42aa886429513423, 0xef4adbfcd69d77f7f625dacb9ddb3b, 0x0045eb ] } , - BigNum { limbs: [ 0xebeae1d4989cddb16de9be3b85f5bc, 0xd0fddad8819aac539e1c1739e2cc75, 0x004c5d ] } , - BigNum { limbs: [ 0xd1b9212b65bf214e921640c47a0a45, 0xd6554ec4fbad86e639ebf267f538dd, 0x00278f ] } , - BigNum { limbs: [ 0xb1723eb5371609d83aecffdd17a3c7, 0x790650286522b100e6012755cce928, 0x004731 ] } , - BigNum { limbs: [ 0x0c31c44ac745f527c512ff22e85c3a, 0x2e4cd97518258238f206e24c0b1c2b, 0x002cbc ] } , - BigNum { limbs: [ 0x241adc7bd53b9de82aeff61b850539, 0x7af8ef4de0dd47ce5e049d3c5a6141, 0x005b97 ] } , - BigNum { limbs: [ 0x9989268429206117d51008e47afac8, 0x2c5a3a4f9c6aeb6b7a036c657da412, 0x001856 ] } , - BigNum { limbs: [ 0x8188035b75adb26e562662a9e24b0e, 0x4959d084d53f5f9544f5b2b096c774, 0x00528b ] } , - BigNum { limbs: [ 0x3c1bffa488ae4c91a9d99c561db4f3, 0x5df95918a808d3a4931256f1413ddf, 0x002162 ] } , - BigNum { limbs: [ 0xc24cfde9487630036910f638970846, 0x872f04f2c6274d1290aece64d5ae75, 0x00290d ] } , - BigNum { limbs: [ 0xfb570516b5e5cefc96ef08c768f7bb, 0x202424aab720e62747593b3d0256dd, 0x004ae0 ] } , - BigNum { limbs: [ 0x505c876a9362b9a8e259709c58389a, 0xfe529ee7f0f56fc6370fc12fce99ad, 0x0014ff ] } , - BigNum { limbs: [ 0x6d477b956af945571da68e63a7c767, 0xa9008ab58c52c373a0f84872096ba6, 0x005eed ] } , - BigNum { limbs: [ 0xf7c6d816161edcc296d7e41e5066ac, 0x71afe1ba97a05d7a75e99cc5b80d1b, 0x000d60 ] } , - BigNum { limbs: [ 0xc5dd2ae9e83d223d69281ae1af9955, 0x35a347e2e5a7d5bf621e6cdc1ff837, 0x00668d ] } , - BigNum { limbs: [ 0x03a0deb96ed5add78c97892bc70d2b, 0x341b1ac3600c902747ac97a6b6d7fc, 0x00563f ] } , - BigNum { limbs: [ 0xba0324468f865128736875d438f2d6, 0x73380eda1d3ba312905b71fb212d57, 0x001dae ] } , - BigNum { limbs: [ 0x5f7198849146ab02ae844dda17855b, 0xe9a7a223eb9806f37e041105506dd6, 0x0067ac ] } , - BigNum { limbs: [ 0x5e326a7b6d1553fd517bb125e87aa6, 0xbdab877991b02c465a03f89c87977d, 0x000c40 ] } , - BigNum { limbs: [ 0x625c588037591fbf85cfc978a502b8, 0xfdf1576cf3b50feb980510003e5f90, 0x0024ec ] } , - BigNum { limbs: [ 0x5b47aa7fc702df407a3035875afd49, 0xa961d2308993234e4002f9a199a5c3, 0x004f00 ] } , - BigNum { limbs: [ 0xc2063c6c2e9e332928499e0bd1420a, 0xbea5fdee237254ef13c540a20eabb6, 0x0032db ] } , - BigNum { limbs: [ 0xfb9dc693cfbdcbd6d7b660f42ebdf7, 0xe8ad2baf59d5de4ac442c8ffc9599c, 0x004111 ] } , - BigNum { limbs: [ 0xa8cce3c2ecfeb6f4ef6dcfa67c4d19, 0x268e04e0793990c483113bfefa8410, 0x002d2e ] } , - BigNum { limbs: [ 0x14d71f3d115d480b10922f5983b2e8, 0x80c524bd040ea27554f6cda2dd8143, 0x0046bf ] } , - BigNum { limbs: [ 0x335735a56e5e505b8631f4208c82d5, 0x7f336029f1dd63cf9b69cbc19bb9b4, 0x001c39 ] } , - BigNum { limbs: [ 0x8a4ccd5a8ffdaea479ce0adf737d2c, 0x281fc9738b6acf6a3c9e3de03c4b9f, 0x0057b4 ] } , - BigNum { limbs: [ 0xc306595156a456f80c6b5f08b6853d, 0x1270b67a71800394abc4c316153a0c, 0x000c1c ] } , - BigNum { limbs: [ 0xfa9da9aea7b7a807f3949ff7497ac4, 0x94e273230bc82fa52c43468bc2cb46, 0x0067d1 ] } , - BigNum { limbs: [ 0xc495060875c7663f057bb8d4a41c08, 0x56e633e8cfebd53fd0ea4ceee08eab, 0x002e6a ] } , - BigNum { limbs: [ 0xf90efcf7889498c0fa84462b5be3f9, 0x506cf5b4ad5c5dfa071dbcb2f776a7, 0x004583 ] } , - BigNum { limbs: [ 0x71cd45b514b0e2459243f1bff55437, 0xa5462c6d112a52b532eb34cade0f08, 0x000c5f ] } , - BigNum { limbs: [ 0x4bd6bd4ae9ab1cba6dbc0d400aabca, 0x020cfd306c1de084a51cd4d6f9f64b, 0x00678e ] } , - BigNum { limbs: [ 0x0fe0f71f4e6f25bff7f645cd3fc71a, 0x3a4b2cedaefd98c35c1f9cf2a711d2, 0x00104d ] } , - BigNum { limbs: [ 0xadc30be0afecd9400809b932c038e7, 0x6d07fcafce4a9a767be86caf30f381, 0x0063a0 ] } , - BigNum { limbs: [ 0xbf16bb1a132052ad0e67dcbc531b87, 0xd140daaeed7c76437237030b4b2819, 0x003a12 ] } , - BigNum { limbs: [ 0xfe8d47e5eb3bac52f1982243ace47a, 0xd6124eee8fcbbcf665d106968cdd39, 0x0039da ] } , - BigNum { limbs: [ 0x3247206e0c4335228b6a709335e3be, 0x28fbc5fb250b4d341582faa1e83c8b, 0x005fa2 ] } , - BigNum { limbs: [ 0x8b5ce291f218c9dd74958e6cca1c43, 0x7e5763a2583ce605c2850effefc8c8, 0x00144b ] } , - BigNum { limbs: [ 0x8f4599907a2eff1ebb9f6f8b1553e6, 0x179f95f9d1cf71300c916e3bdde695, 0x0042f7 ] } , - BigNum { limbs: [ 0x2e5e696f842cffe144608f74eaac1b, 0x8fb393a3ab78c209cb769b65fa1ebe, 0x0030f6 ] } , - BigNum { limbs: [ 0x17eb2f225b08165bbc19234158e3c4, 0x59b07cee916adbfbee27ada17b64f7, 0x0035c7 ] } , - BigNum { limbs: [ 0xa5b8d3dda353e8a443e6dbbea71c3d, 0x4da2acaeebdd573de9e05c005ca05c, 0x003e26 ] } , - BigNum { limbs: [ 0x44eda7f5992ae469427888234c5c23, 0x666481ebd5e78f70dc8cbd002636a0, 0x00676e ] } , - BigNum { limbs: [ 0x78b65b0a65311a96bd8776dcb3a3de, 0x40eea7b1a760a3c8fb7b4ca1b1ceb3, 0x000c7f ] } , - BigNum { limbs: [ 0xe11a5a6e2466daee1655dac009b04a, 0xaeeab283ce053f0319b0c4cedabde3, 0x006def ] } , - BigNum { limbs: [ 0xdc89a891d9f52411e9aa243ff64fb7, 0xf8687719af42f436be5744d2fd476f, 0x0005fd ] } , - BigNum { limbs: [ 0x1639b5ed5801a51ffb579d952cef11, 0xca7b35b68be96c74e25207bfb8147a, 0x005d28 ] } , - BigNum { limbs: [ 0xa76a4d12a65a59e004a8616ad310f0, 0xdcd7f3e6f15ec6c4f5b601e21ff0d9, 0x0016c4 ] } , - BigNum { limbs: [ 0xb93c47f7b1c5b76fbf84bab91ebb51, 0x6654090a7a564aaefb2c49d560d2a9, 0x003184 ] } , - BigNum { limbs: [ 0x0467bb084c964790407b4446e144b0, 0x40ff209302f1e88adcdbbfcc7732aa, 0x004269 ] } , - BigNum { limbs: [ 0x3e1a6ab1df12b32a7559934b7cb028, 0xaef63e5a620a101f2e88ee202a462f, 0x0069d0 ] } , - BigNum { limbs: [ 0x7f89984e1f494bd58aa66bb4834fd9, 0xf85ceb431b3e231aa97f1b81adbf24, 0x000a1c ] } , - BigNum { limbs: [ 0x4f3251fc857ca88f6a9fd46e4014aa, 0x7413f7facad0aed9f0255cbae98aeb, 0x000b2e ] } , - BigNum { limbs: [ 0x6e71b10378df567095602a91bfeb57, 0x333f31a2b277845fe7e2ace6ee7a68, 0x0068bf ] } , - BigNum { limbs: [ 0x4ac2d5b106aa42e2fb72a0b3706d2c, 0x8e395fb95023d459ebc0acc8782c47, 0x006d10 ] } , - BigNum { limbs: [ 0x72e12d4ef7b1bc1d048d5e4c8f92d5, 0x1919c9e42d245edfec475cd95fd90c, 0x0006dd ] } , - BigNum { limbs: [ 0x16d9143ffcbf3076075d72fb4fd6f9, 0x64fe5500cc389ed0fdc3bfda980b14, 0x004ee6 ] } , - BigNum { limbs: [ 0xa6caeec0019cce89f8a28c04b02908, 0x4254d49cb10f9468da4449c73ffa3f, 0x002507 ] } , - BigNum { limbs: [ 0x472b4e744c806f4b4271e8fea8e685, 0x0c5df3ef6f22f808cccea17083db42, 0x003174 ] } , - BigNum { limbs: [ 0x7678b48bb1db8fb4bd8e160157197c, 0x9af535ae0e253b310b396831542a11, 0x004279 ] } , - BigNum { limbs: [ 0xfb2259c50ef9159ec8596d41db6808, 0xd38800f9c7a6cdb1758900ba9cea32, 0x002841 ] } , - BigNum { limbs: [ 0xc281a93aef62e96137a691be2497f9, 0xd3cb28a3b5a16588627f08e73b1b20, 0x004bab ] } , - BigNum { limbs: [ 0xc8e302a64f34b01d33fbca450c1d06, 0xd5cde29fc09fbceb23b1dc49d6e277, 0x005900 ] } , - BigNum { limbs: [ 0xf4c10059af274ee2cc0434baf3e2fb, 0xd18546fdbca8764eb4562d580122db, 0x001aec ] } , - BigNum { limbs: [ 0x90344fa5a16f4ab9879b3e17dd0b0b, 0x667d94cdd9c38986b950694a8aeb37, 0x0059a2 ] } , - BigNum { limbs: [ 0x2d6fb35a5cecb4467864c0e822f4f6, 0x40d594cfa384a9b31eb7a0574d1a1c, 0x001a4b ] } , - BigNum { limbs: [ 0xbd5b351c5cd26c64739a7d485a844b, 0xdd8c8143c8b50afcb0b46efed066d5, 0x00594d ] } , - BigNum { limbs: [ 0x0048cde3a189929b8c6581b7a57bb6, 0xc9c6a859b493283d27539aa3079e7e, 0x001a9f ] } , - BigNum { limbs: [ 0x2d849fd134747881b0f8d6099b0de1, 0x7d7f51c5f634342b5da8a55514f039, 0x004e7f ] } , - BigNum { limbs: [ 0x901f632ec9e7867e4f0728f664f220, 0x29d3d7d78713ff0e7a5f644cc3151a, 0x00256e ] } , - BigNum { limbs: [ 0x2e561e922d32eb5565175ce0c2c4d7, 0xe1ba3d4259226b6c4502021aa28fe9, 0x000ec4 ] } , - BigNum { limbs: [ 0x8f4de46dd12913aa9ae8a21f3d3b2a, 0xc598ec5b2425c7cd9306078735756a, 0x006528 ] } , - BigNum { limbs: [ 0xa9e98d9a6a0fa3eabc37aaafd8de68, 0xb3ce1d79199ed39d09e4354dc67fd4, 0x00536d ] } , - BigNum { limbs: [ 0x13ba7565944c5b1543c85450272199, 0xf3850c2463a95f9cce23d45411857f, 0x00207f ] } , - BigNum { limbs: [ 0x76b8ab15b3978e0bbd4df91011faed, 0x635a9d5aff4d39f18be39a282a3b41, 0x0040b1 ] } , - BigNum { limbs: [ 0x46eb57ea4ac470f442b205efee0514, 0x43f88c427dfaf9484c246f79adca12, 0x00333c ] } , - BigNum { limbs: [ 0xeaefcc0af5294f232b15177d4cf979, 0x42759b48c9c039e8afa135aa03e63e, 0x006bb6 ] } , - BigNum { limbs: [ 0xd2b436f50932afdcd4eae782b30688, 0x64dd8e54b387f9512866d3f7d41f14, 0x000837 ] } , - BigNum { limbs: [ 0x23cae1b39585da238eb67e41a8ef7a, 0x07df44f50563c498bb7a0ba353cfc8, 0x0054d4 ] } , - BigNum { limbs: [ 0x99d9214c68d624dc714980be571087, 0x9f73e4a877e46ea11c8dfdfe84358b, 0x001f19 ] } , - BigNum { limbs: [ 0x84043755593a5571575050ff2e8f53, 0x7016e0f346286bfae7e9c76a0737f1, 0x0026e3 ] } , - BigNum { limbs: [ 0x399fcbaaa521a98ea8afae00d170ae, 0x373c48aa371fc73ef01e4237d0cd62, 0x004d0a ] } , - BigNum { limbs: [ 0x6d9552d11b8248c1601b5e0269f651, 0x8379e7b404d11e548b580444898b73, 0x003f3f ] } , - BigNum { limbs: [ 0x500eb02ee2d9b63e9fe4a0fd9609b0, 0x23d941e9787714e54cb0055d4e79e0, 0x0034ae ] } , - BigNum { limbs: [ 0x887f8205fd194354ccab45a519de45, 0x562c6c44afc5a02a797876e2be4c63, 0x006727 ] } , - BigNum { limbs: [ 0x352480fa0142bbab3354b95ae621bc, 0x5126bd58cd82930f5e8f92bf19b8f0, 0x000cc6 ] } , - BigNum { limbs: [ 0x5ac52dd0275b76a11df3f12e4b57c9, 0x8b4cb19c6aacfd4cad1b55fe13aaec, 0x003d63 ] } , - BigNum { limbs: [ 0x62ded52fd700885ee20c0dd1b4a838, 0x1c067801129b35ed2aecb3a3c45a67, 0x00368a ] } , - BigNum { limbs: [ 0x56bcfda225a255c9dfef16490d0361, 0xf639fea4d6c184a686635902923601, 0x000dc6 ] } , - BigNum { limbs: [ 0x66e7055dd8b9a9362010e8b6f2fca0, 0xb1192af8a686ae9351a4b09f45cf52, 0x006626 ] } , - BigNum { limbs: [ 0x3b04598a9c22f8aeb6194dca2552be, 0x89c063549d3d69c063c5d353adb347, 0x00310e ] } , - BigNum { limbs: [ 0x829fa9756239065149e6b135daad43, 0x1d92c648e00ac9797442364e2a520c, 0x0042df ] } , - BigNum { limbs: [ 0xba076f54fc7d713ba295f01bd3dca3, 0xbdb2cc6acf3bff0acc918a8938919b, 0x001bea ] } , - BigNum { limbs: [ 0x039c93ab01de8dc45d6a0ee42c235e, 0xe9a05d32ae0c342f0b767f189f73b8, 0x005802 ] } , - BigNum { limbs: [ 0x5d2d722303a5151916ea53506843d4, 0x2d1af4dac73ca395d9a86e654d250a, 0x0073ca ] } , - BigNum { limbs: [ 0x607690dcfab6e9e6e915abaf97bc2d, 0x7a3834c2b60b8fa3fe5f9b3c8ae049, 0x000023 ] } , - BigNum { limbs: [ 0xc5bb329aa58ff53dc9e5600f6fb2ac, 0xda0d65ba213edeae67bc36f376e13c, 0x00394f ] } , - BigNum { limbs: [ 0xf7e8d06558cc09c2361a9ef0904d55, 0xcd45c3e35c09548b704bd2ae612416, 0x003a9d ] } , - BigNum { limbs: [ 0x8735397a729c9296667fe93049e708, 0x516de84be9be3b19a4859689394040, 0x000324 ] } , - BigNum { limbs: [ 0x366ec9858bbf6c69998015cfb618f9, 0x55e541519389f820338273189ec513, 0x0070c9 ] } , - BigNum { limbs: [ 0x24897db64ce269d203e3fa74e11447, 0x5b04c0c2ce204699035efe5f090b78, 0x004416 ] } , - BigNum { limbs: [ 0x991a8549b179952dfc1c048b1eebba, 0x4c4e68daaf27eca0d4a90b42cef9db, 0x002fd7 ] } , - BigNum { limbs: [ 0x1336aae12b9741e4013b1be24a6a27, 0x29f81acce66402fe04c5253429fa23, 0x006d79 ] } , - BigNum { limbs: [ 0xaa6d581ed2c4bd1bfec4e31db595da, 0x7d5b0ed096e4303bd342e46dae0b30, 0x000674 ] } , - BigNum { limbs: [ 0x3bc24f99c9cea52aff74bda8bd30d5, 0x89729d58ccebd3a3c25a684b5b1b44, 0x0059c9 ] } , - BigNum { limbs: [ 0x81e1b366348d59d5008b415742cf2c, 0x1de08c44b05c5f9615ada1567cea0f, 0x001a24 ] } , - BigNum { limbs: [ 0xd648d364782d8780d7ed78f5a1840b, 0x47155e69d457fd7728f0be93f4d1a6, 0x00441f ] } , - BigNum { limbs: [ 0xe75b2f9b862e777f2812860a5e7bf6, 0x603dcb33a8f035c2af174b0de333ac, 0x002fce ] } , - BigNum { limbs: [ 0xa48300a88d274b017fb495c97736ea, 0x922de796122f0a24fd82fef9163b38, 0x003676 ] } , - BigNum { limbs: [ 0x192102577134b3fe804b693688c917, 0x152542076b192914da850aa8c1ca1b, 0x003d77 ] } , - BigNum { limbs: [ 0xc8e7356632cbb83bb9f77771a94e74, 0xc278a4e01a4c849f36f7351d976f8c, 0x006186 ] } , - BigNum { limbs: [ 0xf4bccd99cb9046c44608878e56b18d, 0xe4da84bd62fbae9aa110d4844095c6, 0x001266 ] } , - BigNum { limbs: [ 0x8c8462d85d66967dc3465fd3e84234, 0xaf84180afee4df9729856b740496bd, 0x00011a ] } , - BigNum { limbs: [ 0x311fa027a0f568823cb99f2c17bdcd, 0xf7cf11927e6353a2ae829e2dd36e96, 0x0072d2 ] } , - BigNum { limbs: [ 0x617ea313bbee72237fdc3accfeb487, 0x962d2e10663a7a43a7d1a5965b08af, 0x00152d ] } , - BigNum { limbs: [ 0x5c255fec426d8cdc8023c433014b7a, 0x1125fb8d170db8f63036640b7cfca4, 0x005ec0 ] } , - BigNum { limbs: [ 0x9a573ac1ebbef93539694e1a3c0355, 0xa89f0ff90ea23664d64e46d2949543, 0x0057e2 ] } , - BigNum { limbs: [ 0x234cc83e129d05cac696b0e5c3fcac, 0xfeb419a46ea5fcd501b9c2cf437010, 0x001c0a ] } , - BigNum { limbs: [ 0xd68d220fca64d38db677b6043ff669, 0xd6fa9c3d539a83d386045db22900fb, 0x0060c9 ] } , - BigNum { limbs: [ 0xe716e0f033f72b72498848fbc00998, 0xd0588d6029adaf665203abefaf0457, 0x001323 ] } , - BigNum { limbs: [ 0x1707a64849286274d7dfd9973ee6e7, 0x32df7adc756f9365dbfdd816dd932b, 0x0062f9 ] } , - BigNum { limbs: [ 0xa69c5cb7b5339c8b28202568c1191a, 0x7473aec107d89fd3fc0a318afa7228, 0x0010f4 ] } , - BigNum { limbs: [ 0xa584d5a26031ebedba4649fc46b70a, 0x96570a7e378320524b13c0a9195554, 0x002842 ] } , - BigNum { limbs: [ 0x181f2d5d9e2a131245b9b503b948f7, 0x10fc1f1f45c512e78cf448f8beafff, 0x004bab ] } , - BigNum { limbs: [ 0x34078e6023659943eab7043484fc3c, 0xdf83246c205deaaad843d3c445bf62, 0x002c06 ] } , - BigNum { limbs: [ 0x899c749fdaf665bc1548facb7b03c5, 0xc7d005315cea488effc435dd9245f1, 0x0047e6 ] } , - BigNum { limbs: [ 0x259d82fefd5486c32f2ad697429d10, 0xa8040608c82c1612a07a34289f79a2, 0x00587f ] } , - BigNum { limbs: [ 0x980680010107783cd0d52868bd62f1, 0xff4f2394b51c1d27378dd579388bb1, 0x001b6d ] } , - BigNum { limbs: [ 0xadc9b2ae5adec432f30e9b0bfc3a6d, 0x8182ae53dad057afa670133b58fad7, 0x00694a ] } , - BigNum { limbs: [ 0x0fda5051a37d3acd0cf163f403c594, 0x25d07b49a277db8a3197f6667f0a7c, 0x000aa3 ] } , - BigNum { limbs: [ 0xf8c914dff2099ea3f982ee75a456a7, 0x14906a749b47f8a343fc005f3e28f0, 0x004a77 ] } , - BigNum { limbs: [ 0xc4daee200c52605c067d108a5ba95a, 0x92c2bf28e2003a96940c094299dc62, 0x002976 ] } , - BigNum { limbs: [ 0xdf2efbf4151df9070c45c1bd0c92d5, 0xd16ee200ef574685e2f858afc4cd81, 0x004fd8 ] } , - BigNum { limbs: [ 0xde75070be93e05f8f3ba3d42f36d2c, 0xd5e4479c8df0ecb3f50fb0f21337d1, 0x002414 ] } , - BigNum { limbs: [ 0xc5e75edbddeb0243868d6303e7e27a, 0xf5f4896aaa5cff07a7cfa93c6c4267, 0x0025c9 ] } , - BigNum { limbs: [ 0xf7bca4242070fcbc79729bfc181d87, 0xb15ea032d2eb3432303860656bc2eb, 0x004e23 ] } , - BigNum { limbs: [ 0x5eae1a9fb81b7dbc576703ce363b13, 0x15a54c27fd410c55177a1108b89db3, 0x001d30 ] } , - BigNum { limbs: [ 0x5ef5e86046408143a898fb31c9c4ee, 0x91addd75800726e4c08df8991f67a0, 0x0056bd ] } , - BigNum { limbs: [ 0x4f4b7eea11b1984ec91001c0981b11, 0xce55ade3f81929d4d10b57143c885d, 0x003b1e ] } , - BigNum { limbs: [ 0x6e588415ecaa66b136effd3f67e4f0, 0xd8fd7bb9852f096506fcb28d9b7cf6, 0x0038ce ] } , - BigNum { limbs: [ 0x2e6d3761798a4d9cf9bd0d936c966d, 0xbff8f170be1a304971cb7310b33ebb, 0x000c10 ] } , - BigNum { limbs: [ 0x8f36cb9e84d1b1630642f16c936994, 0xe75a382cbf2e02f0663c969124c698, 0x0067dc ] } , - BigNum { limbs: [ 0xfa125eb2f4fd03868a188ce214e418, 0xd6e9727aed451c319521298a12cc68, 0x005fe9 ] } , - BigNum { limbs: [ 0xc391a44d095efb7975e7721deb1be9, 0xd069b7229003170842e6e017c538ea, 0x001403 ] } , - BigNum { limbs: [ 0x6bcc9a644f4cbe093e7371e15d9aa1, 0xf0755426209741a1ab941191a967e6, 0x0058d3 ] } , - BigNum { limbs: [ 0x51d7689baf0f40f6c18c8d1ea26560, 0xb6ddd5775cb0f1982c73f8102e9d6d, 0x001b19 ] } , - BigNum { limbs: [ 0x0c955b5cea64c0ee05c87f9e9f3c1a, 0xafe4259272be74657ff0a7b1507505, 0x003f7e ] } , - BigNum { limbs: [ 0xb10ea7a313f73e11fa377f6160c3e7, 0xf76f040b0a89bed4581761f087904e, 0x00346e ] } , - BigNum { limbs: [ 0xe666a5c2df9cb2d4d896cf626846d8, 0xe4ff876a9633305896bb13960c8f2c, 0x002618 ] } , - BigNum { limbs: [ 0xd73d5d3d1ebf4c2b27692f9d97b929, 0xc253a232e71502e1414cf60bcb7626, 0x004dd4 ] } , - BigNum { limbs: [ 0xbbf889dbf8e8bddb1c8289ed299a23, 0x5855b6c6e391861622d60f4365760b, 0x0023c3 ] } , - BigNum { limbs: [ 0x01ab792405734124e37d7512d665de, 0x4efd72d699b6ad23b531fa5e728f48, 0x00502a ] } , - BigNum { limbs: [ 0xb941a332a92d4a81b0e757b270f005, 0x3270acf0731bd5447069e12d31c902, 0x0058d9 ] } , - BigNum { limbs: [ 0x04625fcd552eb47e4f18a74d8f0ffc, 0x74e27cad0a2c5df5679e2874a63c51, 0x001b14 ] } , - BigNum { limbs: [ 0xab1aae50695eea97978c061418d62e, 0xf84bb160a8c047716fcc94c7283abb, 0x000c1a ] } , - BigNum { limbs: [ 0x128954af94fd14686873f8ebe729d3, 0xaf07783cd487ebc8683b74daafca98, 0x0067d2 ] } , - BigNum { limbs: [ 0x83e0458adf3267676574dd34b4eb80, 0xf6130faaa32be7a5a09cbda9aa668b, 0x005565 ] } , - BigNum { limbs: [ 0x39c3bd751f2997989a8b21cb4b1481, 0xb14019f2da1c4b94376b4bf82d9ec8, 0x001e87 ] } , - BigNum { limbs: [ 0x9b5582bb02c0ced2ca7fad01ebd99e, 0x28f557956f50a73b40e99874bf9749, 0x0031ff ] } , - BigNum { limbs: [ 0x224e8044fb9b302d358051fe142663, 0x7e5dd2080df78bfe971e712d186e0a, 0x0041ee ] } , - BigNum { limbs: [ 0x97358ffd2835e0179fb10dc7b7e09a, 0x5c628fafc971827e30d593ecdae326, 0x00343d ] } , - BigNum { limbs: [ 0x266e7302d6261ee8604ef138481f67, 0x4af099edb3d6b0bba73275b4fd222d, 0x003fb0 ] } , - BigNum { limbs: [ 0xf09f2e0d931259ed68dabc68087120, 0x6de3430206e2df37856fcff7cf23d0, 0x004a47 ] } , - BigNum { limbs: [ 0xcd04d4f26b49a51297254297f78ee1, 0x396fe69b76655402529839aa08e182, 0x0029a6 ] } , - BigNum { limbs: [ 0x239fe2eca23d8a2ffb03118ed84431, 0xa9a47fe534eeef9e27ade80b05e8aa, 0x000cbc ] } , - BigNum { limbs: [ 0x9a0420135c1e74d004fced7127bbd0, 0xfdaea9b84859439bb05a2196d21ca9, 0x006730 ] } , - BigNum { limbs: [ 0x2a1a38f6a3b6fe8f951987f938ad2b, 0x83458a0d76b39864dfcb13266a4997, 0x0002e3 ] } , - BigNum { limbs: [ 0x9389ca095aa500706ae67706c752d6, 0x240d9f9006949ad4f83cf67b6dbbbc, 0x00710a ] } , - BigNum { limbs: [ 0x8c7bacfcf8930fa5dc69430696804b, 0xdaa73a4a03ad14b0f63737b0fba78c, 0x003828 ] } , - BigNum { limbs: [ 0x3128560305c8ef5a2396bbf9697fb6, 0xccabef53799b1e88e1d0d1f0dc5dc7, 0x003bc4 ] } , - BigNum { limbs: [ 0x41c51ee8a59134393725e997d5bc54, 0x04fd857667a60a58096d76095edde2, 0x001200 ] } , - BigNum { limbs: [ 0x7bdee41758cacac6c8da15682a43ad, 0xa255a42715a228e1ce9a9398792771, 0x0061ed ] } , - BigNum { limbs: [ 0x875df6abb81f260c9ba571622fbb63, 0xe16ceae000c0920285804ba56e526c, 0x001472 ] } , - BigNum { limbs: [ 0x36460c54463cd8f3645a8d9dd0449e, 0xc5e63ebd7c87a1375287bdfc69b2e7, 0x005f7a ] } , - BigNum { limbs: [ 0xd87c2f39e59e6deeeeca1aa16d8a80, 0x4238ed2bb9ed0e458ccb4bb37c4eb4, 0x003f04 ] } , - BigNum { limbs: [ 0xe527d3c618bd91111135e45e927581, 0x651a3c71c35b24f44b3cbdee5bb69e, 0x0034e9 ] } , - BigNum { limbs: [ 0xa8e932408ef8fe9af064101df4aaec, 0xc4e966202fc4204656c7ce183ff66a, 0x005271 ] } , - BigNum { limbs: [ 0x14bad0bf6f6300650f9beee20b5515, 0xe269c37d4d8412f381403b89980ee9, 0x00217b ] } , - BigNum { limbs: [ 0x4779b6793f73ecc5a0cf907ec9f18a, 0x341b5a6fc0f0ef6b4ff5f1398a4bff, 0x006a04 ] } , - BigNum { limbs: [ 0x762a4c86bee8123a5f306e81360e77, 0x7337cf2dbc5743ce881218684db954, 0x0009e9 ] } , - BigNum { limbs: [ 0x246c157d33115f38932b9a6e8cfe99, 0xcacb5733af7420048419c85f583b44, 0x0054d3 ] } , - BigNum { limbs: [ 0x9937ed82cb4a9fc76cd46491730168, 0xdc87d269cdd4133553ee41427fca0f, 0x001f19 ] } , - BigNum { limbs: [ 0x66cc3649b2a0f556e0ef5255a8bb66, 0x69cd542aaac08bfe20d50ef2cf5df9, 0x0027a8 ] } , - BigNum { limbs: [ 0x56d7ccb64bbb09a91f10acaa57449b, 0x3d85d572d287a73bb732faaf08a75a, 0x004c45 ] } , - BigNum { limbs: [ 0x4e1027da8563eb5e71b3ec6d0ee30f, 0x91127143ce15c9d42c534df287762f, 0x004394 ] } , - BigNum { limbs: [ 0x6f93db2578f813a18e4c1292f11cf2, 0x1640b859af326965abb4bbaf508f24, 0x003059 ] } , - BigNum { limbs: [ 0x5cd9c1c3e9eb0e96329d35d382cbea, 0x9acbe05086d6eb9fb0acf4176bf84d, 0x0007c7 ] } , - BigNum { limbs: [ 0x60ca413c1470f069cd62c92c7d3417, 0x0c87494cf671479a275b158a6c0d06, 0x006c26 ] } , - BigNum { limbs: [ 0x0c7f8078d990609eab3ef9be9764c6, 0x7e6893b89887fad48b354bc330882c, 0x002284 ] } , - BigNum { limbs: [ 0xb124828724cb9e6154c10541689b3b, 0x28ea95e4e4c038654cd2bddea77d27, 0x005169 ] } , - BigNum { limbs: [ 0xe745f877918fb9616de7a77c440a79, 0xadf0e9def788dbbedd6458f7949e6e, 0x003ec7 ] } , - BigNum { limbs: [ 0xd65e0a886ccc459e92185783bbf588, 0xf9623fbe85bf577afaa3b0aa4366e4, 0x003525 ] } , - BigNum { limbs: [ 0x83f0c9b72e57d78383877b779e75e0, 0xd17fadd4e9e678b200c8f2c29f103c, 0x005d7d ] } , - BigNum { limbs: [ 0x39b33948d004277c7c788388618a21, 0xd5d37bc89361ba87d73f16df38f517, 0x00166f ] } , - BigNum { limbs: [ 0xbc1f8283431f31e8a9c8bd0ac6a3a0, 0x8e3592f5016b397a2c35153ca7e451, 0x004ad6 ] } , - BigNum { limbs: [ 0x0184807cbb3ccd17563741f5395c61, 0x191d96a87bdcf9bfabd2f465302102, 0x002917 ] } , - BigNum { limbs: [ 0x4cef8200c1d124e7f3615720c1d1e5, 0xf506e1d066151a864b33dd2a624d24, 0x0005fb ] } , - BigNum { limbs: [ 0x70b480ff3c8ada180c9ea7df3e2e1c, 0xb24c47cd173318b38cd42c7775b82f, 0x006df1 ] } , - BigNum { limbs: [ 0xdd427388dae96f520501edf8907c06, 0xf0f7b16607e60cdbc9e07bc083b40a, 0x003ff5 ] } , - BigNum { limbs: [ 0xe0618f7723728fadfafe11076f83fb, 0xb65b78377562265e0e278de1545148, 0x0033f7 ] } , - BigNum { limbs: [ 0xd7cb9c3bed54f87277f026ca081a65, 0xaa222e0b7f2fec4b90825a95d695f4, 0x0063f3 ] } , - BigNum { limbs: [ 0xe5d866c41107068d880fd835f7e59c, 0xfd30fb91fe1846ee4785af0c016f5e, 0x000ff9 ] } , - BigNum { limbs: [ 0x097dccea879224b6f9a7a05fdd9b14, 0x28a020c17d24e31612606f18054974, 0x004147 ] } , - BigNum { limbs: [ 0xb426361576c9da4906585ea02264ed, 0x7eb308dc00235023c5a79a89d2bbdf, 0x0032a6 ] } , - BigNum { limbs: [ 0x14ecec793bc43b986b6176b24cbb42, 0xcad3b4615ff25b2d59f1a99bd50e4f, 0x0063df ] } , - BigNum { limbs: [ 0xa8b71686c297c367949e884db344bf, 0xdc7f753c1d55d80c7e16600602f704, 0x00100d ] } , - BigNum { limbs: [ 0xf82e16e5cbc1a9be0cc120c4606c68, 0x2f2c3c7946b0b13d8e366e81529353, 0x0048c4 ] } , - BigNum { limbs: [ 0xc575ec1a329a5541f33ede3b9f9399, 0x7826ed24369781fc49d19b208571ff, 0x002b29 ] } , - BigNum { limbs: [ 0xe91e410af1949521fd7c4f1e349a7d, 0x50fdeb3d61c65e129f2996d49223c1, 0x001613 ] } , - BigNum { limbs: [ 0xd485c1f50cc769de0283afe1cb6584, 0x56553e601b81d52738de72cd45e191, 0x005dda ] } , - BigNum { limbs: [ 0x9dbe5d372eb323eaa96815df473791, 0x5a83ef220beccff313358fd1c761af, 0x00728d ] } , - BigNum { limbs: [ 0x1fe5a5c8cfa8db155697e920b8c870, 0x4ccf3a7b715b6346c4d279d010a3a4, 0x000160 ] } , - BigNum { limbs: [ 0x242aaeca33f4000933a9753e0abf20, 0x7a7b59fcf9e1c016e54989054f05b8, 0x005e7b ] } , - BigNum { limbs: [ 0x99795435ca67fef6cc5689c1f540e1, 0x2cd7cfa083667322f2be809c88ff9b, 0x001572 ] } , - BigNum { limbs: [ 0x0366d7bcfa38432d011dfc07a888cf, 0x1bde864f28f6053fcaf72053efdce7, 0x004438 ] } , - BigNum { limbs: [ 0xba3d2b430423bbd2fee202f8577732, 0x8b74a34e54522dfa0d10e94de8286c, 0x002fb5 ] } , - BigNum { limbs: [ 0xe1e0504e9a05e6693171d0bad3fc18, 0x3f7f0d04c44d9b10859932b310adc7, 0x003001 ] } , - BigNum { limbs: [ 0xdbc3b2b164561896ce8e2e452c03e9, 0x67d41c98b8fa9829526ed6eec7578b, 0x0043ec ] } , - BigNum { limbs: [ 0x8368375b1b209f9180d58bcc836816, 0xf5c5d88faac59bbd3b83fc9c5c40ab, 0x00613f ] } , - BigNum { limbs: [ 0x3a3bcba4e33b5f6e7f2a73337c97eb, 0xb18d510dd282977c9c840d057bc4a8, 0x0012ad ] } , - BigNum { limbs: [ 0x6934c02d0c489448f3e5672b5a5d76, 0x55c023f6d9fb32948fe30dce0ec074, 0x004135 ] } , - BigNum { limbs: [ 0x546f42d2f2136ab70c1a97d4a5a28b, 0x519305a6a34d00a54824fbd3c944df, 0x0032b8 ] } , - BigNum { limbs: [ 0x674aca38cfce36722959330e00c1b7, 0xcb76fd46b0cae810ffcce44015aec9, 0x0045d5 ] } , - BigNum { limbs: [ 0x565938c72e8dc88dd6a6cbf1ff3e4a, 0xdbdc2c56cc7d4b28d83b2561c2568a, 0x002e17 ] } , - BigNum { limbs: [ 0x45e97541c060f8d7f6ba92fa1dc369, 0x92ec171bc4a381862e49d3aeb0ea55, 0x005ab8 ] } , - BigNum { limbs: [ 0x77ba8dbe3dfb062809456c05e23c98, 0x14671281b8a4b1b3a9be35f3271afe, 0x001935 ] } , - BigNum { limbs: [ 0xad0d0eafb77eac566095f1ecc2f957, 0x2138ae7a25020d22ca75d2225ca6da, 0x002516 ] } , - BigNum { limbs: [ 0x1096f45046dd52a99f6a0d133d06aa, 0x861a7b23584626170d92377f7b5e79, 0x004ed7 ] } , - BigNum { limbs: [ 0xdbf8e4a46a63dc2f46b14cc8eef262, 0x47b203b8df8f96138258e226307ec6, 0x0009fb ] } , - BigNum { limbs: [ 0xe1ab1e5b93f822d0b94eb237110d9f, 0x5fa125e49db89d2655af277ba7868c, 0x0069f2 ] } , - BigNum { limbs: [ 0x4feb043497fc58b38d8515a5b0eafd, 0x596d4b0068ab29a7a06b463b79c9d3, 0x000691 ] } , - BigNum { limbs: [ 0x6db8fecb665fa64c727ae95a4f1504, 0x4de5de9d149d0992379cc3665e3b80, 0x006d5c ] } , - BigNum { limbs: [ 0x5ab545d2d158ceedab2d0434639a15, 0x0fca138f01bc235290c82563e205b1, 0x006ce6 ] } , - BigNum { limbs: [ 0x62eebd2d2d03301254d2facb9c65ec, 0x9789160e7b8c0fe7473fe43df5ffa2, 0x000707 ] } , - BigNum { limbs: [ 0x88a9431dd26a69f8f5bf7c94f575df, 0x5deb23c6669863555db3acc5836ceb, 0x002e0f ] } , - BigNum { limbs: [ 0x34fabfe22bf195070a40826b0a8a22, 0x496805d716afcfe47a545cdc549868, 0x0045de ] } , - BigNum { limbs: [ 0x2f6d5e0df66e85cb505dc0b299b048, 0xc617f0fc99ad5824a217b990170bd6, 0x00548d ] } , - BigNum { limbs: [ 0x8e36a4f207ed7934afa23e4d664fb9, 0xe13b38a0e39adb1535f05011c0f97d, 0x001f5f ] } , - BigNum { limbs: [ 0xaea85f522d185f3259fd9f313a07a3, 0x836f8b619f8fd6da5b98ea681cbb10, 0x00327b ] } , - BigNum { limbs: [ 0x0efba3add1439fcda6025fcec5f85e, 0x23e39e3bddb85c5f7c6f1f39bb4a43, 0x004172 ] } , - BigNum { limbs: [ 0x6ca6cc85fa3a8466074ca2b011338f, 0x6c6432cafb55a9ee26912d35d4469c, 0x0072f3 ] } , - BigNum { limbs: [ 0x50fd367a04217a99f8b35c4feecc72, 0x3aeef6d281f2894bb176dc6c03beb7, 0x0000fa ] } , - BigNum { limbs: [ 0x82e5156b496a9bb41782536fec3a1b, 0x2ace5c821d2c46e331920498fb10c0, 0x004818 ] } , - BigNum { limbs: [ 0x3abeed94b4f1634be87dab9013c5e6, 0x7c84cd1b601bec56a6760508dcf493, 0x002bd5 ] } , - BigNum { limbs: [ 0x367d4298555040edfdb0754da8119f, 0x794af8128e9b7f31a086992b47b188, 0x00086f ] } , - BigNum { limbs: [ 0x8726c067a90bbe12024f89b257ee62, 0x2e08318aeeacb408378170769053cb, 0x006b7e ] } , - BigNum { limbs: [ 0xec1460768b2c9675a11fcd56dba52e, 0xeb44c4d3ab2e8a64751841896dd82e, 0x004a83 ] } , - BigNum { limbs: [ 0xd18fa289732f688a5ee031a9245ad3, 0xbc0e64c9d219a8d562efc8186a2d24, 0x002969 ] } , - BigNum { limbs: [ 0x7b27c5aecba7d424a40f2d877906ed, 0x8bd7381214061075bbaf735c62728a, 0x006a32 ] } , - BigNum { limbs: [ 0x427c3d5132b42adb5bf0d17886f914, 0x1b7bf18b694222c41c5896457592c9, 0x0009bb ] } , - BigNum { limbs: [ 0xc900da291efb3abe2b290659fca460, 0x9905074ea83b6627c0df94b27365dd, 0x005dee ] } , - BigNum { limbs: [ 0xf4a328d6df60c441d4d6f8a6035ba1, 0x0e4e224ed50ccd12172874ef649f75, 0x0015ff ] } , - BigNum { limbs: [ 0x8ab9244d137048c402cc7b2dc9edbb, 0xe6f824d478f86c73e771bd4ea2c90e, 0x0027bc ] } , - BigNum { limbs: [ 0x32eadeb2eaebb63bfd3383d2361246, 0xc05b04c9044fc6c5f0964c53353c45, 0x004c30 ] } , - BigNum { limbs: [ 0xd755e8f2d005f191eb6617ea425abe, 0x7fc6baaff653d471cedcf5b54d8685, 0x002ba0 ] } , - BigNum { limbs: [ 0xe64e1a0d2e560d6e1499e715bda543, 0x278c6eed86f45ec8092b13ec8a7ecd, 0x00484d ] } , - BigNum { limbs: [ 0x1afd71f847b27e4b7dbb8ad705dc13, 0x31f14b65a3e9d26c7142926b9087a9, 0x0059c1 ] } , - BigNum { limbs: [ 0xa2a69107b6a980b482447428fa23ee, 0x7561de37d95e60cd66c57736477daa, 0x001a2c ] } , - BigNum { limbs: [ 0x88fbcfaaf5caa2625a2f32ed8dbce9, 0x2e58570ef3f0f35b75415536727b44, 0x004fc1 ] } , - BigNum { limbs: [ 0x34a8335508915c9da5d0cc12724318, 0x78fad28e89573fde62c6b46b658a0f, 0x00242c ] } , - BigNum { limbs: [ 0xe632270915026095198d2484b905d5, 0x6d45265665ab6722f9d50533ea0803, 0x002177 ] } , - BigNum { limbs: [ 0xd771dbf6e9599e6ae672da7b46fa2c, 0x3a0e0347179ccc16de33046dedfd4f, 0x005276 ] } , - BigNum { limbs: [ 0x6cafe8dae5e7cb2abfe1f0c02c3040, 0x5595dd0c70084ffd4705ba2749c170, 0x000555 ] } , - BigNum { limbs: [ 0x50f41a25187433d5401e0e3fd3cfc1, 0x51bd4c910d3fe33c91024f7a8e43e3, 0x006e98 ] } , - BigNum { limbs: [ 0x5472ccdbb2142b6ff9012b3255ff9b, 0x04de4f38c29ec387bd5674cd63e796, 0x0073a3 ] } , - BigNum { limbs: [ 0x693136244c47d39006fed3cdaa0066, 0xa274da64baa96fb21ab194d4741dbd, 0x00004a ] } , - BigNum { limbs: [ 0x2796b14093750a1b54a53a70d4265b, 0x9575b02b97ede59ff02d7965b2143c, 0x000e69 ] } , - BigNum { limbs: [ 0x960d51bf6ae6f4e4ab5ac48f2bd9a6, 0x11dd7971e55a4d99e7da903c25f117, 0x006584 ] } , - BigNum { limbs: [ 0x5ce232818f6d02784a153b636d653e, 0xc132013455cccb72eb7f83ff4b32f9, 0x00168d ] } , - BigNum { limbs: [ 0x60c1d07e6eeefc87b5eac39c929ac3, 0xe6212869277b67c6ec8885a28cd25a, 0x005d5f ] } , - BigNum { limbs: [ 0xdfae94d32a526430c7ec90435fd3d8, 0xfb315c99b3560f738ec8f0d52f0eb7, 0x0039ac ] } , - BigNum { limbs: [ 0xddf56e2cd4099acf38136ebca02c29, 0xac21cd03c9f223c6493f18cca8f69b, 0x003a40 ] } , - BigNum { limbs: [ 0xbaf1d05095002fdd8017c1ac3e2213, 0x162593515198ee00a3b7b4351ee023, 0x0008fc ] } , - BigNum { limbs: [ 0x02b232af695bcf227fe83d53c1ddee, 0x912d964c2baf45393450556cb92530, 0x006af1 ] } , - BigNum { limbs: [ 0x1761e1b0f909021a23424d59fe3fde, 0xe21a8e1305f1f85d77efa39074c1e1, 0x005721 ] } , - BigNum { limbs: [ 0xa642214f0552fce5dcbdb1a601c023, 0xc5389b8a77563adc60186611634372, 0x001ccb ] } , - BigNum { limbs: [ 0x5ae294d8dd573fffb41b3f2f682eed, 0xb7d1bdda337e9d5126d86f1fed63e9, 0x003911 ] } , - BigNum { limbs: [ 0x62c16e272104bf004be4bfd097d114, 0xef816bc349c995e8b12f9a81eaa16a, 0x003adb ] } , - BigNum { limbs: [ 0xd8da20debfe655515bbca46b58ca6f, 0x2ba635623a828636d4648656a208e1, 0x0014e8 ] } , - BigNum { limbs: [ 0xe4c9e2213e75a9aea4435a94a73592, 0x7bacf43b42c5ad0303a3834b35fc71, 0x005f05 ] } , - BigNum { limbs: [ 0x0eff902da996a111c53e42d167a2f3, 0x5f36c9c99822cc2f7ab68a9c648979, 0x001626 ] } , - BigNum { limbs: [ 0xaea472d254c55dee3ac1bc2e985d0e, 0x481c5fd3e525670a5d517f05737bda, 0x005dc7 ] } , - BigNum { limbs: [ 0x2832b9e94931ba5e2e4bcb392b8c79, 0xb0281754e39497f22b5e1206600631, 0x006a95 ] } , - BigNum { limbs: [ 0x95714916b52a44a1d1b433c6d47388, 0xf72b124899b39b47aca9f79b77ff22, 0x000957 ] } , - BigNum { limbs: [ 0x7ff86c9800ce933f46ed02914494b4, 0xfdfbe2924212794dff836b2b5a7639, 0x0001af ] } , - BigNum { limbs: [ 0x3dab9667fd8d6bc0b912fc6ebb6b4d, 0xa957470b3b35b9ebd8849e767d8f1a, 0x00723d ] } , - BigNum { limbs: [ 0xa33631f8fd1d6facd34d18272a545a, 0x479e3532f624056dfaea780689ee8d, 0x002751 ] } , - BigNum { limbs: [ 0x1a6dd107013e8f532cb2e6d8d5aba7, 0x5fb4f46a87242dcbdd1d919b4e16c6, 0x004c9c ] } , - BigNum { limbs: [ 0xdea62d1f54d511e3bc85d76ea76833, 0x123c1d3102d814f924706550b0ee18, 0x002ff2 ] } , - BigNum { limbs: [ 0xdefdd5e0a986ed1c437a27915897ce, 0x95170c6c7a701e40b397a45127173a, 0x0043fb ] } , - BigNum { limbs: [ 0x01fd6e8903fd24ca9e402838e7b804, 0xe66208321109df5658c6934f9225a0, 0x0038b7 ] } , - BigNum { limbs: [ 0xbba69476fa5eda3561bfd6c71847fd, 0xc0f1216b6c3e53e37f41765245dfb3, 0x003b35 ] } , - BigNum { limbs: [ 0x9f54c6d7b59e1bc86d5f8eb280c2a5, 0x033574a96bc88ca392e40dc1957a56, 0x004b03 ] } , - BigNum { limbs: [ 0x1e4f3c2848bde33792a0704d7f3d5c, 0xa41db4f4117fa6964523fbe0428afd, 0x0028ea ] } , - BigNum { limbs: [ 0x7412898d6ec5a684b8c9b4446fd582, 0xa0bc8b54424d416ef204603f8b860b, 0x004d22 ] } , - BigNum { limbs: [ 0x499179728f96587b47364abb902a7f, 0x06969e493afaf1cae603a9624c7f48, 0x0026cb ] } , - BigNum { limbs: [ 0x8ef8cfb50c7a249284f53bac1d176d, 0xe03a90185ce536cb0bbf36a5147dbd, 0x003f05 ] } , - BigNum { limbs: [ 0x2eab334af1e1da6d7b0ac353e2e894, 0xc71899852062fc6ecc48d2fcc38796, 0x0034e7 ] } , - BigNum { limbs: [ 0x02f98d2c83947e2dba2893980d82a1, 0x3e116737fbc055192d14fd3355fac4, 0x006a2e ] } , - BigNum { limbs: [ 0xbaaa75d37ac780d245d76b67f27d60, 0x6941c2658187de20aaf30c6e820a8f, 0x0009bf ] } , - BigNum { limbs: [ 0x704befa1add72aad7c381607a6dc93, 0xd71fcfdec95d9e6f0df792f71cd2b9, 0x004429 ] } , - BigNum { limbs: [ 0x4d58135e5084d45283c7e8f859236e, 0xd03359beb3ea94caca1076aabb329a, 0x002fc3 ] } , - BigNum { limbs: [ 0xacbe2262b418a2638837860d447b9d, 0xb031c71b320491e8eac686cb1238e2, 0x005248 ] } , - BigNum { limbs: [ 0x10e5e09d4a435c9c77c878f2bb8464, 0xf72162824b43a150ed4182d6c5cc71, 0x0021a4 ] } , - BigNum { limbs: [ 0xc886804b43a5dacc3ea2ee65d4ecb0, 0xe237f84bb358a39307fe3d83d27933, 0x006cd8 ] } , - BigNum { limbs: [ 0xf51d82b4bab62433c15d109a2b1351, 0xc51b3151c9ef8fa6d009cc1e058c1f, 0x000714 ] } , - BigNum { limbs: [ 0x88b4c47ce02d29745cf81a1cf54e2d, 0x9e819ea54579f978a898349e337379, 0x000665 ] } , - BigNum { limbs: [ 0x34ef3e831e2ed58ba307e4e30ab1d4, 0x08d18af837ce39c12f6fd503a491da, 0x006d88 ] } , - BigNum { limbs: [ 0x8a365beaee9aa1222a95355823a93a, 0x2a0011d0128b4df1c0100c05fb20e5, 0x0033dc ] } , - BigNum { limbs: [ 0x336da7150fc15dddd56ac9a7dc56c7, 0x7d5317cd6abce54817f7fd9bdce46e, 0x004011 ] } , - BigNum { limbs: [ 0x4eda2c912d8baded283c9c8d205bfe, 0xe1810ab167f245b80dec4d09a98c31, 0x00552b ] } , - BigNum { limbs: [ 0x6ec9d66ed0d05112d7c36272dfa403, 0xc5d21eec1555ed81ca1bbc982e7922, 0x001ec1 ] } , - BigNum { limbs: [ 0xc31471f92176911381369eee0865c5, 0x8c9032027765b113e55827adc0428d, 0x0020ff ] } , - BigNum { limbs: [ 0xfa8f9106dce56dec7ec96011f79a3c, 0x1ac2f79b05e28225f2afe1f417c2c5, 0x0052ee ] } , - BigNum { limbs: [ 0xb518d7c5636f87a2aab21fcede5484, 0xacff35d604c8bf73e9ca8faec02fe6, 0x003e6d ] } , - BigNum { limbs: [ 0x088b2b3a9aec775d554ddf3121ab7d, 0xfa53f3c7787f73c5ee3d79f317d56d, 0x00357f ] } , - BigNum { limbs: [ 0x1286d896cbfaaefcabcc3fa54d8ae9, 0x13027cc426755f5419542774017907, 0x006214 ] } , - BigNum { limbs: [ 0xab1d2a69326150035433bf5ab27518, 0x9450acd956d2d3e5beb3e22dd68c4c, 0x0011d9 ] } , - BigNum { limbs: [ 0x09812ba3c0f58f7970653080f3fa54, 0x9e591bf80a2cb8ea6c14c8a4a47832, 0x004267 ] } , - BigNum { limbs: [ 0xb422d75c3d666f868f9ace7f0c05ad, 0x08fa0da5731b7a4f6bf340fd338d21, 0x003186 ] } , - BigNum { limbs: [ 0x1c675954836f9c7261f7a14309d84e, 0x7a684366240451bc61eab00baea204, 0x0011f6 ] } , - BigNum { limbs: [ 0xa13ca9ab7aec628d9e085dbcf627b3, 0x2ceae6375943e17d761d599629634f, 0x0061f7 ] } , - BigNum { limbs: [ 0x6360aeba1c512d9fcacc28c5b97ee3, 0x96d85c56965d5c00d547b7fce38aca, 0x006354 ] } , - BigNum { limbs: [ 0x5a435445e20ad1603533d63a46811e, 0x107acd46e6ead73902c051a4f47a89, 0x001099 ] } , - BigNum { limbs: [ 0xae4e968224f635199d5428ad4548ef, 0x7eea765f85d55b02af61b8a3169be9, 0x003a3f ] } , - BigNum { limbs: [ 0x0f556c7dd965c9e662abd652bab712, 0x2868b33df772d83728a650fec1696a, 0x0039ae ] } , - BigNum { limbs: [ 0xb44b7a25558c2344733b2c1242b92e, 0xf905524c46db336792732ae950f775, 0x006c09 ] } , - BigNum { limbs: [ 0x095888daa8cfdbbb8cc4d2edbd46d3, 0xae4dd751366cffd24594deb8870dde, 0x0007e3 ] } , - BigNum { limbs: [ 0x62b737fa19789e9f7fc03621b99719, 0x8e1c05c1d8cd5a6e1f37c1ae346a47, 0x0032a2 ] } , - BigNum { limbs: [ 0x5aeccb05e4e36060803fc8de4668e8, 0x193723dba47ad8cbb8d047f3a39b0c, 0x00414b ] } , - BigNum { limbs: [ 0xa5504e11f3ccdbfa9af80fd15595f8, 0x9cc25f53a7f44defe519c94b64d289, 0x0046cc ] } , - BigNum { limbs: [ 0x1853b4ee0a8f23056507ef2eaa6a09, 0x0a90ca49d553e549f2ee40567332ca, 0x002d21 ] } , - BigNum { limbs: [ 0x977f0e8581983b79cde8dbf0bb8e08, 0xfdc7ec01cb9fc5c6f227e1ebd71b3d, 0x003bc0 ] } , - BigNum { limbs: [ 0x2624f47a7cc3c3863217230f4471f9, 0xa98b3d9bb1a86d72e5e027b600ea16, 0x00382c ] } , - BigNum { limbs: [ 0x3a6768f3b303ee0a4b3949fb7851e2, 0x855f6e0a87bae9f8a2392c25156520, 0x005809 ] } , - BigNum { limbs: [ 0x833c9a0c4b5810f5b4c6b50487ae1f, 0x21f3bb92f58d494135cedd7cc2a033, 0x001be4 ] } , - BigNum { limbs: [ 0xca21303074bde2995b954a966b763b, 0xdc985ccb1c3452822e1847322d7020, 0x004be9 ] } , - BigNum { limbs: [ 0xf382d2cf899e1c66a46ab4699489c6, 0xcabaccd26113e0b7a9efc26faa9532, 0x002803 ] } , - BigNum { limbs: [ 0x54932cc64f5de78ab495ab0223b36d, 0x1e85b426c5243ebbdbafc9bba6611a, 0x00521d ] } , - BigNum { limbs: [ 0x6910d639aefe17754b6a53fddc4c94, 0x88cd7576b823f47dfc583fe631a439, 0x0021d0 ] } , - BigNum { limbs: [ 0xb042c63c9261c9707b77dd1bca9b98, 0x9e01c27b06aa40abf1469ded1c171d, 0x0044c2 ] } , - BigNum { limbs: [ 0x0d613cc36bfa358f848821e4356469, 0x09516722769df28de6c16bb4bbee36, 0x002f2b ] } , - BigNum { limbs: [ 0x47d12a3e69b4fc51eec449971cc3c5, 0xa9b76b7237ecdcbceec5bd388b5d99, 0x001a7e ] } , - BigNum { limbs: [ 0x75d2d8c194a702ae113bb568e33c3c, 0xfd9bbe2b455b567ce9424c694ca7ba, 0x00596e ] } , - BigNum { limbs: [ 0xe72dbe134c6fdb4a1d36cf8df8f992, 0x70e938e86c9842198f6ce41536c829, 0x00675d ] } , - BigNum { limbs: [ 0xd67644ecb1ec23b5e2c92f7207066f, 0x3669f0b510aff120489b258ca13d29, 0x000c90 ] } , - BigNum { limbs: [ 0xfa90da84ad6d9214ef82ee886d1cd0, 0xb15e939a0f6dbd6391899119cc2cb9, 0x00545a ] } , - BigNum { limbs: [ 0xc313287b50ee6ceb107d107792e331, 0xf5f496036dda75d6467e78880bd899, 0x001f92 ] } , - BigNum { limbs: [ 0xb1cf1c5815d3657a771377ed444ace, 0xe2ec3fa911ac9989acfafbf7f39399, 0x004085 ] } , - BigNum { limbs: [ 0x0bd4e6a7e888998588ec8712bbb533, 0xc466e9f46b9b99b02b0d0da9e471ba, 0x003367 ] } , - BigNum { limbs: [ 0x81ba8e7f3907e60ba25204854a8ad0, 0xbcbce618e9430273f54bd20084ca90, 0x000d38 ] } , - BigNum { limbs: [ 0x3be97480c55418f45dadfa7ab57531, 0xea964384940530c5e2bc37a1533ac3, 0x0066b4 ] } , - BigNum { limbs: [ 0xfb60fcbc1643d1cacdc1127f8b8baa, 0xaa957b88a51a4ed6c2aa55822b6178, 0x0013cb ] } , - BigNum { limbs: [ 0xc2430643e8182d35323eec80747457, 0xfcbdae14d82de463155db41faca3da, 0x006021 ] } , - BigNum { limbs: [ 0xf6013a54b1701bdd62d7512f905e61, 0x709ec2e4ae5c12c3256f89c16f7e9a, 0x005c84 ] } , - BigNum { limbs: [ 0xc7a2c8ab4cebe3229d28add06fa1a0, 0x36b466b8ceec2076b2987fe06886b8, 0x001769 ] } , - BigNum { limbs: [ 0xe4fb89e9608365e5f72a1a1d1fecbe, 0x8e2378d075aa842a7367e53ce7ad5c, 0x000c53 ] } , - BigNum { limbs: [ 0xd8a879169dd8991a08d5e4e2e01343, 0x192fb0cd079daf0f64a02464f057f6, 0x00679a ] } , - BigNum { limbs: [ 0x085bae7ee5110f59a4d711ae82bcad, 0xc91bd75f1873557efa4e10935a9bd9, 0x0073d3 ] } , - BigNum { limbs: [ 0xb5485481194aefa65b28ed517d4354, 0xde37523e64d4ddbaddb9f90e7d697a, 0x000019 ] } , - BigNum { limbs: [ 0x2695152f6b5142e0be1f5c13db389d, 0x30a683d17da6a1837e5b131e431c9c, 0x0008be ] } , - BigNum { limbs: [ 0x970eedd0930abc1f41e0a2ec24c764, 0x76aca5cbffa191b659acf68394e8b7, 0x006b2f ] } , - BigNum { limbs: [ 0xd361931cc62e593329dcd088c58421, 0xea840c7c1995eabfe2b2e8b314fbe6, 0x00142c ] } , - BigNum { limbs: [ 0xea426fe3382da5ccd6232e773a7be0, 0xbccf1d2163b24879f55520eec3096c, 0x005fc0 ] } , - BigNum { limbs: [ 0x5fb6ea66dac1767674faaa2de759e5, 0xd63332a582db767b4506131aef995a, 0x002f2b ] } , - BigNum { limbs: [ 0x5ded1899239a88898b0554d218a61c, 0xd11ff6f7fa6cbcbe9301f686e86bf9, 0x0044c1 ] } , - BigNum { limbs: [ 0x5b024105902954e4ad61be21e283b4, 0x4fcaf05b2bafb727f1ca264d950f2d, 0x001f07 ] } , - BigNum { limbs: [ 0x62a1c1fa6e32aa1b529e40de1d7c4d, 0x5788394251987c11e63de35442f626, 0x0054e6 ] } , - BigNum { limbs: [ 0x9a5bc71498515bed93e370bba575a6, 0x94b0ff14fd213c43dd5ed570047253, 0x001cc7 ] } , - BigNum { limbs: [ 0x23483beb660aa3126c1c8e445a8a5b, 0x12a22a888026f6f5faa93431d39300, 0x005726 ] } , - BigNum { limbs: [ 0xea597cd61bb86ea86b9b5b82cb3fe2, 0xbdf521012435a0ccc0cf85b8c3e0c9, 0x000bec ] } , - BigNum { limbs: [ 0xd34a8629e2a390579464a37d34c01f, 0xe95e089c5912926d173883e9142489, 0x006800 ] } , - BigNum { limbs: [ 0xaaac595d440f8fdd767be7f73b818b, 0x1a01d84f100c913ebd351085edf455, 0x000791 ] } , - BigNum { limbs: [ 0x12f7a9a2ba4c6f2289841708c47e76, 0x8d51514e6d3ba1fb1ad2f91bea10fe, 0x006c5c ] } , - BigNum { limbs: [ 0xad1f311ba4999ab05556eb7751a8b4, 0xb9c6e5b1499251bb55939bfc3554dd, 0x002c15 ] } , - BigNum { limbs: [ 0x1084d1e459c2644faaa91388ae574d, 0xed8c43ec33b5e17e82746da5a2b076, 0x0047d7 ] } , - BigNum { limbs: [ 0xc41cf5f649c2caa6b10cd443088a48, 0xd4193fdfabdf6a36f4dc4f41628b76, 0x0051e1 ] } , - BigNum { limbs: [ 0xf9870d09b49934594ef32abcf775b9, 0xd339e9bdd168c902e32bba607579dc, 0x00220b ] } , - BigNum { limbs: [ 0x034e7b311b4055dde7503cb04c0494, 0x805eadb082b5d28e3de3258a2c9729, 0x0072e1 ] } , - BigNum { limbs: [ 0xba5587cee31ba92218afc24fb3fb6d, 0x26f47becfa9260ab9a24e417ab6e2a, 0x00010c ] } , - BigNum { limbs: [ 0x0c93e7b593f4021a04e45cdc589b09, 0x4da1d947613f44b714ea7b8d817caa, 0x005454 ] } , - BigNum { limbs: [ 0xb1101b4a6a67fce5fb1ba223a764f8, 0x59b150561c08ee82c31d8e145688a9, 0x001f99 ] } , - BigNum { limbs: [ 0x89bc1b0ba34703c87c4d9db4144f3f, 0x3d4962ba6f83539c469cd2fecbb14f, 0x0012b7 ] } , - BigNum { limbs: [ 0x33e7e7f45b14fb3783b2614bebb0c2, 0x6a09c6e30dc4df9d916b36a30c5404, 0x006136 ] } , - BigNum { limbs: [ 0x7eec846c006128d2a2f0a2ccaca02b, 0x7557a89b76dab0a2fe5e4300c9e041, 0x000f96 ] } , - BigNum { limbs: [ 0x3eb77e93fdfad62d5d0f5c33535fd6, 0x31fb8102066d8296d9a9c6a10e2512, 0x006457 ] } , - BigNum { limbs: [ 0x2dce7fa62abef76ef474639997b524, 0x29c6dfb12d903ca9ca762e25f67b62, 0x00208a ] } , - BigNum { limbs: [ 0x8fd58359d39d07910b8b9b66684add, 0x7d8c49ec4fb7f6900d91db7be189f1, 0x005363 ] } , - BigNum { limbs: [ 0x62091eff70e87c654f15578a055fef, 0x3070991cc8391661416356317928c9, 0x003197 ] } , - BigNum { limbs: [ 0x5b9ae4008d73829ab0eaa775faa012, 0x76e29080b50f1cd896a4b3705edc8a, 0x004256 ] } , - BigNum { limbs: [ 0x698e3b1cd304260eb391595bd738ae, 0x7ee150e18bb4ab3522894f9558bca1, 0x00154a ] } , - BigNum { limbs: [ 0x5415c7e32b57d8f14c6ea5a428c753, 0x2871d8bbf1938804b57eba0c7f48b2, 0x005ea3 ] } , - BigNum { limbs: [ 0x7857428dac417e211b67cf18c0fb8b, 0xe5f7dcd8c7dea2e01e9d23c8f5d8b3, 0x00452b ] } , - BigNum { limbs: [ 0x454cc072521a80dee4982fe73f0476, 0xc15b4cc4b5699059b96ae5d8e22ca0, 0x002ec1 ] } , - BigNum { limbs: [ 0x53628e062aca3b3e43f1d08abbb190, 0xd4907a9e2dcc23063173a924477b65, 0x001b8d ] } , - BigNum { limbs: [ 0x6a4174f9d391c3c1bc0e2e75444e71, 0xd2c2aeff4f7c1033a694607d9089ee, 0x00585f ] } , - BigNum { limbs: [ 0xb62450509f2296b6734e3efb28ae27, 0x07b8b435dcf86444e95bfbb6755b71, 0x0044ac ] } , - BigNum { limbs: [ 0x077fb2af5f3968498cb1c004d751da, 0x9f9a7567a04fcef4eeac0deb62a9e2, 0x002f41 ] } , - BigNum { limbs: [ 0x3e58e0117792f291c40fe2b678bf0b, 0xe2497ad927d2bdc9f8d4e596394c91, 0x0030ca ] } , - BigNum { limbs: [ 0x7f4b22ee86c90c6e3bf01c498740f6, 0xc509aec45575756fdf33240b9eb8c2, 0x004322 ] } , - BigNum { limbs: [ 0x5aa4a233e87d5e371d22c02ef82b68, 0x9a759829c14af4ad4275ba9c8f396e, 0x0027d1 ] } , - BigNum { limbs: [ 0x62ff60cc15dea0c8e2dd3ed107d499, 0x0cdd9173bbfd3e8c95924f0548cbe5, 0x004c1c ] } , - BigNum { limbs: [ 0xf3aa58e99269933f868ef74e34cedd, 0x6f2c61079dc8e838f3f4089133567b, 0x005b57 ] } , - BigNum { limbs: [ 0xc9f9aa166bf26bc0797107b1cb3124, 0x3826c895df7f4b00e4140110a4aed7, 0x001896 ] } , - BigNum { limbs: [ 0x5284eb9442ac1780f17eea495f2fba, 0xc09d6c47080906b54811a792aaebb3, 0x0051f2 ] } , - BigNum { limbs: [ 0x6b1f176bbbafe77f0e8114b6a0d047, 0xe6b5bd56753f2c848ff6620f2d19a0, 0x0021fa ] } , - BigNum { limbs: [ 0x98c422100bf610460bbc401371b569, 0xd623e1132e47a55bd37ad1ae91d283, 0x000936 ] } , - BigNum { limbs: [ 0x24dfe0eff265eeb9f443beec8e4a98, 0xd12f488a4f008dde048d37f34632d0, 0x006ab6 ] } , - BigNum { limbs: [ 0x346b65fb9f8e796ed42fc106e8beda, 0x50dab151a016e7d060c85744e084cb, 0x006a04 ] } , - BigNum { limbs: [ 0x89389d045ecd85912bd03df9174127, 0x5678784bdd314b69773fb25cf78088, 0x0009e9 ] } , - BigNum { limbs: [ 0x0adfc6d985a5ae6c8200cb4d658f9a, 0x9751fa53b16c827980386401953d4b, 0x0040f7 ] } , - BigNum { limbs: [ 0xb2c43c2678b650937dff33b29a7067, 0x10012f49cbdbb0c057cfa5a042c808, 0x0032f6 ] } , - BigNum { limbs: [ 0x33c8f960a3b828e30637eec3c90efb, 0xa350bec134a6681543e548f045c8cf, 0x0031de ] } , - BigNum { limbs: [ 0x89db099f5aa3d61cf9c8103c36f106, 0x04026adc48a1cb249422c0b1923c84, 0x00420f ] } , - BigNum { limbs: [ 0xaa8aa2ae8d483855c0e05deca56e9e, 0xf72ff852fa6c34f6da3a469aee95f2, 0x000430 ] } , - BigNum { limbs: [ 0x131960517113c6aa3f1fa1135a9163, 0xb023314a82dbfe42fdcdc306e96f61, 0x006fbc ] } , - BigNum { limbs: [ 0x14c45026a15310452a6be7a15f8884, 0xd5f6165507cff94f5f321dcc8058eb, 0x006447 ] } , - BigNum { limbs: [ 0xa8dfb2d95d08eebad594175ea0777d, 0xd15d1348757839ea78d5ebd557ac68, 0x000fa5 ] } , - BigNum { limbs: [ 0x090554eb33fa5104a58b430e6996b2, 0x2e6efad085ce099ee55f6c643d7050, 0x006f48 ] } , - BigNum { limbs: [ 0xb49eae14ca61adfb5a74bbf196694f, 0x78e42eccf77a299af2a89d3d9a9503, 0x0004a5 ] } , - BigNum { limbs: [ 0xf8278851c1fee5d03c6ec52cf53357, 0x3d1b421904d628771e64628611266c, 0x0020ee ] } , - BigNum { limbs: [ 0xc57c7aae3c5d192fc39139d30accaa, 0x6a37e78478720ac2b9a3a71bc6dee6, 0x0052ff ] } , - BigNum { limbs: [ 0xfdbf32b43aaca442be6ce09527043d, 0xf330ba7045942a14415e06f2962639, 0x00210d ] } , - BigNum { limbs: [ 0xbfe4d04bc3af5abd41931e6ad8fbc4, 0xb4226f2d37b4092596aa02af41df19, 0x0052df ] } , - BigNum { limbs: [ 0x605780acc9fc3e25679d4205bead5c, 0xf0d824781574c5a95982ab88f5b571, 0x005d86 ] } , - BigNum { limbs: [ 0x5d4c8253345fc0da9862bcfa4152a5, 0xb67b052567d36d907e855e18e24fe2, 0x001666 ] } , - BigNum { limbs: [ 0x9338ba645487f7e22b885d570466be, 0x78365db99a53bb71d2203317320520, 0x001c0a ] } , - BigNum { limbs: [ 0x2a6b489ba9d4071dd477a1a8fb9943, 0x2f1ccbe3e2f477c805e7d68aa60033, 0x0057e3 ] } , - BigNum { limbs: [ 0xa2eeb13cd7baac4a7da843d1a28e26, 0xeafd1a52ea67ca3184a7653385a26c, 0x0027f3 ] } , - BigNum { limbs: [ 0x1ab551c326a152b58257bb2e5d71db, 0xbc560f4a92e069085360a46e5262e7, 0x004bf9 ] } , - BigNum { limbs: [ 0x650a86f42f3f803712a3528462d455, 0xf451d76cf84877a580dbf24a0a84e3, 0x005a54 ] } , - BigNum { limbs: [ 0x58997c0bcf1c7ec8ed5cac7b9d2bac, 0xb301523084ffbb94572c1757cd8070, 0x001998 ] } , - BigNum { limbs: [ 0xfe1e6e95d0aec327463e76b0c70fbe, 0x79260464e8ae99392a6eec4a9e9cda, 0x006da8 ] } , - BigNum { limbs: [ 0xbf85946a2dad3bd8b9c1884f38f043, 0x2e2d253894999a00ad991d57396878, 0x000645 ] } , - BigNum { limbs: [ 0x43d3573392c9879302a025f9ab23ba, 0x149d6f7fbd6ce4d8804dbd8dc283b8, 0x0058ba ] } , - BigNum { limbs: [ 0x79d0abcc6b92776cfd5fd90654dc47, 0x92b5ba1dbfdb4e6157ba4c1415819b, 0x001b33 ] } , - BigNum { limbs: [ 0x54d02ff707ac89dc982deab639eb06, 0x2c879036d62fae65b5bdd485b39aa9, 0x005561 ] } , - BigNum { limbs: [ 0x68d3d308f6af752367d21449c614fb, 0x7acb9966a71884d4224a351c246aaa, 0x001e8c ] } , - BigNum { limbs: [ 0xec6f87c86e9c681df925ed5a2c9cfb, 0x9d4188a6785336fb4d3828a9b3a648, 0x001da1 ] } , - BigNum { limbs: [ 0xd1347b378fbf96e206da11a5d36306, 0x0a11a0f704f4fc3e8acfe0f8245f0a, 0x00564c ] } , - BigNum { limbs: [ 0x105880c703465c32a08467ac2436b1, 0x1edd08521ea1e7c6431e5ed67dde34, 0x004837 ] } , - BigNum { limbs: [ 0xad4b8238fb15a2cd5f7b9753dbc950, 0x8876214b5ea64b7394e9aacb5a271f, 0x002bb6 ] } , - BigNum { limbs: [ 0x59a409cc7e6f2bec383fc00e85dfce, 0xfb64ad9af424672ed81a5a6a224a05, 0x0057b3 ] } , - BigNum { limbs: [ 0x63fff9337fecd313c7c03ef17a2033, 0xabee7c028923cc0affedaf37b5bb4e, 0x001c39 ] } , - BigNum { limbs: [ 0x2c020814b3252933ddfe46cb18b5fd, 0x17f7a1c5dcf7a24ece69d503c0a1b8, 0x001392 ] } , - BigNum { limbs: [ 0x91a1faeb4b36d5cc2201b834e74a04, 0x8f5b87d7a05090eb099e349e17639b, 0x00605b ] } , - BigNum { limbs: [ 0x1ac4b576dc734f0e79877c1f463519, 0xdc11933326e6bab294408812d20036, 0x006cf9 ] } , - BigNum { limbs: [ 0xa2df4d8921e8aff1867882e0b9cae8, 0xcb41966a5661788743c7818f06051d, 0x0006f3 ] } , - BigNum { limbs: [ 0x6146b71a452f83a5498f85c0acb37c, 0x283cd146ddd312b729e1be36f038c6, 0x0039e4 ] } , - BigNum { limbs: [ 0x5c5d4be5b92c7b5ab670793f534c85, 0x7f1658569f752082ae264b6ae7cc8d, 0x003a09 ] } , - BigNum { limbs: [ 0x566e02605d2bed6065f959c6233844, 0xb1b1fdace98f0b8e3d39277bb259bf, 0x00209b ] } , - BigNum { limbs: [ 0x6736009fa130119f9a06a539dcc7bd, 0xf5a12bf093b927ab9acee22625ab94, 0x005351 ] } , - BigNum { limbs: [ 0x98e105959c45d394c82e5f7c447821, 0xface0536e215d0655a98d9383150aa, 0x0052a6 ] } , - BigNum { limbs: [ 0x24c2fd6a62162b6b37d19f83bb87e0, 0xac8524669b3262d47d6f3069a6b4a9, 0x002146 ] } , - BigNum { limbs: [ 0x1b59672b8d8e9735f5fdde513fd05d, 0x6bab49ec3a4032bec9c0ddf3eb781a, 0x001c0d ] } , - BigNum { limbs: [ 0xa24a9bd470cd67ca0a0220aec02fa4, 0x3ba7dfb14308007b0e472badec8d39, 0x0057e0 ] } , - BigNum { limbs: [ 0xfe232c77e099e5f37af228a5555107, 0x604a7d36bde4eb9bf8f241eea27b8f, 0x005842 ] } , - BigNum { limbs: [ 0xbf80d6881dc2190c850dd65aaaaefa, 0x4708ac66bf63479ddf15c7b33589c3, 0x001bab ] } , - BigNum { limbs: [ 0xe6dc9e07d85957dd743e3e181c020c, 0x5a641cf84e20bae9ce1c8b230a5b4f, 0x006d95 ] } , - BigNum { limbs: [ 0xd6c764f82602a7228bc1c0e7e3fdf5, 0x4cef0ca52f27785009eb7e7ecdaa03, 0x000658 ] } , - BigNum { limbs: [ 0x490e86e2d7338abbcf6ee1d10fd295, 0xa69185ee8e032bfd6b56e99da531ec, 0x000b63 ] } , - BigNum { limbs: [ 0x74957c1d2728744430911d2ef02d6c, 0x00c1a3aeef45073c6cb1200432d367, 0x00688a ] } , - BigNum { limbs: [ 0x0a04502ae38471b8c15bec5cf65885, 0x0e3dc84e44464df690801e7d69a869, 0x0036b0 ] } , - BigNum { limbs: [ 0xb39fb2d51ad78d473ea412a309a77c, 0x9915614f3901e5434787eb246e5cea, 0x003d3d ] } , - BigNum { limbs: [ 0x4ba05c89541c50c9fbe64484b58cd2, 0x86c754f73a316f5b3e6a6d45087bff, 0x0053e0 ] } , - BigNum { limbs: [ 0x7203a676aa3fae360419ba7b4a732f, 0x208bd4a64316c3de999d9c5ccf8954, 0x00200d ] } , - BigNum { limbs: [ 0xf28b0bf4e7f5b784b6000d14e250c9, 0x58bfeea7581bc57449c63c5f5a46f3, 0x007351 ] } , - BigNum { limbs: [ 0xcb18f70b1666477b49fff1eb1daf38, 0x4e933af6252c6dc58e41cd427dbe5f, 0x00009c ] } , - BigNum { limbs: [ 0x783c383a36e40ab3a904c6992c57f8, 0xa79f979d52ecfbb250856e03cd4840, 0x000c39 ] } , - BigNum { limbs: [ 0x4567cac5c777f44c56fb3866d3a809, 0xffb392002a5b378787829b9e0abd13, 0x0067b3 ] } , - BigNum { limbs: [ 0xe10354b641c46fd6140cc679fff377, 0xfb8d71dd416366c2aa155935f02c7b, 0x002015 ] } , - BigNum { limbs: [ 0xdca0ae49bc978f29ebf33886000c8a, 0xabc5b7c03be4cc772df2b06be7d8d7, 0x0053d7 ] } , - BigNum { limbs: [ 0x299b9b052b53f2009e25cba2de7398, 0x0a08ba66c215b3285fed26b654cc6e, 0x001a83 ] } , - BigNum { limbs: [ 0x940867fad3080cff61da335d218c69, 0x9d4a6f36bb328011781ae2eb8338e5, 0x00596a ] } , - BigNum { limbs: [ 0x69789b07c212e561c334712a894f0c, 0xf99bf33815af9dee448a6bfa62fce9, 0x0029ab ] } , - BigNum { limbs: [ 0x542b67f83c49199e3ccb8dd576b0f5, 0xadb736656798954b937d9da775086a, 0x004a41 ] } , - BigNum { limbs: [ 0x46d45a9773ae6b86c9d7e18da89b3b, 0xcccaaa691dce3ee4751eb94379dff6, 0x0018cb ] } , - BigNum { limbs: [ 0x76cfa8688aad937936281d725764c6, 0xda887f345f79f45562e9505e5e255d, 0x005b21 ] } , - BigNum { limbs: [ 0xd2a67b43235e5634958f1eb0ad95e0, 0x734ae388017271fe8e78b97091cf88, 0x004a15 ] } , - BigNum { limbs: [ 0xeafd87bcdafda8cb6a70e04f526a21, 0x340846157bd5c13b498f50314635ca, 0x0029d8 ] } , - BigNum { limbs: [ 0xa001a9afc07ac661370d2ef55e633f, 0xe7e3351eae01f339c80d8abb20ba62, 0x00519c ] } , - BigNum { limbs: [ 0x1da259503de1389ec8f2d00aa19cc2, 0xbf6ff47ecf4640000ffa7ee6b74af1, 0x002250 ] } , - BigNum { limbs: [ 0xb9c9516fb972965a1ac3122c925449, 0xaaa7eec63b5c6d153148e0de7980e1, 0x001abe ] } , - BigNum { limbs: [ 0x03dab19044e968a5e53cecd36dabb8, 0xfcab3ad741ebc624a6bf28c35e8472, 0x00592e ] } , - BigNum { limbs: [ 0x2046acd0462dd5291f6caf69385d7e, 0x54cb8802be0be7b58b1aabbe621d88, 0x006a27 ] } , - BigNum { limbs: [ 0x9d5d562fb82e29d6e0934f96c7a283, 0x5287a19abf3c4b844ced5de375e7cb, 0x0009c6 ] } , - BigNum { limbs: [ 0x4b3eeb312542d52b6ef4b5e4f07753, 0x48916408e1403ddc5cc045c61c74b1, 0x006327 ] } , - BigNum { limbs: [ 0x726517ced91929d4910b491b0f88ae, 0x5ec1c5949c07f55d7b47c3dbbb90a2, 0x0010c6 ] } , - BigNum { limbs: [ 0x29b73e056bf13feaaf86f52a8c2998, 0x797773363ea48510d4a6c7bf4703e5, 0x003aa3 ] } , - BigNum { limbs: [ 0x93ecc4fa926abf15507909d573d669, 0x2ddbb6673ea3ae29036141e291016e, 0x00394a ] } , - BigNum { limbs: [ 0xe217f3e61986866cebadf86d5ef842, 0x51b588c5486f9e4a3c935036d7e4ad, 0x000692 ] } , - BigNum { limbs: [ 0xdb8c0f19e4d5789314520692a107bf, 0x559da0d834d894ef9b74b96b0020a5, 0x006d5b ] } , - BigNum { limbs: [ 0x70ba2c4850053795878746ef294988, 0xd6873cec26b5ad7a0348fef3d1481d, 0x002514 ] } , - BigNum { limbs: [ 0x4ce9d6b7ae56c76a7878b810d6b679, 0xd0cbecb1569285bfd4bf0aae06bd36, 0x004ed8 ] } , - BigNum { limbs: [ 0x2326a7250b148905c0719e56d6fd15, 0x28e8540547c82ea819c9f75581beae, 0x00214b ] } , - BigNum { limbs: [ 0x9a7d5bdaf34775fa3f8e60a92902ec, 0x7e6ad59835800491be3e124c5646a5, 0x0052a2 ] } , - BigNum { limbs: [ 0x2a99c98beb4f0ce0f40a4dd1d52a86, 0xfec5ede539564d9fc90c4fa5fd592a, 0x0034ec ] } , - BigNum { limbs: [ 0x930a3974130cf21f0bf5b12e2ad57b, 0xa88d3bb843f1e59a0efbb9fbdaac29, 0x003f00 ] } , - BigNum { limbs: [ 0xb10116cf84071cc2198afed5e23a69, 0xbca7f7fff62cc3b7655c2a495f7bb8, 0x0060c5 ] } , - BigNum { limbs: [ 0x0ca2ec307a54e23de675002a1dc598, 0xeaab319d871b6f8272abdf5878899b, 0x001327 ] } , - BigNum { limbs: [ 0x422b4706016552e5731ff5b7e4f90d, 0xda29cd8e836193bb3960bdb203fa67, 0x000bd0 ] } , - BigNum { limbs: [ 0x7b78bbf9fcf6ac1a8ce009481b06f4, 0xcd295c0ef9e69f7e9ea74befd40aec, 0x00681c ] } , - BigNum { limbs: [ 0x555798eb4755185b1ba72cfa6bf59c, 0xf2983cfa6f6538e38a562e53e2aa7e, 0x005ddd ] } , - BigNum { limbs: [ 0x684c6a14b706e6a4e458d205940a65, 0xb4baeca30de2fa564db1db4df55ad5, 0x00160f ] } , - BigNum { limbs: [ 0x8832dd3f5ef62c0943fb0d33375fa6, 0x316646121226ce3015ae580132b4b1, 0x004573 ] } , - BigNum { limbs: [ 0x357125c09f65d2f6bc04f1ccc8a05b, 0x75ece38b6b216509c259b1a0a550a2, 0x002e7a ] } , - BigNum { limbs: [ 0x9c6ffecb2dacc1f1d431c78293c8b9, 0x543fac296aec7a34c5516a0a165973, 0x00428b ] } , - BigNum { limbs: [ 0x21340434d0af3d0e2bce377d6c3748, 0x53137d74125bb90512b69f97c1abe0, 0x003162 ] } , - BigNum { limbs: [ 0x064543e057b3b60d232820cad187ef, 0xad4cc8249a0bad4e635a0383373bf5, 0x001864 ] } , - BigNum { limbs: [ 0xb75ebf1fa6a848f2dcd7de352e7812, 0xfa066178e33c85eb74ae061ea0c95e, 0x005b88 ] } , - BigNum { limbs: [ 0x456225029cb18a7502d8d6f4e2d92c, 0xf177268722515b549d34a1faf96665, 0x002cb6 ] } , - BigNum { limbs: [ 0x7841ddfd61aa748afd27280b1d26d5, 0xb5dc03165af6d7e53ad367a6de9eee, 0x004736 ] } , - BigNum { limbs: [ 0x19a75e369fc40f9d1b43bbcb2db55f, 0x1043f5e5d8aa7b1cb6f0e1b5086227, 0x005f63 ] } , - BigNum { limbs: [ 0xa3fca4c95e97ef62e4bc4334d24aa2, 0x970f33b7a49db81d211727eccfa32c, 0x00148a ] } , - BigNum { limbs: [ 0xa2acecf84b9591015b5a9e7efdcc8f, 0xf40c787ed436bd55fc1ce1a15d2bd6, 0x003d0a ] } , - BigNum { limbs: [ 0x1af71607b2c66dfea4a56081023372, 0xb346b11ea91175e3dbeb28007ad97d, 0x0036e2 ] } , - BigNum { limbs: [ 0xe415a5bdd1fee3d8007db2ad235e31, 0x7e6aa480cbd5388721c3067cad8763, 0x00255e ] } , - BigNum { limbs: [ 0xd98e5d422c5d1b27ff824c52dca1d0, 0x28e8851cb172fab2b64503252a7def, 0x004e8f ] } , - BigNum { limbs: [ 0x75ffd5b8aa14c8c2bb0fc195a9a46a, 0xe8cdba31be2bd5e4e45ff85fceda4a, 0x002284 ] } , - BigNum { limbs: [ 0x47a42d475447363d44f03d6a565b97, 0xbe856f6bbf1c5d54f3a81142092b09, 0x005168 ] } , - BigNum { limbs: [ 0x8bcd8e668308241d4f6d303fae354e, 0x5b0cdb84eb576f71a79480496183ec, 0x005489 ] } , - BigNum { limbs: [ 0x31d674997b53dae2b092cec051cab3, 0x4c464e1891f0c3c830738958768167, 0x001f64 ] } , - BigNum { limbs: [ 0x1539aec479a3eae71c612ef0f04618, 0x7aeb402a1579d6fb7196875d5e30ee, 0x003678 ] } , - BigNum { limbs: [ 0xa86a543b84b81418e39ed00f0fb9e9, 0x2c67e97367ce5c3e6671824479d465, 0x003d75 ] } , - BigNum { limbs: [ 0x3a2b43df04e837f25c4b9ba792b486, 0xd9a47f020288b6790a020273b05fcb, 0x003946 ] } , - BigNum { limbs: [ 0x8378bf20f973c70da3b463586d4b7b, 0xcdaeaa9b7abf7cc0ce06072e27a588, 0x003aa6 ] } , - BigNum { limbs: [ 0xbc9e7d1f83ead2f498d6cba7e71967, 0x7ba713b76b71dceef4a2a7aecba80e, 0x003d50 ] } , - BigNum { limbs: [ 0x010585e07a712c0b6729335818e69a, 0x2bac15e611d6564ae36561f30c5d45, 0x00369d ] } , - BigNum { limbs: [ 0x187dab62963f68a56f00f6b6f40225, 0x9d592f067d015a66f6c67f6a57f8c9, 0x004c40 ] } , - BigNum { limbs: [ 0xa526579d681c965a90ff08490bfddc, 0x09f9fa970046d8d2e1418a37800c8a, 0x0027ad ] } , - BigNum { limbs: [ 0x9d647a3422178d6b7347fd24da80dd, 0x03b6b7bd0d68ebebb9a5e00c1c5325, 0x007365 ] } , - BigNum { limbs: [ 0x203f88cbdc4471948cb801db257f24, 0xa39c71e06fdf474e1e622995bbb22e, 0x000088 ] } , - BigNum { limbs: [ 0xe43ffe9845c09c44c99b42a258cf41, 0xb4f5f124689404a42f39cbf6436f5a, 0x006ce0 ] } , - BigNum { limbs: [ 0xd9640467b89b62bb3664bc5da730c0, 0xf25d387914b42e95a8ce3dab9495f8, 0x00070c ] } , - BigNum { limbs: [ 0xf287b6874e6d31bce75b32ad6219bb, 0x1ca1a8e76b30cc68dc1098dbbe0fc2, 0x000ccb ] } , - BigNum { limbs: [ 0xcb1c4c78afeecd4318a4cc529de646, 0x8ab180b6121766d0fbf770c619f590, 0x006722 ] } , - BigNum { limbs: [ 0xcb71cf8107705aab63cccb2a32517a, 0x8bd5c55fb197d2e741eae670a33295, 0x0062bc ] } , - BigNum { limbs: [ 0xf232337ef6eba4549c3333d5cdae87, 0x1b7d643dcbb06052961d233134d2bd, 0x001131 ] } , - BigNum { limbs: [ 0xeafdaec40db2db47455c390c6aee58, 0xaca36c4d48fb5a07ecb98c1fb03e79, 0x003ffb ] } , - BigNum { limbs: [ 0xd2a6543bf0a923b8baa3c5f39511a9, 0xfaafbd50344cd931eb4e7d8227c6d9, 0x0033f1 ] } , - BigNum { limbs: [ 0xa62c54921a1fc333c30ba9fc5d9408, 0x5e23254e166fcbe0d031bf45a819bc, 0x001de8 ] } , - BigNum { limbs: [ 0x1777ae6de43c3bcc3cf45503a26bf9, 0x4930044f66d8675907d64a5c2feb97, 0x005605 ] } , - BigNum { limbs: [ 0x473f185d274859384e4f2050b77241, 0xc886cf3718c89bb53756647b160952, 0x006fe1 ] } , - BigNum { limbs: [ 0x7664eaa2d713a5c7b1b0deaf488dc0, 0xdecc5a66647f9784a0b1a526c1fc01, 0x00040b ] } , - BigNum { limbs: [ 0x0fe7e8d3b75fd27289e93465edcd24, 0x65deb6aea5b7e996c18b09a54722d4, 0x001c17 ] } , - BigNum { limbs: [ 0xadbc1a2c46fc2c8d7616ca9a1232dd, 0x417472eed79049a3167cfffc90e27f, 0x0057d6 ] } , - BigNum { limbs: [ 0xc341474427a5cd5bd296e845dcbfb5, 0x6707fe5efd07cd1011849e902ff6bd, 0x0055d3 ] } , - BigNum { limbs: [ 0xfa62bbbbd6b631a42d6916ba23404c, 0x404b2b3e80406629c6836b11a80e95, 0x001e1a ] } , - BigNum { limbs: [ 0xe9223244954aaa734d619f973237e7, 0xfcaf5204ab299e5ef812ad351829d3, 0x0010de ] } , - BigNum { limbs: [ 0xd481d0bb6911548cb29e5f68cdc81a, 0xaaa3d798d21e94dadff55c6cbfdb7f, 0x00630e ] } , - BigNum { limbs: [ 0xba94880d17053f5ef86d28dc13f876, 0xf7ff81a4ec0c19ed2d449ee8246672, 0x0053fd ] } , - BigNum { limbs: [ 0x030f7af2e756bfa10792d623ec078b, 0xaf53a7f8913c194caac36ab9b39ee1, 0x001fef ] } , - BigNum { limbs: [ 0xf356ccaa4665a4858c20d032f1dfd1, 0x323a6fa047f372483da0a591748216, 0x0028d0 ] } , - BigNum { limbs: [ 0xca4d3655b7f65a7a73df2ecd0e2030, 0x7518b9fd3554c0f19a67641063833c, 0x004b1d ] } , - BigNum { limbs: [ 0xea9f6b8c112bc277e7985eccea0a2e, 0x7c085d210cfbe40133b24b6a04e398, 0x002b38 ] } , - BigNum { limbs: [ 0xd3049773ed303c881867a03315f5d3, 0x2b4acc7c704c4f38a455be37d321ba, 0x0048b5 ] } , - BigNum { limbs: [ 0xfacd9bdaeced92f1c63a3e21536c74, 0x2c49512b58044e2cb934051e4bcc10, 0x003768 ] } , - BigNum { limbs: [ 0xc2d66725116e6c0e39c5c0deac938d, 0x7b09d8722543e50d1ed404838c3942, 0x003c85 ] } , - BigNum { limbs: [ 0xf8afc0ab3e780e673fe1436f1188a3, 0x39b67add49c6894b9bffa0bac8addb, 0x003031 ] } , - BigNum { limbs: [ 0xc4f44254bfe3f098c01ebb90ee775e, 0x6d9caec03381a9ee3c0868e70f5777, 0x0043bc ] } , - BigNum { limbs: [ 0xbfc6dfa383c3529f74186ef551cf01, 0x050ea80c2905e5d8ec0e13f53e1413, 0x001736 ] } , - BigNum { limbs: [ 0xfddd235c7a98ac608be7900aae3100, 0xa244819154424d60ebf9f5ac99f13f, 0x005cb7 ] } , - BigNum { limbs: [ 0x73942e79cb0c8527f72a3e2c51e0ef, 0x09a87758062390936779b0cf57423e, 0x001924 ] } , - BigNum { limbs: [ 0x4a0fd486334f79d808d5c0d3ae1f12, 0x9daab2457724a2a6708e58d280c315, 0x005ac9 ] } , - BigNum { limbs: [ 0xd3177ffb8458b6f6d43ea8eba51c43, 0x42ba55ccf0777efa9276273f44b642, 0x006154 ] } , - BigNum { limbs: [ 0xea8c83047a0348092bc156145ae3be, 0x6498d3d08cd0b43f4591e262934f10, 0x001299 ] } , - BigNum { limbs: [ 0xf3bce46524da0b064118870afa5991, 0x00e63443e6f22ebb4b1bfd25f5d94b, 0x005e00 ] } , - BigNum { limbs: [ 0xc9e71e9ad981f3f9bee777f505a670, 0xa66cf5599656047e8cec0c7be22c07, 0x0015ed ] } , - BigNum { limbs: [ 0x130e41e9b742cb2dc5b5edb7ed29cb, 0x92313662237252147de2718db6063f, 0x00212d ] } , - BigNum { limbs: [ 0xaa95c116471933d23a4a114812d636, 0x1521f33b59d5e1255a25981421ff14, 0x0052c0 ] } , - BigNum { limbs: [ 0xe8597f0a34401b1da30162c605bbd6, 0xb3b34e0e308633c7af6db3c3b90ee3, 0x0043aa ] } , - BigNum { limbs: [ 0xd54a83f5ca1be3e25cfe9c39fa442b, 0xf39fdb8f4cc1ff72289a55de1ef66f, 0x003042 ] } , - BigNum { limbs: [ 0x4fb2cf08cc41d90df31729861ca313, 0x035bb4abde283b9127bae17944e80b, 0x005b27 ] } , - BigNum { limbs: [ 0x6df133f7321a25f20ce8d579e35cee, 0xa3f774f19f1ff7a8b04d2828931d48, 0x0018c6 ] } , - BigNum { limbs: [ 0xae06c77e2589c0212b5a0ca9563807, 0xbf06653c93d29d34ba2c335b34dd86, 0x0052cf ] } , - BigNum { limbs: [ 0x0f9d3b81d8d23eded4a5f256a9c7fa, 0xe84cc460e97596051ddbd646a327cd, 0x00211d ] } , - BigNum { limbs: [ 0x50713e4385fe1f707b23379bcba192, 0x634395da771c85f87b25332f515a54, 0x0016b0 ] } , - BigNum { limbs: [ 0x6d32c4bc785ddf8f84dcc764345e6f, 0x440f93c3062bad415ce2d67286aaff, 0x005d3d ] } , - BigNum { limbs: [ 0x57ac09af457179cbdfcf1745c64c5b, 0x56b7e031e508dcdbf68fb0adb51274, 0x0048ec ] } , - BigNum { limbs: [ 0x65f7f950b8ea85342030e7ba39b3a6, 0x509b496b983f565de17858f422f2df, 0x002b01 ] } , - BigNum { limbs: [ 0xb0b2cc3152108317ed7d2589d7b63c, 0x5ff559f439878728eeeca63fee7606, 0x0025e8 ] } , - BigNum { limbs: [ 0x0cf136ceac4b7be81282d9762849c5, 0x475dcfa943c0ac10e91b6361e98f4d, 0x004e05 ] } , - BigNum { limbs: [ 0xc80073fd2d821b091fc9ffdfd7d77f, 0x1467eaed726a422df44415007b2179, 0x0024a5 ] } , - BigNum { limbs: [ 0xf5a38f02d0d9e3f6e035ff20282882, 0x92eb3eb00addf10be3c3f4a15ce3d9, 0x004f48 ] } , - BigNum { limbs: [ 0xa7f81e23d36f6f25f9f9f54d4b827c, 0x93d1e4854df3e6af6f2ffdd6318a61, 0x000a0f ] } , - BigNum { limbs: [ 0x15abe4dc2aec8fda060609b2b47d85, 0x138145182f544c8a68d80bcba67af2, 0x0069de ] } , - BigNum { limbs: [ 0xa52d5408323ba0de51bd26d82135d1, 0x3829379642e4d0d36e40493b4633f2, 0x006326 ] } , - BigNum { limbs: [ 0x1876aef7cc205e21ae42d827deca30, 0x6f29f2073a63626669c7c06691d161, 0x0010c7 ] } , - BigNum { limbs: [ 0xe4ba764571d6dfac24331044e513b5, 0x29ae1feabce0702f2744e5c4fed20f, 0x001512 ] } , - BigNum { limbs: [ 0xd8e98cba8c851f53dbcceebb1aec4c, 0x7da509b2c067c30ab0c323dcd93343, 0x005edb ] } , - BigNum { limbs: [ 0x895d972c82f6b08a041d8b710913e0, 0xaf9532cb25e21fb2b962b42131ff6e, 0x00444e ] } , - BigNum { limbs: [ 0x34466bd37b654e75fbe2738ef6ec21, 0xf7bdf6d2576613871ea55580a605e5, 0x002f9e ] } , - BigNum { limbs: [ 0xd9ce39a69afbe2107836056af69cc9, 0x2ed220f013a27dfa3990a028e97425, 0x00512d ] } , - BigNum { limbs: [ 0xe3d5c95963601cef87c9f995096338, 0x788108ad69a5b53f9e776978ee912d, 0x0022c0 ] } , - BigNum { limbs: [ 0x187c9ee6adf533c974076c2dc30417, 0x5756db628954ec7daade0b32e44f53, 0x00734c ] } , - BigNum { limbs: [ 0xa52764195066cb368bf892d23cfbea, 0x4ffc4e3af3f346bc2d29fe6ef3b600, 0x0000a1 ] } , - BigNum { limbs: [ 0xd63fb9b7fafea8b3edd31ab94c4da5, 0xaf6eb9f0152e04a80c76d8935220ce, 0x0035a1 ] } , - BigNum { limbs: [ 0xe7644948035d564c122ce446b3b25c, 0xf7e46fad681a2e91cb91310e85e484, 0x003e4b ] } , - BigNum { limbs: [ 0xcaca432aea4e95633bd1bbc7d18f5d, 0x9f21e0d26ceffe9af70c7893f1db92, 0x005810 ] } , - BigNum { limbs: [ 0xf2d9bfd5140d699cc42e43382e70a4, 0x083148cb1058349ee0fb910de629c0, 0x001bdd ] } , - BigNum { limbs: [ 0xbe19e082013e12c70598422b07bb90, 0xe9d581aa4ab0a8c672a4f8f68b994a, 0x000d08 ] } , - BigNum { limbs: [ 0xff8a227dfd1dec38fa67bcd4f84471, 0xbd7da7f332978a73656310ab4c6c08, 0x0066e4 ] } , - BigNum { limbs: [ 0xe2deabb39325d6a0d9e8d24251896b, 0x60daa8d9f6384d473d87e5ceecf2f1, 0x005979 ] } , - BigNum { limbs: [ 0xdac5574c6b36285f26172cbdae7696, 0x467880c3870fe5f29a8023d2eb1261, 0x001a74 ] } , - BigNum { limbs: [ 0xb479c93959ccb963acc1ca749100a2, 0x899b596612cfe0aea93acaf92998fd, 0x006208 ] } , - BigNum { limbs: [ 0x092a39c6a48f459c533e348b6eff5f, 0x1db7d0376a78528b2ecd3ea8ae6c56, 0x0011e5 ] } , - BigNum { limbs: [ 0x9d079ac4df49870ec14b55e4495b09, 0xcc2ac820468dc1db121b7963b0541e, 0x002204 ] } , - BigNum { limbs: [ 0x209c683b1f1277f13eb4a91bb6a4f8, 0xdb28617d36ba715ec5ec903e27b135, 0x0051e8 ] } , - BigNum { limbs: [ 0x83ca443cb7cd40ee65fc7e14f4422d, 0xb15636eb2bb9e5fc39130c6530b939, 0x002aaf ] } , - BigNum { limbs: [ 0x39d9bec3468ebe119a0380eb0bbdd4, 0xf5fcf2b2518e4d3d9ef4fd3ca74c1a, 0x00493d ] } , - BigNum { limbs: [ 0xfd6d39831f8f23ecf617061b8850b6, 0x44133d6bd9d998e74601d1d2dc51b2, 0x002034 ] } , - BigNum { limbs: [ 0xc036c97cdeccdb1309e8f8e477af4b, 0x633fec31a36e9a52920637cefbb3a0, 0x0053b9 ] } , - BigNum { limbs: [ 0x056933371c5f5fed08d8ece11f69b7, 0x5a07024a754ebd820039fcef3cce97, 0x005bf3 ] } , - BigNum { limbs: [ 0xb83acfc8e1fc9f12f727121ee0964a, 0x4d4c275307f975b7d7ce0cb29b36bc, 0x0017fa ] } , - BigNum { limbs: [ 0x63e588093bc82f2d7c0c4bfb6be312, 0x865b29bbfa764ccf377245b9783c3a, 0x000137 ] } , - BigNum { limbs: [ 0x59be7af6c293cfd283f3b304941cef, 0x20f7ffe182d1e66aa095c3e85fc919, 0x0072b6 ] } , - BigNum { limbs: [ 0xba7f667bd4638097bbacda69feb898, 0xb712479f80a37f2a4e2a3316cf4575, 0x0072d6 ] } , - BigNum { limbs: [ 0x03249c8429f87e6844532496014769, 0xf040e1fdfca4b40f89ddd68b08bfde, 0x000116 ] } , - BigNum { limbs: [ 0x2a4d28be53ec6ffd187c934c549ff4, 0x428cb4ba35be18b7da0c0ea7f5cd3a, 0x000ade ] } , - BigNum { limbs: [ 0x9356da41aa6f8f02e7836bb3ab600d, 0x64c674e3478a1a81fdfbfaf9e23819, 0x00690f ] } , - BigNum { limbs: [ 0xee2004f51c7559cb15699d00d9ee84, 0xa9402312add15fb4822a16eb1965ec, 0x0015a5 ] } , - BigNum { limbs: [ 0xcf83fe0ae1e6a534ea9661ff26117d, 0xfe13068acf76d38555ddf2b6be9f66, 0x005e47 ] } , - BigNum { limbs: [ 0x108cc229f8d6c118bab557fd5c3da9, 0x308a9b762e456ef216be93050d2c03, 0x00734d ] } , - BigNum { limbs: [ 0xad1740d605853de7454aa702a3c258, 0x76c88e274f02c447c149769ccad950, 0x0000a0 ] } , - BigNum { limbs: [ 0x0ee0295a818ecc68b8d0deab01302c, 0xeded10438c3b18b7ed0ac50a32d509, 0x001f0f ] } , - BigNum { limbs: [ 0xaec3d9a57ccd3297472f2054fecfd5, 0xb9661959f10d1a81eafd4497a5304a, 0x0054dd ] } , - BigNum { limbs: [ 0xe63ed4ea14bfaf5ab63cd842a137c8, 0x28e5ee053064ff92383bdd9e9beab4, 0x004a0d ] } , - BigNum { limbs: [ 0xd7652e15e99c4fa549c326bd5ec839, 0x7e6d3b984ce333a79fcc2c033c1a9e, 0x0029e0 ] } , - BigNum { limbs: [ 0x711b036c0eb5b4d0f5bf82ad6a0469, 0xac9318bed9079bf9206768a4848d3a, 0x001b6a ] } , - BigNum { limbs: [ 0x4c88ff93efa64a2f0a407c5295fb98, 0xfac010dea4409740b7a0a0fd537819, 0x005882 ] } , - BigNum { limbs: [ 0x5f1f2d950d6234b08072ac0f23c66f, 0x7639706a1bdb575857f681ca6e986d, 0x005c7b ] } , - BigNum { limbs: [ 0x5e84d56af0f9ca4f7f8d52f0dc3992, 0x3119b933616cdbe1801187d7696ce6, 0x001772 ] } , - BigNum { limbs: [ 0x9e43326bdfc93195f3a9915d6294b3, 0x7065bfbb28beb08aab619910e4fb02, 0x006c23 ] } , - BigNum { limbs: [ 0x1f60d0941e92cd6a0c566da29d6b4e, 0x36ed69e2548982af2ca67090f30a51, 0x0007ca ] } , - BigNum { limbs: [ 0xd42052ca20e48a9e24c75ff38d109a, 0xfcacef081b66d6c7795cafe9525076, 0x0069c9 ] } , - BigNum { limbs: [ 0xe983b035dd777461db389f0c72ef67, 0xaaa63a9561e15c725eab59b885b4dc, 0x000a23 ] } , - BigNum { limbs: [ 0xad7d478339b2d24e5a6e8ff3fc3883, 0x54cbfcb378453798a21053866185c8, 0x000cb0 ] } , - BigNum { limbs: [ 0x1026bb7cc4a92cb1a5916f0c03c77e, 0x52872cea0502fba135f7b61b767f8b, 0x00673d ] } , - BigNum { limbs: [ 0xf10d38b070804c4bd4f9a657120496, 0x6374f94ac6e3a90254b47d85af5823, 0x001751 ] } , - BigNum { limbs: [ 0xcc96ca4f8ddbb2b42b0658a8edfb6b, 0x43de3052b6648a3783538c1c28ad2f, 0x005c9c ] } , - BigNum { limbs: [ 0xcc515f3f0c99cd00b68da4e78fc8a5, 0xaf7f64afb412337743f5b51e5dbe80, 0x00086a ] } , - BigNum { limbs: [ 0xf152a3c0f1c231ff49725a1870375c, 0xf7d3c4edc935ffc2941254837a46d2, 0x006b82 ] } , - BigNum { limbs: [ 0x1e12c653d194858811917c402c5e08, 0xfa3926888d559d1b2936451c8f7add, 0x00037e ] } , - BigNum { limbs: [ 0x9f913cac2cc77977ee6e82bfd3a1f9, 0xad1a0314eff2961eaed1c485488a76, 0x00706e ] } , - BigNum { limbs: [ 0x92ba88adc64481790af5ddb9c22acb, 0x1e099e5346fbdf496a976fef3b3a4f, 0x002cca ] } , - BigNum { limbs: [ 0x2ae97a5238177d86f50a21463dd536, 0x89498b4a364c53f06d7099b29ccb04, 0x004723 ] } , - BigNum { limbs: [ 0x09f1ed4d5c907482a1d5036a7dde43, 0x05e4e7546a4be8391505888956422e, 0x005204 ] } , - BigNum { limbs: [ 0xb3b215b2a1cb8a7d5e2afb958221be, 0xa16e424912fc4b00c302811881c325, 0x0021e9 ] } , - BigNum { limbs: [ 0x6f1e1629beffc7859d673e27dcf1b2, 0x33454c9c9c3b0833c643b07594d33a, 0x0010f3 ] } , - BigNum { limbs: [ 0x4e85ecd63f5c377a6298c0d8230e4f, 0x740ddd00e10d2b0611c4592c433219, 0x0062fa ] } , - BigNum { limbs: [ 0xd43c77fd9ffb0c74e9e52495016ac9, 0xafad8f93b1602de884f80e0737d375, 0x004c34 ] } , - BigNum { limbs: [ 0xe9678b025e60f28b161ada6afe9538, 0xf7a59a09cbe80551530ffb9aa031dd, 0x0027b8 ] } , - BigNum { limbs: [ 0x3db2a6bf5f6ca33c56d10c35c02735, 0xac06901cc1b3e8e451f06b9f0228cb, 0x002b83 ] } , - BigNum { limbs: [ 0x7ff15c409eef5bc3a92ef2ca3fd8cc, 0xfb4c9980bb944a5586179e02d5dc88, 0x004869 ] } , - BigNum { limbs: [ 0x383365ea4a31c0f3eb464aec60b835, 0xf3c0b970e4aa60221457cddd0c0487, 0x0012e8 ] } , - BigNum { limbs: [ 0x85709d15b42a3e0c14b9b4139f47cc, 0xb392702c989dd317c3b03bc4cc00cc, 0x006104 ] } , - BigNum { limbs: [ 0xeccfb97272ff11cf848e3e50cda39f, 0x09bddb51ba1b12c8c56f873f3bdd12, 0x004c5f ] } , - BigNum { limbs: [ 0xd0d4498d8b5ced307b71c0af325c62, 0x9d954e4bc32d2071129882629c2840, 0x00278e ] } , - BigNum { limbs: [ 0x6b4884745ca9b167279585d68a7334, 0x9178ac407b980f436697ede4973b18, 0x00088f ] } , - BigNum { limbs: [ 0x525b7e8ba1b24d98d86a7929758ccd, 0x15da7d5d01b023f671701bbd40ca3b, 0x006b5e ] } , - BigNum { limbs: [ 0x2d15aea2c97985c3f79855b4db7495, 0x2a31eeafe44ae800d2e1bf6394ed6e, 0x000821 ] } , - BigNum { limbs: [ 0x908e545d34e2793c0867a94b248b6c, 0x7d213aed98fd4b3905264a3e4317e5, 0x006bcc ] } , - BigNum { limbs: [ 0xf45703f48ab34541d52f5909c78b47, 0xba1a4868699dbdd6e8e04610d3ec59, 0x001cf3 ] } , - BigNum { limbs: [ 0xc94cff0b73a8b9be2ad0a5f63874ba, 0xed38e13513aa7562ef27c3910418f9, 0x0056f9 ] } , - BigNum { limbs: [ 0x86a5e162cf3f5bdaae2dad9c5a827b, 0x01c060b5dfcf47eafe8ddaffd64e42, 0x0044d5 ] } , - BigNum { limbs: [ 0x36fe219d2f1ca32551d25163a57d86, 0xa592c8e79d78eb4ed97a2ea201b711, 0x002f18 ] } , - BigNum { limbs: [ 0x192bb4a30e9240d1e467f0b3501bce, 0x4fdbb8d9fb62675835dec0468c6b8c, 0x003112 ] } , - BigNum { limbs: [ 0xa4784e5cefc9be2e1b980e4cafe433, 0x577770c381e5cbe1a229495b4b99c7, 0x0042db ] } , - BigNum { limbs: [ 0x09e139d6bbd9b69af7b5cd1346db07, 0x7d345a381015903274a58f39519525, 0x00578b ] } , - BigNum { limbs: [ 0xb3c2c92942824865084a31ecb924fa, 0x2a1ecf656d32a30763627a6886702e, 0x001c62 ] } , - BigNum { limbs: [ 0x8013d3fca94bb50ed8283b6c1dfd41, 0xad8356666fdb9ef5c05e0d824b069e, 0x006e81 ] } , - BigNum { limbs: [ 0x3d902f03551049f127d7c393e202c0, 0xf9cfd3370d6c944417a9fc1f8cfeb5, 0x00056b ] } , - BigNum { limbs: [ 0x71fe306af8cf5bf85d4bf58c8c10a7, 0x219dceeb0fbd6fa994d8e06c822299, 0x0056cd ] } , - BigNum { limbs: [ 0x4ba5d295058ca307a2b4097373ef5a, 0x85b55ab26d8ac390432f293555e2ba, 0x001d20 ] } , - BigNum { limbs: [ 0xfadfcde9b8919e2ff271d61a681448, 0x13d3a81036ea07afb63c2b91533d80, 0x005a35 ] } , - BigNum { limbs: [ 0xc2c4351645ca60d00d8e28e597ebb9, 0x937f818d465e2b8a21cbde1084c7d2, 0x0019b8 ] } , - BigNum { limbs: [ 0x7906dca3ece0ce3db5369706c27500, 0xf09385afcbdc2fd9c2783331adcd6a, 0x005fcd ] } , - BigNum { limbs: [ 0x449d265c117b30c24ac967f93d8b01, 0xb6bfa3edb16c0360158fd6702a37e9, 0x00141f ] } , - BigNum { limbs: [ 0x87528d64ba56c8884660f035c6c17d, 0x0738118ffd848e761e10bf4b0e0010, 0x006c72 ] } , - BigNum { limbs: [ 0x3651759b44053677b99f0eca393e84, 0xa01b180d7fc3a4c3b9f74a56ca0543, 0x00077b ] } , - BigNum { limbs: [ 0x6171b5078cc40ef8bfe32b7c159bce, 0x8d75706fe3cd1f88f7086a8c38c2c5, 0x0008ca ] } , - BigNum { limbs: [ 0x5c324df87197f007401cd383ea6433, 0x19ddb92d997b13b0e0ff9f159f428e, 0x006b23 ] } , - BigNum { limbs: [ 0x19b67682a91fc89d6bc983c110f9ba, 0x3c414dc54a4913850eafd58a85f62e, 0x006b3b ] } , - BigNum { limbs: [ 0xa3ed8c7d553c366294367b3eef0647, 0x6b11dbd832ff1fb4c9583417520f25, 0x0008b2 ] } , - BigNum { limbs: [ 0x1e2c66de9929159ab20064303d8cae, 0xec32f58f347d1f901fa0e5adbaa196, 0x005087 ] } , - BigNum { limbs: [ 0x9f779c216532e9654dff9acfc27353, 0xbb20340e48cb13a9b86723f41d63bd, 0x002365 ] } , - BigNum { limbs: [ 0x71f6451a4b122baed0f2a3a2e645dd, 0x43edd4494970b2ffbd723442149001, 0x002597 ] } , - BigNum { limbs: [ 0x4badbde5b349d3512f0d5b5d19ba24, 0x6365555433d7803a1a95d55fc37552, 0x004e56 ] } , - BigNum { limbs: [ 0xb2d4b877e5d93a626a47b687c4500b, 0x385e4ef9e3149a4d054ba99e2c10b5, 0x0028df ] } , - BigNum { limbs: [ 0x0acf4a881882c49d95b848783baff6, 0x6ef4daa39a3398ecd2bc6003abf49e, 0x004b0e ] } , - BigNum { limbs: [ 0xbe26511df591a79d2c82cfafebd3e4, 0x8fba5cd40537bd55568168a8a11259, 0x000e92 ] } , - BigNum { limbs: [ 0xff7db1e208ca5762d37d2f50142c1d, 0x1798ccc9781075e48186a0f936f2f9, 0x00655b ] } , - BigNum { limbs: [ 0xd96ba85a6ae2ceb14780f80cfadf8d, 0xeeab26fc085dfb9e36c28aa5a9dcd1, 0x0061f3 ] } , - BigNum { limbs: [ 0xe4385aa59379304eb87f06f3052074, 0xb8a802a174ea379ba1457efc2e2881, 0x0011f9 ] } , - BigNum { limbs: [ 0xd15302d7104b78cc10425e8e6a87e9, 0x186a0c11ddf42522b8f2050df6b564, 0x00704c ] } , - BigNum { limbs: [ 0xec510028ee108633efbda071957818, 0x8ee91d8b9f540e171f160493e14fee, 0x0003a1 ] } , - BigNum { limbs: [ 0x15e84d13abe6a745b05eb0ab44120b, 0x65d678b551a83620b9115cddf265b6, 0x00678f ] } , - BigNum { limbs: [ 0xa7bbb5ec527557ba4fa14e54bbedf6, 0x417cb0e82b9ffd191ef6acc3e59f9d, 0x000c5e ] } , - BigNum { limbs: [ 0xfd7fedc0683984e97c364ca861398e, 0x1dc59ac33c4fd50a587da736b8e541, 0x003df1 ] } , - BigNum { limbs: [ 0xc024153f96227a1683c9b2579ec673, 0x898d8eda40f85e2f7f8a626b1f2011, 0x0035fc ] } , - BigNum { limbs: [ 0xd45160abcd98453ea16d486047890f, 0x59fa83e4013b133fc818223cb8913a, 0x002996 ] } , - BigNum { limbs: [ 0xe952a25430c3b9c15e92b69fb876f2, 0x4d58a5b97c0d1ffa0fefe7651f7418, 0x004a57 ] } , - BigNum { limbs: [ 0xfc35bb116b1718dc5a5fd408cad7bb, 0x91e27a7ece6f9e05c56bc5763cb4a2, 0x003a3b ] } , - BigNum { limbs: [ 0xc16e47ee9344e623a5a02af7352846, 0x1570af1eaed89534129c442b9b50b0, 0x0039b2 ] } , - BigNum { limbs: [ 0xf3a4973e7f7b3ecff232b6e9ecc897, 0xb2dabc6d4c222ec34fa2ef898b83c2, 0x003c9c ] } , - BigNum { limbs: [ 0xc9ff6bc17ee0c0300dcd481613376a, 0xf4786d303126047688651a184c8190, 0x003750 ] } , - BigNum { limbs: [ 0xd92aca9fd6c310d0154353e14a3a81, 0x1b7c2f7f55ab633892aeaf7c08e258, 0x0068f9 ] } , - BigNum { limbs: [ 0xe47938602798ee2feabcab1eb5c580, 0x8bd6fa1e279cd00145595a25cf22fa, 0x000af4 ] } , - BigNum { limbs: [ 0x3b5ef541f72016e9d101990e3d4671, 0xc24c3c695c8adeaeb1bebd4775e6db, 0x0050b7 ] } , - BigNum { limbs: [ 0x82450dbe073be8162efe65f1c2b990, 0xe506ed3420bd548b26494c5a621e78, 0x002335 ] } , - BigNum { limbs: [ 0xa313c570ab8955f200997b72638044, 0x1d4a924ff12c414d5089f0005021b8, 0x002766 ] } , - BigNum { limbs: [ 0x1a903d8f52d2a90dff66838d9c7fbd, 0x8a08974d8c1bf1ec877e19a187e39b, 0x004c87 ] } , - BigNum { limbs: [ 0x26e08e98f535f7d926780461c4412e, 0x04d7414d275f813645eb330abba16f, 0x0025c8 ] } , - BigNum { limbs: [ 0x96c3746709260726d987fa9e3bbed3, 0xa27be85055e8b203921cd6971c63e4, 0x004e25 ] } , - BigNum { limbs: [ 0xffb58180dbddb697e6464586a3c1f2, 0xa73ddf3c08fb77c24e3f7bf07ef1a5, 0x0066ea ] } , - BigNum { limbs: [ 0xbdee817f227e486819b9b9795c3e0f, 0x00154a61744cbb7789c88db15913ad, 0x000d03 ] } , - BigNum { limbs: [ 0xb5fd1b6520b64f5cef645780dae73a, 0x20d7559308f9f5d546e12b96e676d1, 0x001003 ] } , - BigNum { limbs: [ 0x07a6e79adda5afa3109ba77f2518c7, 0x867bd40a744e3d649126de0af18e82, 0x0063ea ] } , - BigNum { limbs: [ 0x622b2b52a6ab0b7ab8ee9ac98a8d7e, 0xa97cc93ad09290d0a58bfaa779a8c7, 0x002ed8 ] } , - BigNum { limbs: [ 0x5b78d7ad57b0f38547116436757283, 0xfdd66062acb5a269327c0efa5e5c8c, 0x004514 ] } , - BigNum { limbs: [ 0x1834a15ff80aa4e841ea9826658b7e, 0x58030ec6229b305f1185818dcbc279, 0x003028 ] } , - BigNum { limbs: [ 0xa56f61a006515a17be1566d99a7483, 0x4f501ad75aad02dac68288140c42da, 0x0043c5 ] } , - BigNum { limbs: [ 0xb74e7e1fdce2dfec6ebe6bc75f4525, 0xbf28f8d74d24bce4247004ed136470, 0x003a9b ] } , - BigNum { limbs: [ 0x065584e021791f1391419338a0badc, 0xe82a30c630237655b39804b4c4a0e3, 0x003951 ] } , - BigNum { limbs: [ 0xc4791e8b2f6ad1aeba5359ffa6d38a, 0x0a347a817232d7a9657681f941e95b, 0x006771 ] } , - BigNum { limbs: [ 0xf92ae474cef12d5145aca500592c77, 0x9d1eaf1c0b155b90729187a8961bf7, 0x000c7c ] } , - BigNum { limbs: [ 0x25b8b09f6d68bc07f823c58292eb13, 0x93642325a070e27236b5fb2b67dff3, 0x001171 ] } , - BigNum { limbs: [ 0x97eb526090f342f807dc397d6d14ee, 0x13ef0677dcd750c7a1520e76702560, 0x00627c ] } , - BigNum { limbs: [ 0x28b98366702bc829412db575a279c9, 0x62c80c40bea15372b6a1865386e2db, 0x003acb ] } , - BigNum { limbs: [ 0x94ea7f998e3036d6bed2498a5d8638, 0x448b1d5cbea6dfc72166834e512278, 0x003922 ] } , - BigNum { limbs: [ 0xbe42bfce5c9610be93f312c8292e1e, 0x71cc91fbe8bc55509e3b4f24bdf9fc, 0x000adb ] } , - BigNum { limbs: [ 0xff614331a1c5ee416c0cec37d6d1e3, 0x358697a1948bdde939ccba7d1a0b56, 0x006912 ] } , - BigNum { limbs: [ 0xc950bec8ad26d22a13d83cf7fe22f5, 0xc3b812a28583c6722be5eb5afcebf6, 0x001fc4 ] } , - BigNum { limbs: [ 0xf453443751352cd5ec27c20801dd0c, 0xe39b16faf7c46cc7ac221e46db195c, 0x005428 ] } , - BigNum { limbs: [ 0x67c8dc89f09e243ff24af474baab89, 0xce0753afea368a5fd8a9bc16edad3c, 0x0058e9 ] } , - BigNum { limbs: [ 0x55db26760dbddac00db50a8b455478, 0xd94bd5ed9311a8d9ff5e4d8aea5817, 0x001b03 ] } , - BigNum { limbs: [ 0x73eda682de6efb0a4c7b59c7d6a001, 0x2b19e6a3004a984c6f376fdbecb6f1, 0x001165 ] } , - BigNum { limbs: [ 0x49b65c7d1fed03f5b384a538296000, 0x7c3942fa7cfd9aed68d099c5eb4e62, 0x006288 ] } , - BigNum { limbs: [ 0x8348c02148773d4992bd10577109a9, 0xcffdb77a352e52a72bbf71903cdef4, 0x00533a ] } , - BigNum { limbs: [ 0x3a5b42deb5e4c1b66d42eea88ef658, 0xd75572234819e092ac4898119b265f, 0x0020b2 ] } , - BigNum { limbs: [ 0x261a04909fee7713defee0e6ef1c0b, 0xc9550322543e26ce6a4863fe9f1cdc, 0x001149 ] } , - BigNum { limbs: [ 0x9789fe6f5e6d87ec21011e1910e3f6, 0xddfe267b290a0c6b6dbfa5a338e877, 0x0062a3 ] } , - BigNum { limbs: [ 0x764a23f8363f09771ecf1f6fa8792a, 0xc56474a0f17aa463d85b83fa4718d9, 0x0068fa ] } , - BigNum { limbs: [ 0x4759df07c81cf588e130df905786d7, 0xe1eeb4fc8bcd8ed5ffac85a790ec7a, 0x000af2 ] } , - BigNum { limbs: [ 0x6c1d7063470830757bd66f2c220cb5, 0xed2db84f3edf32aa2c85ef62f777ef, 0x001366 ] } , - BigNum { limbs: [ 0x5186929cb753ce8a84298fd3ddf34c, 0xba25714e3e69008fab821a3ee08d64, 0x006086 ] } , - BigNum { limbs: [ 0xd603ce746ead3cab0f50466269c017, 0x42a7ef7453c90311dc3948a8a406e7, 0x0034ff ] } , - BigNum { limbs: [ 0xe7a0348b8faec254f0afb89d963fea, 0x64ab3a29297f3027fbcec0f933fe6b, 0x003eee ] } , - BigNum { limbs: [ 0x821fa799ff4830fb47e38af27634ad, 0xd2847f687ad2ad383e88c3a78dba53, 0x002a34 ] } , - BigNum { limbs: [ 0x3b845b65ff13ce04b81c740d89cb54, 0xd4ceaa3502758601997f45fa4a4b00, 0x0049b8 ] } , - BigNum { limbs: [ 0xda3e276fa1003fd0ee13c9ad8f4e2a, 0x3aeaba501cdc2b763df246a12c816d, 0x00288e ] } , - BigNum { limbs: [ 0xe365db905d5bbf2f11ec355270b1d7, 0x6c686f4d606c07c39a15c300ab83e5, 0x004b5f ] } , - BigNum { limbs: [ 0xdacec25d6009316354a7f9039f6bd0, 0xed21ad0a48522a8233d495ca0acbf0, 0x000f9c ] } , - BigNum { limbs: [ 0xe2d540a29e52cd9cab5805fc609431, 0xba317c9334f608b7a43373d7cd3962, 0x006450 ] } , - BigNum { limbs: [ 0x925ac87b1ea89669495a35b9b32bee, 0x827813b10130fbda6e7f6370fde30e, 0x000537 ] } , - BigNum { limbs: [ 0x2b493a84dfb36896b6a5c9464cd413, 0x24db15ec7c17375f6988a630da2245, 0x006eb6 ] } , - BigNum { limbs: [ 0x2256e0b4f93336c2fb95f6d8e94354, 0x2101c9e0a907b81fe8d1ce7384f2fc, 0x005389 ] } , - BigNum { limbs: [ 0x9b4d224b0528c83d046a082716bcad, 0x86515fbcd4407b19ef363b2e531257, 0x002064 ] } , - BigNum { limbs: [ 0xd29117d89c89f2887be86b0d1e0c44, 0xb031bcc3d43362dd843f9a791b1361, 0x000baf ] } , - BigNum { limbs: [ 0xeb12eb2761d20c77841793f2e1f3bd, 0xf7216cd9a914d05c53c86f28bcf1f1, 0x00683d ] } , - BigNum { limbs: [ 0x31b895251749649a40cec3efed2c3e, 0x420f5edb247c94c48f770ce0a1ccc0, 0x0035c0 ] } , - BigNum { limbs: [ 0x8beb6ddae7129a65bf313b1012d3c3, 0x6543cac258cb9e754890fcc1363893, 0x003e2d ] } , - BigNum { limbs: [ 0xcfd0128fae8e6fd88afa448df10020, 0xfeaa3bb550388157cf773ac768ee2f, 0x003049 ] } , - BigNum { limbs: [ 0xedd3f0704fcd8f277505ba720effe1, 0xa8a8ede82d0fb1e20890ceda6f1723, 0x0043a3 ] } , - BigNum { limbs: [ 0xebd5683b5107351786986f25b8c4eb, 0xf9071049a3423066636befa7cbb4bf, 0x001d21 ] } , - BigNum { limbs: [ 0xd1ce9ac4ad54c9e879678fda473b16, 0xae4c1953da0602d3749c19fa0c5093, 0x0056cb ] } , - BigNum { limbs: [ 0x181a5532aa4292094e5a3c1c23592f, 0xaa4a68971dac44f6a415a105636a2c, 0x006632 ] } , - BigNum { limbs: [ 0xa589adcd54196cf6b1a5c2e3dca6d2, 0xfd08c1065f9bee4333f2689c749b27, 0x000dba ] } , - BigNum { limbs: [ 0x8e1608aed6392964c09997f7309548, 0xd74bfed628785090e796f4b22649a5, 0x004799 ] } , - BigNum { limbs: [ 0x2f8dfa512822d59b3f666708cf6ab9, 0xd0072ac754cfe2a8f07114efb1bbae, 0x002c53 ] } , - BigNum { limbs: [ 0xfa89ec51ae21e144b2c50f69db0fe9, 0xc071fe99d99bf32a65c1fc98d27474, 0x0027b5 ] } , - BigNum { limbs: [ 0xc31a16ae503a1dbb4d3aef9624f018, 0xe6e12b03a3ac400f72460d090590de, 0x004c37 ] } , - BigNum { limbs: [ 0x30cd0539d2e3cc474383fc894b14a5, 0x9afbf01afa63607f5ced1ef06cd3cc, 0x002fa8 ] } , - BigNum { limbs: [ 0x8cd6fdc62b7832b8bc7c0276b4eb5c, 0x0c57398282e4d2ba7b1aeab16b3187, 0x004445 ] } , - BigNum { limbs: [ 0x66aa267ff0c40dce36e2bba383cde2, 0xc10478f686c30ad95b286b5e390d81, 0x002d4f ] } , - BigNum { limbs: [ 0x56f9dc800d97f131c91d435c7c321f, 0xe64eb0a6f68528607cdf9e439ef7d2, 0x00469d ] } , - BigNum { limbs: [ 0x729323e6a43d9c3a0c5e0027bcb06b, 0x2bcbbf4106de149a775096aade316d, 0x0068f0 ] } , - BigNum { limbs: [ 0x4b10df195a1e62c5f3a1fed8434f96, 0x7b876a5c766a1e9f60b772f6f9d3e6, 0x000afd ] } , - BigNum { limbs: [ 0xc1d2d20d7a9648616dd104dfe7af57, 0x3a83f4de55e827ccf4829061077400, 0x005461 ] } , - BigNum { limbs: [ 0xfbd130f283c5b69e922efa201850aa, 0x6ccf34bf27600b6ce3857940d09152, 0x001f8c ] } , - BigNum { limbs: [ 0x16fcab115bdccf5650dc547f83d420, 0xa1b445fbc70549cf76cd4ebc162b97, 0x0020e7 ] } , - BigNum { limbs: [ 0xa6a757eea27f2fa9af23aa807c2be1, 0x059ee3a1b642e96a613abae5c1d9bc, 0x005306 ] } , - BigNum { limbs: [ 0xd13c4436bf8446033d7714239677a3, 0xf550da968bdde1bb8f3f820cb9c88a, 0x002ea5 ] } , - BigNum { limbs: [ 0xec67bec93ed7b8fcc288eadc69885e, 0xb2024f06f16a517e48c887951e3cc8, 0x004547 ] } , - BigNum { limbs: [ 0x9b4cf1f2482fe576d7a99b526711e2, 0x560163280fb149acc815cf032264a5, 0x005319 ] } , - BigNum { limbs: [ 0x2257110db62c1989285663ad98ee1f, 0x5151c6756d96e98d0ff23a9eb5a0ae, 0x0020d4 ] } , - BigNum { limbs: [ 0xaec88ee881235a52b32a60b8e455b4, 0x092de46650cd0a4168c082b342d2bd, 0x0006ef ] } , - BigNum { limbs: [ 0x0edb74177d38a4ad4cd59e471baa4d, 0x9e2545372c7b28f86f4786ee953296, 0x006cfe ] } , - BigNum { limbs: [ 0x7c7657a8c39c6ae7e70b8702985801, 0x11ce67638bb48bb0d072e80f7dbcd6, 0x003052 ] } , - BigNum { limbs: [ 0x412dab573abf941818f477fd67a800, 0x9584c239f193a789079521925a487d, 0x00439b ] } , - BigNum { limbs: [ 0x3e81d1369fa1548f60145b42872396, 0xdd44261bb43655881ecf77aed1d51a, 0x001c1e ] } , - BigNum { limbs: [ 0x7f2231c95ebaaa709feba3bd78dc6b, 0xca0f0381c911ddb1b93891f3063039, 0x0057ce ] } , - BigNum { limbs: [ 0xdf9313ca3ceb5bd7da4dfded322a18, 0xda37eff9531314ebea19ff20f2882c, 0x004817 ] } , - BigNum { limbs: [ 0xde10ef35c170a32825b20112cdd5e9, 0xcd1b39a42a351e4dedee0a80e57d26, 0x002bd5 ] } , - BigNum { limbs: [ 0xe08d7e57dce7cb8e7f2b66b0e143c1, 0x75dc018fdac1261437ec1d7ff86534, 0x00492f ] } , - BigNum { limbs: [ 0xdd1684a82174337180d4984f1ebc40, 0x3177280da2870d25a01bec21dfa01e, 0x002abe ] } , - BigNum { limbs: [ 0x8024d8a958b35f3758bb58975ab90a, 0x7728642ed36848283f2acbea394743, 0x00697c ] } , - BigNum { limbs: [ 0x3d7f2a56a5a89fc8a744a668a546f7, 0x302ac56ea9dfeb1198dd3db79ebe10, 0x000a71 ] } , - BigNum { limbs: [ 0xb874bf6cb7b34ea4edd77166b4b890, 0xed98566aef05c3d07bc26629fa07d5, 0x000bbe ] } , - BigNum { limbs: [ 0x052f439346a8b05b12288d994b4771, 0xb9bad3328e426f695c45a377ddfd7e, 0x00682e ] } , - BigNum { limbs: [ 0x0341523b1e2b0fe0a7c47729521908, 0xa605bd0ee4ef607e046f5c3b891fc1, 0x005196 ] } , - BigNum { limbs: [ 0xba62b0c4e030ef1f583b87d6ade6f9, 0x014d6c8e9858d2bbd398ad664ee592, 0x002257 ] } , - BigNum { limbs: [ 0x9bbdace5e53b4df38dc6e275e33ea8, 0x90587e54f7412291c3c77522e38952, 0x007007 ] } , - BigNum { limbs: [ 0x21e6561a1920b10c72391c8a1cc159, 0x16faab48860710a81440947ef47c01, 0x0003e6 ] } , - BigNum { limbs: [ 0x32fabbeba001df136f22d12184a412, 0x91f315218990b06ca75e06153bf7e9, 0x0021df ] } , - BigNum { limbs: [ 0x8aa947145e5a1fec90dd2dde7b5bef, 0x1560147bf3b782cd30aa038c9c0d6a, 0x00520e ] } , - BigNum { limbs: [ 0x93ad8b63401f10af2066d9230d5cd5, 0x4b10febd33b59aa62fc828bd43ad4f, 0x00060c ] } , - BigNum { limbs: [ 0x29f6779cbe3cee50df9925dcf2a32c, 0x5c422ae049929893a83fe0e4945804, 0x006de1 ] } , - BigNum { limbs: [ 0xa17a38edf3fd86725b9b9768dc6c42, 0x6fad8fe1409d5946033c46cd4570f9, 0x0006c4 ] } , - BigNum { limbs: [ 0x1c29ca120a5e788da46467972393bf, 0x37a599bc3caad9f3d4cbc2d492945a, 0x006d29 ] } , - BigNum { limbs: [ 0x31c76f5cf068468d458327b73ddc7c, 0x99e7cf9a16e8c07575d1ac569a2e9e, 0x005e45 ] } , - BigNum { limbs: [ 0x8bdc93a30df3b872ba7cd748c22385, 0x0d6b5a03665f72c462365d4b3dd6b5, 0x0015a8 ] } , - BigNum { limbs: [ 0x6456f1dcb438470271551075bccd1c, 0x3b981d99b43c13781ac98060c1eb67, 0x00204e ] } , - BigNum { limbs: [ 0x594d11234a23b7fd8eaaee8a4332e5, 0x6bbb0c03c90c1fc1bd3e89411619ec, 0x00539f ] } , - BigNum { limbs: [ 0xff6d0f9930affa01cc0dd7e85165c9, 0x8b60b927f0cb455f4edbe4e9d60558, 0x00541e ] } , - BigNum { limbs: [ 0xbe36f366cdac04fe33f22717ae9a38, 0x1bf270758c7cedda892c24b801fffa, 0x001fcf ] } , - BigNum { limbs: [ 0x1ae7ec2e0a1721c279ce0685994266, 0xeee6d9bb26c1b31edccc596a1562b0, 0x00066b ] } , - BigNum { limbs: [ 0xa2bc16d1f444dd3d8631f87a66bd9b, 0xb86c4fe25686801afb3bb037c2a2a3, 0x006d81 ] } , - BigNum { limbs: [ 0x7b043e49e87f7604514c414efd30e9, 0x4489831b6ef6706407321a7a10207e, 0x003862 ] } , - BigNum { limbs: [ 0x429fc4b615dc88fbaeb3bdb102cf18, 0x62c9a6820e51c2d5d0d5ef27c7e4d5, 0x003b8b ] } , - BigNum { limbs: [ 0xc6323b77e26860686d36176ddfe315, 0xb2be18ac0f4ffe7781bcf9fc62302a, 0x006ce4 ] } , - BigNum { limbs: [ 0xf771c7881bf39e9792c9e792201cec, 0xf49510f16df834c2564b0fa575d528, 0x000708 ] } , - BigNum { limbs: [ 0xba818950e3ad44cfce9094a3418d85, 0xc0355241ba5b5ced48fbd3227676bc, 0x006786 ] } , - BigNum { limbs: [ 0x032279af1aaeba30316f6a5cbe727c, 0xe71dd75bc2ecd64c8f0c367f618e97, 0x000c66 ] } , - BigNum { limbs: [ 0x287ba3ce0ab1253d479d495d655bfd, 0x5c6751cc1fb679433492a76830cc04, 0x001791 ] } , - BigNum { limbs: [ 0x95285f31f3aad9c2b862b5a29aa404, 0x4aebd7d15d91b9f6a3756239a7394f, 0x005c5c ] } , - BigNum { limbs: [ 0x5f7e97974a735a32c5d56bd1ffcdc4, 0x90c4d7ad1cd6cbcd66b46cc97a21c7, 0x005556 ] } , - BigNum { limbs: [ 0x5e256b68b3e8a4cd3a2a932e00323d, 0x168e51f06071676c71539cd85de38c, 0x001e97 ] } , - BigNum { limbs: [ 0x35bfcb67912b816dac73fc55d091eb, 0xf0e031a2782306dbca9dae7b5d14e2, 0x00136c ] } , - BigNum { limbs: [ 0x87e437986d307d92538c02aa2f6e16, 0xb672f7fb05252c5e0d6a5b267af071, 0x006080 ] } , - BigNum { limbs: [ 0xb17f8097e31d12382dcf2d892dafd6, 0xd5ecb54ee9145778eb237dd16e40c3, 0x0019bb ] } , - BigNum { limbs: [ 0x0c2482681b3eecc7d230d176d2502b, 0xd166744e9433dbc0ece48bd069c490, 0x005a31 ] } , - BigNum { limbs: [ 0x36eb496169c1fc5f729abc6eb11977, 0x7d17a51de7d1e0bd881d012a6c7be2, 0x0062c4 ] } , - BigNum { limbs: [ 0x86b8b99e949a02a08d6542914ee68a, 0x2a3b847f9576527c4feb08776b8971, 0x001129 ] } , - BigNum { limbs: [ 0x6fd885fe5230545957f71245653af6, 0x4de4ef29d6cf7d8757bee5707cb352, 0x004ea8 ] } , - BigNum { limbs: [ 0x4dcb7d01ac2baaa6a808ecba9ac50b, 0x596e3a73a678b5b2804924315b5201, 0x002545 ] } , - BigNum { limbs: [ 0x112d36bfb47e859afdab17da13db8e, 0x9920289a696c6a617e128cdffa0355, 0x0023bd ] } , - BigNum { limbs: [ 0xac76cc4049dd79650254e725ec2473, 0x0e33010313dbc8d859f57cc1de01fe, 0x005030 ] } , - BigNum { limbs: [ 0x241aa91192721cbefec621a2f60004, 0xb5d66d51e4f10991cd3d2baef8de85, 0x005ee9 ] } , - BigNum { limbs: [ 0x998959ee6be9e2410139dd5d09fffd, 0xf17cbc4b985729a80acaddf2df26ce, 0x001503 ] } , - BigNum { limbs: [ 0x4c90665827e4d53a421b9e5d4221ba, 0x9708c2cdf26eea1254d370dc314cfd, 0x0047f6 ] } , - BigNum { limbs: [ 0x71139ca7d67729c5bde460a2bdde47, 0x104a66cf8ad94927833498c5a6b856, 0x002bf7 ] } , - BigNum { limbs: [ 0x321401e2c769844e074f0425cb136a, 0xff0986f64e4112350962aa0adf28fe, 0x003d48 ] } , - BigNum { limbs: [ 0x8b90011d36f27ab1f8b0fada34ec97, 0xa849a2a72f072104cea55f96f8dc55, 0x0036a4 ] } , - BigNum { limbs: [ 0xcdba97c146f639f479a99e1ab97a9c, 0xcb4ac95cf3a7b4f9604884d16bc683, 0x00005c ] } , - BigNum { limbs: [ 0xefe96b3eb765c50b865660e5468565, 0xdc08604089a07e4077bf84d06c3ecf, 0x007390 ] } , - BigNum { limbs: [ 0xdea74b06b8b9a9e1995f98f6b289cb, 0xa45fa2977566e3961c2ae88454cd7e, 0x002fcc ] } , - BigNum { limbs: [ 0xdefcb7f945a2551e66a066094d7636, 0x02f3870607e14fa3bbdd211d8337d4, 0x004421 ] } , - BigNum { limbs: [ 0x65814cb1f2c0d8c8c597d89f89e6bd, 0xff64346aeec01a3bb18fecadd8741c, 0x0057b6 ] } , - BigNum { limbs: [ 0x5822b64e0b9b26373a682660761944, 0xa7eef5328e8818fe26781cf3ff9137, 0x001c36 ] } , - BigNum { limbs: [ 0xc270a8f22ec94c03a385716bcf1636, 0xfff1a6485ebf5b305a3cb85581b075, 0x0014c7 ] } , - BigNum { limbs: [ 0xfb335a0dcf92b2fc5c7a8d9430e9cb, 0xa76183551e88d8097dcb514c5654dd, 0x005f25 ] } , - BigNum { limbs: [ 0x8c6dd18d29c73c9047c6550507e773, 0x7ab3c60342ed7dd32ed780d459538f, 0x0007d3 ] } , - BigNum { limbs: [ 0x31363172d494c26fb839a9faf8188e, 0x2c9f639a3a5ab566a93088cd7eb1c4, 0x006c1a ] } , - BigNum { limbs: [ 0x13877ba98302fb17c6ea4cfca0515a, 0x4fa1ced6752b8983c878dd0222bcf0, 0x002b3d ] } , - BigNum { limbs: [ 0xaa1c87567b5903e83915b2035faea7, 0x57b15ac7081ca9b60f8f2c9fb54863, 0x0048b0 ] } , - BigNum { limbs: [ 0x0de8919442238235ecefabf33fbb07, 0x5151c56254c55a99d0ba0e80f533ef, 0x0052ce ] } , - BigNum { limbs: [ 0xafbb716bbc387cca1310530cc044fa, 0x5601643b2882d8a0074dfb20e2d164, 0x00211f ] } , - BigNum { limbs: [ 0xacc25a0d08100ae5d108c29934483b, 0x18503620f023dd4b38affba8859523, 0x005cb3 ] } , - BigNum { limbs: [ 0x10e1a8f2f64bf41a2ef73c66cbb7c6, 0x8f02f37c8d2455ee9f580df9527030, 0x00173a ] } , - BigNum { limbs: [ 0x1791d39aa1c282d2c06b15735b6446, 0xc94cd608deb704b81640a01580902d, 0x005faf ] } , - BigNum { limbs: [ 0xa6122f655c997c2d3f94e98ca49bbb, 0xde0653949e912e81c1c7698c577526, 0x00143d ] } , - BigNum { limbs: [ 0xac7f2efa3ee1532072aae9e10b0615, 0xe38f6ac83fc008609f8b7832c58009, 0x005397 ] } , - BigNum { limbs: [ 0x1124d405bf7aabdf8d55151ef4f9ec, 0xc3c3bed53d882ad9387c916f12854a, 0x002055 ] } , - BigNum { limbs: [ 0x912fd965ed7435a1f6f6f489b09c71, 0xe767672552b5d22a99a4734dd9c937, 0x0004f0 ] } , - BigNum { limbs: [ 0x2c74299a10e7c95e09090a764f6390, 0xbfebc2782a92610f3e639653fe3c1c, 0x006efc ] } , - BigNum { limbs: [ 0x353846fb59dfbe77eed0ac01d3bbcf, 0x695563e43133b3a64d286b7caa8550, 0x0004fe ] } , - BigNum { limbs: [ 0x886bbc04a47c4088112f52fe2c4432, 0x3dfdc5b94c147f938adf9e252d8003, 0x006eef ] } , - BigNum { limbs: [ 0x0094a6d7937bc4d3a02f10d659ef99, 0x5c4645aed47db9e9fc04049a2c5cf9, 0x0043db ] } , - BigNum { limbs: [ 0xbd0f5c286ae03a2c5fd0ee29a61068, 0x4b0ce3eea8ca794fdc040507aba85a, 0x003012 ] } , - BigNum { limbs: [ 0x86ec15296d70c9a4422eac799f38d4, 0x5b794b0b66b091529f2516782c7748, 0x00629b ] } , - BigNum { limbs: [ 0x36b7edd690eb355bbdd1528660c72d, 0x4bd9de921697a1e738e2f329ab8e0b, 0x001152 ] } , - BigNum { limbs: [ 0xe6792ca0b784d887c11b15fcf4ede4, 0x57f8ff83873576de834c6c9d4e65db, 0x004101 ] } , - BigNum { limbs: [ 0xd72ad65f46d726783ee4e9030b121d, 0x4f5a2a19f612bc5b54bb9d04899f77, 0x0032ec ] } , - BigNum { limbs: [ 0xfa1640611812e542a4f2d15e024fb2, 0xf978f827945ace309f9cd3bb8c6710, 0x001ee4 ] } , - BigNum { limbs: [ 0xc38dc29ee64919bd5b0d2da1fdb04f, 0xadda3175e8ed6509386b35e64b9e42, 0x005508 ] } , - BigNum { limbs: [ 0x2f27a524ea1827f90f24728ede060e, 0x263a0e318da3c45e1486741e6219d6, 0x005d87 ] } , - BigNum { limbs: [ 0x8e7c5ddb1443d706f0db8c7121f9f3, 0x81191b6befa46edbc381958375eb7d, 0x001666 ] } , - BigNum { limbs: [ 0x8782d903064cc4f3ca01e033ab015b, 0x34223e2a7565a8a26bc74583e2e452, 0x002f80 ] } , - BigNum { limbs: [ 0x362129fcf80f3a0c35fe1ecc54fea6, 0x7330eb7307e28a976c40c41df52101, 0x00446d ] } , - BigNum { limbs: [ 0x343f994997c69b3ea3321f09ec193e, 0x4c7bf53152d35e37e27004bb52bc36, 0x002e40 ] } , - BigNum { limbs: [ 0x896469b6669563c15ccddff613e6c3, 0x5ad7346c2a74d501f59804e685491d, 0x0045ad ] } , - BigNum { limbs: [ 0x4bb75fa2abe942ee4d4fce11edeeea, 0xfb1c4dc5a45ac3f903d2e1f4df683d, 0x0027b2 ] } , - BigNum { limbs: [ 0x71eca35d5272bc11b2b030ee121117, 0xac36dbd7d8ed6f40d43527acf89d16, 0x004c3a ] } , - BigNum { limbs: [ 0xbaf1f3abe8931102c7773d56ed08cc, 0x297c74fdf046da34802c41a29d928e, 0x00018a ] } , - BigNum { limbs: [ 0x02b20f5415c8edfd3888c1a912f735, 0x7dd6b49f8d01590557dbc7ff3a72c5, 0x007263 ] } , - BigNum { limbs: [ 0xb5f4e0a9aed70607c51335da7f4757, 0x4d107aa3bd21933e63be9f172f30f4, 0x00247f ] } , - BigNum { limbs: [ 0x07af22564f84f8f83aecc92580b8aa, 0x5a42aef9c0269ffb74496a8aa8d45f, 0x004f6e ] } , - BigNum { limbs: [ 0x2133dc64414ab86fcaf0b0c072095c, 0x1d71ac229105382542dd4f28fc70f1, 0x005c23 ] } , - BigNum { limbs: [ 0x9c70269bbd114690350f4e3f8df6a5, 0x89e17d7aec42fb14952aba78db9462, 0x0017ca ] } , - BigNum { limbs: [ 0x641f0c6747e1af7b1feb89ca03b33a, 0x079ea8ce63e5f0ed0b7087f6223096, 0x001728 ] } , - BigNum { limbs: [ 0x5984f698b67a4f84e0147535fc4cc7, 0x9fb480cf1962424ccc9781abb5d4bd, 0x005cc5 ] } , - BigNum { limbs: [ 0xf1654b43591f44eb1bbc95cbf8c309, 0x04b668f3cbd178895538f58e3b6119, 0x00680c ] } , - BigNum { limbs: [ 0xcc3eb7bca53cba14e4436934073cf8, 0xa29cc0a9b176bab082cf14139ca439, 0x000be1 ] } , - BigNum { limbs: [ 0x66253f0138106a005f897ecbca7f98, 0x784f02660155dd99dbada73039e278, 0x005779 ] } , - BigNum { limbs: [ 0x577ec3fec64b94ffa0768034358069, 0x2f0427377bf2559ffc5a62719e22db, 0x001c74 ] } , - BigNum { limbs: [ 0x8a3fe004d9d74056ae0516246cba9d, 0x1a56c5a8aef02991e3d4eaab720e54, 0x00538d ] } , - BigNum { limbs: [ 0x336422fb2484bea951fae8db934564, 0x8cfc63f4ce5809a7f4331ef665f6ff, 0x002060 ] } , - BigNum { limbs: [ 0x8db5aa88a154d9f32095c4ca130a82, 0x47df8dd211c6b824cdca9007b7600a, 0x0055cf ] } , - BigNum { limbs: [ 0x2fee58775d07250cdf6a3a35ecf57f, 0x5f739bcb6b817b150a3d799a20a549, 0x001e1e ] } , - BigNum { limbs: [ 0x10d29d21246db3117a425fbb152505, 0x1aec5eb41b1766ad339a747a987ff3, 0x003043 ] } , - BigNum { limbs: [ 0xacd165ded9ee4bee85bd9f44eadafc, 0x8c66cae96230cc8ca46d95273f8560, 0x0043aa ] } , - BigNum { limbs: [ 0x177d01486ba745d8bd7f77aef4b971, 0x59574bf36dd81a93e13e32b362c919, 0x0067af ] } , - BigNum { limbs: [ 0xa62701b792b4b927428087510b4690, 0x4dfbddaa0f7018a5f6c9d6ee753c3a, 0x000c3e ] } , - BigNum { limbs: [ 0x91eb5c10513dd708dc53fc436ac554, 0x8e01fcdc0d7e2ba9f08e2ae872a6fd, 0x004c12 ] } , - BigNum { limbs: [ 0x2bb8a6efad1e27f723ac02bc953aad, 0x19512cc16fca078fe779deb9655e56, 0x0027db ] } , - BigNum { limbs: [ 0x727708895e84f5f25cbffb7e0338b3, 0x6f98e9536fafb797cd439a1b38f750, 0x00498e ] } , - BigNum { limbs: [ 0x4b2cfa769fd7090da3400381fcc74e, 0x37ba404a0d987ba20ac46f869f0e03, 0x002a5f ] } , - BigNum { limbs: [ 0x71406ca58dfd2f6167a380e712c26d, 0x3fe3e3b130fc4db90fcb03ab8b8d3a, 0x000fd2 ] } , - BigNum { limbs: [ 0x4c63965a705ecf9e985c7e18ed3d94, 0x676f45ec4c4be580c83d05f64c7819, 0x00641b ] } , - BigNum { limbs: [ 0x7cfe5c411500894f5db9ec17dc2ec4, 0xf50f4a7ee4f48cc0def334cfc94486, 0x0026af ] } , - BigNum { limbs: [ 0x40a5a6bee95b75b0a24612e823d13d, 0xb243df1e9853a678f914d4d20ec0cd, 0x004d3d ] } , - BigNum { limbs: [ 0xd91d5763e143e1cda5b3da3835833a, 0x6f49185f6f6777e146de1cc9711cb8, 0x006f06 ] } , - BigNum { limbs: [ 0xe486ab9c1d181d325a4c24c7ca7cc7, 0x380a113e0de0bb589129ecd866e89a, 0x0004e7 ] } , - BigNum { limbs: [ 0xe2cb2be68ea808a3e6be78c2ee9734, 0x17229a86e06194b65d827dffe32966, 0x005f13 ] } , - BigNum { limbs: [ 0xdad8d7196fb3f65c1941863d1168cd, 0x90308f169ce69e837a858ba1f4dbec, 0x0014da ] } , - BigNum { limbs: [ 0x48e670c23af1a5d33f284034b0778b, 0x462cfa754f7d4a0a66962a66901779, 0x0018d2 ] } , - BigNum { limbs: [ 0x74bd923dc36a592cc0d7becb4f8876, 0x61262f282dcae92f7171df3b47edda, 0x005b1b ] } , - BigNum { limbs: [ 0x502652187591b7ca72fca801a36230, 0x6b5d836aba048356118b3e0612af7e, 0x0032ec ] } , - BigNum { limbs: [ 0x6d7db0e788ca47358d0356fe5c9dd1, 0x3bf5a632c343afe3c67ccb9bc555d5, 0x004101 ] } , - BigNum { limbs: [ 0x392b42a74453e4565ace73aac4afac, 0x8707dc856ee8838a6706e4a3733924, 0x0043b2 ] } , - BigNum { limbs: [ 0x8478c058ba081aa9a5318b553b5055, 0x204b4d180e5fafaf710124fe64cc2f, 0x00303b ] } , - BigNum { limbs: [ 0xdec558c2b992f629b7efa78ed49d26, 0xf8f34e0e4e0ac55d1d1a405c996e82, 0x005835 ] } , - BigNum { limbs: [ 0xdedeaa3d44c908d6481057712b62db, 0xae5fdb8f2f3d6ddcbaedc9453e96d0, 0x001bb7 ] } , - BigNum { limbs: [ 0xf6e5a9119212860548495f4ad6481e, 0x3b498490bb280f3f8e7d2b4d558fce, 0x000902 ] } , - BigNum { limbs: [ 0xc6be59ee6c4978fab7b69fb529b7e3, 0x6c09a50cc22023fa498ade54827584, 0x006aeb ] } , - BigNum { limbs: [ 0x2e1db88ee84b9a5e6daac66fc8728a, 0x8f6521310f40f3657493bba35e9907, 0x002d55 ] } , - BigNum { limbs: [ 0x8f864a71161064a192553890378d77, 0x17ee086c6e073fd463744dfe796c4c, 0x004698 ] } , - BigNum { limbs: [ 0x230a9941083f8ecf9f8111b1ef9dc0, 0xd562459e2aafcfd1d4c7782ecb99b6, 0x0068c0 ] } , - BigNum { limbs: [ 0x9a9969bef61c7030607eed4e106241, 0xd1f0e3ff52986368034091730c6b9d, 0x000b2c ] } , - BigNum { limbs: [ 0x6d2595664fbc4930c0a4aa4b5136a8, 0xa262e9116b0c4794df08ce274be96c, 0x00716e ] } , - BigNum { limbs: [ 0x507e6d99ae9fb5cf3f5b54b4aec959, 0x04f0408c123beba4f8ff3b7a8c1be7, 0x00027f ] } , - BigNum { limbs: [ 0xe3c5291a4615c8b789f8deea4a149c, 0xb416a79063d5e0fda13cd92590b8ec, 0x0047af ] } , - BigNum { limbs: [ 0xd9ded9e5b846364876072015b5eb65, 0xf33c820d1972523c36cb307c474c66, 0x002c3d ] } , - BigNum { limbs: [ 0xd2881ff9961ba65476b8b150105d16, 0xf9c51e9e0a4a55da9ec7d3b0c908fd, 0x00327b ] } , - BigNum { limbs: [ 0xeb1be306684058ab89474dafefa2eb, 0xad8e0aff72fddd5f394035f10efc55, 0x004171 ] } , - BigNum { limbs: [ 0x9854adbe0ee2ce5cce5be38c085457, 0xe1e13d2d0424b9a069094b52cd35aa, 0x0052d7 ] } , - BigNum { limbs: [ 0x254f5541ef7930a331a41b73f7abaa, 0xc571ec70792379996efebe4f0acfa9, 0x002115 ] } , - BigNum { limbs: [ 0x0984935991fa79b66236ce89c824b3, 0x73a8febdd972fc8273f2840979b017, 0x006dd6 ] } , - BigNum { limbs: [ 0xb41f6fa66c6185499dc9307637db4e, 0x33aa2adfa3d536b7641585985e553c, 0x000617 ] } , - BigNum { limbs: [ 0xc3d514392193fd7d1588a9667bf5cc, 0xa8658a8fcca827aaf3f848275fa49e, 0x001a70 ] } , - BigNum { limbs: [ 0xf9ceeec6dcc80182ea775599840a35, 0xfeed9f0db0a00b8ee40fc17a7860b4, 0x00597c ] } , - BigNum { limbs: [ 0x4169069c77fdf1a5415faa6c06805b, 0x2052630abbd3810f51c6dc13078865, 0x003344 ] } , - BigNum { limbs: [ 0x7c3afc63865e0d5abea05493f97fa6, 0x8700c692c174b22a86412d8ed07cee, 0x0040a9 ] } , - BigNum { limbs: [ 0x4dd56603f78dab949e1e06c9aa4b0c, 0xd0c0c2f38069a0df956135ae881807, 0x003315 ] } , - BigNum { limbs: [ 0x6fce9cfc06ce536b61e1f83655b4f5, 0xd69266a9fcde925a42a6d3f34fed4c, 0x0040d7 ] } , - BigNum { limbs: [ 0x4ffa9a7c55e8b8d333d3d20b839c22, 0x0c7d84a763b48e15665fbded415e90, 0x006bf7 ] } , - BigNum { limbs: [ 0x6da96883a873462ccc2c2cf47c63df, 0x9ad5a4f61993a52471a84bb496a6c3, 0x0007f6 ] } , - BigNum { limbs: [ 0xeff6572f4ad10993fca26054dfc243, 0x2aaed4076db69d9e66dd3f254fe954, 0x00523c ] } , - BigNum { limbs: [ 0xcdadabd0b38af56c035d9eab203dbe, 0x7ca455960f91959b712aca7c881bfe, 0x0021b1 ] } , - BigNum { limbs: [ 0xdd9e6e6daea7fc2932eb01d81da901, 0x632d1326807e3f7d9a11e261feb981, 0x004267 ] } , - BigNum { limbs: [ 0xe00594924fb402d6cd14fd27e25700, 0x44261676fcc9f3bc3df6273fd94bd1, 0x003186 ] } , - BigNum { limbs: [ 0xaebc2ff1eba9c1e54bb87d7fe80ddf, 0xe09ad55921e98cc04d67baba3c2a12, 0x000b42 ] } , - BigNum { limbs: [ 0x0ee7d30e12b23d1ab447818017f222, 0xc6b854445b5ea6798aa04ee79bdb41, 0x0068aa ] } , - BigNum { limbs: [ 0xbf001d3f3525a47688aacce68620f2, 0x922ca880037b7fcd69e7d304c3f591, 0x004381 ] } , - BigNum { limbs: [ 0xfea3e5c0c9365a897755321979df0f, 0x1526811d79ccb36c6e20369d140fc1, 0x00306c ] } , - BigNum { limbs: [ 0x4909862b885f44761c5fc029fddad4, 0x6a0c04aaf3370750b9af1ababac1fe, 0x000973 ] } , - BigNum { limbs: [ 0x749a7cd475fcba89e3a03ed602252d, 0x3d4724f28a112be91e58eee71d4355, 0x006a7a ] } , - BigNum { limbs: [ 0xae928fadcd4831d72fdcbaf7e14265, 0x3cafdcc0abe82be6e18149672cebda, 0x000144 ] } , - BigNum { limbs: [ 0x0f1173523113cd28d02344081ebd9c, 0x6aa34cdcd1600752f686c03aab1979, 0x0072a9 ] } , - BigNum { limbs: [ 0xa4236514a460db28328df1ab654d16, 0x2c1ebcd59783fc8a065a163d9f4cc2, 0x0054c0 ] } , - BigNum { limbs: [ 0x19809deb59fb23d7cd720d549ab2eb, 0x7b346cc7e5c436afd1adf36438b891, 0x001f2d ] } , - BigNum { limbs: [ 0x5bdcb3774f915b07ae73cc5f0adfc4, 0x794f3d382a9ccd9ef0b2fc42184788, 0x006189 ] } , - BigNum { limbs: [ 0x61c74f88aecaa3f8518c32a0f5203d, 0x2e03ec6552ab659ae7550d5fbfbdcb, 0x001264 ] } , - BigNum { limbs: [ 0xae2ef914eb9c84ed29493ec7ff16ad, 0xd608aab2f155d1e0a3f39ccd56f235, 0x0006ff ] } , - BigNum { limbs: [ 0x0f7509eb12bf7a12d6b6c03800e954, 0xd14a7eea8bf2615934146cd481131e, 0x006ced ] } , - BigNum { limbs: [ 0x64311239b1d895ff006b399cdbad03, 0xf3bc93ece7b957cbd49e76a47e6512, 0x00739c ] } , - BigNum { limbs: [ 0x5972f0c64c836900ff94c5632452fe, 0xb39695b0958edb6e036992fd59a041, 0x000050 ] } , - BigNum { limbs: [ 0x3b1278ed8877796416ae308bf28026, 0xecb778afffb6cfe57afc10020d61be, 0x001d15 ] } , - BigNum { limbs: [ 0x82918a1275e4859be951ce740d7fdb, 0xba9bb0ed7d9163545d0bf99fcaa395, 0x0056d7 ] } , - BigNum { limbs: [ 0xa7a25b9dd49a5104134f5eb300e02c, 0x2cf64bb4d0a54cca2d246e68177c5c, 0x004abe ] } , - BigNum { limbs: [ 0x1601a76229c1adfbecb0a04cff1fd5, 0x7a5cdde8aca2e66faae39b39c088f7, 0x00292f ] } , - BigNum { limbs: [ 0x07912ff3f641530cb1faaca0788fe0, 0x5b54c3244b32b3a7469982c86c9c23, 0x0027fb ] } , - BigNum { limbs: [ 0xb612d30c081aabf34e05525f877021, 0x4bfe667932157f92916e86d96b6930, 0x004bf2 ] } , - BigNum { limbs: [ 0xe7b9caf31b2d93d22bd425ce277f07, 0xc32b66342b515ec60810c9256a359e, 0x000564 ] } , - BigNum { limbs: [ 0xd5ea380ce32e6b2dd42bd931d880fa, 0xe427c36951f6d473cff7407c6dcfb4, 0x006e88 ] } , - BigNum { limbs: [ 0xae1fbbafdb5d6b6b8fb9a311fecf6a, 0x4e985960df8adb247d8460b76bd1c3, 0x004713 ] } , - BigNum { limbs: [ 0x0f84475022fe939470465bee013097, 0x58bad03c9dbd58155a83a8ea6c3390, 0x002cda ] } , - BigNum { limbs: [ 0x1c350aec0b3d9f7c4974a6e2de02ce, 0xd22add877c74eb8ef78a912f31cc39, 0x0021ea ] } , - BigNum { limbs: [ 0xa16ef813f31e5f83b68b581d21fd33, 0xd5284c1600d347aae07d7872a6391a, 0x005202 ] } , - BigNum { limbs: [ 0x759ee4f8b7872c89cb2ac2efe4b7b2, 0x800723e729779ba9d6565fe057d9ec, 0x003192 ] } , - BigNum { limbs: [ 0x48051e0746d4d27634d53c101b484f, 0x274c05b653d0979001b1a9c1802b67, 0x00425b ] } , - BigNum { limbs: [ 0x38a0f2f40967a84ca08409a8a384de, 0x618531f3c2fb417a3bfc90d1ed929a, 0x0004ec ] } , - BigNum { limbs: [ 0x8503100bf4f456b35f7bf5575c7b23, 0x45cdf7a9ba4cf1bf9c0b78cfea72b9, 0x006f01 ] } , - BigNum { limbs: [ 0xc906e310e55dba95694d065456b35c, 0xa3d1543a026c52e78ec8b9131c2f04, 0x00238b ] } , - BigNum { limbs: [ 0xf49d1fef18fe446a96b2f8aba94ca5, 0x0381d5637adbe052493f508ebbd64e, 0x005062 ] } , - BigNum { limbs: [ 0xd6a06a8ea8362d01ba2547d610515c, 0x5e81e1a39cccacce6386bde5684344, 0x004ba2 ] } , - BigNum { limbs: [ 0xe70398715625d1fe45dab729efaea5, 0x48d147f9e07b866b74814bbc6fc20e, 0x00284b ] } , - BigNum { limbs: [ 0x79c270ed45b1b10c5a52a76e566b29, 0x5346918b58427c4d071c8074d853cf, 0x00661a ] } , - BigNum { limbs: [ 0x43e19212b8aa4df3a5ad5791a994d8, 0x540c98122505b6ecd0eb892cffb184, 0x000dd3 ] } , - BigNum { limbs: [ 0x51ddab9f8df2c2482b0a82571dcb2f, 0x2f50118af61c42047f4bca9c77227c, 0x000a93 ] } , - BigNum { limbs: [ 0x6bc6576070693cb7d4f57ca8e234d2, 0x78031812872bf13558bc3f0560e2d7, 0x00695a ] } , - BigNum { limbs: [ 0xbf8cff018d3fd547f1ac6f4f247155, 0xcc0f804e21cc7faa9e96bbb32656c8, 0x005f2f ] } , - BigNum { limbs: [ 0xfe1703fe711c29b80e538fb0db8eac, 0xdb43a94f5b7bb38f39714deeb1ae8a, 0x0014bd ] } , - BigNum { limbs: [ 0x993df5d2cd1e9be0a6e50591758013, 0xe5bb862b5850c6978a71db0ad7bdf4, 0x003f70 ] } , - BigNum { limbs: [ 0x24660d2d313d631f591af96e8a7fee, 0xc197a37224f76ca24d962e9700475f, 0x00347c ] } , - BigNum { limbs: [ 0x34cfeeea5489476fa1d2dc33b87eb2, 0x2622ab24e5ffb43d418e35f370eda4, 0x004a49 ] } , - BigNum { limbs: [ 0x88d41415a9d2b7905e2d22cc47814f, 0x81307e7897487efc9679d3ae6717af, 0x0029a4 ] } , - BigNum { limbs: [ 0xcc9b1e11e2ec48e9d8784aae9773f1, 0x1124d3b9bfe874aaaf084d7b70b146, 0x0067b0 ] } , - BigNum { limbs: [ 0xf108e4ee1b6fb6162787b451688c10, 0x962e55e3bd5fbe8f28ffbc2667540c, 0x000c3d ] } , - BigNum { limbs: [ 0x9d37098b72d8216927d7dda99b8de7, 0xbf19bfc7397c6472ebcd00e3e0a89e, 0x000981 ] } , - BigNum { limbs: [ 0x206cf9748b83dd96d828215664721a, 0xe83969d643cbcec6ec3b08bdf75cb5, 0x006a6b ] } , - BigNum { limbs: [ 0x791aa5b86eb2212ed6e368e6007ac7, 0x1aca575977854a79661981546231af, 0x0024f9 ] } , - BigNum { limbs: [ 0x44895d478fa9ddd1291c9619ff853a, 0x8c88d24405c2e8c071ee884d75d3a4, 0x004ef4 ] } , - BigNum { limbs: [ 0x6361c0c83281e576d1c74060f9d9f0, 0x9596a94aa9644272a5534fff051983, 0x006959 ] } , - BigNum { limbs: [ 0x5a424237cbda19892e38be9f062611, 0x11bc8052d3e3f0c732b4b9a2d2ebd0, 0x000a94 ] } , - BigNum { limbs: [ 0x401a70e8f8cbe0a21f95f3fed2fdbe, 0x4e034aea9a403f57dcda1e2ae449e2, 0x0007a8 ] } , - BigNum { limbs: [ 0x7d89921705901e5de06a0b012d0243, 0x594fdeb2e307f3e1fb2deb76f3bb71, 0x006c45 ] } , - BigNum { limbs: [ 0x161b4692e743eadc386425ab8aab6d, 0xa2d15922fea8fe36a849146f5f686e, 0x0012d2 ] } , - BigNum { limbs: [ 0xa788bc6d17181423c79bd954755494, 0x0481d07a7e9f35032fbef532789ce5, 0x00611b ] } , - BigNum { limbs: [ 0xa750313e41edce715dd2986b7a9257, 0xf286e40a4b9ce1ed373801462466b6, 0x002384 ] } , - BigNum { limbs: [ 0x1653d1c1bc6e308ea22d6694856daa, 0xb4cc459331ab514ca0d0085bb39e9d, 0x005068 ] } , - BigNum { limbs: [ 0xb854c4f8a2e9617ef67285b215a900, 0x3c93e82d71aff0937862b0585b7d43, 0x002450 ] } , - BigNum { limbs: [ 0x054f3e075b729d81098d794dea5701, 0x6abf41700b9842a65fa559497c8810, 0x004f9d ] } , - BigNum { limbs: [ 0x6d4c2d88fa625681ed9dc9132bcfdb, 0x32a32b4731cda80193295d0332a122, 0x005cb7 ] } , - BigNum { limbs: [ 0x5057d57703f9a87e126235ecd43026, 0x74affe564b7a8b3844deac9ea56431, 0x001736 ] } , - BigNum { limbs: [ 0x092646563372f4041dde43174ff8f2, 0x904b3a9c77ed4c2656dd12459b2213, 0x000580 ] } , - BigNum { limbs: [ 0xb47dbca9cae90afbe221bbe8b0070f, 0x1707ef01055ae713812af75c3ce340, 0x006e6d ] } , - BigNum { limbs: [ 0x4e6db419340260d5a8183c1c7d60a4, 0xe7628bbdcfe505c5ba7a29fc028164, 0x0011f8 ] } , - BigNum { limbs: [ 0x6f364ee6ca599e2a57e7c2e3829f5d, 0xbff09ddfad632d741d8ddfa5d583ef, 0x0061f4 ] } , - BigNum { limbs: [ 0xb273c4c4e5e000d2d6dc93b545d3d1, 0x29eabb6b5e70507a712031421c144f, 0x002493 ] } , - BigNum { limbs: [ 0x0b303e3b187bfe2d29236b4aba2c30, 0x7d686e321ed7e2bf66e7d85fbbf104, 0x004f5a ] } , - BigNum { limbs: [ 0x32aeac741053b05036d7b13a37da4e, 0x88c65b382599eefe3235831ae791af, 0x005792 ] } , - BigNum { limbs: [ 0x8af5568bee084eafc9284dc5c825b3, 0x1e8cce6557ae443ba5d28686f073a4, 0x001c5b ] } , - BigNum { limbs: [ 0x3f9a1ad0e21d61b104e66aca30e6b0, 0x49daefeb804b39e99a78b1fd01a405, 0x0038d9 ] } , - BigNum { limbs: [ 0x7e09e82f1c3e9d4efb199435cf1951, 0x5d7839b1fcfcf9503d8f57a4d6614e, 0x003b14 ] } , - BigNum { limbs: [ 0x67d2fb4e3c58144e842f43a452ee7f, 0x0ac7d65a912aeea58ac8967cec90d3, 0x005734 ] } , - BigNum { limbs: [ 0x55d107b1c203eab17bd0bb5bad1182, 0x9c8b5342ec1d44944d3f7324eb7480, 0x001cb9 ] } , - BigNum { limbs: [ 0xf10b1d38230a77273e2bf34ef523a8, 0xe6ebd737831a36e840b2491a34dcdc, 0x0037b9 ] } , - BigNum { limbs: [ 0xcc98e5c7db5187d8c1d40bb10adc59, 0xc0675265fa2dfc519755c087a32876, 0x003c33 ] } , - BigNum { limbs: [ 0xfaa4c4c7bead221b56c03124edee0d, 0x86c54a1b49bb820b0ddf66b3c1736f, 0x003e29 ] } , - BigNum { limbs: [ 0xc2ff3e383faedce4a93fcddb1211f4, 0x208ddf82338cb12eca28a2ee1691e3, 0x0035c4 ] } , - BigNum { limbs: [ 0x469cb25cd4ff1eec7ba01b17e50b58, 0x494c8cab7d73812de96735cf6688a8, 0x003317 ] } , - BigNum { limbs: [ 0x770750a3295ce013845fe3e81af4a9, 0x5e069cf1ffd4b20beea0d3d2717cab, 0x0040d6 ] } , - BigNum { limbs: [ 0x72368c797565e8c08510a472a5b7b6, 0xe2728652b4c6b69946eab3d642742c, 0x004085 ] } , - BigNum { limbs: [ 0x4b6d768688f6163f7aef5a8d5a484b, 0xc4e0a34ac8817ca0911d55cb959127, 0x003367 ] } , - BigNum { limbs: [ 0xb94f1ca3a9bd8bf3d7051250e172df, 0x509b0cc257d447db8b8b423ffac033, 0x00165b ] } , - BigNum { limbs: [ 0x0454e65c549e730c28faecaf1e8d22, 0x56b81cdb2573eb5e4c7cc761dd4520, 0x005d92 ] } , - BigNum { limbs: [ 0x6bb5fe8d5e45b673d8489859f77d08, 0x9602a9b4e6a2e9ab20ea944819b8ba, 0x00212b ] } , - BigNum { limbs: [ 0x51ee0472a016488c27b766a60882f9, 0x11507fe896a5498eb71d7559be4c99, 0x0052c2 ] } , - BigNum { limbs: [ 0xf7e761b97ce7a28928ab67d4fbe85a, 0x77cc5fc4a9b82148dff4f9ae19f5ca, 0x005afd ] } , - BigNum { limbs: [ 0xc5bca14681745c76d754972b0417a7, 0x2f86c9d8d39011f0f8130ff3be0f88, 0x0018f0 ] } , - BigNum { limbs: [ 0x5a1ea9c9e6198d7539d5a391a52aea, 0x379f0c5b5c3dc1297225341c962c66, 0x0032ed ] } , - BigNum { limbs: [ 0x638559361842718ac62a5b6e5ad517, 0x6fb41d42210a721065e2d58541d8ed, 0x004100 ] } , - BigNum { limbs: [ 0xa4538de6dd29c4a9e8e4fa46c83252, 0x13d54af0dccc73270105c2ef5a44ee, 0x004eff ] } , - BigNum { limbs: [ 0x1950751921323a56171b04b937cdaf, 0x937ddeaca07bc012d70246b27dc065, 0x0024ee ] } , - BigNum { limbs: [ 0x937263e012729d28d1651b41efe2b7, 0x0b142233f8c7f31b135d880851e762, 0x0028e8 ] } , - BigNum { limbs: [ 0x2a319f1febe961d72e9ae3be101d4a, 0x9c3f07698480401ec4aa8199861df1, 0x004b05 ] } , - BigNum { limbs: [ 0x566208104461d1a5579f6349687577, 0x85bb9b792dab1ecc4227299facc750, 0x0059e6 ] } , - BigNum { limbs: [ 0x6741faefb9fa2d5aa8609bb6978a8a, 0x21978e244f9d146d95e0e0022b3e03, 0x001a07 ] } , - BigNum { limbs: [ 0x77c63b3b77e9eeed612a225d770254, 0xcd4f66b0b0e4832b6f68d3b35bb63c, 0x0072a7 ] } , - BigNum { limbs: [ 0x45ddc7c4867210129ed5dca288fdad, 0xda03c2eccc63b00e689f35ee7c4f17, 0x000145 ] } , - BigNum { limbs: [ 0x06588af11d1029002cb711bc971596, 0xbefc3f42bd087254cc0fd0034dce28, 0x00432c ] } , - BigNum { limbs: [ 0xb74b780ee14bd5ffd348ed4368ea6b, 0xe856ea5ac03fc0e50bf8399e8a372b, 0x0030c0 ] } , - BigNum { limbs: [ 0x0c2336f9e61c22dc74f23404eb8927, 0x0c964d2d7d883aae4b3ac7ead974e1, 0x00063f ] } , - BigNum { limbs: [ 0xb180cc06183fdc238b0dcafb1476da, 0x9abcdc6fffbff88b8ccd41b6fe9072, 0x006dae ] } , - BigNum { limbs: [ 0x1cf9b7b8480164564616bbd772ec8a, 0x8d1edc2e23c4478bfd09ecbbbdc6fe, 0x0052b4 ] } , - BigNum { limbs: [ 0xa0aa4b47b65a9aa9b9e943288d1377, 0x1a344d6f5983ebaddafe1ce61a3e55, 0x002139 ] } , - BigNum { limbs: [ 0xe377e99a434db10c0f7e279f57a840, 0x35d54b136c4d829d0f613311012bdd, 0x0048c1 ] } , - BigNum { limbs: [ 0xda2c1965bb0e4df3f081d760a857c1, 0x717dde8a10fab09cc8a6d690d6d975, 0x002b2c ] } , - BigNum { limbs: [ 0x728b2895f1a7f160cdc15b28b34c14, 0xce4f6d72faba28a8cc1d1221bbc909, 0x000b49 ] } , - BigNum { limbs: [ 0x4b18da6a0cb40d9f323ea3d74cb3ed, 0xd903bc2a828e0a910beaf7801c3c4a, 0x0068a3 ] } , - BigNum { limbs: [ 0xe1a662c4aa0118276accb748e4d89e, 0x670db981524a47cec7375b11fc9e50, 0x002595 ] } , - BigNum { limbs: [ 0xdbfda03b545ae6d8953347b71b2763, 0x4045701c2afdeb6b10d0ae8fdb6702, 0x004e58 ] } , - BigNum { limbs: [ 0x93b25df1c5d206aebe55785d5a1303, 0xefa29c0e679a51ad809b1f883ad5ab, 0x007263 ] } , - BigNum { limbs: [ 0x29f1a50e3889f85141aa86a2a5ecfe, 0xb7b08d8f15ade18c576cea199d2fa8, 0x000189 ] } , - BigNum { limbs: [ 0x06b4f4499c5282c7b70da33ed1aa1c, 0x9849c77eb6af7035fb35b7472f237e, 0x005371 ] } , - BigNum { limbs: [ 0xb6ef0eb662097c3848f25bc12e55e5, 0x0f09621ec698c303dcd2525aa8e1d5, 0x00207c ] } , - BigNum { limbs: [ 0xbebaa1ce05b935db9e49df73e8d8f1, 0x6e2d2fe8b4ece620312bd8e49b0b74, 0x003f1d ] } , - BigNum { limbs: [ 0xfee96131f8a2c92461b61f8c172710, 0x3925f9b4c85b4d19a6dc30bd3cf9de, 0x0034d0 ] } , - BigNum { limbs: [ 0xa985c5cb9a543a8e76cfb0a9bd652c, 0xee418fee10f76ebcbc0b13644a62c4, 0x001cf7 ] } , - BigNum { limbs: [ 0x141e3d346407c47189304e56429ad5, 0xb91199af6c50c47d1bfcf63d8da28f, 0x0056f5 ] } , - BigNum { limbs: [ 0x31dc8f1706ed3a709273516579f331, 0x1c8a17580f2aaad415f10ea7010c0a, 0x0031c5 ] } , - BigNum { limbs: [ 0x8bc773e8f76ec48f6d8cad9a860cd0, 0x8ac912456e1d8865c216fafad6f949, 0x004228 ] } , - BigNum { limbs: [ 0xb66b1f4eb128dd523d0a0385f06888, 0xc40a1167be106bbe3f83200cb8fb5e, 0x006167 ] } , - BigNum { limbs: [ 0x0738e3b14d3321adc2f5fb7a0f9779, 0xe3491835bf37c77b9884e9951f09f5, 0x001285 ] } , - BigNum { limbs: [ 0xcfc03eb6e95d51948dedf2e20d5b4a, 0xbe94dba5e67293cd864eef861ffbed, 0x001bfa ] } , - BigNum { limbs: [ 0xede3c44914fead6b72120c1df2a4b7, 0xe8be4df796d59f6c51b91a1bb80965, 0x0057f2 ] } , - BigNum { limbs: [ 0xbac8bfc1513538e100b1bdf0ae0ac0, 0xfac6dcad545ec7e422cc83ee2d55ee, 0x0024db ] } , - BigNum { limbs: [ 0x02db433ead26c61eff4e410f51f541, 0xac8c4cf028e96b55b53b85b3aaaf65, 0x004f11 ] } , - BigNum { limbs: [ 0xefcffc9af0153626748a03879e0d37, 0x2a9373fe92fd694eeb2bd03f8d907c, 0x004070 ] } , - BigNum { limbs: [ 0xcdd406650e46c8d98b75fb7861f2ca, 0x7cbfb59eea4ac9eaecdc39624a74d6, 0x00337d ] } , - BigNum { limbs: [ 0x17e7d20dae6fc433c290af7f64f5ae, 0x387ce6b4b7ade1ed539aaa93936de6, 0x0053da ] } , - BigNum { limbs: [ 0xa5bc30f24fec3acc3d6f4f809b0a53, 0x6ed642e8c59a514c846d5f0e44976d, 0x002013 ] } , - BigNum { limbs: [ 0xdeec5af6fbb2391020c32f171ac5dd, 0x8d0230e1f2caa09529a68c5f6b71fa, 0x000333 ] } , - BigNum { limbs: [ 0xdeb7a80902a9c5efdf3ccfe8e53a24, 0x1a50f8bb8a7d92a4ae617d426c9358, 0x0070ba ] } , - BigNum { limbs: [ 0x55750280dba07d02285256da202718, 0xed10000b9ef7cd9032ed9e65bd172e, 0x003765 ] } , - BigNum { limbs: [ 0x682f007f22bb81fdd7ada825dfd8e9, 0xba432991de5065a9a51a6b3c1aee25, 0x003c87 ] } , - BigNum { limbs: [ 0xe18ebff3faaa15c07ff0fe704ed51b, 0xfc4a8e963bac7c488aa66d37ff6cec, 0x000d91 ] } , - BigNum { limbs: [ 0xdc15430c03b1e93f800f008fb12ae6, 0xab089b07419bb6f14d619c69d89866, 0x00665b ] } , - BigNum { limbs: [ 0x1f11f349f4a1c972a3152f1e2004bf, 0x25d3d25f448997c39c697f9a4a7df7, 0x003359 ] } , - BigNum { limbs: [ 0x9e920fb609ba358d5ceacfe1dffb42, 0x817f573e38be9b763b9e8a078d875c, 0x004094 ] } , - BigNum { limbs: [ 0x5e57ac26862783ef21328babd5fa04, 0x94639d51faf4990ae7084f19b5df2a, 0x001795 ] } , - BigNum { limbs: [ 0x5f4c56d978347b10decd73542a05fd, 0x12ef8c4b82539a2ef0ffba88222629, 0x005c58 ] } , - BigNum { limbs: [ 0xa39e7e33ace0d6fa3bd23976ea9f58, 0x0a1f420a6063467da7a7de6c6c36e3, 0x005d3d ] } , - BigNum { limbs: [ 0x1a0584cc517b2805c42dc5891560a9, 0x9d33e7931ce4ecbc30602b356bce70, 0x0016b0 ] } , - BigNum { limbs: [ 0x5b15a2f585cdfa548af4799af142e6, 0x61cf901b03ed04d3a263e87c253ec2, 0x00243e ] } , - BigNum { limbs: [ 0x628e600a788e04ab750b85650ebd1b, 0x45839982795b2e6635a42125b2c691, 0x004faf ] } , - BigNum { limbs: [ 0x5dd35fe7be02f7accb3df2106b22cc, 0xa0b8ea2b075ac4232584e7abca8f90, 0x00595f ] } , - BigNum { limbs: [ 0x5fd0a3184059075334c20cef94dd35, 0x069a3f7275ed6f16b28321f60d75c3, 0x001a8e ] } , - BigNum { limbs: [ 0x6a821d00e629fd93613ce0a87ffacc, 0x3774bbfdf052b2398fc6e2083e9b6d, 0x001b1b ] } , - BigNum { limbs: [ 0x5321e5ff1832016c9ec31e57800535, 0x6fde6d9f8cf58100484127999969e6, 0x0058d2 ] } , - BigNum { limbs: [ 0x98bfd85728ad3e731ca9103f4a7e3e, 0x110afa78821dcb338fdd3ad2c5d3d2, 0x002917 ] } , - BigNum { limbs: [ 0x24e42aa8d5aec08ce356eec0b581c3, 0x96482f24fb2a6806482acecf123181, 0x004ad6 ] } , - BigNum { limbs: [ 0x8934b96bcdafc077cb1cbb417e9523, 0x8ad90b23cabd42c3100194a5edb528, 0x0040c9 ] } , - BigNum { limbs: [ 0x346f499430ac3e8834e343be816ade, 0x1c7a1e79b28af076c80674fbea502b, 0x003324 ] } , - BigNum { limbs: [ 0x661273fcbe39288ecfc80649bbea18, 0x8d55b0a862c0325bc18ab7d404d31a, 0x00733b ] } , - BigNum { limbs: [ 0x57918f034022d6713037f8b64415e9, 0x19fd78f51a8800de167d51cdd33239, 0x0000b2 ] } , - BigNum { limbs: [ 0xc80822660ea03fe161180add8e7c8b, 0x7e83f7559203e2d33d092ee2863043, 0x000682 ] } , - BigNum { limbs: [ 0xf59be099efbbbf1e9ee7f422718376, 0x28cf3247eb4450669afedabf51d50f, 0x006d6b ] } , - BigNum { limbs: [ 0x4c2f6c4c6979d6421e03245e1d83f5, 0xde31f4afed60227bf324ee9c8da296, 0x0054b3 ] } , - BigNum { limbs: [ 0x717496b394e228bde1fcdaa1e27c0c, 0xc92134ed8fe810bde4e31b054a62bd, 0x001f39 ] } , - BigNum { limbs: [ 0x409a32c508c48e0e2f03376cb187b7, 0xc4fa5038c7b49e5786f239167df4d9, 0x001d9b ] } , - BigNum { limbs: [ 0x7d09d03af59770f1d0fcc7934e784a, 0xe258d964b59394e25115d08b5a107a, 0x005651 ] } , - BigNum { limbs: [ 0x12b89113eeea90974fda386cb940f8, 0x1ea72000b80557717ad996adf91de3, 0x006f23 ] } , - BigNum { limbs: [ 0xaaeb71ec0f716e68b025c69346bf09, 0x88ac099cc542dbc85d2e72f3dee770, 0x0004ca ] } , - BigNum { limbs: [ 0x7e952bc943fa25a7b96ed42f328d19, 0xfddc9652c4229346cfaabd2dbb7ca0, 0x005ba2 ] } , - BigNum { limbs: [ 0x3f0ed736ba61d95846912ad0cd72e8, 0xa976934ab9259ff3085d4c741c88b3, 0x00184a ] } , - BigNum { limbs: [ 0x5af17137d56fc0450d9f977ea8ee05, 0xebd0c8e9101be155cb4893f9e9ac56, 0x00110c ] } , - BigNum { limbs: [ 0x62b291c828ec3ebaf26067815711fc, 0xbb8260b46d2c51e40cbf75a7ee58fd, 0x0062e0 ] } , - BigNum { limbs: [ 0xcc0fb37f9b79c8d0286f742cd86675, 0xac722393d117a6e3d0a41fee9e1750, 0x0016cc ] } , - BigNum { limbs: [ 0xf1944f8062e2362fd7908ad327998c, 0xfae10609ac308c560763e9b339ee02, 0x005d20 ] } , - BigNum { limbs: [ 0x9a22de5f232c4d70421c223a460e6d, 0x852f62cc2d5663da0c93f30179ec54, 0x004de8 ] } , - BigNum { limbs: [ 0x238124a0db2fb18fbde3dcc5b9f194, 0x2223c6d14ff1cf5fcb7416a05e18ff, 0x002605 ] } , - BigNum { limbs: [ 0x8e8be7eb4f8aef0919810f5154f302, 0xfff8289d7770e0c52bcccf7ea4d54d, 0x0026e3 ] } , - BigNum { limbs: [ 0x2f181b14aed10ff6e67eefaeab0cff, 0xa75b010005d75274ac3b3a23333006, 0x004d09 ] } , - BigNum { limbs: [ 0x38adb8945c016b768a01c2f8d0a0a5, 0xea004abaa750911e29712487a533b6, 0x002365 ] } , - BigNum { limbs: [ 0x84f64a6ba25a938975fe3c072f5f5c, 0xbd52dee2d5f7a21bae96e51a32d19d, 0x005087 ] } , - BigNum { limbs: [ 0x92c321e18a980d935ad036ebc7abf4, 0x9e8bb1654c1e72f742d644c47a0ee6, 0x005530 ] } , - BigNum { limbs: [ 0x2ae0e11e73c3f16ca52fc81438540d, 0x08c778383129c0429531c4dd5df66d, 0x001ebd ] } , - BigNum { limbs: [ 0xd5a99e920c0a4d6dc7c97b1a613397, 0xdf54cf455645e7251723c4c73b05ca, 0x0064f8 ] } , - BigNum { limbs: [ 0xe7fa646df251b192383683e59ecc6a, 0xc7fe5a5827024c14c0e444da9cff88, 0x000ef4 ] } , - BigNum { limbs: [ 0xceb34626e61426bedac33c56d72943, 0x6fe1a695922d9dbff7487228f5f976, 0x0019e1 ] } , - BigNum { limbs: [ 0xeef0bcd91847d841253cc2a928d6be, 0x37718307eb1a9579e0bf9778e20bdc, 0x005a0c ] } , - BigNum { limbs: [ 0x16a24a1c573a1e01031ac8046f9bdd, 0x2ea35c2dbfb86866a52cf7b2121414, 0x0031df ] } , - BigNum { limbs: [ 0xa701b8e3a721e0fefce536fb906424, 0x78afcd6fbd8fcad332db11efc5f13f, 0x00420e ] } , - BigNum { limbs: [ 0x96a06bc56604838f809e93711a4398, 0x71af9d3a27456dda1cad96fbf924ab, 0x0051cd ] } , - BigNum { limbs: [ 0x2703973a98577b707f616b8ee5bc69, 0x35a38c635602c55fbb5a72a5dee0a8, 0x002220 ] } , - BigNum { limbs: [ 0xe97d34c43ae230455fd6f6087dd940, 0x6bee2d12f0119b845d7232728e5d66, 0x000ebc ] } , - BigNum { limbs: [ 0xd426ce3bc379cebaa02908f78226c1, 0x3b64fc8a8d3697b57a95d72f49a7ec, 0x006531 ] } , - BigNum { limbs: [ 0xa2b5788f5d0442c24a231c74c130ec, 0xfe123c89cf7fd132123b65bf8f4969, 0x000d45 ] } , - BigNum { limbs: [ 0x1aee8a70a157bc3db5dce28b3ecf15, 0xa940ed13adc86207c5cca3e248bbea, 0x0066a7 ] } , - BigNum { limbs: [ 0x3021a882ed13f223669e65d81db790, 0x66a367686ff336b8fac82b124e1a66, 0x006135 ] } , - BigNum { limbs: [ 0x8d825a7d11480cdc99619927e24871, 0x40afc2350d54fc80dd3fde8f89eaed, 0x0012b8 ] } , - BigNum { limbs: [ 0x501a3130ac41ac068cf15833359558, 0x200bf29daceeee865dac2a421569c5, 0x007273 ] } , - BigNum { limbs: [ 0x6d89d1cf521a52f9730ea6ccca6aa9, 0x874736ffd05944b37a5bdf5fc29b8e, 0x00017a ] } , - BigNum { limbs: [ 0x8ee89022ade12b1c8f51a262773c9a, 0xdc80918b0b6cfa8a8e8fdd7c0b9ad0, 0x004a6a ] } , - BigNum { limbs: [ 0x2ebb72dd507ad3e370ae5c9d88c367, 0xcad2981271db38af49782c25cc6a83, 0x002982 ] } , - BigNum { limbs: [ 0x7ce86999d8cf80bbb10a3f606150a4, 0x56825c92e0ad63179e83cc6765cc83, 0x005063 ] } , - BigNum { limbs: [ 0x40bb9966258c7e444ef5bf9f9eaf5d, 0x50d0cd0a9c9ad02239843d3a7238d0, 0x00238a ] } , - BigNum { limbs: [ 0xe543fdc7ad70c6cc6f28934c0bd42b, 0x5d3d5da2d1df6f11cd203efbcb13a8, 0x00348f ] } , - BigNum { limbs: [ 0xd860053850eb383390d76bb3f42bd6, 0x4a15cbfaab68c4280ae7caa60cf1aa, 0x003f5e ] } , - BigNum { limbs: [ 0x0eafc16384819efb1f7297f3ac5bb3, 0xaf9617a212761ffed2078420af12b8, 0x0009f0 ] } , - BigNum { limbs: [ 0xaef4419c79da6004e08d670c53a44e, 0xf7bd11fb6ad2133b0600858128f29b, 0x0069fc ] } , - BigNum { limbs: [ 0x3e1383fdf44745e84faa392042d2a5, 0xc6f466851b52cbedfd0f227650fbb2, 0x000ac5 ] } , - BigNum { limbs: [ 0x7f907f020a14b917b055c5dfbd2d5c, 0xe05ec31861f5674bdaf8e72b8709a1, 0x006927 ] } , - BigNum { limbs: [ 0xd1e24827161b3c52ec094346a13715, 0xdc280419fc05f8f27ebdced81d8465, 0x006848 ] } , - BigNum { limbs: [ 0xebc1bad8e840c2ad13f6bbb95ec8ec, 0xcb2b258381423a47594a3ac9ba80ed, 0x000ba4 ] } , - BigNum { limbs: [ 0x929c27acbf6f07e83f6a18cfeb518f, 0x92649b4e9d41974e3c2e23fd3b703c, 0x00482e ] } , - BigNum { limbs: [ 0x2b07db533eecf717c095e63014ae72, 0x14ee8e4ee0069beb9bd9e5a49c9517, 0x002bbf ] } , - BigNum { limbs: [ 0xc0c01151e77ac9d0d89977bf0bdc0d, 0x539ffb8491bff9d6f3e18ece1fce90, 0x006c77 ] } , - BigNum { limbs: [ 0xfce3f1ae16e1352f27668740f423f4, 0x53b32e18eb883962e4267ad3b836c2, 0x000776 ] } , - BigNum { limbs: [ 0xb0f2c94bef0fd91021d2e0c26e422a, 0x46d640cb3d4962a382204a061caeb3, 0x004441 ] } , - BigNum { limbs: [ 0x0cb139b40f4c25efde2d1e3d91bdd7, 0x607ce8d23ffed09655e7bf9bbb56a0, 0x002fac ] } , - BigNum { limbs: [ 0x2d4d3e1c7d479fde7a6da7ca691b18, 0x89ab62c4fbddb1edd8487c81091411, 0x0065e4 ] } , - BigNum { limbs: [ 0x9056c4e381145f218592573596e4e9, 0x1da7c6d8816a814bffbf8d20cef142, 0x000e09 ] } , - BigNum { limbs: [ 0x37d271538939c9dc447a0c2580c1b0, 0xf4efefcd2cb6512b61ac434fabc80a, 0x004ff1 ] } , - BigNum { limbs: [ 0x85d191ac75223523bb85f2da7f3e51, 0xb26339d05091e20e765bc6522c3d49, 0x0023fb ] } , - BigNum { limbs: [ 0x7ac6ac2c5fc6aae82bf72f1e101f27, 0x397b76ce414298f3e9d95db1ff77c6, 0x006167 ] } , - BigNum { limbs: [ 0x42dd56d39e955417d408cfe1efe0da, 0x6dd7b2cf3c059a45ee2eabefd88d8d, 0x001286 ] } , - BigNum { limbs: [ 0x2dad77d8f9f9d1724c4670bbdc03b1, 0x201e6f07e5f85293c7255fd588af84, 0x005226 ] } , - BigNum { limbs: [ 0x8ff68b2704622d8db3b98e4423fc50, 0x8734ba95974fe0a610e2a9cc4f55cf, 0x0021c7 ] } , - BigNum { limbs: [ 0x31b85da4bc237714688a4f1fa7f14b, 0xe109ecf6858d35608d567d9e92a1ff, 0x0071cd ] } , - BigNum { limbs: [ 0x8beba55b423887eb9775afe0580eb6, 0xc6493ca6f7bafdd94ab18c03456354, 0x00021f ] } , - BigNum { limbs: [ 0xdfada603e1dce57091bb8ff457fef0, 0xab1fc1eafe4d5857d4623954c55217, 0x001f6e ] } , - BigNum { limbs: [ 0xddf65cfc1c7f198f6e446f0ba80111, 0xfc3367b27efadae203a5d04d12b33b, 0x00547e ] } , - BigNum { limbs: [ 0x0b92f0a63d757c8460d2f1041e0261, 0xbd0c7be45dbf29f747b2321911161e, 0x002e04 ] } , - BigNum { limbs: [ 0xb2111259c0e6827b9f2d0dfbe1fda0, 0xea46adb91f8909429055d788c6ef35, 0x0045e8 ] } , - BigNum { limbs: [ 0xe9526f62cf5f89cf2db8050e4f9564, 0x351ea0bfcade890fcc4f70e7158b78, 0x0045de ] } , - BigNum { limbs: [ 0xd451939d2efc7530d247f9f1b06a9d, 0x723488ddb269aa2a0bb898bac279da, 0x002e0f ] } , - BigNum { limbs: [ 0xefa682f06d4e5af29e4a823ec62ff7, 0x380508a24e273fcd7c23d264335814, 0x004fb7 ] } , - BigNum { limbs: [ 0xcdfd800f910da40d61b57cc139d00a, 0x6f4e20fb2f20f36c5be4373da4ad3e, 0x002436 ] } , - BigNum { limbs: [ 0x104a8fd24d2920608f5c5a9da5d75f, 0x767fcf95e5dcc416e94fc1bb33428e, 0x006f98 ] } , - BigNum { limbs: [ 0xad59732db132de9f70a3a4625a28a2, 0x30d35a07976b6f22eeb847e6a4c2c5, 0x000455 ] } , - BigNum { limbs: [ 0x1564f59be4c7d6869518116781cfd0, 0x408ea8993fc364be7c6db10b5df2f9, 0x0005dc ] } , - BigNum { limbs: [ 0xa83f0d64199428796ae7ed987e3031, 0x66c481043d84ce7b5b9a58967a125a, 0x006e11 ] } , - BigNum { limbs: [ 0xbeb7b108aa8f9683962950a20d381c, 0xa5ebff173102585496360c27273617, 0x004ec3 ] } , - BigNum { limbs: [ 0xfeec51f753cc687c69d6ae5df2c7e5, 0x01672a864c45dae541d1fd7ab0cf3b, 0x00252a ] } , - BigNum { limbs: [ 0x866c926ee97c85cab4e46baa195ab3, 0x66ba6bf3cfddced0628be5092707ba, 0x000975 ] } , - BigNum { limbs: [ 0x3737709114df79354b1b9355e6a54e, 0x4098bda9ad6a6469757c2498b0fd99, 0x006a78 ] } , - BigNum { limbs: [ 0x6bb67b96015a3f6ba02586580c9828, 0x321737cad727f948868a959d3c7c45, 0x00240a ] } , - BigNum { limbs: [ 0x51ed8769fd01bf945fda78a7f367d9, 0x753bf1d2a62039f1517d74049b890e, 0x004fe3 ] } , - BigNum { limbs: [ 0x7dbc3842f33819408fa144b9f541ac, 0x76014b996424530f5e45c2611e3a91, 0x006b1e ] } , - BigNum { limbs: [ 0x3fe7cabd0b23e5bf705eba460abe55, 0x3151de041923e02a79c24740b9cac2, 0x0008cf ] } , - BigNum { limbs: [ 0x56dea51579fdb5cc2f4681123413c8, 0xe8ffdea9ed490a6e19acb0cb846939, 0x00508a ] } , - BigNum { limbs: [ 0x66c55dea845e4933d0b97dedcbec39, 0xbe534af38fff28cbbe5b58d6539c1a, 0x002362 ] } , - BigNum { limbs: [ 0xd6571e990bd165950279356e9dfd8b, 0x3d3e7ee64c0ec1c2a36b9ce85c8901, 0x0013f0 ] } , - BigNum { limbs: [ 0xe74ce466f28a996afd86c991620276, 0x6a14aab731397177349c6cb97b7c51, 0x005ffd ] } , - BigNum { limbs: [ 0xc11ba5bf07249ec7835c8b97119fcb, 0xa9a6734e0f793fe0112cac148f858d, 0x003bdc ] } , - BigNum { limbs: [ 0xfc885d40f73760387ca37368ee6036, 0xfdacb64f6dcef359c6db5d8d487fc5, 0x003810 ] } , - BigNum { limbs: [ 0xd7368a349bef3ec3325d7e2208398b, 0xfcf888e8f994ad436c377f84b369ff, 0x000955 ] } , - BigNum { limbs: [ 0xe66d78cb626cc03ccda280ddf7c676, 0xaa5aa0b483b385f66bd08a1d249b53, 0x006a97 ] } , - BigNum { limbs: [ 0xd66488af38b113a247a51814034c74, 0xeaacd919cae8b4513d56b918973abe, 0x0057d7 ] } , - BigNum { limbs: [ 0xe73f7a50c5aaeb5db85ae6ebfcb38d, 0xbca65083b25f7ee89ab1508940ca94, 0x001c15 ] } , - BigNum { limbs: [ 0x8d622f705bc6369880ad615f24c9eb, 0x459f44dd3178e6798708085902bdb9, 0x000862 ] } , - BigNum { limbs: [ 0x3041d38fa295c8677f529da0db3616, 0x61b3e4c04bcf4cc051000148d5479a, 0x006b8b ] } , - BigNum { limbs: [ 0x86e9a5a65c5e4b6e74700c9a834868, 0x343f0ef8705f52f54fb1d96b6f222d, 0x00597e ] } , - BigNum { limbs: [ 0x36ba5d59a1fdb3918b8ff2657cb799, 0x73141aa50ce8e0448856303668e326, 0x001a6f ] } , - BigNum { limbs: [ 0x50d85d8ad46cc4d1964cd9073d2ef3, 0x59eeaf17f736c403e5b3483713226b, 0x0066ab ] } , - BigNum { limbs: [ 0x6ccba57529ef3a2e69b325f8c2d10e, 0x4d647a8586116f35f254c16ac4e2e8, 0x000d42 ] } , - BigNum { limbs: [ 0xe6ffd25f4248045e3c716690129f4a, 0xd8f43be1f980e923fcf665ec834f7f, 0x000b94 ] } , - BigNum { limbs: [ 0xd6a430a0bc13faa1c38e986fed60b7, 0xce5eedbb83c74a15db11a3b554b5d3, 0x006858 ] } , - BigNum { limbs: [ 0x023a51166735d2a0748a13a6cddfec, 0xf9b143ccc689086fcc5417b6e8fc68, 0x003b04 ] } , - BigNum { limbs: [ 0xbb69b1e997262c5f8b75eb59322015, 0xada1e5d0b6bf2aca0bb3f1eaef08eb, 0x0038e8 ] } , - BigNum { limbs: [ 0x03ddaf59606760210583c72f63c95f, 0xf95a24ed152ce2246ee4ea42a23ecc, 0x002a3a ] } , - BigNum { limbs: [ 0xb9c653a69df49edefa7c37d09c36a2, 0xadf904b0681b511569231f5f35c687, 0x0049b2 ] } , - BigNum { limbs: [ 0x6955f410ce4d4396ddead18be25981, 0xb2edaa2a3b71b1423003a85b6aef57, 0x0010ad ] } , - BigNum { limbs: [ 0x544e0eef300ebb6922152d741da680, 0xf4657f7341d681f7a80461466d15fc, 0x00633f ] } , - BigNum { limbs: [ 0x80ec5c6b7891fdd631490f7fcf4d23, 0x42ea86c90e67d6071fb0171d806107, 0x0003be ] } , - BigNum { limbs: [ 0x3cb7a69485ca0129ceb6ef8030b2de, 0x6468a2d46ee05d32b857f28457a44c, 0x00702f ] } , - BigNum { limbs: [ 0x5499261f2a06642f454a0ed4ca515e, 0x19d8c18e2de6d9d035b87b80d10d39, 0x001626 ] } , - BigNum { limbs: [ 0x690adce0d4559ad0bab5f02b35aea3, 0x8d7a680f4f615969a24f8e2106f81a, 0x005dc7 ] } , - BigNum { limbs: [ 0xfe3e9c089ca0545a715ae4ea34d56e, 0x031c6da66e8b98f1c7c41393106f03, 0x0030f3 ] } , - BigNum { limbs: [ 0xbf6566f761bbaaa58ea51a15cb2a93, 0xa436bbf70ebc9a481043f60ec7964f, 0x0042fa ] } , - BigNum { limbs: [ 0x81421cca1ced58197c87517f584501, 0x8f2e6492dbd866656b7bff443c202c, 0x0026b0 ] } , - BigNum { limbs: [ 0x3c61e635e16ea6e68378ad80a7bb00, 0x1824c50aa16fccd46c8c0a5d9be527, 0x004d3d ] } , - BigNum { limbs: [ 0x8b9ea6291a21d8101af8cc9a89a9d4, 0x6d133ddbe0d3532d52df95788823b3, 0x000dca ] } , - BigNum { limbs: [ 0x32055cd6e43a26efe507326576562d, 0x3a3febc19c74e00c852874294fe1a0, 0x006623 ] } , - BigNum { limbs: [ 0x2b972840261178ff3be3802b3c98d0, 0xc2711ac35b6476c07c2f1743ea9660, 0x006ab5 ] } , - BigNum { limbs: [ 0x920cdabfd84a8600c41c7ed4c36731, 0xe4e20eda21e3bc795bd8f25ded6ef3, 0x000937 ] } , - BigNum { limbs: [ 0xf3867a9619ff48810d0abb9247631c, 0x64c6583d90b0094502db0777c644fc, 0x0036d5 ] } , - BigNum { limbs: [ 0xca1d8869e45cb67ef2f5436db89ce5, 0x428cd15fec9829f4d52d022a11c056, 0x003d18 ] } , - BigNum { limbs: [ 0xf8913245901cde2587ef05f5eb129e, 0xbded6f52d232bdfe1f88215a311d08, 0x005fec ] } , - BigNum { limbs: [ 0xc512d0ba6e3f20da7810f90a14ed63, 0xe965ba4aab15753bb87fe847a6e84a, 0x001400 ] } , - BigNum { limbs: [ 0x0a1edcd2f0555740fb90fa96cc6ea5, 0x778745c49bde40dcc6ace097f8a5a5, 0x000348 ] } , - BigNum { limbs: [ 0xb385262d0e06a7bf046f046933915c, 0x2fcbe3d8e169f25d115b2909df5fae, 0x0070a5 ] } , - BigNum { limbs: [ 0x304383b117c250fae29bdd9109add1, 0xefaa375735aeb6cc2deecbf063a8ec, 0x003f86 ] } , - BigNum { limbs: [ 0x8d607f4ee699ae051d64216ef65230, 0xb7a8f24647997c6daa193db1745c67, 0x003466 ] } , - BigNum { limbs: [ 0xe7ac34fc2134eb59db6ee89a045876, 0x443c0ca047b91ea16a7bde084fb549, 0x004b8b ] } , - BigNum { limbs: [ 0xd5f7ce03dd2713a624911665fba78b, 0x63171cfd358f14986d8c2b99885009, 0x002862 ] } , - BigNum { limbs: [ 0xbf33615ffd9e1021257e7872974ff7, 0xcf8dfa2422928f6defc1516ea78a1a, 0x001043 ] } , - BigNum { limbs: [ 0xfe70a1a000bdeededa81868d68b00a, 0xd7c52f795ab5a3cbe846b833307b38, 0x0063a9 ] } , - BigNum { limbs: [ 0xdb9251f06f19baa8c33edce87e1f45, 0xfd64d9aff0aa435418c04418536bef, 0x007122 ] } , - BigNum { limbs: [ 0xe211b10f8f4244573cc1221781e0bc, 0xa9ee4fed8c9defe5bf47c589849963, 0x0002ca ] } , - BigNum { limbs: [ 0x862745d40aec32c13d971297725adf, 0x8af8c1fd7749c84a8ca472f3dba4c7, 0x0030dd ] } , - BigNum { limbs: [ 0x377cbd2bf36fcc3ec268ec688da522, 0x1c5a67a005fe6aef4b6396adfc608c, 0x004310 ] } , - BigNum { limbs: [ 0x98161a5481f008b6d28dd8a3744d7b, 0x9475bf2751a2effef2e2d97a2f97e7, 0x005596 ] } , - BigNum { limbs: [ 0x258de8ab7c6bf6492d72265c8bb286, 0x12dd6a762ba5433ae5253027a86d6c, 0x001e57 ] } , - BigNum { limbs: [ 0xc141bd3dd6ef00ad461d1b271c9c0c, 0x17c1f08b58500624ce1d9620ecc224, 0x000cc9 ] } , - BigNum { limbs: [ 0xfc6245c2276cfe52b9e2e3d8e363f5, 0x8f91391224f82d1509ea7380eb432e, 0x006724 ] } , - BigNum { limbs: [ 0x120b7188c4e4d3c0315a59f5503426, 0x7b96b545ff4fcabe0bdfb8abd5275e, 0x004850 ] } , - BigNum { limbs: [ 0xab98917739772b3fcea5a50aafcbdb, 0x2bbc74577df8687bcc2850f602ddf5, 0x002b9d ] } , - BigNum { limbs: [ 0x642f6354efb709352b2ae5d10ed00c, 0xb7490ef28001950c6ea6d3140de0dd, 0x004c65 ] } , - BigNum { limbs: [ 0x59749fab0ea4f5cad4d5192ef12ff5, 0xf00a1aaafd469e2d6961368dca2476, 0x002787 ] } , - BigNum { limbs: [ 0xf6586deb66249928e1e77c1e2280d9, 0x14d9b5bd55c1afe3fdc49208d90c4a, 0x0000e1 ] } , - BigNum { limbs: [ 0xc74b9514983765d71e1882e1dd7f28, 0x927973e027868355da437798fef908, 0x00730c ] } , - BigNum { limbs: [ 0xdc19f540cb73e3dd53d7add08cc541, 0x1e70e21dbdce879291f82fde77193e, 0x000d69 ] } , - BigNum { limbs: [ 0xe18a0dbf32e81b22ac28512f733ac0, 0x88e2477fbf79aba7460fd9c360ec14, 0x006684 ] } , - BigNum { limbs: [ 0x55ad3ac9782d2b7c9743bf0601fbe4, 0x67ecc4d30489ba019131e55fa34d46, 0x0015da ] } , - BigNum { limbs: [ 0x67f6c836862ed38368bc3ff9fe041d, 0x3f6664ca78be793846d6244234b80d, 0x005e13 ] } , - BigNum { limbs: [ 0x2842f43465c239c49152fe89b787e5, 0xb05e79e40675fc3fa4b049f9861bf2, 0x005112 ] } , - BigNum { limbs: [ 0x95610ecb9899c53b6ead007648781c, 0xf6f4afb976d236fa3357bfa851e961, 0x0022da ] } , - BigNum { limbs: [ 0x1388a4cb42e47774dc9fc905db3b7b, 0x120f170d6e72f2b163a947af169f22, 0x00231d ] } , - BigNum { limbs: [ 0xaa1b5e34bb77878b236035fa24c486, 0x954412900ed54088745ec1f2c16631, 0x0050d0 ] } , - BigNum { limbs: [ 0x337fe716c09367b1fd4ee32c5de83f, 0x22ad9a9beffb98289d0281dff4ad47, 0x001b7d ] } , - BigNum { limbs: [ 0x8a241be93dc8974e02b11bd3a217c2, 0x84a58f018d4c9b113b0587c1e3580c, 0x005870 ] } , - BigNum { limbs: [ 0x2fe991895b47fac719e5d3246b8306, 0x2a1cb432bda14c5b90a7407f9b61f6, 0x000652 ] } , - BigNum { limbs: [ 0x8dba7176a3140438e61a2bdb947cfb, 0x7d36756abfa6e6de4760c9223ca35d, 0x006d9b ] } , - BigNum { limbs: [ 0x431054cb34d3fb33ec73192134d8d2, 0x09c07d447dcf49302bc8edc2679bdd, 0x004b76 ] } , - BigNum { limbs: [ 0x7a93ae34c98803cc138ce5decb272f, 0x9d92ac58ff78ea09ac3f1bdf706976, 0x002877 ] } , - BigNum { limbs: [ 0xcd6fe8ec4b05a42d79cba08538b82b, 0x2b50ec245e3c56d1a55a68fd2c29a0, 0x005f7a ] } , - BigNum { limbs: [ 0xf0341a13b3565ad286345e7ac747d6, 0x7c023d791f0bdc6832ada0a4abdbb2, 0x001473 ] } , - BigNum { limbs: [ 0x71545d0ad81ef7404a64280c1cbef2, 0x897717d8457c34faffa2843da18d5f, 0x000fd2 ] } , - BigNum { limbs: [ 0x4c4fa5f5263d07bfb59bd6f3e3410f, 0x1ddc11c537cbfe3ed86585643677f4, 0x00641b ] } , - BigNum { limbs: [ 0x9c5f519777a7ca20c8c8277bd772b8, 0x0e6424004bc267145a9e28800a80a0, 0x000c98 ] } , - BigNum { limbs: [ 0x2144b16886b434df3737d784288d49, 0x98ef059d3185cc257d69e121cd84b3, 0x006755 ] } , - BigNum { limbs: [ 0xe2cb11b8e507e7071c4f795885040f, 0xd35030c90bd06be11063f8748d7968, 0x0038ed ] } , - BigNum { limbs: [ 0xdad8f147195417f8e3b085a77afbf2, 0xd402f8d47177c758c7a4112d4a8bea, 0x003aff ] } , - BigNum { limbs: [ 0xa9ebe0f7a4e8d76014cf9e21188ccb, 0xbb4e6a8384a97bde3c12e3747e84e1, 0x004619 ] } , - BigNum { limbs: [ 0x13b822085973279feb3060dee77336, 0xec04bf19f89eb75b9bf5262d598072, 0x002dd3 ] } , - BigNum { limbs: [ 0xef72956c37abf34af7aaaa86fd3fc3, 0x0f88dc7101de272092f76d82b96918, 0x00070a ] } , - BigNum { limbs: [ 0xce316d93c6b00bb50855547902c03e, 0x97ca4d2c7b6a0c1945109c1f1e9c3a, 0x006ce3 ] } , - BigNum { limbs: [ 0x54619b1123c8ed46437e2d1a0ae920, 0x4f0c5c5a4696aa5b5b7cf8418a7563, 0x00043d ] } , - BigNum { limbs: [ 0x694267eeda9311b9bc81d1e5f516e1, 0x5846cd4336b188de7c8b11604d8ff0, 0x006fb0 ] } , - BigNum { limbs: [ 0x98b1ef36e487c1a9d1b6edc719fe23, 0xc4c3ffa3004ddb76546e0860fe1298, 0x006c0f ] } , - BigNum { limbs: [ 0x24f213c919d43d562e491138e601de, 0xe28f29fa7cfa57c3839a0140d9f2bb, 0x0007dd ] } , - BigNum { limbs: [ 0x5225a30b2a3612dd51799cb5fd9272, 0xb62aa9bcf696b0e8b6ea41c6d1740d, 0x001bb2 ] } , - BigNum { limbs: [ 0x6b7e5ff4d425ec22ae86624a026d8f, 0xf1287fe086b18251211dc7db069146, 0x00583a ] } , - BigNum { limbs: [ 0x3cf1afccea050c8bf981972d758408, 0xc157c59ba9e9a7f26bca77a1bb63cd, 0x006669 ] } , - BigNum { limbs: [ 0x80b253331456f274067e67d28a7bf9, 0xe5fb6401d35e8b476c3d92001ca186, 0x000d83 ] } , - BigNum { limbs: [ 0xe416464e90f0d3373b0bfefcf32a40, 0x905b8655c1b0a809631c69ebcebc4f, 0x002c3c ] } , - BigNum { limbs: [ 0xd98dbcb16d6b2bc8c4f400030cd5c1, 0x16f7a347bb978b3074eb9fb6094903, 0x0047b1 ] } , - BigNum { limbs: [ 0x0a731b9e24201dbc92e2666bd98e2c, 0x016f4632e15501509b448bc138b2df, 0x000664 ] } , - BigNum { limbs: [ 0xb330e761da3be1436d1d98942671d5, 0xa5e3e36a9bf331e93cc37de09f5274, 0x006d89 ] } , - BigNum { limbs: [ 0x7df07c8d76839dfc7346f3a061da9d, 0x85fc7f11c541b93fa635ccce15f4a5, 0x005efe ] } , - BigNum { limbs: [ 0x3fb3867287d861038cb90b5f9e2564, 0x2156aa8bb80679fa31d23cd3c210ae, 0x0014ef ] } , - BigNum { limbs: [ 0x8b7288d32271993a73ed0e14baa196, 0x60ba6fb95b03875cb66f4ba9da1ff1, 0x004fa2 ] } , - BigNum { limbs: [ 0x32317a2cdbea65c58c12f0eb455e6b, 0x4698b9e42244abdd2198bdf7fde562, 0x00244b ] } , - BigNum { limbs: [ 0x2ed26dcce2c397d7f7055b33550184, 0x0404be4c3a804eb94238db863afb59, 0x00605e ] } , - BigNum { limbs: [ 0x8ed195331b98672808faa3ccaafe7d, 0xa34e6b5142c7e48095cf2e1b9d09fa, 0x00138f ] } , - BigNum { limbs: [ 0x50bef6179b3e22c8368bda8176c1ca, 0xec56fb1bfac1b59a50f6a6332576cf, 0x0030a4 ] } , - BigNum { limbs: [ 0x6ce50ce8631ddc37c974247e893e37, 0xbafc2e8182867d9f8711636eb28e84, 0x004348 ] } , - BigNum { limbs: [ 0xe266e5c9c83b37fa6d8632b98df179, 0x5b8e714077c35363220d789b598e6e, 0x006692 ] } , - BigNum { limbs: [ 0xdb3d1d363620c7059279cc46720e88, 0x4bc4b85d0584dfd6b5fa91067e76e4, 0x000d5b ] } , - BigNum { limbs: [ 0x52cc381c35e5d7367094c4b720a5d9, 0xd2ccee56d3f16a5ce9fe7ac94f551b, 0x0049f1 ] } , - BigNum { limbs: [ 0x6ad7cae3c87627c98f6b3a48df5a28, 0xd4863b46a956c8dcee098ed888b038, 0x0029fb ] } , - BigNum { limbs: [ 0xf3eef0e8dbc8437ec6900bec2c4481, 0x901c7dc6acfcec0012dcb9f62d5075, 0x001644 ] } , - BigNum { limbs: [ 0xc9b512172293bb81396ff313d3bb80, 0x1736abd6d04b4739c52b4fabaab4dd, 0x005da9 ] } , - BigNum { limbs: [ 0x2629bd332c676dc00f86c35bcb6885, 0x1b881ea7f2f61a0f3eae93cad1c0ff, 0x0038f8 ] } , - BigNum { limbs: [ 0x977a45ccd1f4913ff0793ba434977c, 0x8bcb0af58a52192a995975d7064454, 0x003af5 ] } , - BigNum { limbs: [ 0xce744ed17bb2e2c550ff6c874b4bad, 0xb7f01bb3756aab78670e6701bfaeae, 0x007061 ] } , - BigNum { limbs: [ 0xef2fb42e82a91c3aaf009278b4b454, 0xef630dea07dd87c170f9a2a01856a4, 0x00038b ] } , - BigNum { limbs: [ 0xf4bcc3e04dc69453991724037e01e3, 0xa1b42edfe266fabc93ca2bb460577f, 0x0041d1 ] } , - BigNum { limbs: [ 0xc8e73f1fb0956aac66e8dafc81fe1e, 0x059efabd9ae1387d443ddded77add3, 0x00321c ] } , - BigNum { limbs: [ 0x8470414123dbac1e5f55aa54a7bfd0, 0xc636a252bb48e1088335d44389c3dd, 0x006de7 ] } , - BigNum { limbs: [ 0x3933c1beda8052e1a0aa54ab584031, 0xe11c874ac1ff523154d2355e4e4176, 0x000605 ] } , - BigNum { limbs: [ 0x7a5855f765a13a9bf559997eb9a267, 0xf7fb7c3aed0a5508f84c0117aaf087, 0x004bac ] } , - BigNum { limbs: [ 0x434bad0898bac4640aa66581465d9a, 0xaf57ad62903dde30dfbc088a2d14cc, 0x002840 ] } , - BigNum { limbs: [ 0x1b0e3b20190bd8d1bdb8e8290455d4, 0xcdc95eb6e1d397581d7998656c0f17, 0x0071c8 ] } , - BigNum { limbs: [ 0xa295c7dfe550262e424716d6fbaa2d, 0xd989cae69b749be1ba8e713c6bf63c, 0x000224 ] } , - BigNum { limbs: [ 0xbb28bae56463270ec112748503a635, 0x8a89b08eee1c1580b324ae690d0e9e, 0x006b81 ] } , - BigNum { limbs: [ 0x027b481a99f8d7f13eed8a7afc59cc, 0x1cc9790e8f2c1db924e35b38caf6b5, 0x00086c ] } , - BigNum { limbs: [ 0x8e6e545d6dafa949fb3db31c712d0f, 0xfcf12d76afe8e6bf54ef4f796796d7, 0x0027fb ] } , - BigNum { limbs: [ 0x2f35aea290ac55b604c24be38ed2f2, 0xaa61fc26cd5f4c7a8318ba28706e7c, 0x004bf1 ] } , - BigNum { limbs: [ 0x78db29ce8ac2214b3ccae1e07a5b6d, 0x4b4a2be5c752a6975f7096c5b91f53, 0x002171 ] } , - BigNum { limbs: [ 0x44c8d9317399ddb4c3351d1f85a494, 0x5c08fdb7b5f58ca2789772dc1ee600, 0x00527c ] } , - BigNum { limbs: [ 0x10cb417026d3476ef714fba6067a59, 0x015808014394d9ba003a51d63941fa, 0x005328 ] } , - BigNum { limbs: [ 0xacd8c18fd788b79108eb0359f985a8, 0xa5fb219c39b3597fd7cdb7cb9ec359, 0x0020c5 ] } , - BigNum { limbs: [ 0x8a3577f1545a01116eceec8e11ba5e, 0x3c3716a507e155691873bf136a9049, 0x00350a ] } , - BigNum { limbs: [ 0x336e8b0eaa01fdee91311271ee45a3, 0x6b1c12f87566ddd0bf944a8e6d750a, 0x003ee3 ] } , - BigNum { limbs: [ 0xaf69b8d3eb54778eed1c02c2b53190, 0x31706075d57e61356b27e1fcc425df, 0x005913 ] } , - BigNum { limbs: [ 0x0e3a4a2c1307877112e3fc3d4ace71, 0x75e2c927a7c9d2046ce027a513df74, 0x001ada ] } , - BigNum { limbs: [ 0x6a8701ef94eaf2e552420e264134db, 0xa91a0744c00bdb867760c3ba9fa4d0, 0x002188 ] } , - BigNum { limbs: [ 0x531d011069710c1aadbdf0d9becb26, 0xfe392258bd3c57b360a745e7386083, 0x005264 ] } , - BigNum { limbs: [ 0xd48b8eab94d2ba5388a6e5eabeab40, 0x1acd7eec4a7442ecf758ff40de70ea, 0x005633 ] } , - BigNum { limbs: [ 0xe9187454698944ac775919154154c1, 0x8c85aab132d3f04ce0af0a60f99468, 0x001dba ] } , - BigNum { limbs: [ 0x518dfe4db63b5b88fcbf85f2aa23b5, 0x370ad80b91f136c286f7165f193e60, 0x00358d ] } , - BigNum { limbs: [ 0x6c1604b24820a3770340790d55dc4c, 0x70485191eb56fc775110f342bec6f3, 0x003e60 ] } , - BigNum { limbs: [ 0xd2a8c071c5b8f5d73dddb928d44d5e, 0xd92031b41a4e07fba6583023b7b96f, 0x002aea ] } , - BigNum { limbs: [ 0xeafb428e38a30928c22245d72bb2a3, 0xce32f7e962fa2b3e31afd97e204be3, 0x004902 ] } , - BigNum { limbs: [ 0x835eed7b54edf00ca067fa6f033fae, 0xd26d2ed3085ee14964a632778e10a2, 0x005cb1 ] } , - BigNum { limbs: [ 0x3a451584a96e0ef35f980490fcc053, 0xd4e5faca74e951f07361d72a49f4b1, 0x00173b ] } , - BigNum { limbs: [ 0x8f8e5be00aa093e86c146ea8025c66, 0x3a3479db5f0279bdf58d29d91d2c62, 0x005ce1 ] } , - BigNum { limbs: [ 0x2e15a71ff3bb6b1793eb9057fda39b, 0x6d1eafc21e45b97be27adfc8bad8f1, 0x00170c ] } , - BigNum { limbs: [ 0x2c03e64ee03ec670444ae78e553245, 0x520f461bf4acfa7b2d3b32b7658ce8, 0x003620 ] } , - BigNum { limbs: [ 0x91a01cb11e1d388fbbb51771aacdbc, 0x5543e381889b38beaaccd6ea72786b, 0x003dcd ] } , - BigNum { limbs: [ 0xa277d70a802c047400f28818861029, 0x93e4b02a38bdc4b585376eab030748, 0x004e74 ] } , - BigNum { limbs: [ 0x1b2c2bf57e2ffa8bff0d76e779efd8, 0x136e7973448a6e8452d09af6d4fe0b, 0x002579 ] } , - BigNum { limbs: [ 0x2752ee507d860cc847b7608bb32497, 0x72ab18821edbe737cee8a3d2f844d9, 0x006c55 ] } , - BigNum { limbs: [ 0x965114af80d5f237b8489e744cdb6a, 0x34a8111b5e6c4c02091f65cedfc07a, 0x000798 ] } , - BigNum { limbs: [ 0xd5d7310b6c434221f5c649b8a8450d, 0x51a1d28fd7c178f914e9d363c2fea8, 0x000783 ] } , - BigNum { limbs: [ 0xe7ccd1f49218bcde0a39b54757baf4, 0x55b1570da586ba40c31e363e1506aa, 0x006c6a ] } , - BigNum { limbs: [ 0xe649b6e2f4144275a809846d88e77b, 0xaf6c15fc2de1fc37ebff50507b437e, 0x00239f ] } , - BigNum { limbs: [ 0xd75a4c1d0a47bc8a57f67a92771886, 0xf7e713a14f663701ec08b9515cc1d4, 0x00504d ] } , - BigNum { limbs: [ 0x7334b1a80ff50012f6d0fcfcb4bbda, 0x9ec015b1c1e48828ab99c1ab863fe8, 0x00246d ] } , - BigNum { limbs: [ 0x4a6f5157ee66feed092f02034b4427, 0x089313ebbb63ab112c6e47f651c56b, 0x004f80 ] } , - BigNum { limbs: [ 0x2799d54092d2d6d446d7483d43c505, 0x09725e673920f35b87f5473faef876, 0x0064c2 ] } , - BigNum { limbs: [ 0x960a2dbf6b89282bb928b6c2bc3afc, 0x9de0cb3644273fde5012c262290cdd, 0x000f2b ] } , - BigNum { limbs: [ 0xe4ab021bf6a40ad743181bf3995f80, 0xfdb4df5a01f7d5a3f836a69f95c324, 0x0019ce ] } , - BigNum { limbs: [ 0xd8f900e407b7f428bce7e30c66a081, 0xa99e4a437b505d95dfd1630242422e, 0x005a1e ] } , - BigNum { limbs: [ 0x403f76060a0de6fb311559ee0b0518, 0x3d7c276b68ccf930cc3d6405609a28, 0x003209 ] } , - BigNum { limbs: [ 0x7d648cf9f44e1804ceeaa511f4fae9, 0x69d70232147b3a090bcaa59c776b2b, 0x0041e4 ] } , - BigNum { limbs: [ 0x97c9d4fb8e28000443006ef0337d82, 0xa46763572fc3c3a10cfe101b7a8183, 0x002694 ] } , - BigNum { limbs: [ 0x25da2e047033fefbbcff900fcc827f, 0x02ebc6464d846f98cb09f9865d83d0, 0x004d59 ] } , - BigNum { limbs: [ 0xcf940508e5e3e09f4ec853b7df991d, 0xeac5b0c9b97ba1c6303e45d8434d4b, 0x005f93 ] } , - BigNum { limbs: [ 0xee0ffdf718781e60b137ab482066e4, 0xbc8d78d3c3cc9173a7c9c3c994b807, 0x001459 ] } , - BigNum { limbs: [ 0x6b483f2e315844ec7abcf910ab4efd, 0x39d0383014c2f7421c93535e2bfd8a, 0x006a97 ] } , - BigNum { limbs: [ 0x525bc3d1cd03ba13854305ef54b104, 0x6d82f16d68853bf7bb74b643ac07c9, 0x000956 ] } , - BigNum { limbs: [ 0x5f74f25ae307f516cade22890eb478, 0x3d3b3c65ae6c6059e06b34576964ec, 0x006802 ] } , - BigNum { limbs: [ 0x5e2f10a51b5409e93521dc76f14b89, 0x6a17ed37cedbd2dff79cd54a6ea067, 0x000beb ] } , - BigNum { limbs: [ 0x6830a4e946304e5df8c04e1fd5899a, 0x2835311c95860b59b3a1cbe1b04a6f, 0x00097d ] } , - BigNum { limbs: [ 0x55735e16b82bb0a2073fb0e02a7667, 0x7f1df880e7c227e024663dc027bae4, 0x006a70 ] } , - BigNum { limbs: [ 0x816d865e2c5c181d51a84f4db96996, 0xc66aaa0738343a5c1dcbb68b1018de, 0x006005 ] } , - BigNum { limbs: [ 0x3c367ca1d1ffe6e2ae57afb246966b, 0xe0e87f964513f8ddba3c5316c7ec75, 0x0013e7 ] } , - BigNum { limbs: [ 0x09c2ec7e394b5822a595c06ef6a23a, 0x747bdfda702a6eb07ff6d8245ffdd1, 0x0033d4 ] } , - BigNum { limbs: [ 0xb3e11681c510a6dd5a6a3e91095dc7, 0x32d749c30d1dc4895811317d780782, 0x004019 ] } , - BigNum { limbs: [ 0x005ec34ecba796d3201623f00bc8b6, 0x0ab8f3ac593e84547f014f9368d681, 0x0041c8 ] } , - BigNum { limbs: [ 0xbd453fb132b4682cdfe9db0ff4374b, 0x9c9a35f12409aee55906ba0e6f2ed2, 0x003225 ] } , - BigNum { limbs: [ 0xf6aec9a949dd0573e1b9cb5e186571, 0xaeaccd9d736b4d62a1eab09aecde18, 0x004fa8 ] } , - BigNum { limbs: [ 0xc6f53956b47ef98c1e4633a1e79a90, 0xf8a65c0009dce5d7361d5906eb273a, 0x002444 ] } , - BigNum { limbs: [ 0x49fd686bced7f42e2ba69e1629d925, 0xa8db777b42a2ab6faa2a76aa9abce5, 0x005b77 ] } , - BigNum { limbs: [ 0x73a69a942f840ad1d45960e9d626dc, 0xfe77b2223aa587ca2ddd92f73d486e, 0x001875 ] } , - BigNum { limbs: [ 0x359f01d863d263311797307a785ec6, 0x183824ddac3bc0e940a0e4e72a8de6, 0x005afc ] } , - BigNum { limbs: [ 0x880501279a899bcee868ce8587a13b, 0x8f1b04bfd10c7250976724baad776d, 0x0018f1 ] } , - BigNum { limbs: [ 0x09d049afcd3cfc57db0f446570d69e, 0x2a99aed23b0261e36aa745fb1dae33, 0x003d19 ] } , - BigNum { limbs: [ 0xb3d3b950311f02a824f0ba9a8f2963, 0x7cb97acb4245d1566d60c3a6ba5720, 0x0036d4 ] } , - BigNum { limbs: [ 0x3411624b4f9d9c3ce8934f4459131f, 0x6914e72a4a1345f60d088cf58860cf, 0x001d88 ] } , - BigNum { limbs: [ 0x8992a0b4aebe62c3176cafbba6ece2, 0x3e3e42733334ed43caff7cac4fa484, 0x005665 ] } , - BigNum { limbs: [ 0x7f70c48ce1ee7815d0fcee9ab3e398, 0x617008f760cf025c91c7517c47be59, 0x00010d ] } , - BigNum { limbs: [ 0x3e333e731c6d86ea2f0310654c1c69, 0x45e320a61c7930dd4640b8259046fa, 0x0072e0 ] } , - BigNum { limbs: [ 0x08a93f36d66515f2e98be25d15e60e, 0x78aca0cee7df2385f091abb4beac52, 0x001429 ] } , - BigNum { limbs: [ 0xb4fac3c927f6e90d16741ca2ea19f3, 0x2ea688ce95690fb3e7765ded195901, 0x005fc4 ] } , - BigNum { limbs: [ 0x857ef8141e71e5bc61d3efc013feb5, 0x9aea88d057e045d8104307a80b8fd7, 0x00148b ] } , - BigNum { limbs: [ 0x38250aebdfea19439e2c0f3fec014c, 0x0c68a0cd2567ed61c7c501f9cc757c, 0x005f62 ] } , - BigNum { limbs: [ 0x8c53be2d93aae380a283ff1f4cfa39, 0x3380d7113fc000f1edc5c284064466, 0x00106c ] } , - BigNum { limbs: [ 0x315044d26ab11b7f5d7bffe0b305c8, 0x73d2528c3d883247ea42471dd1c0ed, 0x006381 ] } , - BigNum { limbs: [ 0x3cb7b786911fdf5db8e93e9ab4c037, 0x312e325b3ea5140386ddcd5ef68396, 0x000aeb ] } , - BigNum { limbs: [ 0x80ec4b796d3c1fa24716c0654b3fca, 0x7624f7423ea31f36512a3c42e181bd, 0x006902 ] } , - BigNum { limbs: [ 0xe84772bc40ead03dc8b5f6a5fb308a, 0x598494746f8ec57d696fed1a0bf819, 0x003a10 ] } , - BigNum { limbs: [ 0xd55c9043bd712ec2374a085a04cf77, 0x4dce95290db96dbc6e981c87cc0d39, 0x0039dd ] } , - BigNum { limbs: [ 0xfe2f90251981c69f406193091ce7ef, 0xf48779fa3d8faec1c98ba14dabc640, 0x00081b ] } , - BigNum { limbs: [ 0xbf7472dae4da3860bf9e6bf6e31812, 0xb2cbafa33fb884780e7c68542c3f12, 0x006bd1 ] } , - BigNum { limbs: [ 0xe088aadb655540600f8630a750ce68, 0xd877c086dabbc6935525c93afcc8cc, 0x005775 ] } , - BigNum { limbs: [ 0xdd1b58249906be9ff079ce58af3199, 0xcedb6916a28c6ca682e24066db3c86, 0x001c77 ] } , - BigNum { limbs: [ 0x0adf8f2a0e6a4ce94b164c81822ef6, 0xa25f73dcc3cfba674e9566fb87b437, 0x0020f7 ] } , - BigNum { limbs: [ 0xb2c473d5eff1b216b4e9b27e7dd10b, 0x04f3b5c0b97878d28972a2a650511c, 0x0052f6 ] } , - BigNum { limbs: [ 0x32cc2e54c34449e0e07885187e87e6, 0x16402efe1052b1c83e96eab6218112, 0x003282 ] } , - BigNum { limbs: [ 0x8ad7d4ab3b17b51f1f8779e781781b, 0x9112fa9f6cf5817199711eebb68441, 0x00416b ] } , - BigNum { limbs: [ 0x851b025f7c6c3044912e382a3b60e5, 0xf25614b12b99689c33b5ed2b4ab367, 0x0056cf ] } , - BigNum { limbs: [ 0x388900a081efcebb6ed1c6d5c49f1c, 0xb4fd14ec51aeca9da4521c768d51ec, 0x001d1d ] } , - BigNum { limbs: [ 0x41da53f8e7e56dbbb9b52fe0c93f2f, 0xb1be40dbcc5d47aa1206c5f9825841, 0x00070d ] } , - BigNum { limbs: [ 0x7bc9af0716769144464acf1f36c0d2, 0xf594e8c1b0eaeb8fc60143a855ad12, 0x006cdf ] } , - BigNum { limbs: [ 0x21727c631d1b957e330eba542ea25b, 0x6a726d6bc6c05eefdf763a90100e35, 0x004146 ] } , - BigNum { limbs: [ 0x9c31869ce1406981ccf144abd15da6, 0x3ce0bc31b687d449f891cf11c7f71e, 0x0032a7 ] } , - BigNum { limbs: [ 0x8b1c21115956ae0930097f14fdeb5e, 0x7877d3137c9d849ae4eb96398565d8, 0x005f84 ] } , - BigNum { limbs: [ 0x3287e1eea50550f6cff67feb0214a3, 0x2edb568a00aaae9ef31c7368529f7b, 0x001469 ] } , - BigNum { limbs: [ 0xa63e1f8de49664fe8bb14fdd09e32c, 0x0165226ffd3e155a8d961161faea81, 0x00192c ] } , - BigNum { limbs: [ 0x1765e37219c59a01744eaf22f61cd5, 0xa5ee072d800a1ddf4a71f83fdd1ad2, 0x005ac1 ] } , - BigNum { limbs: [ 0x20f42f0eb8c840f724930154b0a345, 0x7e9b4faf7cbf5a3c85944fbd15cac9, 0x001c39 ] } , - BigNum { limbs: [ 0x9cafd3f14593be08db6cfdab4f5cbc, 0x28b7d9ee0088d8fd5273b9e4c23a8a, 0x0057b4 ] } , - BigNum { limbs: [ 0xa0054d10202811fee903fba4610e1d, 0xe96abc1a3341b736d5f1f9e96ab5cf, 0x005ece ] } , - BigNum { limbs: [ 0x1d9eb5efde33ed0116fc035b9ef1e4, 0xbde86d834a067c0302160fb86d4f84, 0x00151e ] } , - BigNum { limbs: [ 0x554e12d462472b84dab4b2e95130b8, 0xbba73e5ffe53a6f04f5111b851a159, 0x003f22 ] } , - BigNum { limbs: [ 0x6855f02b9c14d37b254b4c16aecf49, 0xebabeb3d7ef48c4988b6f7e98663fa, 0x0034ca ] } , - BigNum { limbs: [ 0xbc16cbda5b145cce510c752e9afea8, 0xc5f4eecc92c39560d4dd8010ec3a9f, 0x006e91 ] } , - BigNum { limbs: [ 0x018d3725a347a231aef389d1650159, 0xe15e3ad0ea849dd9032a8990ebcab4, 0x00055b ] } , - BigNum { limbs: [ 0x9487106e50a7a420b0a6a5816df662, 0x47da8a826ab344a6ab01d9bcfd31c6, 0x005d47 ] } , - BigNum { limbs: [ 0x291cf291adb45adf4f59597e92099f, 0x5f789f1b1294ee932d062fe4dad38d, 0x0016a6 ] } , - BigNum { limbs: [ 0x5127d2ce1d47aa81efa96afbcfa4b3, 0x9b560dbdf2b0494dee5461ad67ec9e, 0x001687 ] } , - BigNum { limbs: [ 0x6c7c3031e114547e10569404305b4e, 0x0bfd1bdf8a97e9ebe9b3a7f47018b5, 0x005d66 ] } , - BigNum { limbs: [ 0xe488ba25233af2db84e57d6860ca41, 0x3c8e10853ef5edfb2c4b7f83c45f1b, 0x000e18 ] } , - BigNum { limbs: [ 0xd91b48dadb210c247b1a81979f35c0, 0x6ac519183e52453eabbc8a1e13a637, 0x0065d5 ] } , - BigNum { limbs: [ 0xc3e30a9c9e349ae707d84319ddac01, 0xc946fd62c42899c1ce48bc34beb258, 0x004d11 ] } , - BigNum { limbs: [ 0xf9c0f86360276418f827bbe6225400, 0xde0c2c3ab91f997809bf4d6d1952fa, 0x0026db ] } , - BigNum { limbs: [ 0x3cca4f65f52989ee41c70ef01f1ea6, 0x98827284acd332c7b653236e45470c, 0x00086c ] } , - BigNum { limbs: [ 0x80d9b39a09327511be38f00fe0e15b, 0x0ed0b718d075007221b4e63392be47, 0x006b81 ] } , - BigNum { limbs: [ 0x85ce0a5e920ceffae1e55a50fe59ca, 0xa263d506576489a7189ae1af6d2bb3, 0x000ce7 ] } , - BigNum { limbs: [ 0x37d5f8a16c4f0f051e1aa4af01a637, 0x04ef549725e3a992bf6d27f26ad9a0, 0x006706 ] } , - BigNum { limbs: [ 0xea8f78b1c7780e8daf0c2fcc0f7dbe, 0x95a004664ba541a2cca536b326c6a3, 0x00575f ] } , - BigNum { limbs: [ 0xd3148a4e36e3f07250f3cf33f08243, 0x11b3253731a2f1970b62d2eeb13eaf, 0x001c8e ] } , - BigNum { limbs: [ 0xe4827df1bfc8c29d71a9797d136ab7, 0x437a3ecb3b178208a3952410f28789, 0x006301 ] } , - BigNum { limbs: [ 0xd921850e3e933c628e568582ec954a, 0x63d8ead24230b1313472e590e57dc9, 0x0010ec ] } , - BigNum { limbs: [ 0xf34b7193b7d22f8fba8bc5cc0ffb3d, 0x9ac7c491f9b3ab3dda081a19c5b2aa, 0x004e08 ] } , - BigNum { limbs: [ 0xca58916c4689cf7045743933f004c4, 0x0c8b650b839487fbfdffef881252a8, 0x0025e5 ] } , - BigNum { limbs: [ 0x2503d854265cab6b758b1728d5f934, 0x6a81d8bebd70bb5cc98cbcca59cfc3, 0x0012c4 ] } , - BigNum { limbs: [ 0x98a02aabd7ff53948a74e7d72a06cd, 0x3cd150debfd777dd0e7b4cd77e3590, 0x006129 ] } , - BigNum { limbs: [ 0x3067a571d3783c88d51cd8faa6c9e3, 0x7d7a15e293eb6038ec7934693189a4, 0x0011ba ] } , - BigNum { limbs: [ 0x8d3c5d8e2ae3c2772ae3260559361e, 0x29d913bae95cd300eb8ed538a67baf, 0x006233 ] } , - BigNum { limbs: [ 0x40ea21cd2bc670b57de2e62ffe6fa6, 0x5a348f8f4b87a6ae456985d7320362, 0x00312c ] } , - BigNum { limbs: [ 0x7cb9e132d2958e4a821d18d001905b, 0x4d1e9a0e31c08c8b929e83caa601f1, 0x0042c1 ] } , - BigNum { limbs: [ 0x06fdf260767ff556ba2201ce6b292d, 0x3cf80782e52ef5885bf4688c2ae109, 0x00085d ] } , - BigNum { limbs: [ 0xb6a6109f87dc09a945ddfd3194d6d4, 0x6a5b221a98193db17c13a115ad244a, 0x006b90 ] } , - BigNum { limbs: [ 0x099a5dc4afe8a3c1df667e6c0fcb30, 0x66209952919a9f65d23d4922a4152e, 0x004621 ] } , - BigNum { limbs: [ 0xb409a53b4e735b3e20998093f034d1, 0x4132904aebad93d405cac07f33f025, 0x002dcc ] } , - BigNum { limbs: [ 0x892a9b3c41eda72ed74a199a41d737, 0xcf8ebffa762814c3dc07af56614e4c, 0x003314 ] } , - BigNum { limbs: [ 0x347967c3bc6e57d128b5e565be28ca, 0xd7c469a307201e75fc005a4b76b707, 0x0040d8 ] } , - BigNum { limbs: [ 0xd75f694f269112f4ff8f61e952657e, 0xf2069c2a93bab9e5924a0d41b3f5f1, 0x003d8d ] } , - BigNum { limbs: [ 0xe64499b0d7caec0b00709d16ad9a83, 0xb54c8d72e98d795445bdfc60240f61, 0x00365f ] } , - BigNum { limbs: [ 0xe6006a8087c0313356177fa580e7c8, 0x7e92df8ec1cb44267d2050bea1e4ba, 0x00693e ] } , - BigNum { limbs: [ 0xd7a3987f769bcdcca9e87f5a7f1839, 0x28c04a0ebb7cef135ae7b8e3362098, 0x000aaf ] } , - BigNum { limbs: [ 0x775193a915287b84658d7d1fba4133, 0xdd16b97880c226a96b6d8623b90e8a, 0x002229 ] } , - BigNum { limbs: [ 0x46526f56e933837b9a7281e045bece, 0xca3c7024fc860c906c9a837e1ef6c9, 0x0051c3 ] } , - BigNum { limbs: [ 0x41b1af6da69a808552db669eded8ae, 0x3e0af1e4442b2ada31fc6aa05994ea, 0x003d4d ] } , - BigNum { limbs: [ 0x7bf2539257c17e7aad249861212753, 0x694837b9391d085fa60b9f017e7069, 0x0036a0 ] } , - BigNum { limbs: [ 0xb4f8d8d52c4296113c3a206b452964, 0xe5cc5a9cc9fef2d4ce0992aba0f475, 0x001f24 ] } , - BigNum { limbs: [ 0x08ab2a2ad21968eec3c5de94bad69d, 0xc186cf00b349406509fe76f63710de, 0x0054c8 ] } , - BigNum { limbs: [ 0x295502c8f18cafec046e38bc04d29b, 0x11ac973c619f06b06560b2a86b51e7, 0x00382f ] } , - BigNum { limbs: [ 0x944f00370ccf4f13fb91c643fb2d66, 0x95a692611ba92c8972a756f96cb36c, 0x003bbe ] } , - BigNum { limbs: [ 0x9677a297282aeadb959e844a4e2840, 0xdd65a7e2c22b1762743dbc35f832be, 0x0023c6 ] } , - BigNum { limbs: [ 0x272c6068d63114246a617ab5b1d7c1, 0xc9ed81babb1d1bd763ca4d6bdfd295, 0x005026 ] } , - BigNum { limbs: [ 0x288589876680569020a30d23f2a1d4, 0xb75e90e4ece8683424612c970a35b3, 0x00415e ] } , - BigNum { limbs: [ 0x951e797897dba86fdf5cf1dc0d5e2d, 0xeff498b8905fcb05b3a6dd0acdcfa0, 0x00328e ] } , - BigNum { limbs: [ 0x51520e22b49fe02051377a9ed75075, 0xbabe0b4395278ff370d2deb802290a, 0x001d8e ] } , - BigNum { limbs: [ 0x6c51f4dd49bc1edfaec8846128af8c, 0xec951e59e820a34667352ae9d5dc49, 0x00565e ] } , - BigNum { limbs: [ 0x6759855e4559199350c2d655365c3d, 0xf1c4c5df150a7de30a079f63d17b84, 0x0040f9 ] } , - BigNum { limbs: [ 0x564a7da1b902e56caf3d28aac9a3c4, 0xb58e63be683db556ce006a3e0689cf, 0x0032f3 ] } , - BigNum { limbs: [ 0xf5900e4241e72c4acf2dc369d0d5ce, 0xcb3d9e338aa71593618765dd07560c, 0x002eec ] } , - BigNum { limbs: [ 0xc813f4bdbc74d2b530d23b962f2a33, 0xdc158b69f2a11da67680a3c4d0af46, 0x004500 ] } , - BigNum { limbs: [ 0x629fe3a0675366707251cda7455b11, 0xa89d316b91fcf2d7d2aa4cd3a69ba2, 0x004e6e ] } , - BigNum { limbs: [ 0x5b041f5f9708988f8dae3158baa4f0, 0xfeb5f831eb4b4062055dbcce3169b1, 0x00257e ] } , - BigNum { limbs: [ 0xe52518ea76badc588032481fe037fc, 0xc9a252a5634898a2c832f7e0bb3d3b, 0x0022db ] } , - BigNum { limbs: [ 0xd87eea1587a122a77fcdb6e01fc805, 0xddb0d6f819ff9a970fd511c11cc817, 0x005111 ] } , - BigNum { limbs: [ 0xf1f0d4132d250b42c946df433b264b, 0x574e5601a1206d2e86027d377a6c26, 0x003d18 ] } , - BigNum { limbs: [ 0xcbb32eecd136f3bd36b91fbcc4d9b6, 0x5004d39bdc27c60b52058c6a5d992c, 0x0036d5 ] } , - BigNum { limbs: [ 0x8c2cadf8ead00a2aa8ef4fbdb41629, 0xd8814fb60ce038b34d9642aa5a23e6, 0x000937 ] } , - BigNum { limbs: [ 0x31775507138bf4d55710af424be9d8, 0xced1d9e77067fa868a71c6f77de16d, 0x006ab5 ] } , - BigNum { limbs: [ 0x9ae5c815d97b7558c3d2f76b1bd02b, 0x793269b8e6dbb818eb33b979def799, 0x004dac ] } , - BigNum { limbs: [ 0x22be3aea24e089a73c2d0794e42fd6, 0x2e20bfe4966c7b20ecd45027f90dba, 0x002641 ] } , - BigNum { limbs: [ 0x78ba38db4f1cdb24a6b39ca1aae2d2, 0xfce29dfca40fb376eda680b7645699, 0x001c55 ] } , - BigNum { limbs: [ 0x44e9ca24af3f23db594c625e551d2f, 0xaa708ba0d9387fc2ea6188ea73aeba, 0x005797 ] } , - BigNum { limbs: [ 0xa36b63449abbb4a0cab19968e21b28, 0x515e659079aaf2ff01783547804f4d, 0x0031bf ] } , - BigNum { limbs: [ 0x1a389fbb63a04a5f354e65971de4d9, 0x55f4c40d039d403ad68fd45a57b606, 0x00422e ] } , - BigNum { limbs: [ 0x06d617f09bed2ef9ae4e979277aba0, 0x741b204bbd57f96d993d6e12c5cce4, 0x003ff7 ] } , - BigNum { limbs: [ 0xb6cdeb0f626ed00651b1676d885461, 0x33380951bff039cc3eca9b8f12386f, 0x0033f6 ] } , - BigNum { limbs: [ 0xe3340f2ae98eca067e2dba9b24f61e, 0x9da24e43f5d43b6bbfbd662301caaf, 0x006bf6 ] } , - BigNum { limbs: [ 0xda6ff3d514cd34f981d24464db09e3, 0x09b0db598773f7ce184aa37ed63aa3, 0x0007f7 ] } , - BigNum { limbs: [ 0xebb3139c9ad2dbade21b3a3cd24656, 0xe823f3fce58ed957eff9de108501bc, 0x005220 ] } , - BigNum { limbs: [ 0xd1f0ef63638923521de4c4c32db9ab, 0xbf2f35a097b959e1e80e2b91530396, 0x0021cc ] } , - BigNum { limbs: [ 0xe91075fcd0291b97f3e9395da55eab, 0x6a5c272196ab6d32c28aa4a46d2ca8, 0x0002dd ] } , - BigNum { limbs: [ 0xd4938d032e32e3680c16c5a25aa156, 0x3cf7027be69cc607157d64fd6ad8aa, 0x007110 ] } , - BigNum { limbs: [ 0x73b2e732d845809adfb930e334f4fd, 0x9c9d8466da8be8561b7e6e02ae6816, 0x0004c9 ] } , - BigNum { limbs: [ 0x49f11bcd26167e652046ce1ccb0b04, 0x0ab5a536a2bc4ae3bc899b9f299d3d, 0x006f24 ] } , - BigNum { limbs: [ 0x36d387d5880f88740d4211cf4b61ac, 0x718aa3845032654d2552a736366d29, 0x00568f ] } , - BigNum { limbs: [ 0x86d07b2a764c768bf2bded30b49e55, 0x35c886192d15cdecb2b5626ba1982a, 0x001d5e ] } , - BigNum { limbs: [ 0x498636362aa3c779beb798f3a00898, 0x40090410e2e8d5490e38c676766ee1, 0x002f49 ] } , - BigNum { limbs: [ 0x741dccc9d3b837864148660c5ff769, 0x674a258c9a5f5df0c9cf432b619672, 0x0044a4 ] } , - BigNum { limbs: [ 0xca5a4286b8761e124bbc225b422504, 0xf47dd1a3c0b8c2f43d6687ac253e41, 0x006ad2 ] } , - BigNum { limbs: [ 0xf349c07945e5e0edb443dca4bddafd, 0xb2d557f9bc8f70459aa181f5b2c711, 0x00091a ] } , - BigNum { limbs: [ 0xbcd3ad2d54ab429275afaabae52f1e, 0x725786b9a807da743c6e51998823e2, 0x000394 ] } , - BigNum { limbs: [ 0x00d055d2a9b0bc6d8a5054451ad0e3, 0x34fba2e3d54058c59b99b8084fe171, 0x007059 ] } , - BigNum { limbs: [ 0xde6b475254cb83a3e64b2e15d30aaf, 0xc43faa63a0cb7182c82aa0f115c918, 0x000f4c ] } , - BigNum { limbs: [ 0xdf38bbada9907b5c19b4d0ea2cf552, 0xe3137f39dc7cc1b70fdd68b0c23c3a, 0x0064a0 ] } , - BigNum { limbs: [ 0xca65fecc2631453714c31ae064c79c, 0x21ea16f520e2288c72980aeb1545ef, 0x0007ce ] } , - BigNum { limbs: [ 0xf33e0433d82ab9c8eb3ce41f9b3865, 0x856912a85c660aad656ffeb6c2bf63, 0x006c1f ] } , - BigNum { limbs: [ 0x16421580a82bd1697f65430e7d8926, 0xc5f9be2b838bda9fb1ca2b236e8c02, 0x001ee7 ] } , - BigNum { limbs: [ 0xa761ed7f56302d96809abbf18276db, 0xe1596b71f9bc589a263dde7e697951, 0x005505 ] } , - BigNum { limbs: [ 0x740a79a4750d83c4331bb22dabce03, 0x9db6e6d9b9a73f57df3ef8abc751b8, 0x003f4f ] } , - BigNum { limbs: [ 0x4999895b894e7b3bcce44cd25431fe, 0x099c42c3c3a0f3e1f8c910f610b39b, 0x00349e ] } , - BigNum { limbs: [ 0xce6da570a80e789a2682de2575b781, 0xa5b4f42d200a39dfc4ffe6d45fa3cb, 0x0016e4 ] } , - BigNum { limbs: [ 0xef365d8f564d8665d97d20da8a4880, 0x019e35705d3df95a130822cd786187, 0x005d09 ] } , - BigNum { limbs: [ 0x01899a6e8c892f68701dcd9b0c8a90, 0xb66954ac9f3507fbff4f43f48c1aa3, 0x00001d ] } , - BigNum { limbs: [ 0xbc1a689171d2cf978fe23164f37571, 0xf0e9d4f0de132b3dd8b8c5ad4beab0, 0x0073cf ] } , - BigNum { limbs: [ 0x7da87388ac4bff0d5dc4a9f5b54d26, 0x9c2e3fbd9c201ac58a85b06268d07d, 0x001c1e ] } , - BigNum { limbs: [ 0x3ffb8f77520ffff2a23b550a4ab2db, 0x0b24e9dfe12818744d82593f6f34d6, 0x0057cf ] } , - BigNum { limbs: [ 0x242bdc4035aec661da1c0093106616, 0x2ede8cd6749ee99560b2cddee30920, 0x00693a ] } , - BigNum { limbs: [ 0x997826bfc8ad389e25e3fe6cef99eb, 0x78749cc708a949a477553bc2f4fc33, 0x000ab3 ] } , - BigNum { limbs: [ 0x65427edee03d972b0e3d7e78722eab, 0xc8c077701fa3ebf8f101b20d9d11d5, 0x001a11 ] } , - BigNum { limbs: [ 0x586184211e1e67d4f1c280878dd156, 0xde92b22d5da44740e70657943af37e, 0x0059db ] } , - BigNum { limbs: [ 0xefff9f572c94b32efc9641f7f690dc, 0xb906971d8b054118b80dc81110f323, 0x006df6 ] } , - BigNum { limbs: [ 0xcda463a8d1c74bd10369bd08096f25, 0xee4c927ff242f2211ffa4190c7122f, 0x0005f6 ] } , - BigNum { limbs: [ 0xb75870c4c8211ca9c40a0456e12db6, 0xece5902c99b3ae9b030aa830eaa90b, 0x00123c ] } , - BigNum { limbs: [ 0x064b923b363ae2563bf5faa91ed24b, 0xba6d9970e394849ed4fd6170ed5c48, 0x0061b0 ] } , - BigNum { limbs: [ 0x117b84ab14fc7b1edb256398ddf097, 0x0ccc5cee8965e6938b85e4e3d64348, 0x001407 ] } , - BigNum { limbs: [ 0xac287e54e95f83e124da9b67220f6a, 0x9a86ccaef3e24ca64c8224be01c20b, 0x005fe6 ] } , - BigNum { limbs: [ 0xffdb443b3406f5f5eea61bcdd90225, 0xa60dff5a4839966ccd7d38c82c9a37, 0x002600 ] } , - BigNum { limbs: [ 0xbdc8bec4ca55090a1159e33226fddc, 0x01452a43350e9ccd0a8ad0d9ab6b1b, 0x004ded ] } , - BigNum { limbs: [ 0x5f87ae86d28d9b633e898f782ed47e, 0xaac8c3d5841e89a2182aba6bf41831, 0x0040b3 ] } , - BigNum { limbs: [ 0x5e1c54792bce639cc1766f87d12b83, 0xfc8a65c7f929a997bfdd4f35e3ed22, 0x003339 ] } , - BigNum { limbs: [ 0x1969238e7fecaa9d20ccca190af9fe, 0x2e637d1c6e0ea47b2f6af351fd869e, 0x005aa3 ] } , - BigNum { limbs: [ 0xa43adf717e6f5462df3334e6f50603, 0x78efac810f398ebea89d164fda7eb5, 0x00194a ] } , - BigNum { limbs: [ 0xfb55aa711369bb49d53fcf1ce11cd3, 0x1d2287835f3748e3dec226f6c6f251, 0x002c88 ] } , - BigNum { limbs: [ 0xc24e588eeaf243b62ac02fe31ee32e, 0x8a30a21a1e10ea55f945e2ab111301, 0x004765 ] } , - BigNum { limbs: [ 0xf6dd75bd09e197a9f2312a022e05a9, 0x32124bae0fe0614404b0d3bd1aa717, 0x0044ec ] } , - BigNum { limbs: [ 0xc6c68d42f47a67560dced4fdd1fa58, 0x7540ddef6d67d1f5d35735e4bd5e3b, 0x002f01 ] } , - BigNum { limbs: [ 0xf305c7e99e5e6aa4afb4c34cb19b26, 0x49249e90814dd17cb3336f18767a2e, 0x006140 ] } , - BigNum { limbs: [ 0xca9e3b165ffd945b504b3bb34e64db, 0x5e2e8b0cfbfa61bd24d49a89618b24, 0x0012ad ] } , - BigNum { limbs: [ 0x26b1113683fde4c5c17faf037889c3, 0xebba3e1e092e8c324415613cad2c66, 0x0047e5 ] } , - BigNum { limbs: [ 0x96f2f1c97a5e1a3a3e804ffc87763e, 0xbb98eb7f7419a70793f2a8652ad8ed, 0x002c07 ] } , - BigNum { limbs: [ 0xa9a0db0b34ea1ede327157965f6b59, 0xfc53b370591c32daa4b465b06dbbd7, 0x004a93 ] } , - BigNum { limbs: [ 0x140327f4c971e021cd8ea769a094a8, 0xaaff762d242c005f3353a3f16a497c, 0x002959 ] } , - BigNum { limbs: [ 0xae321d438c77b8023e8b849c35853e, 0x0c56c89282b7d760415eca1922948f, 0x0047bb ] } , - BigNum { limbs: [ 0x0f71e5bc71e446fdc1747a63ca7ac3, 0x9afc610afa905bd996a93f88b570c4, 0x002c32 ] } , - BigNum { limbs: [ 0xc8d4479c1b96b08b55ba558bf62e69, 0x0eb7d18adbfc9d8692aa47a58b380d, 0x002cbf ] } , - BigNum { limbs: [ 0xf4cfbb63e2c54e74aa45a97409d198, 0x989b5812a14b95b3455dc1fc4ccd45, 0x00472e ] } , - BigNum { limbs: [ 0x29d7916dae0478b241fbe936b66f37, 0xe6ca815304f4c417723f7e8cf0daa0, 0x003d08 ] } , - BigNum { limbs: [ 0x93cc71925057864dbe0415c94990ca, 0xc088a84a78536f2265c88b14e72ab3, 0x0036e4 ] } , - BigNum { limbs: [ 0x397a781738b3b5e970fb8a83922a0b, 0xf7b2a57f970f05f4b19cb92e0a2ff9, 0x004c6c ] } , - BigNum { limbs: [ 0x84298ae8c5a849168f04747c6dd5f6, 0xafa0841de6392d45266b5073cdd55a, 0x002780 ] } , - BigNum { limbs: [ 0x7f98a9899b09f107628888b1c39684, 0x0e6f51cd821faf3bd230ac8958510b, 0x0065c0 ] } , - BigNum { limbs: [ 0x3e0b597663520df89d77764e3c697d, 0x98e3d7cffb2883fe05d75d187fb448, 0x000e2d ] } , - BigNum { limbs: [ 0xa3d5c235d931b6d05ef70fe260277e, 0x0194e402203f38537fb08af96247ce, 0x00203b ] } , - BigNum { limbs: [ 0x19ce40ca252a482fa108ef1d9fd883, 0xa5be459b5d08fae658577ea875bd85, 0x0053b2 ] } , - BigNum { limbs: [ 0x2f20b762ee3f3bfaac7e6ff713c86f, 0x34265e0a3e91c3b794ffd2d7ab5326, 0x004963 ] } , - BigNum { limbs: [ 0x8e834b9d101cc30553818f08ec3792, 0x732ccb933eb66f82430836ca2cb22d, 0x002a8a ] } , - BigNum { limbs: [ 0x661795b2956e8135674296a42d5526, 0xd7fe80253c68dd3367575a3ea8243e, 0x007144 ] } , - BigNum { limbs: [ 0x578c6d4d68ed7dca98bd685bd2aadb, 0xcf54a97840df560670b0af632fe115, 0x0002a8 ] } , - BigNum { limbs: [ 0x88d14d8f37e3333f346bd9f36a745b, 0x920060e6ef18fa82f6d278d180f76d, 0x004e45 ] } , - BigNum { limbs: [ 0x34d2b570c678cbc0cb94250c958ba6, 0x1552c8b68e2f38b6e13590d0570de6, 0x0025a8 ] } , - BigNum { limbs: [ 0xac1f5d57348b38e36bbce2212a63cc, 0x95440a71a18ab8a14ef31198396f92, 0x00136f ] } , - BigNum { limbs: [ 0x1184a5a8c9d0c61c94431cded59c35, 0x120f1f2bdbbd7a988914f8099e95c1, 0x00607e ] } , - BigNum { limbs: [ 0xe6a504a18c774fc31aae93a4a789b1, 0x7299864a75f84d5e8e8781e124f966, 0x0044cb ] } , - BigNum { limbs: [ 0xd6fefe5e71e4af3ce5516b5b587650, 0x34b9a353074fe5db498087c0b30bec, 0x002f22 ] } , - BigNum { limbs: [ 0x42a5d3cc4b8962fe1c086de6f5da2a, 0x8fe193c27659d1330d3410a8ea3344, 0x0063ef ] } , - BigNum { limbs: [ 0x7afe2f33b2d29c01e3f791190a25d7, 0x177195db06ee6206cad3f8f8edd20f, 0x000ffe ] } , - BigNum { limbs: [ 0x699dce905fd33550c1a79631e1b05d, 0xb42e1e8c39f592be1d257779a5c2cd, 0x003c4b ] } , - BigNum { limbs: [ 0x5406346f9e88c9af3e5868ce1e4fa4, 0xf3250b114352a07bbae29228324286, 0x0037a1 ] } , - BigNum { limbs: [ 0x8b9ed63214a7551997e408b97bce64, 0x862cacba5107108b3080269638d37b, 0x001e8c ] } , - BigNum { limbs: [ 0x32052ccde9b4a9e6681bf64684319d, 0x21267ce32c4122aea787e30b9f31d8, 0x005561 ] } , - BigNum { limbs: [ 0x4b0c14c774f6f4389352e8b94b89e6, 0x6ac46d037a6dd60e0fac3e5e7a621d, 0x007263 ] } , - BigNum { limbs: [ 0x7297ee3889650ac76cad1646b4761b, 0x3c8ebc9a02da5d2bc85bcb435da336, 0x00018a ] } , - BigNum { limbs: [ 0x985d9d19380f197e151d3a231b3e78, 0x7e58f6e1a06851b9d0772360c130a5, 0x0006ac ] } , - BigNum { limbs: [ 0x254665e6c64ce581eae2c4dce4c189, 0x28fa32bbdcdfe1800790e64116d4ae, 0x006d41 ] } , - BigNum { limbs: [ 0xca5fe535e826bd5b6937e0ff00ed8b, 0xe96ad0d858b497db2a263132908303, 0x000c5f ] } , - BigNum { limbs: [ 0xf3441dca163541a496c81e00ff1276, 0xbde858c524939b5eade1d86f47824f, 0x00678d ] } , - BigNum { limbs: [ 0xd88546ef48e09b5a161546ead4b7c8, 0xb93d533c07f677a8f48b572fa1f711, 0x002460 ] } , - BigNum { limbs: [ 0xe51ebc10b57b63a5e9eab8152b4839, 0xee15d6617551bb90e37cb272360e41, 0x004f8c ] } , - BigNum { limbs: [ 0x9ad546e71d7c14ac7ee04cc702d7ed, 0x16af5aa3a2d464cf88e7700128f058, 0x005232 ] } , - BigNum { limbs: [ 0x22cebc18e0dfea53811fb238fd2814, 0x90a3cef9da73ce6a4f2099a0af14fb, 0x0021bb ] } , - BigNum { limbs: [ 0xc3890d637678376a8aa8842c120e36, 0x7ffcfe32e30065a095ef29cc5fab63, 0x006dd3 ] } , - BigNum { limbs: [ 0xfa1af59c87e3c79575577ad3edf1cb, 0x27562b6a9a47cd994218dfd57859ef, 0x00061a ] } , - BigNum { limbs: [ 0x3ac4576f96133763c39d4b0e166260, 0x7e9761af6173f7cd6fa185f4964620, 0x006115 ] } , - BigNum { limbs: [ 0x82dfab906848c79c3c62b3f1e99da1, 0x28bbc7ee1bd43b6c686683ad41bf33, 0x0012d8 ] } , - BigNum { limbs: [ 0x67f848cf0997e22a8c8de045bb9a27, 0x896b82dc575fff9e012abd7f304fb7, 0x005f3d ] } , - BigNum { limbs: [ 0x55abba30f4c41cd573721eba4465da, 0x1de7a6c125e8339bd6dd4c22a7b59c, 0x0014b0 ] } , - BigNum { limbs: [ 0x90513502f2c375e33b993aeb09c041, 0x7b429320b8e1f2e077f4eb284fe428, 0x005073 ] } , - BigNum { limbs: [ 0x2d52cdfd0b98891cc466c414f63fc0, 0x2c10967cc466405960131e7988212b, 0x00237a ] } , - BigNum { limbs: [ 0xa1857d2f8e75fd7956dad32b8d0a3e, 0xfe66e1a7b3ec40f446c5d40849a17e, 0x00416a ] } , - BigNum { limbs: [ 0x1c1e85d06fe60186a9252bd472f5c3, 0xa8ec47f5c95bf245914235998e63d5, 0x003282 ] } , - BigNum { limbs: [ 0xbb9779133dd76b8a25577e679b4638, 0xdc01f2176efa9c80845ef8964c3e31, 0x002c09 ] } , - BigNum { limbs: [ 0x020c89ecc0849375daa8809864b9c9, 0xcb5137860e4d96b953a9110b8bc722, 0x0047e3 ] } , - BigNum { limbs: [ 0xe14206334e32eb03c6b115fa8b964f, 0x51fd9fd6499d325ae512c2f6c6479f, 0x000bac ] } , - BigNum { limbs: [ 0xdc61fcccb02913fc394ee9057469b2, 0x555589c733ab00def2f546ab11bdb3, 0x006841 ] } , - BigNum { limbs: [ 0x4b35df11689e1cdad2999d9fd28bcc, 0x807f19e28e957da5d5fc832ca27132, 0x00133f ] } , - BigNum { limbs: [ 0x726e23ee95bde2252d6661602d7435, 0x26d40fbaeeb2b594020b8675359421, 0x0060ae ] } , - BigNum { limbs: [ 0x239da0394619241b42111e75ffa2de, 0x4d4153fcebff90e32df6a88417e9b0, 0x0056b9 ] } , - BigNum { limbs: [ 0x9a0662c6b842dae4bdeee08a005d23, 0x5a11d5a09148a256aa11611dc01ba3, 0x001d34 ] } , - BigNum { limbs: [ 0x11505668518d1efe128ce4fa8ac47f, 0x78c31421a7309c88d579eeacc0f648, 0x0069c1 ] } , - BigNum { limbs: [ 0xac53ac97accee001ed731a05753b82, 0x2e90157bd61796b1028e1af5170f0b, 0x000a2c ] } , - BigNum { limbs: [ 0x06ae14d1b79c4335eb183dc422640a, 0x8f5184b71164781986bd93773e5637, 0x002fd1 ] } , - BigNum { limbs: [ 0xb6f5ee2e46bfbbca14e7c13bdd9bf7, 0x1801a4e66be3bb20514a762a99af1c, 0x00441c ] } , - BigNum { limbs: [ 0x7a0931b726555733207e7b49c12a9a, 0x1ac970b554c0ffa4fe8374633bb790, 0x006309 ] } , - BigNum { limbs: [ 0x439ad148d806a7ccdf8183b63ed567, 0x8c89b8e828873394d984953e9c4dc3, 0x0010e4 ] } , - BigNum { limbs: [ 0x7f9c45b6a32a7fe188f870b56dddfa, 0x4b45d2076249a0877937067755110e, 0x003224 ] } , - BigNum { limbs: [ 0x3e07bd495b317f1e77078e4a922207, 0x5c0d57961afe92b25ed1032a82f445, 0x0041c9 ] } , - BigNum { limbs: [ 0x82f38d734058842d8dcdcfd164e2f2, 0xd916df60a3a3a29313c9c65bc5aef1, 0x006909 ] } , - BigNum { limbs: [ 0x3ab0758cbe037ad272322f2e9b1d0f, 0xce3c4a3cd9a490a6c43e4346125662, 0x000ae3 ] } , - BigNum { limbs: [ 0x773969049ee00fe19fe84f9dcfe7d6, 0x28a2939948c79dc1fde4fb754fdf47, 0x00700e ] } , - BigNum { limbs: [ 0x466a99fb5f7bef1e6017af6230182b, 0x7eb0960434809577da230e2c88260c, 0x0003df ] } , - BigNum { limbs: [ 0x4eca9a1a3dc9bef693d2f66ea91514, 0x47638538c2a5de60572e3406b89f96, 0x00183a ] } , - BigNum { limbs: [ 0x6ed968e5c09240096c2d089156eaed, 0x5fefa464baa254d980d9d59b1f65bd, 0x005bb3 ] } , - BigNum { limbs: [ 0x24078d713653f447161c9211568e4a, 0x92e6227ae5cf1c4b074bb508d359b3, 0x005199 ] } , - BigNum { limbs: [ 0x999c758ec8080ab8e9e36ceea971b7, 0x146d0722977916eed0bc549904aba0, 0x002254 ] } , - BigNum { limbs: [ 0x703181b5d0f52e776a16e848a3fa7b, 0x9444edb69626534973f4a669b6cfe5, 0x00502b ] } , - BigNum { limbs: [ 0x4d72814a2d66d08895e916b75c0586, 0x130e3be6e721dff06413633821356e, 0x0023c2 ] } , - BigNum { limbs: [ 0x6e663848f5963874ab5bb1a14a0dc8, 0xf7a64a7cdbc61169d51c32cc603cd6, 0x00287e ] } , - BigNum { limbs: [ 0x4f3dcab708c5c68b54a44d5eb5f239, 0xafacdf20a18221d002ebd6d577c87d, 0x004b6e ] } , - BigNum { limbs: [ 0x80cba8ff738a6ebeb24233ea2f2541, 0x8e8fe041ca9e7e78b1aa989751d5f4, 0x000ca4 ] } , - BigNum { limbs: [ 0x3cd85a008ad190414dbdcb15d0dac0, 0x18c3495bb2a9b4c1265d710a862f5f, 0x006749 ] } , - BigNum { limbs: [ 0xc14847a01783a30eca3f7baed36019, 0xac861a7439ba70c010d2d73f755e3d, 0x002fb0 ] } , - BigNum { limbs: [ 0xfc5bbb5fe6d85bf135c083512c9fe8, 0xfacd0f29438dc279c735326262a715, 0x00443c ] } , - BigNum { limbs: [ 0xdfcd68ca9f03f7332831ded7618faa, 0xe01551e64535a0e782d3666b5efbca, 0x00522f ] } , - BigNum { limbs: [ 0xddd69a355f5807ccd7ce20289e7057, 0xc73dd7b7381292525534a336790988, 0x0021bd ] } , - BigNum { limbs: [ 0x8f3200a219bb37ed5bea61c7118122, 0x143fef6311d69f89c3e794fd90cf35, 0x0052de ] } , - BigNum { limbs: [ 0x2e72025de4a0c712a4159d38ee7edf, 0x93133a3a6b7193b0142074a447361e, 0x00210f ] } , - BigNum { limbs: [ 0x57184ce1529cd8101748390b324477, 0x26fd32a8105940931e03e65fd4fc46, 0x002284 ] } , - BigNum { limbs: [ 0x668bb61eabbf26efe8b7c5f4cdbb8a, 0x8055f6f56ceef2a6ba04234203090d, 0x005169 ] } , - BigNum { limbs: [ 0xa886037e2af329cd2418acfeeb838d, 0xb1ef4cf90614ef0a0b1c55ef657509, 0x005e42 ] } , - BigNum { limbs: [ 0x151dff81d368d532dbe75201147c74, 0xf563dca47733442fccebb3b272904a, 0x0015aa ] } , - BigNum { limbs: [ 0xb3164314530cf88b71ecbd64ce63f1, 0x89dc01efa36b1fdcad3774362e77db, 0x00215f ] } , - BigNum { limbs: [ 0x0a8dbfebab4f06748e13419b319c10, 0x1d7727add9dd135d2ad0956ba98d78, 0x00528e ] } , - BigNum { limbs: [ 0x1e959b97cb00e1d465de0ab477c622, 0xd75904f78fc1510e7f9ddb69f253e9, 0x003a37 ] } , - BigNum { limbs: [ 0x9f0e6768335b1d2b9a21f44b8839df, 0xcffa24a5ed86e22b586a2e37e5b16a, 0x0039b5 ] } , - BigNum { limbs: [ 0xdc74a175fb66d8c91dd7bcb6d98a10, 0x91da4bc176b7f308325617d0f4ab25, 0x002d93 ] } , - BigNum { limbs: [ 0xe12f618a02f52636e22842492675f1, 0x1578dddc06904031a5b1f1d0e35a2d, 0x00465a ] } , - BigNum { limbs: [ 0xc12e6f5533730efb7366728e74e707, 0xf6207ecf39e022e09ecf9355057e16, 0x00154d ] } , - BigNum { limbs: [ 0xfc7593aacae8f0048c998c718b18fa, 0xb132aace436810593938764cd2873c, 0x005e9f ] } , - BigNum { limbs: [ 0x38476a0fc00d35443787b67158e459, 0x5805a8b95c24d107e4978e049164ba, 0x001c88 ] } , - BigNum { limbs: [ 0x855c98f03e4ec9bbc878488ea71ba8, 0x4f4d80e421236231f3707b9d46a099, 0x005765 ] } , - BigNum { limbs: [ 0x13bdbd833f6491e033219803a77284, 0x3dee46db6ac6ba5b0e618c35e16aa2, 0x002782 ] } , - BigNum { limbs: [ 0xa9e6457cbef76d1fccde66fc588d7d, 0x6964e2c2128178dec9a67d6bf69ab1, 0x004c6b ] } , - BigNum { limbs: [ 0xb2eb02022e105e3d85e5ec2f0d384d, 0x11c3a2cac9bb1f6b1d367bf8f96d95, 0x00240c ] } , - BigNum { limbs: [ 0x0ab900fdd04ba0c27a1a12d0f2c7b4, 0x958f86d2b38d13cebad18da8de97be, 0x004fe1 ] } , - BigNum { limbs: [ 0xbedcf99899365c7c5177831c4f9a2f, 0x7576c538f99a8b4d3c9304ac1777b8, 0x00254a ] } , - BigNum { limbs: [ 0xfec709676525a283ae887be3b065d2, 0x31dc646483ada7ec9b7504f5c08d9a, 0x004ea3 ] } , - BigNum { limbs: [ 0x5b6dc2f31cbbc9b9c47e1ba8f9236e, 0x2e11b4adcd5e7787fe07c20b42c015, 0x006b42 ] } , - BigNum { limbs: [ 0x6236400ce1a035463b81e35706dc93, 0x794174efafe9bbb1da00479695453e, 0x0008ab ] } , - BigNum { limbs: [ 0x11640d7051b71b12524eeee9de0742, 0x230691e53394b528798f8fbbd97f75, 0x00369b ] } , - BigNum { limbs: [ 0xac3ff58faca4e3edadb1101621f8bf, 0x844c97b849b37e115e7879e5fe85de, 0x003d52 ] } , - BigNum { limbs: [ 0x411e4600a81ddbe179dc1bad1ae3cc, 0xd9533ba2a5bad3515b61eeb82c44c4, 0x0048a9 ] } , - BigNum { limbs: [ 0x7c85bcff563e231e8623e352e51c35, 0xcdffedfad78d5fe87ca61ae9abc08f, 0x002b43 ] } , - BigNum { limbs: [ 0x15a00083daa205ac897fd06e1fa419, 0xbd8e5aa6b1584c7063ea804b7fba65, 0x005711 ] } , - BigNum { limbs: [ 0xa804027c23b9f95376802e91e05be8, 0xe9c4cef6cbefe6c9741d8956584aee, 0x001cdb ] } , - BigNum { limbs: [ 0xaf972db429b19d7d92d2c706b5bb82, 0x4401fc3875583b5289d11dedd15a09, 0x000e27 ] } , - BigNum { limbs: [ 0x0e0cd54bd4aa61826d2d37f94a447f, 0x63512d6507eff7e74e36ebb406ab4a, 0x0065c6 ] } , - BigNum { limbs: [ 0xa014a92d1d8309e82e0aa92105b69c, 0xd948bca95f4361465a64f064150d72, 0x0065b3 ] } , - BigNum { limbs: [ 0x1d8f59d2e0d8f517d1f555defa4965, 0xce0a6cf41e04d1f37da3193dc2f7e1, 0x000e39 ] } , - BigNum { limbs: [ 0xd3c547fe572181d2d0270c4778605d, 0x0973e490e8443c67ef980a8ddf85f8, 0x00633e ] } , - BigNum { limbs: [ 0xe9debb01a73a7d2d2fd8f2b8879fa4, 0x9ddf450c9503f6d1e86fff13f87f5a, 0x0010af ] } , - BigNum { limbs: [ 0x3afb994f8855e421398aef9d860b7a, 0xc6e357c81e7222b26285673daa078a, 0x002124 ] } , - BigNum { limbs: [ 0x82a869b076061adec6750f6279f487, 0xe06fd1d55ed610877582a2642dfdc9, 0x0052c8 ] } , - BigNum { limbs: [ 0xf09f8b074b5b1c17f8d231005dd5b6, 0xa32b4d7ea8dc9d9c75f44fa63b6207, 0x0006f2 ] } , - BigNum { limbs: [ 0xcd0477f8b300e2e8072dcdffa22a4b, 0x0427dc1ed46b959d6213b9fb9ca34b, 0x006cfb ] } , - BigNum { limbs: [ 0x4f08fd6dcea734b249b692a0b899f1, 0x27f23f1999b6efc301c5e49f94ce3a, 0x002508 ] } , - BigNum { limbs: [ 0x6e9b05922fb4ca4db6496c5f476610, 0x7f60ea83e3914376d6422502433719, 0x004ee5 ] } , - BigNum { limbs: [ 0x177442f762f8b140d553d92828a013, 0xcbbeda9124c5bc6e587fa3e9fe4b15, 0x003dff ] } , - BigNum { limbs: [ 0xa62fc0089b634dbf2aac25d7d75fee, 0xdb944f0c588276cb7f8865b7d9ba3e, 0x0035ed ] } , - BigNum { limbs: [ 0x257af85747aeab0dfbc55b0bfe2025, 0x9debe9dd427956302b849b853091e9, 0x00200c ] } , - BigNum { limbs: [ 0x98290aa8b6ad53f2043aa3f401dfdc, 0x09673fc03acedd09ac836e1ca7736a, 0x0053e1 ] } , - BigNum { limbs: [ 0x592fba384dac4713e39e87a5485424, 0x1eb46ad5a72ccfc7c03fdd0aba6704, 0x0021b4 ] } , - BigNum { limbs: [ 0x647448c7b0afb7ec1c61775ab7abdd, 0x889ebec7d61b637217c82c971d9e4f, 0x005239 ] } , - BigNum { limbs: [ 0xbfd757e7476ce106aeba3062ddf0c0, 0xf8f34b722df00c34ac2d837b92b02e, 0x00403a ] } , - BigNum { limbs: [ 0xfdccab18b6ef1df95145ce9d220f41, 0xae5fde2b4f5827052bda8626455524, 0x0033b2 ] } , - BigNum { limbs: [ 0x756db692fb7d2eff951fd448b52298, 0x9f72b95270b0848c7bb9c4bb948f90, 0x006760 ] } , - BigNum { limbs: [ 0x48364c6d02ded0006ae02ab74add69, 0x07e0704b0c97aead5c4e44e64375c3, 0x000c8d ] } , - BigNum { limbs: [ 0xadfbd518c6cfa8b8fbe433942b9035, 0x491bead48f2c76ad48b4a8cfe0546e, 0x002ee3 ] } , - BigNum { limbs: [ 0x0fa82de7378c5647041bcb6bd46fcc, 0x5e373ec8ee1bbc8c8f5360d1f7b0e5, 0x00450a ] } , - BigNum { limbs: [ 0xe611b9760956d35b7c13c367df99c0, 0xff3be50b2748c4899e7a646aacc401, 0x006b1c ] } , - BigNum { limbs: [ 0xd7924989f5052ba483ec3b98206641, 0xa817449255ff6eb0398da5372b4151, 0x0008d0 ] } , - BigNum { limbs: [ 0xf2f6a508d187634179beb1cd1e7923, 0xcc7c00a55e325b4c3815cd0d035171, 0x002ab0 ] } , - BigNum { limbs: [ 0xcaad5df72cd49bbe86414d32e186de, 0xdad728f81f15d7ed9ff23c94d4b3e1, 0x00493c ] } , - BigNum { limbs: [ 0xab5c0fedd6a42a61cd5d3d62aa072e, 0xc87f3ae15bea544f91e928d45a707d, 0x0054de ] } , - BigNum { limbs: [ 0x1247f31227b7d49e32a2c19d55f8d3, 0xded3eebc215ddeea461ee0cd7d94d6, 0x001f0e ] } , - BigNum { limbs: [ 0xe11afba2966e80ce8faf067b35a896, 0x7f3796dfd4a818ff607c0131e323a5, 0x007200 ] } , - BigNum { limbs: [ 0xdc89075d67ed7e317050f884ca576b, 0x281b92bda8a01a3a778c086ff4e1ad, 0x0001ed ] } , - BigNum { limbs: [ 0xefeb8648ebd480f409f1829c3dbc86, 0x58580639d21913424b58076d571c59, 0x00597e ] } , - BigNum { limbs: [ 0xcdb87cb712877e0bf60e7c63c2437b, 0x4efb2363ab2f1ff78cb0023480e8f9, 0x001a6f ] } , - BigNum { limbs: [ 0xe9477f9e3464d58ee8e6bd894cb034, 0xfb96180a3e34627cd57adbafff3268, 0x000e70 ] } , - BigNum { limbs: [ 0xd45c8361c9f7297117194176b34fcd, 0xabbd11933f13d0bd028d2df1d8d2ea, 0x00657c ] } , - BigNum { limbs: [ 0xc629875055acc88c58f9d6d7e4efd1, 0x6f9cc8f77ccdcc1d0703d7849a612f, 0x0021b0 ] } , - BigNum { limbs: [ 0xf77a7bafa8af3673a70628281b1030, 0x37b660a6007a671cd104321d3da423, 0x00523d ] } , - BigNum { limbs: [ 0x17f60a78c4b441628070272a1e82b5, 0x0301700c800f342129044f9aaa7325, 0x004300 ] } , - BigNum { limbs: [ 0xa5adf88739a7bd9d7f8fd7d5e17d4c, 0xa451b990fd38ff18af03ba072d922e, 0x0030ed ] } , - BigNum { limbs: [ 0xe844b92948ba04b58ea30f7eb1bdc8, 0x1a80fa0b342688238b143dd481c6e5, 0x0018b2 ] } , - BigNum { limbs: [ 0xd55f49d6b5a1fa4a715cef814e4239, 0x8cd22f924921ab164cf3cbcd563e6d, 0x005b3b ] } , - BigNum { limbs: [ 0x132e9bed0b9ffda9ee552adea093e4, 0x62e5b807220da519125d9617a4dfdf, 0x0059d3 ] } , - BigNum { limbs: [ 0xaa756712f2bc015611aad4215f6c1d, 0x446d71965b3a8e20c5aa738a332574, 0x001a1a ] } , - BigNum { limbs: [ 0xde89cbd800e9e1df5cdaddae536761, 0x99ef4b2c56e815c6515638564fa4c2, 0x0057ad ] } , - BigNum { limbs: [ 0xdf1a3727fd721d20a3252151ac98a0, 0x0d63de7126601d7386b1d14b886090, 0x001c40 ] } , - BigNum { limbs: [ 0xc2815184e2cc30e6c010840fccc2d0, 0x19fe37f0ee6dee1595b04d22ea9082, 0x00607a ] } , - BigNum { limbs: [ 0xfb22b17b1b8fce193fef7af0333d31, 0x8d54f1ac8eda45244257bc7eed74d0, 0x001373 ] } , - BigNum { limbs: [ 0xe4554a900c6ec287cc3255fe0dc830, 0x3aa6d0b5a8760b4cf0d79c87070e17, 0x003fa7 ] } , - BigNum { limbs: [ 0xd94eb86ff1ed3c7833cda901f237d1, 0x6cac58e7d4d227ece7306d1ad0f73b, 0x003446 ] } , - BigNum { limbs: [ 0xb398953cca0d67bf5567d7621e2d8f, 0x6de41de1db47c728f80c42bf0b0834, 0x00301f ] } , - BigNum { limbs: [ 0x0a0b6dc3344e9740aa98279de1d272, 0x396f0bbba2006c10dffbc6e2ccfd1f, 0x0043ce ] } , - BigNum { limbs: [ 0x962f58342576bdf166f48059f66ac8, 0x97619427b6ddd5b79de31ec4e3c51f, 0x0072b3 ] } , - BigNum { limbs: [ 0x2774aacbd8e5410e990b7ea6099539, 0x0ff19575c66a5d823a24eadcf44034, 0x00013a ] } , - BigNum { limbs: [ 0x24d440d730af9a3f0b4ecfd90411f1, 0x46d0f8ddf3531046cd85dba9cb19a8, 0x00082f ] } , - BigNum { limbs: [ 0x98cfc228cdac64c0f4b12f26fbee10, 0x608230bf89f522f30a822df80cebab, 0x006bbe ] } , - BigNum { limbs: [ 0xc0f5a75f604f6086c92529fb22df29, 0xd608500cb76ee87d768eb9b41c8a1b, 0x006eef ] } , - BigNum { limbs: [ 0xfcae5ba09e0c9e7936dad504dd20d8, 0xd14ad990c5d94abc61794fedbb7b37, 0x0004fd ] } , - BigNum { limbs: [ 0x8fd135f2bac00562079583a7c19587, 0x740334326a8734ec83c707588b1d40, 0x0070da ] } , - BigNum { limbs: [ 0x2dd2cd0d439bf99df86a7b583e6a7a, 0x334ff56b12c0fe4d544102494ce813, 0x000313 ] } , - BigNum { limbs: [ 0xbc79366d5312ce42ae9328d457d99d, 0xdfd5d8732182e7e61605fb8ca6470e, 0x006b3b ] } , - BigNum { limbs: [ 0x012acc92ab4930bd516cd62ba82664, 0xc77d512a5bc54b53c2020e1531be45, 0x0008b1 ] } , - BigNum { limbs: [ 0x1d1a93ef7d9a101b62c435099a7877, 0x605a65de60878e7fe6cae78b960e2d, 0x004a43 ] } , - BigNum { limbs: [ 0xa0896f1080c1eee49d3bc9f665878a, 0x46f8c3bf1cc0a4b9f13d221641f726, 0x0029aa ] } , - BigNum { limbs: [ 0x6a116620a108087fb95fcb72e614e0, 0x5883b7d44749255e7f3c61139fa69f, 0x0003d1 ] } , - BigNum { limbs: [ 0x53929cdf5d53f68046a0338d19eb21, 0x4ecf71c935ff0ddb58cba88e385eb4, 0x00701c ] } , - BigNum { limbs: [ 0x70929550bc0873f7377ba08b5891c5, 0x6961bfe01725b6235ded61020645c1, 0x00137a ] } , - BigNum { limbs: [ 0x4d116daf42538b08c8845e74a76e3c, 0x3df169bd66227d167a1aa89fd1bf92, 0x006073 ] } , - BigNum { limbs: [ 0x3edbb7342cf4976ef77052f3b06fcf, 0x7820854ed9924e04a376d0731e9b62, 0x002ac5 ] } , - BigNum { limbs: [ 0x7ec84bcbd1676791088fac0c4f9032, 0x2f32a44ea3b5e5353491392eb969f1, 0x004928 ] } , - BigNum { limbs: [ 0x1db462dc6290c075d7248297a6ec98, 0xfbbccaba9fe556ba6e9c1ff7c93bdb, 0x004b0c ] } , - BigNum { limbs: [ 0x9fefa0239bcb3e8a28db7c68591369, 0xab965ee2dd62dc7f696be9aa0ec978, 0x0028e0 ] } , - BigNum { limbs: [ 0x0bc4f580ed569fcac071cabb962a26, 0xb929d1b14af78528bb0c2d58675a46, 0x000967 ] } , - BigNum { limbs: [ 0xb1df0d7f11055f353f8e344469d5db, 0xee2957ec3250ae111cfbdc4970ab0d, 0x006a85 ] } , - BigNum { limbs: [ 0xf2b2b3e610defb5f0f2901209a5489, 0x8a4971053e16433d9e6d7000e78e07, 0x00570a ] } , - BigNum { limbs: [ 0xcaf14f19ed7d03a0f0d6fddf65ab78, 0x1d09b8983f31effc399a99a0f0774b, 0x001ce3 ] } , - BigNum { limbs: [ 0xaeeadc9eb27a597732034e9cec8131, 0xc8d87807e0fc6c96eb013622c18b50, 0x00336d ] } , - BigNum { limbs: [ 0x0eb926614be1a588cdfcb063137ed0, 0xde7ab1959c4bc6a2ed06d37f167a03, 0x00407f ] } , - BigNum { limbs: [ 0x3f01b6d19f9306559c7997221ca6f4, 0x53df6a7eeb6e34485fffdb5ceb448c, 0x004709 ] } , - BigNum { limbs: [ 0x7ea24c2e5ec8f8aa638667dde3590d, 0x5373bf1e91d9fef178082e44ecc0c7, 0x002ce4 ] } , - BigNum { limbs: [ 0x2d1821cf05358cc529e0772df8cf72, 0xd5dbfa25969f4496961f856ce6724f, 0x0029a0 ] } , - BigNum { limbs: [ 0x908be130f926723ad61f87d207308f, 0xd1772f77e6a8eea341e88434f19304, 0x004a4c ] } , - BigNum { limbs: [ 0xd581d5bbd55c08c56583ab7638c172, 0x37b60ab2728a3f7f1331bf6b847aee, 0x00008a ] } , - BigNum { limbs: [ 0xe8222d4428fff63a9a7c5389c73e8f, 0x6f9d1eeb0abdf3bac4d64a36538a64, 0x007363 ] } , - BigNum { limbs: [ 0x2a88a374919e32868b8cf3a3c456dd, 0x430c8c82b07f36d6e90ea2d1b2c9d4, 0x003d78 ] } , - BigNum { limbs: [ 0x931b5f8b6cbdcc7974730b5c3ba924, 0x64469d1accc8fc62eef966d0253b7f, 0x003675 ] } , - BigNum { limbs: [ 0x55c0b4dd526cae73628c95bfe36318, 0x3a81a2f8ab890f7a2cb4b2760f1f29, 0x000274 ] } , - BigNum { limbs: [ 0x67e34e22abef508c9d7369401c9ce9, 0x6cd186a4d1bf23bfab53572bc8e62a, 0x007179 ] } , - BigNum { limbs: [ 0x6b650565be27d5c4349c6479217ea0, 0x366d6c2a685ba9c8d69636987d3766, 0x00462a ] } , - BigNum { limbs: [ 0x523efd9a4034293bcb639a86de8161, 0x70e5bd7314ec89710171d3095acded, 0x002dc3 ] } , - BigNum { limbs: [ 0xe11d37c118ad24f23bb876e6e3996d, 0x2250ca2db691fd4bc57e64f23b3e4a, 0x0069ea ] } , - BigNum { limbs: [ 0xdc86cb3ee5aeda0dc44788191c6694, 0x85025f6fc6b635ee1289a4af9cc708, 0x000a03 ] } , - BigNum { limbs: [ 0xc2834a13648ab0bb2696da85c46161, 0x19badcaac1644af1730c4eab0deb39, 0x0039d6 ] } , - BigNum { limbs: [ 0xfb20b8ec99d14e44d969247a3b9ea0, 0x8d984cf2bbe3e84864fbbaf6ca1a19, 0x003a17 ] } , - BigNum { limbs: [ 0x7f57194f4989607224b93b7826bd78, 0x0b4418d8f2e9507988b500bdc6892a, 0x0005ec ] } , - BigNum { limbs: [ 0x3e4ce9b0b4d29e8ddb46c387d94289, 0x9c0f10c48a5ee2c04f5308e4117c29, 0x006e01 ] } , - BigNum { limbs: [ 0xb5608c82fae9cac0e0e70700397886, 0x37dfecd3e929e61aaee3afa8db4c18, 0x0064d4 ] } , - BigNum { limbs: [ 0x0843767d0372343f1f18f7ffc6877b, 0x6f733cc9941e4d1f292459f8fcb93b, 0x000f19 ] } , - BigNum { limbs: [ 0x34f400a2f13a75858c7dd04232ef0d, 0xf9d6eccc062a45cecaaeac73df696b, 0x004e91 ] } , - BigNum { limbs: [ 0x88b0025d0d21897a73822ebdcd10f4, 0xad7c3cd1771ded6b0d595d2df89be8, 0x00255b ] } , - BigNum { limbs: [ 0x8a03366e20394efdef59ead89e81cf, 0xb64ba063e5a79520a209516f517261, 0x00358d ] } , - BigNum { limbs: [ 0x33a0cc91de22b00210a61427617e32, 0xf107893997a09e1935feb8328692f2, 0x003e5f ] } , - BigNum { limbs: [ 0x11ff8298b69043c12c3995a8873bed, 0x3bd361c7384135ed4d5518c8374264, 0x005418 ] } , - BigNum { limbs: [ 0xaba4806747cbbb3ed3c6695778c414, 0x6b7fc7d64506fd4c8ab2f0d9a0c2ef, 0x001fd5 ] } , - BigNum { limbs: [ 0x2610353aab356f247373610da0eec2, 0xde9a82dea97a04f74216d11d4ec6d1, 0x001d52 ] } , - BigNum { limbs: [ 0x9793cdc553268fdb8c8c9df25f113f, 0xc8b8a6bed3ce2e4295f13884893e82, 0x00569a ] } , - BigNum { limbs: [ 0x74dcdd07aec63dbe50506c03bb3eb1, 0x788a1c17378fdf1d97dca907f97dad, 0x000fbd ] } , - BigNum { limbs: [ 0x48c725f84f95c141afaf92fc44c150, 0x2ec90d8645b8541c402b6099de87a6, 0x006430 ] } , - BigNum { limbs: [ 0x807a77c0216d6a62dcea75fb24beb3, 0x4c241cc0c3ccd4454efbffb2164b6b, 0x0047a3 ] } , - BigNum { limbs: [ 0x3d298b3fdcee949d23158904db414e, 0x5b2f0cdcb97b5ef4890c09efc1b9e8, 0x002c4a ] } , - BigNum { limbs: [ 0x68e775a1fdfeee59b11294a7e75b42, 0x90f74d6a8f6eb5ad0f7f6d17ae7cd2, 0x001936 ] } , - BigNum { limbs: [ 0x54bc8d5e005d10a64eed6a5818a4bf, 0x165bdc32edd97d8cc8889c8a298881, 0x005ab7 ] } , - BigNum { limbs: [ 0x604fc97c42876dd9cdbdfe6d7541f7, 0x247e9f45832c426726cdf205c7d4ce, 0x001585 ] } , - BigNum { limbs: [ 0x5d543983bbd49126324200928abe0a, 0x82d48a57fa1bf0d2b13a179c103085, 0x005e68 ] } , - BigNum { limbs: [ 0x744a20a8aa638c81b32209443061d3, 0x98b84933a8c2f0d7db9ab6d438be24, 0x005753 ] } , - BigNum { limbs: [ 0x4959e25753f8727e4cddf5bbcf9e2e, 0x0e9ae069d4854261fc6d52cd9f472f, 0x001c9a ] } , - BigNum { limbs: [ 0xc2515e5bf61bb549b9ca5d035c832d, 0x104d23867d1d1f9c39b2f742016478, 0x006d4c ] } , - BigNum { limbs: [ 0xfb52a4a4084049b64635a1fca37cd4, 0x97060617002b139d9e55125fd6a0da, 0x0006a1 ] } , - BigNum { limbs: [ 0x76ecab2c881551a0912629b1438204, 0x95f5102a751cdc20bb57d12d8ac579, 0x001a40 ] } , - BigNum { limbs: [ 0x46b757d37646ad5f6ed9d54ebc7dfd, 0x115e1973082b57191cb038744d3fda, 0x0059ad ] } , - BigNum { limbs: [ 0x836427d83015de36fc877aa7a41114, 0x2baad6dbc9e85c4b92dd71e06d41cb, 0x0027c4 ] } , - BigNum { limbs: [ 0x3a3fdb27ce4620c9037884585beeed, 0x7ba852c1b35fd6ee452a97c16ac388, 0x004c29 ] } , - BigNum { limbs: [ 0x6d9c1f736d9ca4ebf95617bb8f14e5, 0x79e0d2e2b5e3ea1612d2158040bcc5, 0x001a46 ] } , - BigNum { limbs: [ 0x5007e38c90bf5a1406a9e74470eb1c, 0x2d7256bac7644923c535f42197488e, 0x0059a7 ] } , - BigNum { limbs: [ 0x654a9626e64c9bae1125f30e062ea5, 0xcba6e09da50cd7e8dc62c6b3d3a626, 0x00672b ] } , - BigNum { limbs: [ 0x58596cd9180f6351eeda0bf1f9d15c, 0xdbac48ffd83b5b50fba542ee045f2d, 0x000cc1 ] } , - BigNum { limbs: [ 0xe36bb0a67bfd6f08218b88d7bb4a66, 0x1a35f6af3b5db3945bfc5926357f34, 0x0029e6 ] } , - BigNum { limbs: [ 0xda385259825e8ff7de74762844b59b, 0x8d1d32ee41ea7fa57c0bb07ba2861e, 0x004a07 ] } , - BigNum { limbs: [ 0x5768e9d7df8cdeb5ec36f5f5a21cbd, 0x3aa1719ae038e49285fd6b82920681, 0x007189 ] } , - BigNum { limbs: [ 0x663b19281ecf204a13c9090a5de344, 0x6cb1b8029d0f4ea7520a9e1f45fed2, 0x000264 ] } , - BigNum { limbs: [ 0x7b57a78366b52c82e77e4704d5ee1b, 0x1c2cf0569225e688d9618730b8ae84, 0x006ec7 ] } , - BigNum { limbs: [ 0x424c5b7c97a6d27d1881b7fb2a11e6, 0x8b263946eb224cb0fea682711f56cf, 0x000526 ] } , - BigNum { limbs: [ 0xfe423d0c2dd8d7693ad2dd0439e0f2, 0xf3d960853d4bb1fe08f795f4eb622d, 0x0064f8 ] } , - BigNum { limbs: [ 0xbf61c5f3d0832796c52d21fbc61f0f, 0xb379c9183ffc813bcf1073aceca325, 0x000ef4 ] } , - BigNum { limbs: [ 0xd9fd35aa2bbfbb8c9503b572273e30, 0x05bb00c2e29d2dd5225f389aac6127, 0x002f8f ] } , - BigNum { limbs: [ 0xe3a6cd55d29c43736afc498dd8c1d1, 0xa19828da9aab0564b5a8d1072ba42b, 0x00445e ] } , - BigNum { limbs: [ 0xd2cb62bb6f8d444320edc98ad4f10e, 0xbe649765ecb10065379a8efc594e37, 0x000821 ] } , - BigNum { limbs: [ 0xead8a0448ecebabcdf1235752b0ef3, 0xe8ee9237909732d4a06d7aa57eb71b, 0x006bcb ] } , - BigNum { limbs: [ 0x7c8a5578c84776b299104a012dd867, 0xcdc31e229aed9d5a2a1702bde80275, 0x001906 ] } , - BigNum { limbs: [ 0x4119ad873614884d66efb4fed2279a, 0xd9900b7ae25a95dfadf106e3f002de, 0x005ae6 ] } , - BigNum { limbs: [ 0x08ac6c80801959025b7be7e7bdffad, 0x781374808ca11d675ca5b7a5a6e93c, 0x0010f2 ] } , - BigNum { limbs: [ 0xb4f7967f7e42a5fda4841718420054, 0x2f3fb51cf0a715d27b6251fc311c17, 0x0062fb ] } , - BigNum { limbs: [ 0xa595f474d96adbf60dc6079f47dd9a, 0xecefbc8636b585df84c7c43f7a703f, 0x001b29 ] } , - BigNum { limbs: [ 0x180e0e8b24f12309f239f760b82267, 0xba636d174692ad5a534045625d9514, 0x0058c3 ] } , - BigNum { limbs: [ 0xf5bb72eec65cfdac56c4a94b015f16, 0xe2ac9526a34be782e4bbed4937aec4, 0x006570 ] } , - BigNum { limbs: [ 0xc7e8901137ff0153a93b55b4fea0eb, 0xc4a69476d9fc4bb6f34c1c58a0568e, 0x000e7c ] } , - BigNum { limbs: [ 0x4afe3f0ae233c9db14908599f458d8, 0x5a8a3d18edaf004071a725364d01f1, 0x001f5f ] } , - BigNum { limbs: [ 0x72a5c3f51c283524eb6f79660ba729, 0x4cc8ec848f9932f96660e46b8b0362, 0x00548e ] } , - BigNum { limbs: [ 0x0705a55c75bde3d9ec04f35f2f3748, 0x5e606bdb83de8fe2870b3be481aa77, 0x002df9 ] } , - BigNum { limbs: [ 0xb69e5da3889e1b2613fb0ba0d0c8b9, 0x48f2bdc1f969a35750fccdbd565adc, 0x0045f4 ] } , - BigNum { limbs: [ 0xcef5f118418cbff7d307b014884ac8, 0xd388423fff7c831771fe812b8f6eb9, 0x00095a ] } , - BigNum { limbs: [ 0xeeae11e7bccf3f082cf84eeb77b539, 0xd3cae75d7dcbb02266098876489699, 0x006a92 ] } , - BigNum { limbs: [ 0x1ec708bbc371e5fa577a3377bed03b, 0x3556719ba7731c0f315db71f58b945, 0x005fe1 ] } , - BigNum { limbs: [ 0x9edcfa443aea1905a885cb88412fc6, 0x71fcb801d5d5172aa6aa52827f4c0e, 0x00140c ] } , - BigNum { limbs: [ 0x910e53a43ccc546cf05fee43e8e8bb, 0x299156861231c856d226dd94c8cd0e, 0x003d94 ] } , - BigNum { limbs: [ 0x2c95af5bc18faa930fa010bc171746, 0x7dc1d3176b166ae305e12c0d0f3845, 0x003659 ] } , - BigNum { limbs: [ 0x37fefa20da0900106899c9038863f5, 0x52dedc5a4703a562353ce9bd0d48f3, 0x00234f ] } , - BigNum { limbs: [ 0x85a508df2452feef976635fc779c0c, 0x54744d4336448dd7a2cb1fe4cabc60, 0x00509e ] } , - BigNum { limbs: [ 0x935e883e4d0aa099350f3f1f238e44, 0xc8fe302847e6d49fb3acce09aa7c18, 0x0003b9 ] } , - BigNum { limbs: [ 0x2a457ac1b1515e66caf0bfe0dc71bd, 0xde54f97535615e9a245b3b982d893b, 0x007033 ] } , - BigNum { limbs: [ 0xd722035fae8abada32dfeaccbbf98d, 0xc8f0f02e65e6adf7ec62c5a0ca3e70, 0x00421a ] } , - BigNum { limbs: [ 0xe681ffa04fd14425cd201433440674, 0xde62396f17618541eba544010dc6e2, 0x0031d2 ] } , - BigNum { limbs: [ 0x6ac76bd2157ee41f10aafa2f7fbc90, 0xcf831ef6a8c992d7830ab787d21df8, 0x001029 ] } , - BigNum { limbs: [ 0x52dc972de8dd1ae0ef5504d0804371, 0xd7d00aa6d47ea06254fd521a05e75b, 0x0063c3 ] } , - BigNum { limbs: [ 0x759f24fda4b6da6df6c3189cbc8b17, 0x32b15a073d13cf474f049a8b1ebcfb, 0x0053b6 ] } , - BigNum { limbs: [ 0x4804de0259a52492093ce6634374ea, 0x74a1cf96403463f289036f16b94858, 0x002037 ] } , - BigNum { limbs: [ 0xb2599ddc09e1df071f4fb2c4e50cab, 0x239d05c466a485cd8b8d46589593ab, 0x001960 ] } , - BigNum { limbs: [ 0x0b4a6523f47a1ff8e0b04c3b1af356, 0x83b623d916a3ad6c4c7ac3494271a8, 0x005a8d ] } , - BigNum { limbs: [ 0x82d6a42408ebfba758401acfc3a4e3, 0xf227985f08e736aa15960e38ab6d8f, 0x00524a ] } , - BigNum { limbs: [ 0x3acd5edbf5700358a7bfe4303c5b1e, 0xb52b913e7460fc8fc271fb692c97c4, 0x0021a2 ] } , - BigNum { limbs: [ 0x4884b372244337d996b4c2f8f76766, 0x326b21953ae15c5d6659010049a650, 0x0066be ] } , - BigNum { limbs: [ 0x751f4f8dda18c726694b3c0708989b, 0x74e808084266d6dc71af08a18e5f03, 0x000d2f ] } , - BigNum { limbs: [ 0x7008ba672b6ffecf52e7e950d7ce36, 0xed9f21961bdda1125478cf63050484, 0x0036a0 ] } , - BigNum { limbs: [ 0x4d9b4898d2ec0030ad1815af2831cb, 0xb9b40807616a9227838f3a3ed300cf, 0x003d4c ] } , - BigNum { limbs: [ 0x6742385645cc833663bf62cd3416c5, 0x25546b9ee920c8af2a8001fc010048, 0x000c86 ] } , - BigNum { limbs: [ 0x5661caa9b88f7bc99c409c32cbe93c, 0x81febdfe94276a8aad8807a5d7050b, 0x006767 ] } , - BigNum { limbs: [ 0xdbeb27b4f1ed5b54c2328a543f533c, 0x55c402a5abf4018ec3efdabca1f40e, 0x0040e4 ] } , - BigNum { limbs: [ 0xe1b8db4b0c6ea3ab3dcd74abc0acc5, 0x518f26f7d15431ab14182ee5361144, 0x003309 ] } , - BigNum { limbs: [ 0xce790549f609fbe3c0cb56782c3c20, 0xdc1e22b772c643008b7465767c9269, 0x006da0 ] } , - BigNum { limbs: [ 0xef2afdb60852031c3f34a887d3c3e1, 0xcb3506e60a81f0394c93a42b5b72e9, 0x00064c ] } , - BigNum { limbs: [ 0x30c88c5bd7e5324e7832b3aecf9672, 0x6577edca0ac752c221798af662989b, 0x000a94 ] } , - BigNum { limbs: [ 0x8cdb76a42676ccb187cd4b5130698f, 0x41db3bd37280e077b68e7eab756cb8, 0x006959 ] } , - BigNum { limbs: [ 0x059822e7d4b19094b1e227591be522, 0x39714ea4ece87942ccf7b13be45384, 0x002769 ] } , - BigNum { limbs: [ 0xb80be01829aa6e6b4e1dd7a6e41adf, 0x6de1daf8905fb9f70b105865f3b1cf, 0x004c84 ] } , - BigNum { limbs: [ 0xf2d09fcf74e76420b19c2ee509f657, 0x9b6ec98cd695a36ba9772cbf4d979f, 0x0036af ] } , - BigNum { limbs: [ 0xcad3633089749adf4e63d01af609aa, 0x0be46010a6b28fce2e90dce28a6db3, 0x003d3e ] } , - BigNum { limbs: [ 0x7dbe95ea0cbc252c5770679627a97f, 0x04f09abf773987aaaab008f919ca44, 0x00116c ] } , - BigNum { limbs: [ 0x3fe56d15f19fd9d3a88f9769d85682, 0xa2628ede060eab8f2d5800a8be3b0f, 0x006281 ] } , - BigNum { limbs: [ 0x89ec85d2983ba229bc9875532a7597, 0x990197530953ac7302f242c61aae7b, 0x000dd0 ] } , - BigNum { limbs: [ 0x33b77d2d66205cd6436789acd58a6a, 0x0e51924a73f486c6d515c6dbbd56d8, 0x00661d ] } , - BigNum { limbs: [ 0x01ced787cf278151fbf767f4b554e7, 0x3fc67f0c11ff40a392bdb1e33dc781, 0x006e99 ] } , - BigNum { limbs: [ 0xbbd52b782f347dae0408970b4aab1a, 0x678caa916b48f296454a57be9a3dd2, 0x000554 ] } , - BigNum { limbs: [ 0x3dc385727c108e594fa0e65cc3cd50, 0x673a84a1d3b13023e031e604da0995, 0x002544 ] } , - BigNum { limbs: [ 0x7fe07d8d824b70a6b05f18a33c32b1, 0x4018a4fba9970315f7d6239cfdfbbe, 0x004ea9 ] } , - BigNum { limbs: [ 0x6ce4b54501596cf2781be8bda5e0a6, 0x639aa68bf9fec36fd92c67d7c08684, 0x0027a6 ] } , - BigNum { limbs: [ 0x50bf4dbafd02920d87e416425a1f5b, 0x43b8831183496fc9fedba1ca177ecf, 0x004c47 ] } , - BigNum { limbs: [ 0x21118adbe582580972ed9f7ecbb2d3, 0x6c6f11cc76a3be0f6070d801b9f139, 0x006e49 ] } , - BigNum { limbs: [ 0x9c92782418d9a6f68d125f81344d2e, 0x3ae417d106a4752a779731a01e141a, 0x0005a4 ] } , - BigNum { limbs: [ 0x144d82672248d583ec65f5c105ee71, 0x87cdf0c1f63094287cd50c6cde22fc, 0x002f06 ] } , - BigNum { limbs: [ 0xa9568098dc13297c139a093efa1190, 0x1f8538db87179f115b32fd34f9e257, 0x0044e7 ] } , - BigNum { limbs: [ 0xe24a606a0fba04276e0830b73cc727, 0x9b918ea9251565fb701bc24d7e2b2a, 0x005997 ] } , - BigNum { limbs: [ 0xdb59a295eea1fad891f7ce48c338da, 0x0bc19af45832cd3e67ec475459da28, 0x001a56 ] } , - BigNum { limbs: [ 0x40dbec56ee09e2708088fdd2629b2f, 0xa9fb9fdc9c0182b7ee3870e5d92b7d, 0x002bb2 ] } , - BigNum { limbs: [ 0x7cc816a910521c8f7f77012d9d64d2, 0xfd5789c0e146b081e9cf98bbfed9d6, 0x00483a ] } , - BigNum { limbs: [ 0xfa4d44c2ef59645bf62610ffa7adee, 0xf60be477e51ef481c73fef2f82c89b, 0x004e39 ] } , - BigNum { limbs: [ 0xc356be3d0f029aa409d9ee00585213, 0xb147452598293eb810c81a72553cb7, 0x0025b3 ] } , - BigNum { limbs: [ 0x0532f9855f4f8fac0e8bd216764a5f, 0xc9d0a8ad81e50c626caf505e88968e, 0x000b7d ] } , - BigNum { limbs: [ 0xb871097a9f0c6f53f1742ce989b5a2, 0xdd8280effb6326d76b58b9434f6ec5, 0x00686f ] } , - BigNum { limbs: [ 0xa39164ec7f5bc53d0345da045598c1, 0xf7be0fd2fc71a5d21b9f7d77b605ab, 0x002d02 ] } , - BigNum { limbs: [ 0x1a129e137f0039c2fcba24fbaa6740, 0xaf9519ca80d68d67bc688c2a21ffa8, 0x0046ea ] } , - BigNum { limbs: [ 0xb626254a88418bb1d5fe80b00497cb, 0xc56e390ec55c151603d47dffda4920, 0x006a52 ] } , - BigNum { limbs: [ 0x077dddb5761a734e2a017e4ffb6836, 0xe1e4f08eb7ec1e23d4338ba1fdbc33, 0x00099a ] } , - BigNum { limbs: [ 0xfd94cab1a77ca44f6750a9c17a7225, 0x302cefbc8a6775409b257d8f2686b8, 0x0036a0 ] } , - BigNum { limbs: [ 0xc00f384e56df5ab098af553e858ddc, 0x772639e0f2e0bdf93ce28c12b17e9a, 0x003d4d ] } , - BigNum { limbs: [ 0x01d6fea8a72d5a4590fb84c6e1f834, 0xcbb9c03d291f51375434d9889b7931, 0x00516f ] } , - BigNum { limbs: [ 0xbbcd0457572ea4ba6f047a391e07cd, 0xdb9969605428e20283d330193c8c22, 0x00227d ] } , - BigNum { limbs: [ 0x802b5bea2afd97a0a9f89ef141717c, 0x6196529a00b086ddebab03555cd5b2, 0x000b2d ] } , - BigNum { limbs: [ 0x3d78a715d35e675f5607600ebe8e85, 0x45bcd7037c97ac5bec5d064c7b2fa1, 0x0068c0 ] } , - BigNum { limbs: [ 0x6b4e0984cefc74c554c63af2afb1ba, 0x6e2164b4da11d8983b9ed9cd573654, 0x005104 ] } , - BigNum { limbs: [ 0x5255f97b2f5f8a3aab39c40d504e47, 0x3931c4e8a3365aa19c692fd480ceff, 0x0022e9 ] } , - BigNum { limbs: [ 0xd541777839ea7f8bd671afe094fa49, 0x20535364de01977ceb1990603fb3c9, 0x000664 ] } , - BigNum { limbs: [ 0xe8628b87c4717f74298e4f1f6b05b8, 0x86ffd6389f469bbcecee7941985189, 0x006d89 ] } , - BigNum { limbs: [ 0xf8f0251724c0e15a647e6dcb47ca88, 0x6817f7ffab8e8a6dd0b401644d8e74, 0x005f77 ] } , - BigNum { limbs: [ 0xc4b3dde8d99b1da59b819134b83579, 0x3f3b319dd1b9a8cc0754083d8a76de, 0x001476 ] } , - BigNum { limbs: [ 0x5f469035e99cc9a4d3bf8c4fcccf57, 0xaa996ac3db7772fff165c179333442, 0x002f21 ] } , - BigNum { limbs: [ 0x5e5d72ca14bf355b2c4072b03330aa, 0xfcb9bed9a1d0c039e6a24828a4d111, 0x0044cb ] } , - BigNum { limbs: [ 0x16ec9bf89cf3ce0358f775c9c2f7f1, 0x600912f445e7ad22e3a16bbb048aad, 0x0032ed ] } , - BigNum { limbs: [ 0xa6b76707616830fca70889363d0810, 0x474a16a937608616f4669de6d37aa6, 0x004100 ] } , - BigNum { limbs: [ 0xba571d0d5d7a9238e5a8d971a61dfc, 0x5d17bfcbfc033fc30d75fd7033e761, 0x0016a3 ] } , - BigNum { limbs: [ 0x034ce5f2a0e16cc71a57258e59e205, 0x4a3b69d18144f376ca920c31a41df2, 0x005d4a ] } , - BigNum { limbs: [ 0x7607fc49b1f9f0ab6ec59f5299b6c3, 0xbe665e5d5f048803dcf046b2d12354, 0x0024de ] } , - BigNum { limbs: [ 0x479c06b64c620e54913a5fad66493e, 0xe8eccb401e43ab35fb17c2ef06e1ff, 0x004f0e ] } , - BigNum { limbs: [ 0x3aa2ecd06359932070f57560611be8, 0x19bb44b32906d1e89751284bee59dd, 0x005947 ] } , - BigNum { limbs: [ 0x8301162f9b026bdf8f0a899f9ee419, 0x8d97e4ea5441615140b6e155e9ab76, 0x001aa6 ] } , - BigNum { limbs: [ 0x2193da7b724a2ed4f7fe00b2fc0b4e, 0xc9a644b9f6307d3d8aa18a0fb8fea0, 0x0062dc ] } , - BigNum { limbs: [ 0x9c1028848c11d02b0801fe4d03f4b3, 0xddace4e38717b5fc4d667f921f06b3, 0x001110 ] } , - BigNum { limbs: [ 0x8b1b0866c7e6384fff1402328d75f0, 0x73bf2b4e9e7fe2931ebed4802d27a6, 0x00080b ] } , - BigNum { limbs: [ 0x3288fa993675c6b000ebfccd728a11, 0x3393fe4edec850a6b9493521aaddad, 0x006be2 ] } , - BigNum { limbs: [ 0xa409ca98c13f86b9bb09182ef3249c, 0x4fef885548a0adffa477bc9a6960ba, 0x006def ] } , - BigNum { limbs: [ 0x199a38673d1c784644f6e6d10cdb65, 0x5763a14834a7853a33904d076ea499, 0x0005fe ] } , - BigNum { limbs: [ 0x6cca349415b0806502e850e3864c35, 0x3816a7c7228a09f4a5b7f4482c854a, 0x0035db ] } , - BigNum { limbs: [ 0x50d9ce6be8ab7e9afd17ae1c79b3cc, 0x6f3c81d65abe294532501559ab8009, 0x003e12 ] } , - BigNum { limbs: [ 0x9d1d609cf552644d76baf4d37387a5, 0x2eef89e1832e1970e162b522e73a1c, 0x00173f ] } , - BigNum { limbs: [ 0x2086a26309099ab289450a2c8c785c, 0x78639fbbfa1a19c8f6a5547ef0cb37, 0x005cae ] } , - BigNum { limbs: [ 0x4b3993ee00fee0be5d9e782f0826a7, 0x5f453c927323104cb49afc53121c94, 0x0018b4 ] } , - BigNum { limbs: [ 0x726a6f11fd5d1e41a26186d0f7d95a, 0x480ded0b0a2522ed236d0d4ec5e8bf, 0x005b39 ] } , - BigNum { limbs: [ 0x11052786cd325992d5cad82d3d1b97, 0x666295f0258c22bef1bc975729ef5a, 0x000bbc ] } , - BigNum { limbs: [ 0xac9edb793129a56d2a3526d2c2e46a, 0x40f093ad57bc107ae64b724aae15f9, 0x006831 ] } , - BigNum { limbs: [ 0x53262b159e08f6628e7ed94876759a, 0xade45d322bf487485f31a07f1a5f88, 0x0018b0 ] } , - BigNum { limbs: [ 0x6a7dd7ea6053089d718125b7898a67, 0xf96ecc6b5153abf178d66922bda5cb, 0x005b3c ] } , - BigNum { limbs: [ 0x1d5bba0219d6895408b020f663cda2, 0x2efb303338971cc3fcd0c1ce0073ac, 0x004058 ] } , - BigNum { limbs: [ 0xa04848fde48575abf74fde099c325f, 0x7857f96a44b11675db3747d3d791a7, 0x003395 ] } , - BigNum { limbs: [ 0x53f234cd300a031bd7d5251daacccd, 0x38b109dadbb26abefbbcd14355009d, 0x00181d ] } , - BigNum { limbs: [ 0x69b1ce32ce51fbe4282ad9e2553334, 0x6ea21fc2a195c87adc4b385e8304b6, 0x005bd0 ] } , - BigNum { limbs: [ 0x5e37ff0f0ce29a94f46ca0a3870da8, 0x7ed44dccff1d2e850e9f1de1c2dec3, 0x001a58 ] } , - BigNum { limbs: [ 0x5f6c03f0f179646b0b935e5c78f259, 0x287edbd07e2b04b4c968ebc0152690, 0x005995 ] } , - BigNum { limbs: [ 0x5ed133e6e72dbdd1a6bad2de8c3917, 0xeebd69853c99635f49d643a2d7ee1a, 0x001d96 ] } , - BigNum { limbs: [ 0x5ed2cf19172e412e59452c2173c6ea, 0xb895c01840aecfda8e31c5ff001739, 0x005656 ] } , - BigNum { limbs: [ 0x1fd8836d13f16372bbb5a3113c5552, 0x9f6d22e092377163b1cccd2866cc54, 0x000ea0 ] } , - BigNum { limbs: [ 0x9dcb7f92ea6a9b8d444a5beec3aaaf, 0x07e606bceb10c1d6263b3c797138ff, 0x00654d ] } , - BigNum { limbs: [ 0x03f0628b5ffb33789736068a49c981, 0x7e39a7bbd6485a16e8c7f8a475d50d, 0x00394f ] } , - BigNum { limbs: [ 0xb9b3a0749e60cb8768c9f875b63680, 0x291981e1a6ffd922ef4010fd623046, 0x003a9e ] } , - BigNum { limbs: [ 0xcb8cd738b7236cba69d6489456ff43, 0xbc2a388c4f23853232901c46fc6d1f, 0x00352a ] } , - BigNum { limbs: [ 0xf2172bc7473892459629b66ba900be, 0xeb28f1112e24ae07a577ed5adb9833, 0x003ec2 ] } , - BigNum { limbs: [ 0x5130a061491b14c06aab54a53aee18, 0xed10a657d19d6fed60d6e5f5149987, 0x002962 ] } , - BigNum { limbs: [ 0x6c73629eb540ea3f9554aa5ac511e9, 0xba428345abaac34c773123acc36bcc, 0x004a8a ] } , - BigNum { limbs: [ 0xeaf16376953f8b97928bae3cc2a5ce, 0x118cadfeda5891c73dbe74f5a56a06, 0x001c38 ] } , - BigNum { limbs: [ 0xd2b29f89691c73686d7450c33d5a33, 0x95c67b9ea2efa1729a4994ac329b4c, 0x0057b5 ] } , - BigNum { limbs: [ 0xb003a39d5c3ba4fc789b57b9af2f3c, 0x8104510684c19ad30ca0397b870bdf, 0x005ac1 ] } , - BigNum { limbs: [ 0x0da05f62a2205a038764a74650d0c5, 0x264ed896f8869866cb67d02650f974, 0x00192c ] } , - BigNum { limbs: [ 0xb5b14a01e2c2a290ae3553e9f8bb28, 0x619b3a1686b7ebd44101019555917b, 0x0001a1 ] } , - BigNum { limbs: [ 0x07f2b8fe1b995c6f51caab160744d9, 0x45b7ef86f69047659707080c8273d8, 0x00724c ] } , - BigNum { limbs: [ 0xd6fad2860fdf3236cb1b78133eda41, 0x71f55b1ece11a3c3a06bdd7972c742, 0x0053bc ] } , - BigNum { limbs: [ 0xe6a93079ee7cccc934e486ecc125c0, 0x355dce7eaf368f76379c2c28653e10, 0x002031 ] } , - BigNum { limbs: [ 0xc6043f28bc9cdc9ade96929e86d685, 0x0c70678728262bd9d3ee45abc6aa67, 0x001031 ] } , - BigNum { limbs: [ 0xf79fc3d741bf226521696c6179297c, 0x9ae2c216552207600419c3f6115aeb, 0x0063bc ] } , - BigNum { limbs: [ 0xf8c5290042b9bea91a211125d8dbb6, 0x17cd2826f284778021f3e00d8af92e, 0x0052af ] } , - BigNum { limbs: [ 0xc4ded9ffbba24056e5deedda27244b, 0x8f8601768ac3bbb9b61429944d0c24, 0x00213e ] } , - BigNum { limbs: [ 0xc88b4e6d99405bb8529937b284359d, 0x56ee48526d3e00529bffc0ff7e3872, 0x002fe4 ] } , - BigNum { limbs: [ 0xf518b492651ba347ad66c74d7bca64, 0x5064e14b100a32e73c0848a259cce0, 0x004409 ] } , - BigNum { limbs: [ 0x8c4db3258a41208f488b7ba09d11c5, 0x8a6f105a5ab1ed324fc370e60c78e2, 0x005568 ] } , - BigNum { limbs: [ 0x31564fda741ade70b774835f62ee3c, 0x1ce4194322964607884498bbcb8c71, 0x001e85 ] } , - BigNum { limbs: [ 0xdfb76fcc99f3ef2e36ce4e08e77393, 0x78c04fcf27c6976a055907015d654c, 0x006f97 ] } , - BigNum { limbs: [ 0xddec933364680fd1c931b0f7188c6e, 0x2e92d9ce55819bcfd2af02a07aa006, 0x000456 ] } , - BigNum { limbs: [ 0x2794393b64c6ad671e1ac90f9997a1, 0x482e48023e59e541e8221283cd460f, 0x001f48 ] } , - BigNum { limbs: [ 0x960fc9c499955198e1e535f0666860, 0x5f24e19b3eee4df7efe5f71e0abf44, 0x0054a5 ] } , - BigNum { limbs: [ 0xa1ddc75e0d3056956918cce43fbdf1, 0x488b1115b853f4b262a0a3604e9005, 0x002e0e ] } , - BigNum { limbs: [ 0x1bc63ba1f12ba86a96e7321bc04210, 0x5ec81887c4f43e877567664189754e, 0x0045df ] } , - BigNum { limbs: [ 0x412254e276f261dda2ca369b882a76, 0x6744f107ef803dc19c3bdf25367a3b, 0x00315a ] } , - BigNum { limbs: [ 0x7c81ae1d87699d225d35c86477d58b, 0x400e38958dc7f5783bcc2a7ca18b18, 0x004293 ] } , - BigNum { limbs: [ 0x979234398086b31ae741d718f6c0b3, 0x100f74bca8dedad0529118858dd6db, 0x006203 ] } , - BigNum { limbs: [ 0x2611cec67dd54be518be27e7093f4e, 0x9743b4e0d46958698576f11c4a2e78, 0x0011ea ] } , - BigNum { limbs: [ 0xbb808de48c51f20d254e363b5e7602, 0xca9bc098278f20bec201c796f9dacd, 0x004923 ] } , - BigNum { limbs: [ 0x0223751b720a0cf2dab1c8c4a189ff, 0xdcb7690555b9127b1606420ade2a86, 0x002ac9 ] } , - BigNum { limbs: [ 0x17c6b083273c47689538090938d579, 0x463b2b65db138d2f903943d6bd7f6d, 0x0054d1 ] } , - BigNum { limbs: [ 0xa5dd527cd71fb7976ac7f5f6c72a88, 0x6117fe37a234a60a47cec5cb1a85e6, 0x001f1c ] } , - BigNum { limbs: [ 0x3291fd8ab7b8b642a8e3f963efbfed, 0xf13bb32a2dbe623d82b77b9a1c94bb, 0x000a50 ] } , - BigNum { limbs: [ 0x8b12057546a348bd571c059c104014, 0xb61776734f89d0fc55508e07bb7098, 0x00699c ] } , - BigNum { limbs: [ 0x1f1890248f3dd8ac02d6ead2c7e65f, 0xd359e6062c9dfa965d0ba0f0dd0a71, 0x001f4b ] } , - BigNum { limbs: [ 0x9e8b72db6f1e2653fd29142d3819a2, 0xd3f9439750aa38a37afc68b0fafae2, 0x0054a1 ] } , - BigNum { limbs: [ 0xe5e2608711fb77ff5641fc667e835d, 0x51fffd82c1989448ba090df1a9a6f0, 0x006c4d ] } , - BigNum { limbs: [ 0xd7c1a278ec608700a9be0299817ca4, 0x55532c1abbaf9ef11dfefbb02e5e62, 0x0007a0 ] } , - BigNum { limbs: [ 0x9dcebb41b2ef1c4d8a04d5be70b3a4, 0x64c7140ea7043aeb824eb4e3fd3964, 0x004377 ] } , - BigNum { limbs: [ 0x1fd547be4b6ce2b275fb29418f4c5d, 0x428c158ed643f84e55b954bddacbef, 0x003076 ] } , - BigNum { limbs: [ 0xf5392ff8fd8d87b5c472d0f0a69fe1, 0xed235608f4f047c36b65e92f931341, 0x0009ae ] } , - BigNum { limbs: [ 0xc86ad30700ce774a3b8d2e0f596020, 0xba2fd3948857eb766ca2207244f211, 0x006a3e ] } , - BigNum { limbs: [ 0x38528bcc8ea5ef235d35a226631c3e, 0xc67c761f23e094e69c75c169385c92, 0x0041a2 ] } , - BigNum { limbs: [ 0x855177336fb60fdca2ca5cd99ce3c3, 0xe0d6b37e59679e533b9248389fa8c1, 0x00324a ] } , - BigNum { limbs: [ 0x145c44951dae3498eed14fcb160943, 0x6fd4a9038301ece754238f49aeec55, 0x0058ca ] } , - BigNum { limbs: [ 0xa947be6ae0adca67112eaf34e9f6be, 0x377e8099fa46465283e47a582918fe, 0x001b23 ] } , - BigNum { limbs: [ 0xa02a3a8f443648361e8ea8ae06b126, 0xc10c0dfb6cca3d4067ca08e2b3a4ac, 0x00482e ] } , - BigNum { limbs: [ 0x1d79c870ba25b6c9e1715651f94edb, 0xe6471ba2107df5f9703e00bf2460a7, 0x002bbe ] } , - BigNum { limbs: [ 0xa5996b9f82e08911f56487df01e717, 0x45887ccfa095013d5570900a2cc0c0, 0x003fac ] } , - BigNum { limbs: [ 0x180a97607b7b75ee0a9b7720fe18ea, 0x61caaccddcb331fc82977997ab4493, 0x003441 ] } , - BigNum { limbs: [ 0x43572573c9fccdebea518f9b735b3d, 0x95bc1bbe7784ebcaf90db966da6949, 0x005c3f ] } , - BigNum { limbs: [ 0x7a4cdd8c345f311415ae6f648ca4c4, 0x11970ddf05c3476edefa503afd9c0a, 0x0017ae ] } , - BigNum { limbs: [ 0x9972cf91fe9ebf0cfdfcd1bbc2a72e, 0xccbe64c4fa6fca7c90fd2d1917187b, 0x004d2a ] } , - BigNum { limbs: [ 0x2431336dffbd3ff302032d443d58d3, 0xda94c4d882d868bd470adc88c0ecd8, 0x0026c2 ] } , - BigNum { limbs: [ 0x32307b85cb65d3201698dd593284c3, 0xa5219841a0022f57ba9019925bf0a5, 0x002492 ] } , - BigNum { limbs: [ 0x8b73877a32f62bdfe96721a6cd7b3e, 0x0231915bdd4603e21d77f00f7c14ae, 0x004f5b ] } , - BigNum { limbs: [ 0xd83d1ec03ea851355b9de44b95b2d1, 0xc28c767944d14367669032d38157cb, 0x001bb2 ] } , - BigNum { limbs: [ 0xe566e43fbfb3adcaa4621ab46a4d30, 0xe4c6b3243876efd27177d6ce56ad87, 0x00583a ] } , - BigNum { limbs: [ 0x3f8025bfea2f9f6bdd2d3bbefeedb5, 0x0bcb96a72c189fea5ede6d51c3d916, 0x004f03 ] } , - BigNum { limbs: [ 0x7e23dd40142c5f9422d2c34101124c, 0x9b8792f6512f934f79299c50142c3d, 0x0024ea ] } , - BigNum { limbs: [ 0xd107fef95dccd8a331d3ceccc4e782, 0x3aae4071ac9a9ec9ebafe2d5d493b5, 0x0071e7 ] } , - BigNum { limbs: [ 0xec9c0406a08f265cce2c30333b187f, 0x6ca4e92bd0ad946fec5826cc03719d, 0x000206 ] } , - BigNum { limbs: [ 0x3e6fb94740c896941525459bfa51c7, 0x8c9d09da7bec3df8adc3ca1380140b, 0x003a88 ] } , - BigNum { limbs: [ 0x7f3449b8bd93686beadab96405ae3a, 0x1ab61fc3015bf5412a443f8e57f148, 0x003965 ] } , - BigNum { limbs: [ 0xe3de91cc18ee042c15d7f2a087d0d6, 0xbc7d81cc3c664f39e6433c4529f2d7, 0x004f2a ] } , - BigNum { limbs: [ 0xd9c57133e56dfad3ea280c5f782f2b, 0xead5a7d140e1e3fff1c4cd5cae127b, 0x0024c2 ] } , - BigNum { limbs: [ 0x15a837273c8d7808ae9877710b3d4a, 0x95cdc32a7090a6eadb2faabb9eacca, 0x0002dd ] } , - BigNum { limbs: [ 0xa7fbcbd8c1ce86f75167878ef4c2b7, 0x118566730cb78c4efcd85ee6395889, 0x007110 ] } , - BigNum { limbs: [ 0x9da748c3eb9fd36116f4c1ee3d22e0, 0x97243165f72c550d62b60fc1e6710e, 0x006d36 ] } , - BigNum { limbs: [ 0x1ffcba3c12bc2b9ee90b3d11c2dd21, 0x102ef837861bde2c7551f9dff19445, 0x0006b7 ] } , - BigNum { limbs: [ 0xed8c1fe30d90f611070cf87b316fdb, 0x1a16a817a5730a109bdab4d5a019ad, 0x00224f ] } , - BigNum { limbs: [ 0xd017e31cf0cb08eef8f30684ce9026, 0x8d3c8185d7d529293c2d54cc37eba5, 0x00519e ] } , - BigNum { limbs: [ 0x430b9d9a3bb62d3641d7d4eea0c50c, 0x0bd6a3b0dd4962c44176116ccc35dc, 0x0045ef ] } , - BigNum { limbs: [ 0x7a986565c2a5d1c9be282a115f3af5, 0x9b7c85ec9ffed0759691f8350bcf77, 0x002dfe ] } , - BigNum { limbs: [ 0x13c088c385b50ec3a1732e853d869a, 0xffd7355557b16f2b69601d8be620e3, 0x000a95 ] } , - BigNum { limbs: [ 0xa9e37a3c78a6f03c5e8cd07ac27967, 0xa77bf4482596c40e6ea7ec15f1e470, 0x006957 ] } , - BigNum { limbs: [ 0xe386e6d514fc902b94387bd69765b3, 0xd3543c2bd157abf240c4a6ca3e804e, 0x001497 ] } , - BigNum { limbs: [ 0xda1d1c2ae95f6ed46bc78329689a4e, 0xd3feed71abf08747974362d7998504, 0x005f55 ] } , - BigNum { limbs: [ 0xe124d1731ad29dd65983a63ee50d91, 0x739ffc076d28e27be6d8f7e7ac615c, 0x002fe6 ] } , - BigNum { limbs: [ 0xdc7f318ce3896129a67c58c11af270, 0x33b32d96101f50bdf12f11ba2ba3f6, 0x004407 ] } , - BigNum { limbs: [ 0x962747c183e480114ff72774fe6bcd, 0xab54a9e32de069ac3dbc658030baf5, 0x000b5a ] } , - BigNum { limbs: [ 0x277cbb3e7a777eeeb008d78b019434, 0xfbfe7fba4f67c98d9a4ba421a74a5e, 0x006892 ] } , - BigNum { limbs: [ 0x9d0a87e020f541ac13e711a9f1a3f5, 0x32af41b8cee217553faf392299de16, 0x00680e ] } , - BigNum { limbs: [ 0x20997b1fdd66bd53ec18ed560e5c0c, 0x74a3e7e4ae661be49858d07f3e273d, 0x000bdf ] } , - BigNum { limbs: [ 0xd61154e4ce2cff2f4f0de0a22e721b, 0x89c629a53b58a6c167d21637d0defc, 0x00221c ] } , - BigNum { limbs: [ 0xe792ae1b302effd0b0f21e5dd18de6, 0x1d8cfff841ef8c787035f36a072656, 0x0051d1 ] } , - BigNum { limbs: [ 0xa3a236d6ff5ded09bc416a14308d8f, 0x6d20a2a34c82e7f9eee2a9990ee000, 0x002ad1 ] } , - BigNum { limbs: [ 0x1a01cc28fefe11f643be94ebcf7272, 0x3a3286fa30c54b3fe9256008c92553, 0x00491c ] } , - BigNum { limbs: [ 0x7dc51868375de59b8f8d7ad621af1f, 0x9d3eb4aae9101bf5980d8fb415c4f9, 0x003511 ] } , - BigNum { limbs: [ 0x3fdeea97c6fe196470728429de50e2, 0x0a1474f2943817443ffa79edc2405a, 0x003edc ] } , - BigNum { limbs: [ 0xd2fe056e12d128f968ad7099b97076, 0xb21084d26ef18a1152b98a5b16fdd9, 0x003c22 ] } , - BigNum { limbs: [ 0xeaa5fd91eb8ad60697528e66468f8b, 0xf542a4cb0e56a928854e7f46c10779, 0x0037ca ] } , - BigNum { limbs: [ 0xaa11b314df6f5e0efba42a693de65d, 0x8b7661f61aa0915703b6d3f45be85c, 0x0070ea ] } , - BigNum { limbs: [ 0x13924feb1eeca0f1045bd496c219a4, 0x1bdcc7a762a7a1e2d45135ad7c1cf7, 0x000303 ] } , - BigNum { limbs: [ 0x6ff9b86622a64ec04533a09238ecea, 0x189e7e6f84f5f23c04e4e3829054e6, 0x00482e ] } , - BigNum { limbs: [ 0x4daa4a99dbb5b03fbacc5e6dc71317, 0x8eb4ab2df85240fdd323261f47b06d, 0x002bbf ] } , - BigNum { limbs: [ 0x52b15f20a914999b354046f332069c, 0xfe97cbd7990a988f82e9ccef42142e, 0x0007f1 ] } , - BigNum { limbs: [ 0x6af2a3df55476564cabfb80ccdf965, 0xa8bb5dc5e43d9aaa551e3cb295f125, 0x006bfb ] } , - BigNum { limbs: [ 0x65d863abed8e4dc1b68d3f990b7d3b, 0x9d46b0cb885ea6f40321eb76dd1270, 0x000eb9 ] } , - BigNum { limbs: [ 0x57cb9f5410cdb13e4972bf66f482c6, 0x0a0c78d1f4e98c45d4e61e2afaf2e3, 0x006534 ] } , - BigNum { limbs: [ 0x75c4884c21a9831bb130c38730526a, 0x49a8ad01eb6dcb5747ca54efa581fd, 0x006739 ] } , - BigNum { limbs: [ 0x47df7ab3dcb27be44ecf3b78cfad97, 0x5daa7c9b91da67e2903db4b2328356, 0x000cb4 ] } , - BigNum { limbs: [ 0x8a4f6d4c1ada58e7fc4a5cc7f2f2d1, 0xcafbc2707cb125e66be24431f05f44, 0x00521b ] } , - BigNum { limbs: [ 0x335495b3e381a61803b5a2380d0d30, 0xdc57672d00970d536c25c56fe7a60f, 0x0021d1 ] } , - BigNum { limbs: [ 0x078a7b97ec66cb9826953a213d583c, 0x86f6cffe4ca2b740471bc3e68d79ea, 0x0034fc ] } , - BigNum { limbs: [ 0xb619876811f53367d96ac4dec2a7c5, 0x205c599f30a57bf990ec45bb4a8b69, 0x003ef1 ] } , - BigNum { limbs: [ 0x7bc126c341b17ce26b0d732d3987cc, 0x87e27aea917b0836b22d3975a12725, 0x005f34 ] } , - BigNum { limbs: [ 0x41e2dc3cbcaa821d94f28bd2c67835, 0x1f70aeb2ebcd2b0325dad02c36de2e, 0x0014b9 ] } , - BigNum { limbs: [ 0x72a73fa70deb9998674a8201ccde57, 0xb0b796f20d83de527d49e939938236, 0x005d98 ] } , - BigNum { limbs: [ 0x4afcc358f070656798b57cfe3321aa, 0xf69b92ab6fc454e75abe206844831d, 0x001654 ] } , - BigNum { limbs: [ 0x075d2d564fde1a04d829b1de6dbacd, 0x7d56c69e9b58fc0912c19f3dd3ad55, 0x0037da ] } , - BigNum { limbs: [ 0xb646d5a9ae7de4fb27d64d21924534, 0x29fc62fee1ef3730c5466a640457fe, 0x003c13 ] } , - BigNum { limbs: [ 0x33cbe11e505548c3c2a6f22bd08bd3, 0x43a59e5aa608e0f662860d70233a18, 0x002e22 ] } , - BigNum { limbs: [ 0x89d821e1ae06b63c3d590cd42f742e, 0x63ad8b42d73f52437581fc31b4cb3b, 0x0045cb ] } , - BigNum { limbs: [ 0xe5dd3d2181bf89676bd0ffef6cabc2, 0x5ff8dbb07cb90da58bce5909401f4e, 0x0005c4 ] } , - BigNum { limbs: [ 0xd7c6c5de7c9c7598942eff1093543f, 0x475a4ded008f25944c39b09897e604, 0x006e29 ] } , - BigNum { limbs: [ 0x114bdf41b1c3df750ff68d57b6c10f, 0x8a1cec524e32b2df3cb71d94aa818d, 0x004278 ] } , - BigNum { limbs: [ 0xac5823be4c981f8af00971a8493ef2, 0x1d363d4b2f15805a9b50ec0d2d83c6, 0x003175 ] } , - BigNum { limbs: [ 0x1e43458668425774dca1c772360585, 0x2569e0ef21823529bc7bb192bce311, 0x000c3d ] } , - BigNum { limbs: [ 0x9f60bd799619a78b235e378dc9fa7c, 0x81e948ae5bc5fe101b8c580f1b2242, 0x0067b0 ] } , - BigNum { limbs: [ 0xcf1f7011c0b9cf0c1c1e68d08a5949, 0x497b2a2e23ae5f67b0d137737a844b, 0x00001a ] } , - BigNum { limbs: [ 0xee8492ee3da22ff3e3e1962f75a6b8, 0x5dd7ff6f5999d3d22736d22e5d8107, 0x0073d3 ] } , - BigNum { limbs: [ 0xeedcc20126d7f09245265cc18d07e5, 0xedad53fed6f4d40a09e788275f2d8f, 0x002c67 ] } , - BigNum { limbs: [ 0xcec740fed7840e6dbad9a23e72f81c, 0xb9a5d59ea6535f2fce20817a78d7c3, 0x004785 ] } , - BigNum { limbs: [ 0xb7093b9e98f6d9e7499381717b4806, 0x3f2ef2202935a8d50b5eb8317e35e8, 0x003ffc ] } , - BigNum { limbs: [ 0x069ac76165652518b66c7d8e84b7fb, 0x6824377d54128a64cca9517059cf6b, 0x0033f1 ] } , - BigNum { limbs: [ 0xaed66bb0d420ae910126f599901dda, 0x2da36b64e15499910cf7fdf89f1469, 0x001541 ] } , - BigNum { limbs: [ 0x0ecd974f2a3b506efed909666fe227, 0x79afbe389bf399a8cb100ba938f0ea, 0x005eac ] } , - BigNum { limbs: [ 0xbc9dd11fe19f5fa8d347b20d3a45f8, 0x2137c5523a84bd8f820f78380057c0, 0x001894 ] } , - BigNum { limbs: [ 0x010631e01cbc9f572cb84cf2c5ba09, 0x861b644b42c375aa55f89169d7ad93, 0x005b59 ] } , - BigNum { limbs: [ 0xba39145bcdbba78ac12835b04f1148, 0x65379305265a848c32bbb50a2d3284, 0x004949 ] } , - BigNum { limbs: [ 0x036aeea430a057753ed7c94fb0eeb9, 0x421b969856edaeada54c5497aad2cf, 0x002aa4 ] } , - BigNum { limbs: [ 0x95b22268ee4b2985c37e9595dee022, 0xfe3416ff570f824b4d761e1639df88, 0x000dfb ] } , - BigNum { limbs: [ 0x27f1e0971010d57a3c81696a211fdf, 0xa91f129e2638b0ee8a91eb8b9e25cb, 0x0065f1 ] } , - BigNum { limbs: [ 0x06eddb367ab22c18cba752864f8b13, 0x805987aa81e48a37216e17279547b0, 0x000d3f ] } , - BigNum { limbs: [ 0xb6b627c983a9d2e73458ac79b074ee, 0x26f9a1f2fb63a902b699f27a42bda3, 0x0066ae ] } , - BigNum { limbs: [ 0x9a5e3de88156e4cc9afc55e1681a2a, 0xbf288c1aab244d3270a4a7a3a721ee, 0x004888 ] } , - BigNum { limbs: [ 0x2345c5177d051a336503a91e97e5d7, 0xe82a9d82d223e607676361fe30e365, 0x002b64 ] } , - BigNum { limbs: [ 0x07d379a9febdde1fb7f54e0265ce07, 0x3f8df309239dec0cf477a2bad1560a, 0x0017f8 ] } , - BigNum { limbs: [ 0xb5d08955ff9e20e0480ab0fd9a31fa, 0x67c5369459aa472ce39066e706af49, 0x005bf5 ] } , - BigNum { limbs: [ 0x9bfdee3322cefba92913a02e1ee754, 0x5a9880940a36deeacc6ea144da8591, 0x003cd8 ] } , - BigNum { limbs: [ 0x21a614ccdb8d0356d6ec5ed1e118ad, 0x4cbaa9097311544f0b99685cfd7fc2, 0x003715 ] } , - BigNum { limbs: [ 0x7d9f9cf1425f7dc910b69f60179974, 0xd4a655ec4bf92ebc4ba97b0d9a8a44, 0x005e60 ] } , - BigNum { limbs: [ 0x4004660ebbfc8136ef495f9fe8668d, 0xd2acd3b1314f047d8c5e8e943d7b0f, 0x00158c ] } , - BigNum { limbs: [ 0xce2749a3e7bddb90cbb6d92d8ca8f6, 0xba05a063fee29157720be9ef013a11, 0x003a16 ] } , - BigNum { limbs: [ 0xef7cb95c169e236f344925d273570b, 0xed4d89397e65a1e265fc1fb2d6cb41, 0x0039d6 ] } , - BigNum { limbs: [ 0xfdcb07de349fcdd55057b470cd3b3e, 0x34f45015013abc92a0384fb547d2e1, 0x000414 ] } , - BigNum { limbs: [ 0xbfd8fb21c9bc312aafa84a8f32c4c3, 0x725ed9887c0d76a737cfb9ec903271, 0x006fd9 ] } , - BigNum { limbs: [ 0x114ead526d0f6c9eb7af15de4af4ac, 0x1ec50ddabc5814388398313eb99e6b, 0x004bf1 ] } , - BigNum { limbs: [ 0xac5555ad914c92614850e921b50b55, 0x888e1bc2c0f01f01546fd8631e66e8, 0x0027fc ] } , - BigNum { limbs: [ 0x68a842739e0ff337d811ff60ab359e, 0xc976b9f0a9a40bb5ccb89f56980717, 0x007320 ] } , - BigNum { limbs: [ 0x54fbc08c604c0bc827edff9f54ca63, 0xdddc6facd3a427840b4f6a4b3ffe3c, 0x0000cc ] } , - BigNum { limbs: [ 0xc8ab8c2a2d43656b226bace742443f, 0xac1bbad652cfcba311b18a46c1f320, 0x00155d ] } , - BigNum { limbs: [ 0xf4f876d5d1189994dd945218bdbbc2, 0xfb376ec72a786796c6567f5b161232, 0x005e8f ] } , - BigNum { limbs: [ 0x89a7fd21c6a294a3f6d32151d20b37, 0x12e86d3610e95a25f8fca72a9ab596, 0x006bcb ] } , - BigNum { limbs: [ 0x33fc05de37b96a5c092cddae2df4ca, 0x946abc676c5ed913df0b62773d4fbd, 0x000822 ] } , - BigNum { limbs: [ 0x20234d525d4189f6f85b16482a7197, 0x6b41073677d0b816428ad1181b4606, 0x00188f ] } , - BigNum { limbs: [ 0x9d80b5ada11a750907a4e8b7d58e6a, 0x3c12226705777b23957d3889bcbf4d, 0x005b5e ] } , - BigNum { limbs: [ 0xdef08e9f8fe77d54634c953cad3108, 0x6ee4233b8ba040dbeaad947c194b39, 0x004327 ] } , - BigNum { limbs: [ 0xdeb374606e7481ab9cb369c352cef9, 0x386f0661f1a7f25ded5a7525beba19, 0x0030c6 ] } , - BigNum { limbs: [ 0x6289e19b477ee6691938fa1af85975, 0x0642e00678e059e18426bda8673157, 0x000083 ] } , - BigNum { limbs: [ 0x5b1a2164b6dd1896e6c704e507a68c, 0xa11049970467d95853e14bf970d3fc, 0x00736a ] } , - BigNum { limbs: [ 0x1ce04aa33cf9a2e7776243b37036c2, 0x52085568d9a0c03606c2c05e4fdb76, 0x004635 ] } , - BigNum { limbs: [ 0xa0c3b85cc1625c18889dbb4c8fc93f, 0x554ad434a3a77303d14549438829dd, 0x002db8 ] } , - BigNum { limbs: [ 0x7449c397155417e44c19c7837357d9, 0x6476568299bd844ed5fd5e07959511, 0x006080 ] } , - BigNum { limbs: [ 0x495a3f68e907e71bb3e6377c8ca828, 0x42dcd31ae38aaeeb020aab9a427042, 0x00136d ] } , - BigNum { limbs: [ 0xb9a75fc516517f37c4c85b461ed199, 0x64dead8a2259e177e3e6193883aabd, 0x005cf5 ] } , - BigNum { limbs: [ 0x03fca33ae80a7fc83b37a3b9e12e68, 0x42747c135aee51c1f421f069545a96, 0x0016f8 ] } , - BigNum { limbs: [ 0x8f8f9ae3653ba2c10454d0a75656ff, 0xcdcd00bd35dfdc0497061091ff6592, 0x004a77 ] } , - BigNum { limbs: [ 0x2e14681c99205c3efbab2e58a9a902, 0xd98628e0476857354101f90fd89fc1, 0x002975 ] } , - BigNum { limbs: [ 0x3221fd149285bcec3d3b9bfa8672aa, 0xdeaaf8838aea65f252a5ef29e7e550, 0x004a44 ] } , - BigNum { limbs: [ 0x8b8205eb6bd64213c2c46305798d57, 0xc8a83119f25dcd4785621a77f02003, 0x0029a8 ] } , - BigNum { limbs: [ 0x832a8ddbf216ca980ac50eadacd9de, 0x41a396c88646d98739228dab7885bd, 0x0011c2 ] } , - BigNum { limbs: [ 0x3a7975240c453467f53af052532623, 0x65af92d4f70159b29ee57bf65f7f96, 0x00622b ] } , - BigNum { limbs: [ 0x59c20216257919cfa08b067bb9f2a7, 0xade7d1cb81f4be59f9d8819237c63a, 0x005044 ] } , - BigNum { limbs: [ 0x63e200e9d8e2e5305f74f884460d5a, 0xf96b57d1fb5374dfde2f880fa03f19, 0x0023a8 ] } , - BigNum { limbs: [ 0xd6b05b5583bbd72a10a702aaa59abc, 0xe3b0bc10503cd0039b925d26760b4c, 0x0054ee ] } , - BigNum { limbs: [ 0xe6f3a7aa7aa027d5ef58fc555a6545, 0xc3a26d8d2d0b63363c75ac7b61fa06, 0x001efe ] } , - BigNum { limbs: [ 0x30df1d6d8c9fd9b98a1bb116534f78, 0x16f0fc8249b31002f8c65f40ff07cb, 0x0049d7 ] } , - BigNum { limbs: [ 0x8cc4e59271bc254675e44de9acb089, 0x90622d1b33952336df41aa60d8fd88, 0x002a16 ] } , - BigNum { limbs: [ 0x635a7e42ce28cc95ceb3a7c3f9f188, 0x644ac89c6c6ee30939aaa120a0eb0f, 0x004ece ] } , - BigNum { limbs: [ 0x5a4984bd3033326a314c573c060e79, 0x4308610110d950309e5d6881371a44, 0x00251f ] } , - BigNum { limbs: [ 0x5b42281bc799f0e519aa0539834b13, 0x8477f7f1f011372039d0730e94c564, 0x001ae0 ] } , - BigNum { limbs: [ 0x6261dae436c20e1ae655f9c67cb4ee, 0x22db31ab8d36fc199e379693433fef, 0x00590d ] } , - BigNum { limbs: [ 0x25c4877daa4e7fadf05c8931874788, 0xd4fb5470bb003b0bbfe46301320074, 0x006008 ] } , - BigNum { limbs: [ 0x97df7b82540d7f520fa375ce78b879, 0xd257d52cc247f82e1823a6a0a604df, 0x0013e4 ] } , - BigNum { limbs: [ 0x95c175f84df85ee22337d6a6b4d9fb, 0x8ed3222b9fc8ef1e7bab4f23cf3f49, 0x000573 ] } , - BigNum { limbs: [ 0x27e28d07b063a01ddcc828594b2606, 0x18800771dd7f441b5c5cba7e08c60a, 0x006e7a ] } , - BigNum { limbs: [ 0xab799725fe3e86e5e29d73edf9b572, 0xe8613b6571fbfab57fce98c8eae62b, 0x006683 ] } , - BigNum { limbs: [ 0x122a6bda001d781a1d628b12064a8f, 0xbef1ee380b4c3884583970d8ed1f28, 0x000d69 ] } , - BigNum { limbs: [ 0x7c9a2ad9232c0cfcfe995f8ce96836, 0xb76df721aa94ec2607bb4a7497beba, 0x001a53 ] } , - BigNum { limbs: [ 0x4109d826db2ff20301669f731697cb, 0xefe5327bd2b34713d04cbf2d404699, 0x005999 ] } , - BigNum { limbs: [ 0x96087b2d17a877030a01c3fba22e80, 0x877a9a4bc0fe44d7149486f1a2cec3, 0x0024d7 ] } , - BigNum { limbs: [ 0x279b87d2e6b387fcf5fe3b045dd181, 0x1fd88f51bc49ee62c37382b0353690, 0x004f16 ] } , - BigNum { limbs: [ 0x07d1539bec93a9c8ed49e38f0af025, 0xa85ab7c3a6e3a8b6a4e49982b9c2d1, 0x003632 ] } , - BigNum { limbs: [ 0xb5d2af6411c8553712b61b70f50fdc, 0xfef871d9d6648a833323701f1e4282, 0x003dba ] } , - BigNum { limbs: [ 0xa7dbf3fe81c15c5f962e22648fbd45, 0x022c8dab73e858993b5f0d2db61f5c, 0x005a0d ] } , - BigNum { limbs: [ 0x15c80f017c9aa2a069d1dc9b7042bc, 0xa5269bf2095fdaa09ca8fc7421e5f7, 0x0019e0 ] } , - BigNum { limbs: [ 0x5ac8ea014a76f8077360c673f98822, 0x6bb47ac1219097cab375c68c973a4b, 0x002068 ] } , - BigNum { limbs: [ 0x62db18feb3e506f88c9f388c0677df, 0x3b9eaedc5bb79b6f2492431540cb08, 0x005385 ] } , - BigNum { limbs: [ 0x584f7240cfa636bd45630811115166, 0xd50bde8c87fd94fb7b9c68842675f7, 0x00366d ] } , - BigNum { limbs: [ 0x655490bf2eb5c842ba9cf6eeeeae9b, 0xd2474b10f54a9e3e5c6ba11db18f5c, 0x003d7f ] } , - BigNum { limbs: [ 0xe1d1ad657619b928d6ae78b2705727, 0x93dd70dccdccbfbadb3219831a4bf6, 0x005437 ] } , - BigNum { limbs: [ 0xdbd2559a884245d72951864d8fa8da, 0x1375b8c0af7b737efcd5f01ebdb95c, 0x001fb6 ] } , - BigNum { limbs: [ 0x652abfd013e1adddd51226fc305a36, 0x5ecc3199d02a86122406bbb3dd183f, 0x0058d8 ] } , - BigNum { limbs: [ 0x5879432fea7a51222aedd803cfa5cb, 0x4886f803ad1dad27b4014dedfaed14, 0x001b15 ] } , - BigNum { limbs: [ 0xf406133d5bcaa5435a2f30de64b8f0, 0x353f2952ccaac9d6b49339924dd6c1, 0x005cb6 ] } , - BigNum { limbs: [ 0xc99defc2a29159bca5d0ce219b4711, 0x7214004ab09d69632374d00f8a2e91, 0x001737 ] } , - BigNum { limbs: [ 0x74a2472d9a3301c9f7d9956c33efa1, 0xb01655fa4c689900cf9da058fd7ff1, 0x0024b3 ] } , - BigNum { limbs: [ 0x4901bbd26428fd3608266993cc1060, 0xf73cd3a330df9a39086a6948da8562, 0x004f39 ] } , - BigNum { limbs: [ 0xb6269c66cd9ea74aea456e92403ed8, 0x43872bda1625e247909bd09f25d090, 0x004e02 ] } , - BigNum { limbs: [ 0x077d669930bd57b515ba906dbfc129, 0x63cbfdc3672250f2476c3902b234c3, 0x0025eb ] } , - BigNum { limbs: [ 0x5a0013f5f09b115a91acc63e34dd72, 0x59860918371f0f37ba376d671b8c6c, 0x003671 ] } , - BigNum { limbs: [ 0x63a3ef0a0dc0eda56e5338c1cb228f, 0x4dcd2085462924021dd09c3abc78e7, 0x003d7c ] } , - BigNum { limbs: [ 0xa5ac77f6c4fb7b12641cc0cf09d557, 0xf1027f92360b275ff16089e8022e89, 0x000083 ] } , - BigNum { limbs: [ 0x17f78b09396083ed9be33e30f62aaa, 0xb650aa0b473d0bd9e6a77fb9d5d6ca, 0x007369 ] } , - BigNum { limbs: [ 0x09f7a1f066ddcb5a2eedfa20412664, 0xec07e6ce5e0d9829ecc1055c9c50c8, 0x002d0d ] } , - BigNum { limbs: [ 0xb3ac610f977e33a5d11204dfbed99d, 0xbb4b42cf1f3a9b0feb4704453bb48b, 0x0046df ] } , - BigNum { limbs: [ 0x67f6a0a3e63ca99f9a43275fe3cf0f, 0x2f38ad7b4399aabfa1b7d99197e71d, 0x002492 ] } , - BigNum { limbs: [ 0x55ad625c181f556065bcd7a01c30f2, 0x781a7c2239ae887a36503010401e36, 0x004f5b ] } , - BigNum { limbs: [ 0x7bb64e7fe7ea4b78aacbac1829e88a, 0xd4b784d73e60cdf1026306ef8e1d62, 0x000623 ] } , - BigNum { limbs: [ 0x41edb4801671b387553452e7d61777, 0xd29ba4c63ee76548d5a502b249e7f1, 0x006dc9 ] } , - BigNum { limbs: [ 0xf9a997ed4aa4b03748f531630f279c, 0x7b3bd3bf0cda72ab9d67d68c0d8aef, 0x003889 ] } , - BigNum { limbs: [ 0xc3fa6b12b3b74ec8b70acd9cf0d865, 0x2c1755de706dc08e3aa03315ca7a63, 0x003b64 ] } , - BigNum { limbs: [ 0xce3b00be1eb868c317059dd88012e7, 0x5bb41e2b5e9673b0cf9669bfeb9c09, 0x00155d ] } , - BigNum { limbs: [ 0xef690241dfa3963ce8fa61277fed1a, 0x4b9f0b721eb1bf8908719fe1ec6949, 0x005e90 ] } , - BigNum { limbs: [ 0xd612399cd1fd5bf9319c49ec52b321, 0xc39882e88d1c2cb02a551099a84ef3, 0x0025b6 ] } , - BigNum { limbs: [ 0xe791c9632c5ea306ce63b513ad4ce0, 0xe3baa6b4f02c0689adb2f9082fb65f, 0x004e36 ] } , - BigNum { limbs: [ 0xb0c5c8e83264e0a09dd4dfaf26022f, 0x7a6158bba26d2f24766227892c1715, 0x0053eb ] } , - BigNum { limbs: [ 0x0cde3a17cbf71e5f622b1f50d9fdd2, 0x2cf1d0e1dadb041561a5e218abee3e, 0x002002 ] } , - BigNum { limbs: [ 0x6a25bf2718d0db8d07a435743bf1a7, 0xbcab553742f7fd698182e76a0e2c30, 0x004f6b ] } , - BigNum { limbs: [ 0x537e43d8e58b2372f85bc98bc40e5a, 0xeaa7d4663a5035d056852237c9d923, 0x002481 ] } , - BigNum { limbs: [ 0x75f111bb6910eaf442e76e4498fa1a, 0xa7d84eb54da1ddaa7c1f2496515ebd, 0x005ce5 ] } , - BigNum { limbs: [ 0x47b2f144954b140bbd1890bb6705e7, 0xff7adae82fa6558f5be8e50b86a696, 0x001707 ] } , - BigNum { limbs: [ 0xd7230d2501faab5ece55ee029cd201, 0x9406fabda4e4250a808af9ae504cad, 0x0013fa ] } , - BigNum { limbs: [ 0xe680f5dafc6153a131aa10fd632e00, 0x134c2edfd8640e2f577d0ff387b8a5, 0x005ff3 ] } , - BigNum { limbs: [ 0x6ad2e042aad2a71b34ffc9d3de0eee, 0x3bbcaf9ab4fca968ad8109348066b2, 0x004c15 ] } , - BigNum { limbs: [ 0x52d122bd538957e4cb00352c21f113, 0x6b967a02c84b89d12a87006d579ea1, 0x0027d8 ] } , - BigNum { limbs: [ 0x5d3a47398b9f28c039180b85a4d960, 0x945afd93f458b16fb2ba629de4ed9c, 0x0047a3 ] } , - BigNum { limbs: [ 0x6069bbc672bcd63fc6e7f37a5b26a1, 0x12f82c0988ef81ca254da703f317b7, 0x002c4a ] } , - BigNum { limbs: [ 0x689692eb7b25966053559a2c9ef52c, 0x9fdecf31f40bf5a1cb2d5615368f49, 0x0070f5 ] } , - BigNum { limbs: [ 0x550d70148336689facaa64d3610ad5, 0x07745a6b893c3d980cdab38ca1760a, 0x0002f8 ] } , - BigNum { limbs: [ 0xf39ff25e34baf49d3ef8f5d59aca9e, 0x1d9e09417b9afc4ecd345253d5e766, 0x004945 ] } , - BigNum { limbs: [ 0xca0410a1c9a10a62c107092a653563, 0x89b5205c01ad36eb0ad3b74e021dec, 0x002aa8 ] } , - BigNum { limbs: [ 0xb79c3943ac1fcd8bd220a010b2b157, 0x1e350be857b08979233122f597fc09, 0x005e90 ] } , - BigNum { limbs: [ 0x0607c9bc523c31742ddf5eef4d4eaa, 0x891e1db52597a9c0b4d6e6ac40094a, 0x00155d ] } , - BigNum { limbs: [ 0xe2c65bfd04bf58dca8b817dba3570e, 0x0eb6f8267379fbd7fb64711a3fa064, 0x000bf8 ] } , - BigNum { limbs: [ 0xdadda702f99ca6235747e7245ca8f3, 0x989c317709ce3761dca398879864ee, 0x0067f5 ] } , - BigNum { limbs: [ 0x96d8c9d06188845ddc8e88c84d5c67, 0x2ba716e37086ea162629ac9c880f86, 0x006b41 ] } , - BigNum { limbs: [ 0x26cb392f9cd37aa223717637b2a39a, 0x7bac12ba0cc14923b1de5d054ff5cd, 0x0008ac ] } , - BigNum { limbs: [ 0xf146c793cf473ede1a5241284ba49a, 0xfdfbe50f1c4ce4654e3ebec5e91f08, 0x002fb4 ] } , - BigNum { limbs: [ 0xcc5d3b6c2f14c021e5adbdd7b45b67, 0xa957448e60fb4ed489c94adbeee64a, 0x004438 ] } , - BigNum { limbs: [ 0x0061d8df8ef094de5ffe6221755cbf, 0x5955edf50e27e2e55483e50308938f, 0x005c61 ] } , - BigNum { limbs: [ 0xbd422a206f6b6a21a0019cde8aa342, 0x4dfd3ba86f2050548384249ecf71c4, 0x00178c ] } , - BigNum { limbs: [ 0xf1588f7d54fa38fbd323adf49ef38c, 0x7037c1b7cb64c9862b3109914410b1, 0x0030cf ] } , - BigNum { limbs: [ 0xcc4b7382a961c6042cdc510b610c75, 0x371b67e5b1e369b3acd7001093f4a1, 0x00431e ] } , - BigNum { limbs: [ 0x4dd20117088fbe5c501a4cf6b03ed9, 0xa8ec0db5c210c27b9feaec4c8daa13, 0x005b2d ] } , - BigNum { limbs: [ 0x6fd201e8f5cc40a3afe5b2094fc128, 0xfe671be7bb3770be381d1d554a5b40, 0x0018bf ] } , - BigNum { limbs: [ 0xcd7e27c7c354fbf3a6b645601f30e9, 0x7e18302ac1414cb500e92e068f3c57, 0x001ed9 ] } , - BigNum { limbs: [ 0xf025db383b07030c5949b99fe0cf18, 0x293af972bc06e684d71edb9b48c8fb, 0x005514 ] } , - BigNum { limbs: [ 0x884138fa5c39749e9af296f4759a6c, 0x0c75d9017e950e72cf85870542bcd2, 0x00345e ] } , - BigNum { limbs: [ 0x3562ca05a2228a61650d680b8a6595, 0x9add509bfeb324c70882829c954881, 0x003f8f ] } , - BigNum { limbs: [ 0x5267d1c55501107d09bae2f00261b6, 0x39cbc2fce90de30b74e346514dc7f6, 0x005605 ] } , - BigNum { limbs: [ 0x6b3c313aa95aee82f6451c0ffd9e4b, 0x6d8766a0943a502e6324c3508a3d5d, 0x001de8 ] } , - BigNum { limbs: [ 0x58571af014fb7c5e1bc554847de159, 0xb027976d188774d04895a5c048349a, 0x004725 ] } , - BigNum { limbs: [ 0x654ce80fe96082a1e43aaa7b821ea8, 0xf72b923064c0be698f7263e18fd0b9, 0x002cc7 ] } , - BigNum { limbs: [ 0x68f56a0dbafbccb765983579922754, 0xc281fdaa0ce70dd9b615c0da4778f8, 0x001577 ] } , - BigNum { limbs: [ 0x54ae98f2436032489a67c9866dd8ad, 0xe4d12bf37061256021f248c7908c5b, 0x005e75 ] } , - BigNum { limbs: [ 0x390c063b61515af4bd62c61cada647, 0x0db0bccb91d3f2ffc4c766cb3649ef, 0x003f78 ] } , - BigNum { limbs: [ 0x8497fcc49d0aa40b429d38e35259ba, 0x99a26cd1eb74403a1340a2d6a1bb64, 0x003475 ] } , - BigNum { limbs: [ 0x81bd34f2699504d50c4e98120cdefd, 0xc9cc335251efe65d6b3c179cef6bd1, 0x003b80 ] } , - BigNum { limbs: [ 0x3be6ce0d94c6fa2af3b166edf32104, 0xdd86f64b2b584cdc6ccbf204e89982, 0x00386c ] } , - BigNum { limbs: [ 0xbf80faba84c8baabe2d2dc178be06c, 0xef347d1311b4421bf5e873a415ff19, 0x005a49 ] } , - BigNum { limbs: [ 0xfe230845799344541d2d22e8741f95, 0xb81eac8a6b93f11de21f95fdc20639, 0x0019a3 ] } , - BigNum { limbs: [ 0xbf169edf84aae71d467bea820605f5, 0x52f2fa1b856d55858eae83d3485a96, 0x004d63 ] } , - BigNum { limbs: [ 0xfe8d642079b117e2b984147df9fa0c, 0x54602f81f7daddb4495985ce8faabc, 0x00268a ] } , - BigNum { limbs: [ 0x1193fea88d9b73739f00822e34bb4a, 0x52c66a80b4b7d9d2886b1f6c306d07, 0x004f98 ] } , - BigNum { limbs: [ 0xac10045770c08b8c60ff7cd1cb44b7, 0x548cbf1cc89059674f9cea35a7984c, 0x002455 ] } , - BigNum { limbs: [ 0x872121227052105e4099f61a0fdfa0, 0x5dec50398d08443b87e30d1a49e37e, 0x00039b ] } , - BigNum { limbs: [ 0x3682e1dd8e09eea1bf6608e5f02061, 0x4966d963f03feefe5024fc878e21d5, 0x007052 ] } , - BigNum { limbs: [ 0x8f9ed648b5863e3fb520bbb4b1f602, 0xb4974317a16598980d416fff7671c6, 0x005262 ] } , - BigNum { limbs: [ 0x2e052cb748d5c0c04adf434b4e09ff, 0xf2bbe685dbe29aa1cac699a261938d, 0x00218a ] } , - BigNum { limbs: [ 0x507b618a0393d78c417c33ffdeca80, 0xa1b183c913bad44ff7774d083e02f2, 0x004cdd ] } , - BigNum { limbs: [ 0x6d28a175fac82773be83cb00213581, 0x05a1a5d4698d5ee9e090bc999a0261, 0x002710 ] } , - BigNum { limbs: [ 0xf68931f0e1a6802c786836995d2cdd, 0x4d135b59eaa27cd5bb18e2c41ce742, 0x001fb3 ] } , - BigNum { limbs: [ 0xc71ad10f1cb57ed38797c866a2d324, 0x5a3fce4392a5b6641cef26ddbb1e10, 0x00543a ] } , - BigNum { limbs: [ 0x82958410dbd8601ba80c56cca4836c, 0x2992a46c85584f96b2f249b8d371f3, 0x0069af ] } , - BigNum { limbs: [ 0x3b0e7eef22839ee457f3a8335b7c95, 0x7dc08530f7efe3a32515bfe9049360, 0x000a3e ] } , - BigNum { limbs: [ 0xbc96f152857581148241dca8af9765, 0xe58499b8083582a2eec09391da9381, 0x005f74 ] } , - BigNum { limbs: [ 0x010d11ad78e67deb7dbe225750689c, 0xc1ce8fe57512b096e947760ffd71d2, 0x001478 ] } , - BigNum { limbs: [ 0xb028c2fb9c7f475961cac72b144310, 0xaeec0c5d2514cfc5fb2c96fc930c8c, 0x006941 ] } , - BigNum { limbs: [ 0x0d7b400461dcb7a69e3537d4ebbcf1, 0xf8671d4058336373dcdb72a544f8c7, 0x000aab ] } , - BigNum { limbs: [ 0x00ee8af06f8295cd4e7f66999a9d5d, 0xe9e136da92e82601031434b768b0b4, 0x003196 ] } , - BigNum { limbs: [ 0xbcb5780f8ed96932b18098666562a4, 0xbd71f2c2ea600d38d4f3d4ea6f549f, 0x004256 ] } , - BigNum { limbs: [ 0x84d28eab79ecc6be0b628a8caa8f17, 0x90f36c44b79fbddc1274822e776645, 0x007000 ] } , - BigNum { limbs: [ 0x38d17454846f3841f49d74735570ea, 0x165fbd58c5a8755dc5938773609f0e, 0x0003ed ] } , - BigNum { limbs: [ 0xc0eaec39d77b1543d609e7c548f49c, 0x6a4bef01277a5adb35e4ada38abd4e, 0x001892 ] } , - BigNum { limbs: [ 0xfcb916c626e0e9bc29f6173ab70b65, 0x3d073a9c55cdd85ea2235bfe4d4804, 0x005b5b ] } , - BigNum { limbs: [ 0xfa2868e203acbd6c8db30fd92b4d87, 0x0b2994a75f36d49ace76c23633120c, 0x00290a ] } , - BigNum { limbs: [ 0xc37b9a1dfaaf4193724cef26d4b27a, 0x9c2994f61e115e9f0991476ba4f346, 0x004ae3 ] } , - BigNum { limbs: [ 0x8629db93e208d53efe71a07d7bd9e3, 0xcf4867cedd66bddda42e03ff6e3c43, 0x001fef ] } , - BigNum { limbs: [ 0x377a276c1c5329c1018e5e8284261e, 0xd80ac1ce9fe1755c33da05a269c910, 0x0053fd ] } , - BigNum { limbs: [ 0x77c7de2400a37e39e9c4369a227407, 0x1707f8ce66d560149d58cdb2ea0e53, 0x0040ef ] } , - BigNum { limbs: [ 0x45dc24dbfdb880c6163bc865dd8bfa, 0x904b30cf1672d3253aaf3beeedf700, 0x0032fe ] } , - BigNum { limbs: [ 0x038de285af828ba4c94db292287758, 0x61483b9bfc1053f394179b89f4c3bd, 0x0058f6 ] } , - BigNum { limbs: [ 0xba16207a4ed9735b36b24c6dd788a9, 0x460aee018137df4643f06e17e34196, 0x001af7 ] } , - BigNum { limbs: [ 0x6d5251db59ceba5331484331b33c6c, 0x5da934aae20e330e175a52a4170eef, 0x000422 ] } , - BigNum { limbs: [ 0x5051b124a48d44acceb7bbce4cc395, 0x49a9f4f29b3a002bc0adb6fdc0f664, 0x006fcb ] } , - BigNum { limbs: [ 0xe0bd10cddb648736b42261c538f92f, 0x25f8242967a050dd051ee286b0f015, 0x006f98 ] } , - BigNum { limbs: [ 0xdce6f23222f777c94bdd9d3ac706d2, 0x815b057415a7e25cd2e9271b27153d, 0x000455 ] } , - BigNum { limbs: [ 0x576cc833e78378312250dd18803aea, 0xfdc18ad866ddad6ad778d8bf584693, 0x00633c ] } , - BigNum { limbs: [ 0x66373acc16d886ceddaf21e77fc517, 0xa9919ec5166a85cf008f30e27fbec0, 0x0010b0 ] } , - BigNum { limbs: [ 0xee460732127a7b191df927420054b8, 0x925f5a3508e397dbf67215eace13e3, 0x0066e4 ] } , - BigNum { limbs: [ 0xcf5dfbcdebe183e6e206d7bdffab49, 0x14f3cf6874649b5de195f3b709f16f, 0x000d09 ] } , - BigNum { limbs: [ 0x5b95d4fb4f1f478b29f850793eca34, 0x6fb8ced65c418b45fe191aff57c67b, 0x0053bb ] } , - BigNum { limbs: [ 0x620e2e04af3cb774d607ae86c135cd, 0x379a5ac72106a7f3d9eeeea2803ed8, 0x002032 ] } , - BigNum { limbs: [ 0xff1a7f48766b64c025e947fc51862a, 0xe32cb3c01c0cfeb0259c57826bdfc3, 0x001d12 ] } , - BigNum { limbs: [ 0xbe8983b787f09a3fda16b703ae79d7, 0xc42675dd613b3489b26bb21f6c258f, 0x0056da ] } , - BigNum { limbs: [ 0x6f1071ab3e1fa6f533d4a00ade90a0, 0x141eb30243d3588a4a9a1de181f035, 0x005540 ] } , - BigNum { limbs: [ 0x4e939154c03c580acc2b5ef5216f61, 0x9334769b3974daaf8d6debc056151e, 0x001ead ] } , - BigNum { limbs: [ 0x52721fdee87e6c6693e659a973980d, 0x540b388a4dfb14e1db399e9bdf01d3, 0x003d26 ] } , - BigNum { limbs: [ 0x6b31e32115dd92996c19a5568c67f4, 0x5347f1132f4d1e57fcce6b05f90380, 0x0036c7 ] } , - BigNum { limbs: [ 0xcae63648f3ed07f63435a3859a554f, 0xea4e31a6c8de5f5bd8f365861a6780, 0x003cfb ] } , - BigNum { limbs: [ 0xf2bdccb70a6ef709cbca5b7a65aab2, 0xbd04f7f6b469d3ddff14a41bbd9dd2, 0x0036f1 ] } , - BigNum { limbs: [ 0x56b2c7e548f3a2273238ea947f8dfd, 0x12e979c354cdf32736645b9577588a, 0x00241b ] } , - BigNum { limbs: [ 0x66f13b1ab5685cd8cdc7146b807204, 0x9469afda287a4012a1a3ae0c60acc9, 0x004fd2 ] } , - BigNum { limbs: [ 0x45504c949c86defc8d1abfab70731e, 0x1f84fec8e50405dbd67580fea06de5, 0x0038ea ] } , - BigNum { limbs: [ 0x7853b66b61d5200372e53f548f8ce3, 0x87ce2ad498442d5e019288a337976e, 0x003b03 ] } , - BigNum { limbs: [ 0x4ce40f50b8403e35ce3bdd58ac1061, 0x01152c187d9972a92b80782a5fd1f8, 0x001d38 ] } , - BigNum { limbs: [ 0x70bff3af461bc0ca31c421a753efa0, 0xa63dfd84ffaec090ac87917778335b, 0x0056b5 ] } , - BigNum { limbs: [ 0xf86cc4363627c3e1b35b2631dd61cb, 0x4a308f9944ca96dc7de6bc9d4f1463, 0x002e8f ] } , - BigNum { limbs: [ 0xc5373ec9c8343b1e4ca4d8ce229e36, 0x5d229a04387d9c5d5a214d0488f0ef, 0x00455e ] } , - BigNum { limbs: [ 0x5fd614efd2205680d0b70b14a2772e, 0x0027318cdd69f2df7bbe0bd155bfd3, 0x00600f ] } , - BigNum { limbs: [ 0x5dcdee102c3ba87f2f48f3eb5d88d3, 0xa72bf8109fde405a5c49fdd0824580, 0x0013de ] } , - BigNum { limbs: [ 0xeb21a28c003fc16abeebd0b41405ce, 0x1bb8717e4be60c00dc90fe325a5455, 0x0010cc ] } , - BigNum { limbs: [ 0xd2826073fe1c3d9541142e4bebfa33, 0x8b9ab81f31622738fb770b6f7db0fd, 0x006321 ] } , - BigNum { limbs: [ 0x974e5e0d574aab43e9bdb5370951b5, 0xb9b3ad9246e1d77825ea593b657667, 0x0050e2 ] } , - BigNum { limbs: [ 0x2655a4f2a71153bc164249c8f6ae4c, 0xed9f7c0b36665bc1b21db066728eec, 0x00230a ] } , - BigNum { limbs: [ 0x75e1775600f121bbaca7e9d0161cf3, 0x59dd69a4c0c3e65f63afefdb3173c0, 0x00726b ] } , - BigNum { limbs: [ 0x47c28ba9fd6add445358152fe9e30e, 0x4d75bff8bc844cda745819c6a69193, 0x000182 ] } , - BigNum { limbs: [ 0xd0d82aeb2455759bab4eda84a8ac63, 0xc8e232a4decc97c175c5f45f115771, 0x00472a ] } , - BigNum { limbs: [ 0xeccbd814da06896454b1247b57539e, 0xde70f6f89e7b9b7862421542c6ade1, 0x002cc2 ] } , - BigNum { limbs: [ 0x28caa1b4f5dcc2e67ffba41b4878de, 0xcdd90cbc7967b4cb7255c2e484d53e, 0x002f0f ] } , - BigNum { limbs: [ 0x94d9614b087f3c1980045ae4b78723, 0xd97a1ce103e07e6e65b246bd533015, 0x0044dd ] } , - BigNum { limbs: [ 0x6ba83974d45c4463a5bcaa4445a757, 0x6aa063a7fea280cebabe1727cf1ffc, 0x0034b0 ] } , - BigNum { limbs: [ 0x51fbc98b29ffba9c5a4354bbba58aa, 0x3cb2c5f57ea5b26b1d49f27a08e557, 0x003f3d ] } , - BigNum { limbs: [ 0x5bc8e5e46250f63488caad8a71355d, 0xc3d470f8769b4140bb8cb3c69d796f, 0x001ab2 ] } , - BigNum { limbs: [ 0x61db1d1b9c0b08cb773551758ecaa4, 0xe37eb8a506acf1f91c7b55db3a8be4, 0x00593a ] } , - BigNum { limbs: [ 0x795678cfd1ce5591c84045b8ae1a73, 0x40c27b793e4ebc4325c5e1c47b5300, 0x00152d ] } , - BigNum { limbs: [ 0x444d8a302c8da96e37bfb94751e58e, 0x6690ae243ef976f6b24227dd5cb253, 0x005ec0 ] } , - BigNum { limbs: [ 0x7fa63cff661af7325cd87e588070a2, 0x060090169c5a7d5c39dacbd0b17daa, 0x00453b ] } , - BigNum { limbs: [ 0x3dfdc600984107cda32780a77f8f5f, 0xa1529986e0edb5dd9e2d3dd12687a9, 0x002eb2 ] } , - BigNum { limbs: [ 0x991aceb5b8f0b7351de1c328eaf50a, 0xbd4e055e35513b5e6f88531447da88, 0x001c9c ] } , - BigNum { limbs: [ 0x2489344a456b47cae21e3bd7150af7, 0xea05243f47f6f7db687fb68d902acb, 0x005750 ] } , - BigNum { limbs: [ 0xf39e5ca57cc17d729a0d7b69f39b0b, 0xaa8cb19984ed95a7e2d7812ca75df1, 0x0027b6 ] } , - BigNum { limbs: [ 0xca05a65a819a818d65f283960c64f6, 0xfcc67803f85a9d91f530887530a761, 0x004c36 ] } , - BigNum { limbs: [ 0x616a02d0b6703ad2f896d315ba0c6b, 0x0158e6b2c1a2d1ff7b686e6fa6419d, 0x00025b ] } , - BigNum { limbs: [ 0x5c3a002f47ebc42d07692bea45f396, 0xa5fa42eabba5613a5c9f9b3231c3b6, 0x007192 ] } , - BigNum { limbs: [ 0xd0b955fd626f8216bc064d99f44e58, 0x4d53dabfd281345366eb688bd119b2, 0x005d95 ] } , - BigNum { limbs: [ 0xeceaad029bec7ce943f9b1660bb1a9, 0x59ff4eddaac6fee6711ca11606eba0, 0x001658 ] } , - BigNum { limbs: [ 0x9c14e52bc510a84b6ac1bcc463fb21, 0x2051920a9bdd4ea23a4aa97e1e90db, 0x002a7d ] } , - BigNum { limbs: [ 0x218f1dd4394b56b4953e423b9c04e0, 0x87019792e16ae4979dbd6023b97478, 0x004970 ] } , - BigNum { limbs: [ 0x85accfbc474212121ea1319f4c209c, 0x45072395009186090b2f1559eafd49, 0x001a33 ] } , - BigNum { limbs: [ 0x37f73343b719ecede15ecd60b3df65, 0x624c06087cb6ad30ccd8f447ed080a, 0x0059ba ] } , - BigNum { limbs: [ 0x77273c168c4afecd3a13164faa1758, 0x448036ea67a81e009a3bc645424619, 0x007179 ] } , - BigNum { limbs: [ 0x467cc6e972110032c5ece8b055e8a9, 0x62d2f2b315a015393dcc435c95bf3a, 0x000274 ] } , - BigNum { limbs: [ 0xfb0fe542131cff79443d7ce5836ab4, 0x58f3481488a9e3b1e0051d79650c14, 0x003025 ] } , - BigNum { limbs: [ 0xc2941dbdeb3eff86bbc2821a7c954d, 0x4e5fe188f49e4f87f802ec2872f93e, 0x0043c8 ] } , - BigNum { limbs: [ 0x6a8e4feaf68d462d556c078f463720, 0x164c3b63394b20b1c9a919c629da9d, 0x002852 ] } , - BigNum { limbs: [ 0x5315b31507ceb8d2aa93f770b9c8e1, 0x9106ee3a43fd12880e5eefdbae2ab6, 0x004b9b ] } , - BigNum { limbs: [ 0xf1d1e1ee7c5d6abf88187f0cefb20c, 0xfd01910f25effbe45bccaae3d95c6a, 0x001326 ] } , - BigNum { limbs: [ 0xcbd2211181fe944077e77ff3104df5, 0xaa51988e575837557c3b5ebdfea8e8, 0x0060c6 ] } , - BigNum { limbs: [ 0xd5b9a214819d3df400587e7902066a, 0xb136ddd3155c5d55da3642c5ab1acc, 0x001470 ] } , - BigNum { limbs: [ 0xe7ea60eb7cbec10bffa78086fdf997, 0xf61c4bca67ebd5e3fdd1c6dc2cea86, 0x005f7c ] } , - BigNum { limbs: [ 0x0fc0d3ae1aa2d1484cdb4a155aaa58, 0xae33d68783f3051e4221527d0a2065, 0x006b37 ] } , - BigNum { limbs: [ 0xade32f51e3b92db7b324b4eaa555a9, 0xf91f5315f9552e1b95e6b724cde4ee, 0x0008b5 ] } , - BigNum { limbs: [ 0xc4ff9cf2d729fef74bd60178700563, 0x29d7d5f229224f89c41c27748d079e, 0x003ceb ] } , - BigNum { limbs: [ 0xf8a4660d27320008b429fd878ffa9e, 0x7d7b53ab5425e3b013ebe22d4afdb4, 0x003702 ] } , - BigNum { limbs: [ 0xea02fae48098b68635281af47fd8ad, 0xf5e9dbbb9e4a6986d249c9701d557b, 0x0026a0 ] } , - BigNum { limbs: [ 0xd3a1081b7dc34879cad7e40b802754, 0xb1694de1defdc9b305be4031baafd7, 0x004d4c ] } , - BigNum { limbs: [ 0x02561f7d23ef1264986d880916d32c, 0x25a175e388babcfb00df37a0949d0e, 0x00260b ] } , - BigNum { limbs: [ 0xbb4de382da6cec9b679276f6e92cd5, 0x81b1b3b9f48d763ed728d201436845, 0x004de2 ] } , - BigNum { limbs: [ 0xbefc6e3f1d854a96bf0e6143e7a4be, 0xbd844b3abbbc9faabcffc9f0533fe4, 0x007284 ] } , - BigNum { limbs: [ 0xfea794c0e0d6b46940f19dbc185b43, 0xe9cede62c18b938f1b083fb184c56e, 0x000168 ] } , - BigNum { limbs: [ 0x0faf9d413f633214052a7687ecf4c4, 0xe3bd53a46b952f6b110f047b7d5739, 0x002f82 ] } , - BigNum { limbs: [ 0xadf465bebef8ccebfad58878130b3d, 0xc395d5f911b303cec6f905265aae1a, 0x00446a ] } , - BigNum { limbs: [ 0x1e86284e29617c6cd5143e69a5bdff, 0xb3e386e8ff6cd8c61121b609d38b03, 0x007088 ] } , - BigNum { limbs: [ 0x9f1ddab1d4fa82932aebc0965a4202, 0xf36fa2b47ddb5a73c6e65398047a50, 0x000364 ] } , - BigNum { limbs: [ 0xf63a085bbe2cd5c3ceb69a02bbf738, 0x22b6914a019b6d86e16b5c842a1f07, 0x005c72 ] } , - BigNum { limbs: [ 0xc769faa4402f293c314964fd4408c9, 0x849c98537bacc5b2f69cad1dade64b, 0x00177b ] } , - BigNum { limbs: [ 0x446da37ee104956d95c3f201bffa3e, 0x2db01167b5656686f2ee9c93ecd9ae, 0x003b89 ] } , - BigNum { limbs: [ 0x79365f811d5769926a3c0cfe4005c3, 0x79a31835c7e2ccb2e5196d0deb2ba5, 0x003864 ] } , - BigNum { limbs: [ 0x4fafbcc6ec0cd357e41926122589c9, 0x40cf15dd6368efc528f51ee23fdcc0, 0x000466 ] } , - BigNum { limbs: [ 0x6df44639124f2ba81be6d8edda7638, 0x668413c019df4374af12eabf982893, 0x006f87 ] } , - BigNum { limbs: [ 0x79fafb3f5f55fad82cd67c85567002, 0xeefc67e8504eea0cd3cbdb2d08e238, 0x003ea1 ] } , - BigNum { limbs: [ 0x43a907c09f060427d329827aa98fff, 0xb856c1b52cf9492d043c2e74cf231b, 0x00354b ] } , - BigNum { limbs: [ 0x03e470451674007695d27fd2fee785, 0x97ff52d8313ef19051e9ad2f273030, 0x007176 ] } , - BigNum { limbs: [ 0xb9bf92bae7e7fe896a2d7f2d01187c, 0x0f53d6c54c0941a9861e5c72b0d523, 0x000277 ] } , - BigNum { limbs: [ 0xa2966253c4c42767006b5a67069fea, 0x342df5bfce2e228919530ab9368eb6, 0x000bec ] } , - BigNum { limbs: [ 0x1b0da0ac3997d798ff94a498f96017, 0x732533ddaf1a10b0beb4fee8a1769d, 0x006801 ] } , - BigNum { limbs: [ 0x96e0f32404a1c9ff3b116ecd50336d, 0x96f6a673d6b2d68d08f22c00ff5850, 0x0043ee ] } , - BigNum { limbs: [ 0x26c30fdbf9ba3500c4ee9032afcc94, 0x105c8329a6955caccf15dda0d8ad03, 0x002fff ] } , - BigNum { limbs: [ 0x9a3970c682e5ca65f0f59f60448c4a, 0x38d2e2bdd570825e310ae003a7c836, 0x00672b ] } , - BigNum { limbs: [ 0x236a92397b76349a0f0a5f9fbb73b7, 0x6e8046dfa7d7b0dba6fd299e303d1d, 0x000cc2 ] } , - BigNum { limbs: [ 0x821f42c6a8f8b162502ca5c43ef99c, 0x2caa9a98600ac4f1f0bfebe4674e1b, 0x0024b3 ] } , - BigNum { limbs: [ 0x3b84c03955634d9dafd3593bc10665, 0x7aa88f051d3d6e47e7481dbd70b738, 0x004f3a ] } , - BigNum { limbs: [ 0xb30b386db1c3ab3206626a98fa1d9c, 0xef32bfda0292d34160996c56d80441, 0x004885 ] } , - BigNum { limbs: [ 0x0a98ca924c9853cdf99d946705e265, 0xb82069c37ab55ff8776e9d4b000112, 0x002b67 ] } , - BigNum { limbs: [ 0x6d40e40f75f4714fc4876bfdbec485, 0xd9e82da96ed0f5349fc357ca134467, 0x002e8e ] } , - BigNum { limbs: [ 0x50631ef088678db03b789302413b7c, 0xcd6afbf40e773e053844b1d7c4c0ec, 0x00455e ] } , - BigNum { limbs: [ 0xab2a28bc1a67a3e121a2157e140709, 0xd8b424faf036d46d88f1825bc65411, 0x006638 ] } , - BigNum { limbs: [ 0x1279da43e3f45b1ede5de981ebf8f8, 0xce9f04a28d115ecc4f16874611b142, 0x000db4 ] } , - BigNum { limbs: [ 0x2bbf84c8922da39008296d4ce674de, 0xbf321096e64bd5cb0b6d859bf7af2a, 0x0022b9 ] } , - BigNum { limbs: [ 0x91e47e376c2e5b6ff7d691b3198b23, 0xe821190696fc5d6ecc9a8405e05629, 0x005133 ] } , - BigNum { limbs: [ 0xf87b21e445689c444c101276c0d6b2, 0x9722ff6e4389c6193e3d606f8bae7a, 0x001d74 ] } , - BigNum { limbs: [ 0xc528e11bb8f362bbb3efec893f294f, 0x10302a2f39be6d2099caa9324c56d8, 0x005679 ] } , - BigNum { limbs: [ 0xe5677e12d7fdae688163b978201af9, 0x33b4a59d415bba9eeab1548a339c68, 0x007377 ] } , - BigNum { limbs: [ 0xd83c84ed265e50977e9c4587dfe508, 0x739e84003bec789aed56b517a468ea, 0x000076 ] } , - BigNum { limbs: [ 0x9a479cf2311426840eb2f9317fb817, 0xb7ce9c4a0ddd37396661f4b1338e47, 0x000fb0 ] } , - BigNum { limbs: [ 0x235c660dcd47d87bf14d05ce8047ea, 0xef848d536f6afc0071a614f0a4770c, 0x00643c ] } , - BigNum { limbs: [ 0x3e8532cebebdef1eaf415a7072e217, 0xc63b4d0b4485938016bdfb5461cb53, 0x004f23 ] } , - BigNum { limbs: [ 0x7f1ed0313f9e0fe150bea48f8d1dea, 0xe117dc9238c29fb9c14a0e4d763a00, 0x0024c9 ] } , - BigNum { limbs: [ 0x3c2ae3c59b53b9b3ae44e7cb60f87e, 0xc7115960bc307fd1f7ee628144edd0, 0x0056bf ] } , - BigNum { limbs: [ 0x81791f3a6308454c51bb17349f0783, 0xe041d03cc117b367e019a720931783, 0x001d2d ] } , - BigNum { limbs: [ 0xf9e9ef2dab9b1670e7afef7c69a573, 0x433df099fdd1141e5457db3a858b05, 0x001e37 ] } , - BigNum { limbs: [ 0xc3ba13d252c0e88f18500f83965a8e, 0x641539037f771f1b83b02e67527a4d, 0x0055b6 ] } , - BigNum { limbs: [ 0x68a15b851828cf599ffdaa5828ab43, 0x5a76f2a4f9373d621818d2c39c8d1f, 0x00716f ] } , - BigNum { limbs: [ 0x5502a77ae6332fa6600254a7d754be, 0x4cdc36f88410f5d7bfef36de3b7834, 0x00027e ] } , - BigNum { limbs: [ 0x306235854ce6c058cfc39bead3e9c1, 0x5d30925b46ce8455249678a7313d7e, 0x00245c ] } , - BigNum { limbs: [ 0x8d41cd7ab1753ea7303c63152c1640, 0x4a2297423679aee4b37190faa6c7d5, 0x004f91 ] } , - BigNum { limbs: [ 0x35d85fba3cf6739bd8edbd9e625acf, 0x60a4b705db2da3f6c73ae7819e68cb, 0x003c1b ] } , - BigNum { limbs: [ 0x87cba345c1658b64271241619da532, 0x46ae7297a21a8f4310cd2220399c88, 0x0037d2 ] } , - BigNum { limbs: [ 0x97522aac346f55acbc19b9e9811e79, 0x94214cf9539d6046ecb5b3db813c51, 0x004e62 ] } , - BigNum { limbs: [ 0x2651d853c9eca95343e645167ee188, 0x1331dca429aad2f2eb5255c656c902, 0x00258b ] } , - BigNum { limbs: [ 0x6a133219f27c4b46c6f847a6d15a7b, 0xc33cdb958a9cdb339a547401f71630, 0x003e56 ] } , - BigNum { limbs: [ 0x5390d0e60bdfb3b93907b7592ea586, 0xe4164e07f2ab58063db3959fe0ef23, 0x003596 ] } , - BigNum { limbs: [ 0x04f1f91672ddefd059ee663821842d, 0x317283b968e87fee2aa8bb04da4e60, 0x003bdc ] } , - BigNum { limbs: [ 0xb8b209e98b7e0f2fa61198c7de7bd4, 0x75e0a5e4145fb34bad5f4e9cfdb6f3, 0x003811 ] } , - BigNum { limbs: [ 0x4f2d33b0870055dbd33167d427d29c, 0x262813fd1aebfdb5e6174636ee325e, 0x00621d ] } , - BigNum { limbs: [ 0x6e76cf4f775ba9242cce972bd82d65, 0x812b15a0625c3583f1f0c36ae9d2f5, 0x0011d0 ] } , - BigNum { limbs: [ 0x487f2463fba3e20afba5ddb9d9a632, 0x47ac35d9a1b93726d0ae30d44be5b6, 0x005c2e ] } , - BigNum { limbs: [ 0x7524de9c02b81cf5045a21462659cf, 0x5fa6f3c3db8efc130759d8cd8c1f9d, 0x0017bf ] } , - BigNum { limbs: [ 0x578ca4bdcffdfaaf63cac2aa631f1d, 0xe4afdde0bb69b179b89dd0bd9b9403, 0x004aed ] } , - BigNum { limbs: [ 0x66175e422e5e04509c353c559ce0e4, 0xc2a34bbcc1de81c01f6a38e43c7150, 0x0028ff ] } , - BigNum { limbs: [ 0xfc2415d104453e40daadc83f8ccfe2, 0x118ca40bd8269a29dc197173759a0b, 0x0002ae ] } , - BigNum { limbs: [ 0xc17fed2efa16c0bf255236c073301f, 0x95c68591a521990ffbee982e626b47, 0x00713f ] } , - BigNum { limbs: [ 0x863ad646e716596e1f5a12e244baea, 0x7c40f2cf5dcf75ca3f9ac816918bd4, 0x000fd5 ] } , - BigNum { limbs: [ 0x37692cb91745a591e0a5ec1dbb4517, 0x2b1236ce1f78bd6f986d418b46797f, 0x006418 ] } , - BigNum { limbs: [ 0x4969282006d47c6c16853c3840a0de, 0x5f550357b97b68dce2abbcb3941d48, 0x0016cd ] } , - BigNum { limbs: [ 0x743adadff7878293e97ac2c7bf5f23, 0x47fe2645c3ccca5cf55c4cee43e80b, 0x005d20 ] } , - BigNum { limbs: [ 0x9e48bfbae909be6b14bd4c94283139, 0x49ce67bc6827aeadc5ae3427f905f2, 0x000909 ] } , - BigNum { limbs: [ 0x1f5b434515524094eb42b26bd7cec8, 0x5d84c1e11520848c1259d579deff61, 0x006ae4 ] } , - BigNum { limbs: [ 0x43200e4c9c51733e54abcc7fe8b49c, 0x576f19800705eb819e54033c1e5a22, 0x00269f ] } , - BigNum { limbs: [ 0x7a83f4b3620a8bc1ab543280174b65, 0x4fe4101d764247b839b40665b9ab31, 0x004d4e ] } , - BigNum { limbs: [ 0xa6bd0a70c528eb9a612cafe45838a9, 0x5fb3bc9a0f8a1dcb6aa8eccffead1e, 0x0024e8 ] } , - BigNum { limbs: [ 0x16e6f88f393313659ed34f1ba7c758, 0x479f6d036dbe156e6d5f1cd1d95835, 0x004f05 ] } , - BigNum { limbs: [ 0x092fb3730a4a38abbb613cb100e2b7, 0xf911e2710139da2cf40994d2ee391d, 0x00120d ] } , - BigNum { limbs: [ 0xb4744f8cf411c654449ec24eff1d4a, 0xae41472c7c0e590ce3fe74cee9cc36, 0x0061df ] } , - BigNum { limbs: [ 0xa2253f5bc8037e9a47ee7220984b39, 0x61d89f56f16020832570c9e52d88dc, 0x0036a4 ] } , - BigNum { limbs: [ 0x1b7ec3a436588065b8118cdf67b4c8, 0x457a8a468be812b6b2973fbcaa7c77, 0x003d49 ] } , - BigNum { limbs: [ 0x89913932d3c0c7ce1654daec319bfe, 0x19917a4999aa2b8b9e48b90848614c, 0x002d67 ] } , - BigNum { limbs: [ 0x3412c9cd2a9b3731e9ab2413ce6403, 0x8dc1af53e39e07ae39bf50998fa407, 0x004686 ] } , - BigNum { limbs: [ 0x33e245d22b042fdf0ff0e077e600ca, 0x78468f37f795022461abcc7e0370b5, 0x003436 ] } , - BigNum { limbs: [ 0x89c1bd2dd357cf20f00f1e8819ff37, 0x2f0c9a6585b33115765c3d23d4949e, 0x003fb7 ] } , - BigNum { limbs: [ 0xe05db7e375ee86fbd310a26d1cce6c, 0x51d7b5e598bd0f16826188eac00fcc, 0x004e0f ] } , - BigNum { limbs: [ 0xdd464b1c886d78042cef5c92e33195, 0x557b73b7e48b242355a680b717f586, 0x0025de ] } , - BigNum { limbs: [ 0xcfaf6910cde540bb8a3b2ad485b4c9, 0x4729d4a170a178f3d3dbcc6f73fe79, 0x001f0f ] } , - BigNum { limbs: [ 0xedf499ef3076be4475c4d42b7a4b38, 0x602954fc0ca6ba46042c3d326406d9, 0x0054de ] } , - BigNum { limbs: [ 0xc0d0e78fd085783b8197ec325ea3e8, 0xb47ecf33eb1c82990742cf3687d963, 0x001b8b ] } , - BigNum { limbs: [ 0xfcd31b702dd686c47e6812cda15c19, 0xf2d45a69922bb0a0d0c53a6b502bef, 0x005861 ] } , - BigNum { limbs: [ 0x397ea1d516758ddc84002bfb1b01b1, 0xad611232a12aea50b5077b3ffe3fc5, 0x003385 ] } , - BigNum { limbs: [ 0x8425612ae7e671237bffd304e4fe50, 0xf9f2176adc1d48e923008e61d9c58e, 0x004067 ] } , - BigNum { limbs: [ 0x0362f1e803401e44eb0b0b9a3e4a01, 0x4e9674490468fec5cc5a26899d272b, 0x0070b8 ] } , - BigNum { limbs: [ 0xba411117fb1be0bb14f4f365c1b600, 0x58bcb55478df34740bade3183ade28, 0x000335 ] } , - BigNum { limbs: [ 0x1dd7b6248f4fee578fb63e4a768788, 0x132ef74a6587a6a22616bb3764f286, 0x0010c4 ] } , - BigNum { limbs: [ 0x9fcc4cdb6f0c10a87049c0b5897879, 0x9424325317c08c97b1f14e6a7312cd, 0x006329 ] } , - BigNum { limbs: [ 0x1e1a6bfcf82e1e2c455e524b1a4f0c, 0x9e48c18c6db7a093a40ba4d2e2e399, 0x000e02 ] } , - BigNum { limbs: [ 0x9f899703062de0d3baa1acb4e5b0f5, 0x090a68110f9092a633fc64cef521ba, 0x0065eb ] } , - BigNum { limbs: [ 0xe4341032732cd0b8d349e52553b42f, 0x98256d5409c63f2802e90233939e74, 0x001cb3 ] } , - BigNum { limbs: [ 0xd96ff2cd8b2f2e472cb619daac4bd2, 0x0f2dbc497381f411d51f076e4466de, 0x00573a ] } , - BigNum { limbs: [ 0x0557aeb787b2377655734c979c6933, 0x0421ed19688e75854acd974b777ea3, 0x000631 ] } , - BigNum { limbs: [ 0xb84c544876a9c789aa8cb2686396ce, 0xa3313c8414b9bdb48d3a72566086b0, 0x006dbc ] } , - BigNum { limbs: [ 0xd642ca6b54a6369ccc21031e150139, 0xba9f79a5fb1a6a2a047b5be3ed4fd4, 0x00224c ] } , - BigNum { limbs: [ 0xe7613894a9b5c86333defbe1eafec8, 0xecb3aff7822dc90fd38cadbdeab57e, 0x0051a0 ] } , - BigNum { limbs: [ 0x000a2c08272f66da36ccf2e993cd4b, 0x41e9a4f570435bba8fb2e09f6beef7, 0x006afa ] } , - BigNum { limbs: [ 0xbd99d6f7d72c9825c9330c166c32b6, 0x656984a80d04d77f485529026c165c, 0x0008f3 ] } , - BigNum { limbs: [ 0xbcf785dcdf4e328808e9517b13c0b3, 0x409be07b0180970e859cb664f191e6, 0x0061b7 ] } , - BigNum { limbs: [ 0x00ac7d231f0dcc77f716ad84ec3f4e, 0x66b749227bc79c2b526b533ce6736d, 0x001236 ] } , - BigNum { limbs: [ 0x78c4bdcf9bc483ca5781d76f4e559e, 0x36ae045a7a20a073d4d045c3beb72b, 0x002749 ] } , - BigNum { limbs: [ 0x44df453062977b35a87e2790b1aa63, 0x70a52543032792c60337c3de194e28, 0x004ca4 ] } , - BigNum { limbs: [ 0xbd07bf07c3447388b9c737630a23e2, 0x67e4a7679099fa34c274b0c1047698, 0x006329 ] } , - BigNum { limbs: [ 0x009c43f83b178b774638c79cf5dc1f, 0x3f6e8235ecae3905159358e0d38ebb, 0x0010c4 ] } , - BigNum { limbs: [ 0x931c9fae3bb9dda8a614cffe125c7a, 0xdc15fde5f343f0127db7a6df4e56f9, 0x00223e ] } , - BigNum { limbs: [ 0x2a876351c2a2215759eb2f01eda387, 0xcb3d2bb78a0443275a5062c289ae5a, 0x0051ae ] } , - BigNum { limbs: [ 0x15005b0d6d37abfde128a69e40ea4f, 0xf16fc09ed8024721545355d82c1794, 0x002121 ] } , - BigNum { limbs: [ 0xa8a3a7f2912453021ed75861bf15b2, 0xb5e368fea545ec1883b4b3c9abedbf, 0x0052cb ] } , - BigNum { limbs: [ 0x23e4c65209e6feb99be60e5325becf, 0x97a825dfd84f013ee58a04c05b1238, 0x002bbc ] } , - BigNum { limbs: [ 0x99bf3cadf47500466419f0acda4132, 0x0fab03bda4f931faf27e04e17cf31b, 0x004831 ] } , - BigNum { limbs: [ 0x92b0c71537657e791422ab0d1fa475, 0x8e737ba8e6b9c7011799b6ac26732b, 0x00349b ] } , - BigNum { limbs: [ 0x2af33beac6f68086ebdd53f2e05b8c, 0x18dfadf4968e6c38c06e52f5b19228, 0x003f52 ] } , - BigNum { limbs: [ 0x6a7922e7a83dee9dcbcd42681999e0, 0x29dda824854795fc5d88196ec7c833, 0x0037ad ] } , - BigNum { limbs: [ 0x532ae018561e10623432bc97e66621, 0x7d758178f8009d3d7a7ff033103d20, 0x003c40 ] } , - BigNum { limbs: [ 0x5dc87d9d11ad1b7f6aaf9450d12b19, 0x66588b0ae62cf7f58fc006cf477672, 0x0020c6 ] } , - BigNum { limbs: [ 0x5fdb8562ecaee38095506aaf2ed4e8, 0x40fa9e92971b3b44484802d2908ee1, 0x005327 ] } , - BigNum { limbs: [ 0xfd9e7bab7d04be833d3e49aebddc79, 0x831f7ed103e1e3648d02b64300acf9, 0x006d29 ] } , - BigNum { limbs: [ 0xc00587548157407cc2c1b551422388, 0x2433aacc79664fd54b05535ed75859, 0x0006c4 ] } , - BigNum { limbs: [ 0x11aa53881673c8aa46fedd8a5733c6, 0xbed352e860abf11334d33265ec3a28, 0x00687a ] } , - BigNum { limbs: [ 0xabf9af77e7e83655b9012175a8cc3b, 0xe87fd6b51c9c4226a334d73bebcb2b, 0x000b72 ] } , - BigNum { limbs: [ 0x9de727acba114354fe7e4233ead48f, 0xb98ed4682ac06c7aa6c0e0aa70e4ef, 0x000b09 ] } , - BigNum { limbs: [ 0x1fbcdb53444abbab0181bccc152b72, 0xedc455355287c6bf314728f7672064, 0x0068e3 ] } , - BigNum { limbs: [ 0x67a0e092307f59eb82e18c2d4a2f93, 0xe6277af5413f13df9e22c199ab7d4c, 0x000f49 ] } , - BigNum { limbs: [ 0x5603226dcddca5147d1e72d2b5d06e, 0xc12baea83c091f5a39e548082c8807, 0x0064a3 ] } , - BigNum { limbs: [ 0x8ecbb2fc779498b7371af24c69e915, 0xb7ebefc2ea8bdc9f2f2d8d631bdace, 0x0019bb ] } , - BigNum { limbs: [ 0x2ed8500386c76648c8e50cb39616ec, 0xef6739da92bc569aa8da7c3ebc2a85, 0x005a31 ] } , - BigNum { limbs: [ 0xbf69d4846895b869cf30c3f74acc2d, 0x7cc3fb72f7b698679992371f25319c, 0x000beb ] } , - BigNum { limbs: [ 0xfe3a2e7b95c6469630cf3b08b533d4, 0x2a8f2e2a85919ad23e75d282b2d3b6, 0x006802 ] } , - BigNum { limbs: [ 0xf2baf504c25b9a39edc05aa04d73d3, 0xd287d6fa2f0abe2070fb003e94ce7e, 0x00501e ] } , - BigNum { limbs: [ 0xcae90dfb3c0064c6123fa45fb28c2e, 0xd4cb52a34e3d7519670d09634336d4, 0x0023ce ] } , - BigNum { limbs: [ 0x61030f7a6df8cd67febb6c8cbe4070, 0xc60d84f924f255bef584e05d609204, 0x000a88 ] } , - BigNum { limbs: [ 0x5ca0f385906331980144927341bf91, 0xe145a4a45855dd7ae283294477734f, 0x006964 ] } , - BigNum { limbs: [ 0x192612437c0d705dd8aa1f184468b1, 0xac20308d7fa75d32092f3b381bf3aa, 0x002d1d ] } , - BigNum { limbs: [ 0xa47df0bc824e8ea22755dfe7bb9750, 0xfb32f90ffda0d607ced8ce69bc11a9, 0x0046cf ] } , - BigNum { limbs: [ 0xd10e7623a9b5c2385693e2fcd877bc, 0x930d0b536c1638fea19a2f6d48ccbf, 0x006c5c ] } , - BigNum { limbs: [ 0xec958cdc54a63cc7a96c1c03278845, 0x14461e4a1131fa3b366dda348f3893, 0x000791 ] } , - BigNum { limbs: [ 0x07f80a3c191747313bf2252bfe6544, 0xc3710f7d372068f5ddce3a6ac23aa6, 0x0048dd ] } , - BigNum { limbs: [ 0xb5abf8c3e544b7cec40dd9d4019abd, 0xe3e21a204627ca43fa39cf3715caad, 0x002b0f ] } , - BigNum { limbs: [ 0x7d31d54a5b5e0bf66850fc4356cc38, 0x5090296540c55c8ea24dbc4424135c, 0x000b63 ] } , - BigNum { limbs: [ 0x40722db5a2fdf30997af02bca933c9, 0x56c300383c82d6ab35ba4d5db3f1f7, 0x00688a ] } , - BigNum { limbs: [ 0x6754373db6852853633cba573000a7, 0xbbd2ed7a061996cedcf10a4bedd504, 0x0028da ] } , - BigNum { limbs: [ 0x564fcbc247d6d6ac9cc344a8cfff5a, 0xeb803c23772e9c6afb16ff55ea304f, 0x004b12 ] } , - BigNum { limbs: [ 0xefd2ccb27161336c0774388484c8e0, 0x40f3fe19d6697b3c0956d65c80f6ed, 0x005149 ] } , - BigNum { limbs: [ 0xcdd1364d8cfacb93f88bc67b7b3721, 0x665f2b83a6deb7fdceb13345570e65, 0x0022a4 ] } , - BigNum { limbs: [ 0xaf06cd4910e551088ec10c7b3f9602, 0xd80f951236ac65f6c38129c1631553, 0x004683 ] } , - BigNum { limbs: [ 0x0e9d35b6ed76adf7713ef284c069ff, 0xcf43948b469bcd431486dfe074f000, 0x002d69 ] } , - BigNum { limbs: [ 0x55cbf4fc7d9221d6816541aa07b714, 0x36935603e9159f28a666a615905a5d, 0x0043f2 ] } , - BigNum { limbs: [ 0x67d80e0380c9dd297e9abd55f848ed, 0x70bfd3999432941131a1638c47aaf6, 0x002ffb ] } , - BigNum { limbs: [ 0x3d713401b12579ff39b32afc7b0bc8, 0xbfc21f080b804db92c2e4bb771d4c2, 0x00566d ] } , - BigNum { limbs: [ 0x8032cefe4d368500c64cd40384f439, 0xe7910a9571c7e580abd9bdea663091, 0x001d7f ] } , - BigNum { limbs: [ 0xab8672e395976ddc3fce2d7273d9b8, 0xce96912a183ea6587ecd8746ffc65e, 0x000424 ] } , - BigNum { limbs: [ 0x121d901c68c49123c031d18d8c2649, 0xd8bc987365098ce1593a825ad83ef5, 0x006fc8 ] } , - BigNum { limbs: [ 0xd3cae6a6c85eb50b49338d697169d1, 0xfbbeff1e545584842b429aacfafecc, 0x003fd8 ] } , - BigNum { limbs: [ 0xe9d91c5935fd49f4b6cc71968e9630, 0xab942a7f28f2aeb5acc56ef4dd0686, 0x003414 ] } , - BigNum { limbs: [ 0x7cd05c252cdf03a7dac369758af536, 0xd634c2939a3328200b75d372ed58da, 0x0023af ] } , - BigNum { limbs: [ 0x40d3a6dad17cfb58253c958a750acb, 0xd11e6709e3150b19cc92362eeaac79, 0x00503d ] } , - BigNum { limbs: [ 0x981ce7693de7d08ae9eb8b6995ac0a, 0xa4253becc4b5eb2b624ae2bcf538a0, 0x0065ab ] } , - BigNum { limbs: [ 0x25871b96c0742e75161473966a53f7, 0x032dedb0b892480e75bd26e4e2ccb3, 0x000e42 ] } , - BigNum { limbs: [ 0x8d13ae231a5bdcc9fea91649dcfec3, 0xec6589730d57a091ebada7f04c5566, 0x00406b ] } , - BigNum { limbs: [ 0x309054dce40022360156e8b623013e, 0xbaeda02a6ff092a7ec5a61b18bafed, 0x003381 ] } , - BigNum { limbs: [ 0x13cf484f4959217912415ab836bd2c, 0x9d1f8742b93e0c418fd6b7d55b84cb, 0x00134b ] } , - BigNum { limbs: [ 0xa9d4bab0b502dd86edbea447c942d5, 0x0a33a25ac40a26f8483151cc7c8088, 0x0060a2 ] } , - BigNum { limbs: [ 0x97082543d2be0a3165acb7ba4029ee, 0xbbfa9954466c540e4ea7938b5f4ce7, 0x005448 ] } , - BigNum { limbs: [ 0x269bddbc2b9df4ce9a534745bfd613, 0xeb58904936dbdf2b8960761678b86c, 0x001fa4 ] } , - BigNum { limbs: [ 0xf8db8f62b9e688a40f1700385650df, 0xd3af97013194cff7b6d0a1aea46d99, 0x0047a0 ] } , - BigNum { limbs: [ 0xc4c8739d4475765bf0e8fec7a9af22, 0xd3a3929c4bb36342213767f33397b9, 0x002c4c ] } , - BigNum { limbs: [ 0x3129692575239a8f8cf7befeeb90de, 0x12cac8686c064244cec8b2e392eca6, 0x0068e9 ] } , - BigNum { limbs: [ 0x8c7a99da8938647073084001146f23, 0x948861351141f0f5093f56be4518ad, 0x000b04 ] } , - BigNum { limbs: [ 0x121bcca49e268a7218bcb84d7c3ebc, 0xff2e2a28d2d40b336334dc00d24146, 0x002455 ] } , - BigNum { limbs: [ 0xab88365b6035748de74346b283c145, 0xa824ff74aa74280674d32da105c40d, 0x004f97 ] } , - BigNum { limbs: [ 0x46d17864183203961a252dd8543362, 0x2856c609b4784ae25ffab9dc598650, 0x00391b ] } , - BigNum { limbs: [ 0x76d28a9be629fb69e5dad127abcc9f, 0x7efc6393c8cfe857780d4fc57e7f03, 0x003ad2 ] } -]; diff --git a/noir-projects/noir-protocol-circuits/crates/blob/src/smaller_config.nr b/noir-projects/noir-protocol-circuits/crates/blob/src/smaller_config.nr index 40521353f01..23ad7978e4b 100644 --- a/noir-projects/noir-protocol-circuits/crates/blob/src/smaller_config.nr +++ b/noir-projects/noir-protocol-circuits/crates/blob/src/smaller_config.nr @@ -2,35 +2,68 @@ use dep::bigint::{BigNum, fields::bls12_381Fr::BLS12_381_Fr_Params}; type F = BigNum<3, BLS12_381_Fr_Params>; -global FIELDS_PER_BLOB: u64 = 8; // actually 4096 -global LOG_FIELDS_PER_BLOB: u64 = 3; // actually 12 +global FIELDS_PER_BLOB: u32 = 8; // actually 4096 +global LOG_FIELDS_PER_BLOB: u32 = 3; // actually 12 // The following three fields are more meaningful computation in the proper config.nr: -global EXTRA_FIELDS_PER_BLOB: u64 = 0; // 0 = floor(8 FIELDS_PER_BLOB / 254 noir_field_bits). +global EXTRA_FIELDS_PER_BLOB: u32 = 0; // 0 = floor(8 FIELDS_PER_BLOB / 254 noir_field_bits). global NOIR_FIELDS_PER_BLOB = FIELDS_PER_BLOB + EXTRA_FIELDS_PER_BLOB; // It's a more meaningful computation in the proper config.nr. -global FIELDS_CARRYING_AN_EXTRA_BIT_PER_BLOB: u64 = 0; // EXTRA_FIELDS_PER_BLOB * 254 = 0. It's a more meaningful computation in the proper config.nr. +global FIELDS_CARRYING_AN_EXTRA_BIT_PER_BLOB: u32 = 0; // EXTRA_FIELDS_PER_BLOB * 254 = 0. It's a more meaningful computation in the proper config.nr. global D: F = BigNum { limbs: [8, 0, 0] }; -global D_INV = BigNum { limbs: [0x45ef829ffe907f1fffffff20000001, 0xf268c469cd9f2cd29d07086d9d04a9, 0x656f] }; +global D_INV = + BigNum { limbs: [0x45ef829ffe907f1fffffff20000001, 0xf268c469cd9f2cd29d07086d9d04a9, 0x656f] }; -global ROOTS: [F; FIELDS_PER_BLOB] = [ - BigNum { limbs: [ 0x000000000000000000000000000001, 0x000000000000000000000000000000, 0x000000 ] } , - BigNum { limbs: [ 0xbda402fffe5bfeffffffff00000000, 0xa753299d7d483339d80809a1d80553, 0x0073ed ] } , - BigNum { limbs: [ 0x030002760300000001000000000000, 0x0000000000008d51ccce760304d0ec, 0x000000 ] } , - BigNum { limbs: [ 0xbaa40089fb5bfefffeffff00000001, 0xa753299d7d47a5e80b39939ed33467, 0x0073ed ] } , - BigNum { limbs: [ 0x8b21c28713b7007228fd3397743f7a, 0x66f603fa66e78c0625cd70d77ce2b3, 0x003457 ] } , - BigNum { limbs: [ 0x32824078eaa4fe8dd702cb688bc087, 0x405d25a31660a733b23a98ca5b22a0, 0x003f96 ] } , - BigNum { limbs: [ 0x74903694b04fd86037fe81ae99502e, 0xb22e5ce11044babc5affca86bf658e, 0x001333 ] } , - BigNum { limbs: [ 0x4913cc6b4e0c269fc8017d5166afd3, 0xf524ccbc6d03787d7d083f1b189fc5, 0x0060b9 ] } +global ROOTS: [F; FIELDS_PER_BLOB] = [ + BigNum { + limbs: [0x000000000000000000000000000001, 0x000000000000000000000000000000, 0x000000], + }, + BigNum { + limbs: [0xbda402fffe5bfeffffffff00000000, 0xa753299d7d483339d80809a1d80553, 0x0073ed], + }, + BigNum { + limbs: [0x030002760300000001000000000000, 0x0000000000008d51ccce760304d0ec, 0x000000], + }, + BigNum { + limbs: [0xbaa40089fb5bfefffeffff00000001, 0xa753299d7d47a5e80b39939ed33467, 0x0073ed], + }, + BigNum { + limbs: [0x8b21c28713b7007228fd3397743f7a, 0x66f603fa66e78c0625cd70d77ce2b3, 0x003457], + }, + BigNum { + limbs: [0x32824078eaa4fe8dd702cb688bc087, 0x405d25a31660a733b23a98ca5b22a0, 0x003f96], + }, + BigNum { + limbs: [0x74903694b04fd86037fe81ae99502e, 0xb22e5ce11044babc5affca86bf658e, 0x001333], + }, + BigNum { + limbs: [0x4913cc6b4e0c269fc8017d5166afd3, 0xf524ccbc6d03787d7d083f1b189fc5, 0x0060b9], + }, ]; global NEGATIVE_ROOTS = [ - BigNum { limbs: [ 0xbda402fffe5bfeffffffff00000000, 0xa753299d7d483339d80809a1d80553, 0x0073ed ] } , - BigNum { limbs: [ 0x000000000000000000000000000001, 0x000000000000000000000000000000, 0x000000 ] } , - BigNum { limbs: [ 0xbaa40089fb5bfefffeffff00000001, 0xa753299d7d47a5e80b39939ed33467, 0x0073ed ] } , - BigNum { limbs: [ 0x030002760300000001000000000000, 0x0000000000008d51ccce760304d0ec, 0x000000 ] } , - BigNum { limbs: [ 0x32824078eaa4fe8dd702cb688bc087, 0x405d25a31660a733b23a98ca5b22a0, 0x003f96 ] } , - BigNum { limbs: [ 0x8b21c28713b7007228fd3397743f7a, 0x66f603fa66e78c0625cd70d77ce2b3, 0x003457 ] } , - BigNum { limbs: [ 0x4913cc6b4e0c269fc8017d5166afd3, 0xf524ccbc6d03787d7d083f1b189fc5, 0x0060b9 ] } , - BigNum { limbs: [ 0x74903694b04fd86037fe81ae99502e, 0xb22e5ce11044babc5affca86bf658e, 0x001333 ] } + BigNum { + limbs: [0xbda402fffe5bfeffffffff00000000, 0xa753299d7d483339d80809a1d80553, 0x0073ed], + }, + BigNum { + limbs: [0x000000000000000000000000000001, 0x000000000000000000000000000000, 0x000000], + }, + BigNum { + limbs: [0xbaa40089fb5bfefffeffff00000001, 0xa753299d7d47a5e80b39939ed33467, 0x0073ed], + }, + BigNum { + limbs: [0x030002760300000001000000000000, 0x0000000000008d51ccce760304d0ec, 0x000000], + }, + BigNum { + limbs: [0x32824078eaa4fe8dd702cb688bc087, 0x405d25a31660a733b23a98ca5b22a0, 0x003f96], + }, + BigNum { + limbs: [0x8b21c28713b7007228fd3397743f7a, 0x66f603fa66e78c0625cd70d77ce2b3, 0x003457], + }, + BigNum { + limbs: [0x4913cc6b4e0c269fc8017d5166afd3, 0xf524ccbc6d03787d7d083f1b189fc5, 0x0060b9], + }, + BigNum { + limbs: [0x74903694b04fd86037fe81ae99502e, 0xb22e5ce11044babc5affca86bf658e, 0x001333], + }, ]; diff --git a/noir-projects/noir-protocol-circuits/crates/blob/src/unconstrained_config.nr b/noir-projects/noir-protocol-circuits/crates/blob/src/unconstrained_config.nr new file mode 100644 index 00000000000..34c2f6811ca --- /dev/null +++ b/noir-projects/noir-protocol-circuits/crates/blob/src/unconstrained_config.nr @@ -0,0 +1,106 @@ +use bigint::{BigNum, fields::bls12_381Fr::BLS12_381_Fr_Params}; +use types::constants::FIELDS_PER_BLOB; + +// TODO(#9982): Delete this file and go back to using config.nr - calculating ROOTS in unconstrained is insecure. + +type F = BigNum<3, 255, BLS12_381_Fr_Params>; + +global LOG_FIELDS_PER_BLOB: u32 = 12; +global EXTRA_FIELDS_PER_BLOB: u32 = 16; // 16 = floor(4096 FIELDS_PER_BLOB / 254 noir_field_bits), wasting only 32 bits. +global NOIR_FIELDS_PER_BLOB: u32 = FIELDS_PER_BLOB + EXTRA_FIELDS_PER_BLOB; +global FIELDS_CARRYING_AN_EXTRA_BIT_PER_BLOB: u32 = EXTRA_FIELDS_PER_BLOB * 254; // EXTRA_FIELDS_PER_BLOB * 254 = 4064. So the first 4064 bls Fr fields in the blob will carry an extra bit in their 255th bit position, that will be used to reconstitute 16 extra fields. +global D: F = BigNum { limbs: [4096, 0, 0] }; +global D_INV: F = + BigNum { limbs: [0x686828bfce5c19400fffff00100001, 0x6878b46ae3705eb6a46a89213de7d3, 0x73e6] }; + +unconstrained fn compute_level(idx_: u32) -> u32 { + // Count the number of trailing ones. + let mut count = 0; + let mut idx = idx_; + for _i in 0..LOG_FIELDS_PER_BLOB { + if (idx & 1 == 0) { + break; + } else { + count += 1; + idx >>= 1; + } + } + + count +} + +unconstrained fn compute_big_minus_arr( + _big_minus: u32, + _next_diff: u32, +) -> [u32; LOG_FIELDS_PER_BLOB - 2] { + let mut res: [u32; LOG_FIELDS_PER_BLOB - 2] = [0; LOG_FIELDS_PER_BLOB - 2]; + let mut big_minus = _big_minus; + let mut next_diff = _next_diff; + res[0] = big_minus; + for i in 1..LOG_FIELDS_PER_BLOB - 2 { + next_diff >>= 1; + big_minus += next_diff; + res[i] = big_minus; + } + assert(next_diff == 3); + res +} + +unconstrained fn bit_reversal_permutation(arr: [F; FIELDS_PER_BLOB]) -> [F; FIELDS_PER_BLOB] { + let mut arr_brp: [F; FIELDS_PER_BLOB] = [BigNum::new(); FIELDS_PER_BLOB]; + let PLUS = FIELDS_PER_BLOB >> 1; + let MINUS = PLUS >> 1; + let mut I = 0; + let mut next_diff = PLUS - (MINUS >> 1); + let mut big_minus = next_diff + MINUS; + + let big_minus_arr = compute_big_minus_arr(big_minus, next_diff); + + arr_brp[0] = arr[0]; + I += PLUS; + arr_brp[1] = arr[I]; + I -= MINUS; + arr_brp[2] = arr[I]; + I += PLUS; + arr_brp[3] = arr[I]; + + for i in 0..FIELDS_PER_BLOB / 4 - 1 { + let j = 4 * i + 4; + let level = compute_level(i); + I -= big_minus_arr[level]; + arr_brp[j] = arr[I]; + I += PLUS; + arr_brp[j + 1] = arr[I]; + I -= MINUS; + arr_brp[j + 2] = arr[I]; + I += PLUS; + arr_brp[j + 3] = arr[I]; + } + arr_brp +} + +// x ^ i for i in 0..4096 +unconstrained fn compute_powers(x: F) -> [F; FIELDS_PER_BLOB] { + let mut powers: [F; FIELDS_PER_BLOB] = [BigNum::new(); FIELDS_PER_BLOB]; + let mut current_power: F = BigNum::one(); + for i in 0..FIELDS_PER_BLOB { + powers[i] = current_power; + current_power = current_power.__mul(x); + } + powers +} + +pub unconstrained fn compute_roots_of_unity() -> [F; FIELDS_PER_BLOB] { + // The below const is found from: + // let order: F = BigNum { limbs: [ FIELDS_PER_BLOB, 0, 0 ]; + // let exp = BLS_MODULUS_SUB_1.udiv_mod(order); + // let exp: F = BigNum { limbs: [ 0x553bda402fffe5bfeffffffff00000, 0x3eda753299d7d483339d80809a1d80, 0x000007 ] }; // (MODULUS - 1) // 4096 + // let root_of_unity = PRIMITIVE_ROOT_OF_UNITY.__pow(exp); + let root_of_unity: F = BigNum { + limbs: [0xd1347b378fbf96e206da11a5d36306, 0x0a11a0f704f4fc3e8acfe0f8245f0a, 0x00564c], + }; + let mut roots_of_unity = compute_powers(root_of_unity); + bit_reversal_permutation(roots_of_unity) + // bit_reversal_permutation(&mut roots_of_unity); + // roots_of_unity +} diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/tests/private_kernel_circuit_output_validator_builder/validate_initial_values.nr b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/tests/private_kernel_circuit_output_validator_builder/validate_initial_values.nr index 3faeab0e8ab..108b59c776f 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/tests/private_kernel_circuit_output_validator_builder/validate_initial_values.nr +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/tests/private_kernel_circuit_output_validator_builder/validate_initial_values.nr @@ -20,10 +20,10 @@ fn validate_initial_values_constants_mismatch_chain_id_fails() { } #[test(should_fail_with = "mismatch historical_header")] -fn validate_initial_values_constants_mismatch_txs_effects_hash_fails() { +fn validate_initial_values_constants_mismatch_out_hash_fails() { let mut builder = PrivateKernelCircuitOutputValidatorBuilder::new(); - builder.output.historical_header.content_commitment.txs_effects_hash += 1; + builder.output.historical_header.content_commitment.out_hash += 1; builder.validate_as_first_call(); } diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/tests/private_kernel_circuit_output_validator_builder/validate_propagated_from_previous_kernel.nr b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/tests/private_kernel_circuit_output_validator_builder/validate_propagated_from_previous_kernel.nr index b7bb2d4ea67..62785c9bc98 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/tests/private_kernel_circuit_output_validator_builder/validate_propagated_from_previous_kernel.nr +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-lib/src/tests/private_kernel_circuit_output_validator_builder/validate_propagated_from_previous_kernel.nr @@ -18,15 +18,6 @@ fn validate_propagated_from_previous_kernel_constants_mismatch_chain_id_fails() builder.validate_as_inner_call(); } -#[test(should_fail_with = "mismatch constants")] -fn validate_propagated_from_previous_kernel_constants_mismatch_txs_effects_hash_fails() { - let mut builder = PrivateKernelCircuitOutputValidatorBuilder::new(); - - builder.output.historical_header.content_commitment.txs_effects_hash += 1; - - builder.validate_as_inner_call(); -} - #[test(should_fail_with = "mismatch constants")] fn validate_propagated_from_previous_kernel_constants_mismatch_protocol_contract_tree_root_fails() { let mut builder = PrivateKernelCircuitOutputValidatorBuilder::new(); diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/Nargo.toml b/noir-projects/noir-protocol-circuits/crates/rollup-lib/Nargo.toml index 9f7956eb265..3cab422d3f6 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/Nargo.toml +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/Nargo.toml @@ -7,3 +7,4 @@ compiler_version = ">=0.18.0" [dependencies] types = { path = "../types" } parity_lib = { path = "../parity-lib" } +blob = { path = "../blob" } diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/base_or_merge_rollup_public_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/base_or_merge_rollup_public_inputs.nr index c591c30cdfa..8b31646a46b 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/base_or_merge_rollup_public_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/base_or_merge_rollup_public_inputs.nr @@ -1,5 +1,6 @@ use crate::abis::constant_rollup_data::ConstantRollupData; use dep::types::{ + abis::sponge_blob::SpongeBlob, constants::BASE_OR_MERGE_PUBLIC_INPUTS_LENGTH, partial_state_reference::PartialStateReference, traits::{Deserialize, Empty, Serialize}, @@ -19,12 +20,15 @@ pub struct BaseOrMergeRollupPublicInputs { start: PartialStateReference, end: PartialStateReference, + // A poseidon sponge of all tx effects to be unpacked in block root, then added to a blob + // In sponge form so we can check left.end == right.start, rather than recreate a tree later + start_sponge_blob: SpongeBlob, + end_sponge_blob: SpongeBlob, + // We hash public inputs to make them constant-sized (to then be unpacked on-chain) // U128 isn't safe if it's an input to the circuit (it won't automatically constrain the witness) // So we want to constrain it when casting these fields to U128 - // We hash public inputs to make them constant-sized (to then be unpacked on-chain) - txs_effects_hash: Field, out_hash: Field, accumulated_fees: Field, @@ -38,7 +42,8 @@ impl Empty for BaseOrMergeRollupPublicInputs { constants: ConstantRollupData::empty(), start: PartialStateReference::empty(), end: PartialStateReference::empty(), - txs_effects_hash: 0, + start_sponge_blob: SpongeBlob::empty(), + end_sponge_blob: SpongeBlob::empty(), out_hash: 0, accumulated_fees: 0, } @@ -52,7 +57,8 @@ impl Eq for BaseOrMergeRollupPublicInputs { & (self.constants.eq(other.constants)) & (self.start.eq(other.start)) & (self.end.eq(other.end)) - & (self.txs_effects_hash == other.txs_effects_hash) + & (self.start_sponge_blob.eq(other.start_sponge_blob)) + & (self.end_sponge_blob.eq(other.end_sponge_blob)) & (self.out_hash == other.out_hash) & (self.accumulated_fees == other.accumulated_fees) } @@ -67,7 +73,8 @@ impl Serialize for BaseOrMergeRollupPublicIn fields.extend_from_array(self.constants.serialize()); fields.extend_from_array(self.start.serialize()); fields.extend_from_array(self.end.serialize()); - fields.push(self.txs_effects_hash as Field); + fields.extend_from_array(self.start_sponge_blob.serialize()); + fields.extend_from_array(self.end_sponge_blob.serialize()); fields.push(self.out_hash as Field); fields.push(self.accumulated_fees as Field); @@ -88,7 +95,8 @@ impl Deserialize for BaseOrMergeRollupPublic constants: reader.read_struct(ConstantRollupData::deserialize), start: reader.read_struct(PartialStateReference::deserialize), end: reader.read_struct(PartialStateReference::deserialize), - txs_effects_hash: reader.read(), + start_sponge_blob: reader.read_struct(SpongeBlob::deserialize), + end_sponge_blob: reader.read_struct(SpongeBlob::deserialize), out_hash: reader.read(), accumulated_fees: reader.read(), }; diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/block_root_or_block_merge_public_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/block_root_or_block_merge_public_inputs.nr index d325e1d2ed3..2035c9c4030 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/block_root_or_block_merge_public_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/block_root_or_block_merge_public_inputs.nr @@ -8,6 +8,7 @@ use dep::types::{ traits::{Deserialize, Empty, Serialize}, utils::reader::Reader, }; +use blob::blob_public_inputs::BlockBlobPublicInputs; pub struct FeeRecipient { recipient: EthAddress, @@ -17,7 +18,7 @@ pub struct FeeRecipient { // TODO(#7346): Should the default empty value be MAX_FIELD? The zero addr may be a valid recipient impl Empty for FeeRecipient { fn empty() -> Self { - FeeRecipient { recipient: EthAddress::zero(), value: 0 } + Self { recipient: EthAddress::zero(), value: 0 } } } @@ -53,6 +54,7 @@ pub struct BlockRootOrBlockMergePublicInputs { vk_tree_root: Field, // Root of allowed vk tree protocol_contract_tree_root: Field, // Root of protocol contract tree prover_id: Field, // TODO(#7346): Temporarily added prover_id while we verify block-root proofs on L1 + blob_public_inputs: [BlockBlobPublicInputs; AZTEC_MAX_EPOCH_DURATION], // z, y, and C s.t. p(z) = y and C commits to p, for blob verification } impl BlockRootOrBlockMergePublicInputs { @@ -75,6 +77,7 @@ impl Empty for BlockRootOrBlockMergePublicInputs { vk_tree_root: 0, protocol_contract_tree_root: 0, prover_id: 0, + blob_public_inputs: [BlockBlobPublicInputs::empty(); AZTEC_MAX_EPOCH_DURATION], } } } @@ -92,6 +95,7 @@ impl Eq for BlockRootOrBlockMergePublicInputs { & (self.vk_tree_root == other.vk_tree_root) & (self.protocol_contract_tree_root == other.protocol_contract_tree_root) & (self.prover_id == other.prover_id) + & (self.blob_public_inputs.eq(other.blob_public_inputs)) } } @@ -113,6 +117,9 @@ impl Serialize for BlockRootOrBl fields.push(self.vk_tree_root); fields.push(self.protocol_contract_tree_root); fields.push(self.prover_id as Field); + for i in 0..AZTEC_MAX_EPOCH_DURATION { + fields.extend_from_array(self.blob_public_inputs[i].serialize()); + } assert_eq(fields.len(), BLOCK_ROOT_OR_BLOCK_MERGE_PUBLIC_INPUTS_LENGTH); fields.storage() @@ -139,6 +146,10 @@ impl Deserialize for BlockRootOr vk_tree_root: reader.read(), protocol_contract_tree_root: reader.read(), prover_id: reader.read(), + blob_public_inputs: reader.read_struct_array( + BlockBlobPublicInputs::deserialize, + [BlockBlobPublicInputs::empty(); AZTEC_MAX_EPOCH_DURATION], + ), }; reader.finish(); diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/private_base_rollup.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/private_base_rollup.nr index 30b20e4b88f..4d18cdfb7f4 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/private_base_rollup.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/private_base_rollup.nr @@ -11,13 +11,13 @@ use crate::{ }, state_diff_hints::PrivateBaseStateDiffHints, }, - components::{compute_kernel_out_hash, compute_tx_effects_hash}, + components::{append_tx_effects_for_blob, compute_kernel_out_hash}, }; use dep::types::{ abis::{ append_only_tree_snapshot::AppendOnlyTreeSnapshot, nullifier_leaf_preimage::NullifierLeafPreimage, public_data_write::PublicDataWrite, - tube::PrivateTubeData, + sponge_blob::SpongeBlob, tube::PrivateTubeData, }, constants::{ ARCHIVE_HEIGHT, MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, NOTE_HASH_SUBTREE_HEIGHT, @@ -39,6 +39,7 @@ pub struct PrivateBaseRollupInputs { tube_data: PrivateTubeData, start: PartialStateReference, + start_sponge_blob: SpongeBlob, state_diff_hints: PrivateBaseStateDiffHints, fee_payer_fee_juice_balance_read_hint: PublicDataHint, @@ -112,12 +113,13 @@ impl PrivateBaseRollupInputs { ), ); let out_hash = compute_kernel_out_hash(siloed_l2_to_l1_msgs); - let tx_effects_hash = compute_tx_effects_hash( + let end_sponge_blob = append_tx_effects_for_blob( self.tube_data.public_inputs.end, self.tube_data.public_inputs.revert_code, transaction_fee, all_public_data_update_requests, - out_hash, + siloed_l2_to_l1_msgs, + self.start_sponge_blob, ); // Perform membership checks that the notes provided exist within the historical trees data @@ -137,7 +139,8 @@ impl PrivateBaseRollupInputs { nullifier_tree: end_nullifier_tree_snapshot, public_data_tree: end_public_data_tree_snapshot, }, - txs_effects_hash: tx_effects_hash, + start_sponge_blob: self.start_sponge_blob, + end_sponge_blob, out_hash, accumulated_fees: transaction_fee, } @@ -229,20 +232,26 @@ mod tests { private_base_rollup::PrivateBaseRollupInputs, state_diff_hints::PrivateBaseStateDiffHints, }, - components::TX_EFFECTS_HASH_INPUT_FIELDS, + components::{append_tx_effects_for_blob, TX_EFFECTS_BLOB_HASH_INPUT_FIELDS}, }; use dep::types::{ abis::{ + accumulated_data::CombinedAccumulatedData, append_only_tree_snapshot::AppendOnlyTreeSnapshot, gas::Gas, gas_fees::GasFees, kernel_circuit_public_inputs::KernelCircuitPublicInputs, - nullifier_leaf_preimage::NullifierLeafPreimage, + nullifier_leaf_preimage::NullifierLeafPreimage, public_data_write::PublicDataWrite, + sponge_blob::SpongeBlob, }, address::{AztecAddress, EthAddress}, constants::{ - ARCHIVE_HEIGHT, MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, + ARCHIVE_HEIGHT, CONTRACT_CLASS_LOGS_PREFIX, ENCRYPTED_LOGS_PREFIX, L2_L1_MSGS_PREFIX, + MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, + MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, NOTE_ENCRYPTED_LOGS_PREFIX, NOTE_HASH_SUBTREE_HEIGHT, NOTE_HASH_SUBTREE_SIBLING_PATH_LENGTH, NOTE_HASH_TREE_HEIGHT, - NULLIFIER_SUBTREE_HEIGHT, NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH, NULLIFIER_TREE_HEIGHT, - PRIVATE_KERNEL_EMPTY_INDEX, PUBLIC_DATA_TREE_HEIGHT, TUBE_VK_INDEX, + NOTES_PREFIX, NULLIFIER_SUBTREE_HEIGHT, NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH, + NULLIFIER_TREE_HEIGHT, NULLIFIERS_PREFIX, PRIVATE_KERNEL_EMPTY_INDEX, + PUBLIC_DATA_TREE_HEIGHT, REVERT_CODE_PREFIX, TUBE_VK_INDEX, TX_FEE_PREFIX, + TX_START_PREFIX, UNENCRYPTED_LOGS_PREFIX, }, data::{public_data_hint::PublicDataHint, PublicDataTreeLeaf, PublicDataTreeLeafPreimage}, hash::silo_l2_to_l1_message, @@ -252,8 +261,8 @@ mod tests { tests::{fixture_builder::FixtureBuilder, fixtures, merkle_tree_utils::NonEmptyMerkleTree}, traits::{Empty, is_empty}, utils::{ - arrays::get_sorted_tuple::get_sorted_tuple, - field::{field_from_bytes_32_trunc, full_field_less_than}, + arrays::{array_concat, get_sorted_tuple::get_sorted_tuple}, + field::{field_from_bytes, full_field_less_than}, }, }; @@ -375,6 +384,36 @@ mod tests { ) } + fn compute_transaction_fee(self) -> Field { + let gas_fees = self.constants.global_variables.gas_fees; + let gas_used = self.tube_data.gas_used; + gas_used.compute_fee(gas_fees) + } + + fn build_pre_existing_tx_effects( + self, + ) -> (CombinedAccumulatedData, [PublicDataWrite; MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX]) { + let mut res = CombinedAccumulatedData::empty(); + res.note_hashes = self.pre_existing_notes; + res.nullifiers = self.pre_existing_nullifiers.map(|nullifier: NullifierLeafPreimage| { + nullifier.nullifier + }); + let all_public_data_update_requests = self.pre_existing_public_data.map( + |leaf_preimage: PublicDataTreeLeafPreimage| { + PublicDataWrite { leaf_slot: leaf_preimage.slot, value: leaf_preimage.value } + }, + ); + let padded_all_public_data_update_requests = array_concat( + all_public_data_update_requests, + [ + PublicDataWrite::empty(); MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX + - PRE_EXISTING_PUBLIC_DATA_LEAVES + ], + ); + + (res, padded_all_public_data_update_requests) + } + fn extract_subtree_sibling_path( path: [Field; FULL_HEIGHT], mut sibling_path: [Field; SIBLING_PATH_LENGTH], @@ -538,6 +577,18 @@ mod tests { public_data_tree: start_public_data_tree_snapshot, }; + let (pre_existing_tx_effects, pre_existing_public_data_update_requests) = + self.build_pre_existing_tx_effects(); + + let start_sponge_blob = append_tx_effects_for_blob( + pre_existing_tx_effects, + 0, + 0, + pre_existing_public_data_update_requests, + [0; MAX_L2_TO_L1_MSGS_PER_TX], + SpongeBlob::new(TX_EFFECTS_BLOB_HASH_INPUT_FIELDS), + ); + let state_diff_hints = PrivateBaseStateDiffHints { nullifier_predecessor_preimages, nullifier_predecessor_membership_witnesses, @@ -553,6 +604,7 @@ mod tests { PrivateBaseRollupInputs { tube_data, start, + start_sponge_blob, state_diff_hints, archive_root_membership_witness: MembershipWitness { leaf_index: 0, @@ -767,13 +819,177 @@ mod tests { } #[test] - unconstrained fn empty_tx_effects_hash() { + unconstrained fn empty_tx_effects_sponge() { let outputs = PrivateBaseRollupInputsBuilder::new().execute(); + let mut expected_sponge = outputs.start_sponge_blob; + assert(outputs.end_sponge_blob.eq(expected_sponge)); + } + + #[test] + unconstrained fn non_empty_tx_effects_sponge() { + let mut builder = PrivateBaseRollupInputsBuilder::new(); + builder.tube_data.append_note_hashes(50); + let outputs = builder.execute(); + let mut tx_effects = [0; 53]; + // TODO(#8954): This test uses 50 notes and 3 extra absorbed fields + // This may change when logs are deconstructed + // Initial field = TX_START_PREFIX | 0 | txlen[0] txlen[1] | 0 | REVERT_CODE_PREFIX | 0 | revert_code + // The first 3 are: i=0 init field, i=1: tx fee, i=2: note prefix + tx_effects[0] = field_from_bytes( + array_concat( + TX_START_PREFIX.to_be_bytes::<8>(), + [0, 0, tx_effects.len() as u8, 0, REVERT_CODE_PREFIX, 0, 0], + ), + true, + ); + tx_effects[1] = field_from_bytes( + array_concat([TX_FEE_PREFIX, 0], (0).to_be_bytes::<29>()), + true, + ); + tx_effects[2] = field_from_bytes([NOTES_PREFIX, 0, 50 as u8], true); + for i in 0..50 { + tx_effects[i + 3] = builder.tube_data.note_hashes.storage()[i].value(); + } + let mut expected_sponge = outputs.start_sponge_blob; + + expected_sponge.absorb(tx_effects, tx_effects.len()); + assert(outputs.end_sponge_blob.eq(expected_sponge)); + } + + #[test] + unconstrained fn fuller_tx_effects_sponge() { + let NUM_NOTES = 50; + let NUM_NULLIFIERS = 3; + let NUM_MSGS = 5; + let NUM_ENC_LOGS = 4; + let NUM_UNENC_LOGS = 6; + let NUM_CC_LOGS = 1; + let mut builder = PrivateBaseRollupInputsBuilder::new(); + builder.tube_data.set_gas_used(100, 200); + builder.constants.global_variables.gas_fees.fee_per_da_gas = 1; + builder.constants.global_variables.gas_fees.fee_per_l2_gas = 1; + let tx_fee = builder.compute_transaction_fee(); + // builder.transaction_fee = tx_fee; + builder.tube_data.append_note_hashes_with_logs(NUM_NOTES); + // Copied from nullifier tests above: + builder.pre_existing_nullifiers[0] = + NullifierLeafPreimage { nullifier: 0, next_nullifier: 7, next_index: 1 }; + builder.pre_existing_nullifiers[1] = + NullifierLeafPreimage { nullifier: 7, next_nullifier: 0, next_index: 0 }; + for i in 0..NUM_NULLIFIERS { + builder.nullifiers.push( + NullifierInsertion { existing_index: 1, value: (8 + i) as Field }, + ); + } + builder.tube_data.append_l2_to_l1_msgs(NUM_MSGS); + // Copied from public data test below: + builder.pre_existing_public_data[0] = + PublicDataTreeLeafPreimage { slot: 20, value: 40, next_slot: 0, next_index: 0 }; + builder.tube_data.append_encrypted_log_hashes(NUM_ENC_LOGS); + builder.tube_data.append_unencrypted_log_hashes(NUM_UNENC_LOGS); + // Below will only work with NUM_CC_LOGS=1 + builder.tube_data.add_contract_class_log_hash(1, 2); + let outputs = builder.execute(); + + let mut reconstructed_tx_effects = [0; TX_EFFECTS_BLOB_HASH_INPUT_FIELDS]; + // Initial field = TX_START_PREFIX | 0 | txlen[0] txlen[1] | 0 | REVERT_CODE_PREFIX | 0 | revert_code + // revert code = 0 + // fields appended here = 128 = offset once appending complete + reconstructed_tx_effects[0] = field_from_bytes( + array_concat( + TX_START_PREFIX.to_be_bytes::<8>(), + [0, 0, 128, 0, REVERT_CODE_PREFIX, 0, 0], + ), + true, + ); + // tx fee + reconstructed_tx_effects[1] = field_from_bytes( + array_concat([TX_FEE_PREFIX, 0], tx_fee.to_be_bytes::<29>()), + true, + ); + // notes + let mut offset = 2; + let notes_prefix = field_from_bytes([NOTES_PREFIX, 0, NUM_NOTES as u8], true); + reconstructed_tx_effects[offset] = notes_prefix; + offset += 1; + for i in 0..NUM_NOTES { + reconstructed_tx_effects[offset + i] = + builder.tube_data.note_hashes.storage()[i].value(); + } + offset += NUM_NOTES; + // nullifiers + let nullifiers_prefix = + field_from_bytes([NULLIFIERS_PREFIX, 0, NUM_NULLIFIERS as u8], true); + reconstructed_tx_effects[offset] = nullifiers_prefix; + offset += 1; + for i in 0..NUM_NULLIFIERS { + reconstructed_tx_effects[offset + i] = builder.nullifiers.storage()[i].value; + } + offset += NUM_NULLIFIERS; + // l2 to l1 msgs + let l2_to_l1_msgs_prefix = field_from_bytes([L2_L1_MSGS_PREFIX, 0, NUM_MSGS as u8], true); + reconstructed_tx_effects[offset] = l2_to_l1_msgs_prefix; + offset += 1; + for i in 0..NUM_MSGS { + reconstructed_tx_effects[offset + i] = silo_l2_to_l1_message( + builder.tube_data.l2_to_l1_msgs.storage()[i], + builder.tube_data.tx_context.version, + builder.tube_data.tx_context.chain_id, + ); + } + offset += NUM_MSGS; + // note logs + let note_encrypted_logs_prefix = + field_from_bytes([NOTE_ENCRYPTED_LOGS_PREFIX, 0, NUM_NOTES as u8], true); + reconstructed_tx_effects[offset] = note_encrypted_logs_prefix; + offset += 1; + for i in 0..NUM_NOTES { + reconstructed_tx_effects[offset + i] = + builder.tube_data.note_encrypted_logs_hashes.storage()[i].value(); + } + offset += NUM_NOTES; + // enc logs + let encrypted_logs_prefix = + field_from_bytes([ENCRYPTED_LOGS_PREFIX, 0, NUM_ENC_LOGS as u8], true); + reconstructed_tx_effects[offset] = encrypted_logs_prefix; + offset += 1; + for i in 0..NUM_ENC_LOGS { + reconstructed_tx_effects[offset + i] = types::hash::silo_encrypted_log_hash(builder + .tube_data + .encrypted_logs_hashes + .storage()[i] + .expose_to_public()); + } + offset += NUM_ENC_LOGS; + // unenc logs + let unencrypted_logs_prefix = + field_from_bytes([UNENCRYPTED_LOGS_PREFIX, 0, NUM_UNENC_LOGS as u8], true); + reconstructed_tx_effects[offset] = unencrypted_logs_prefix; + offset += 1; + for i in 0..NUM_UNENC_LOGS { + reconstructed_tx_effects[offset + i] = types::hash::silo_unencrypted_log_hash( + builder.tube_data.unencrypted_logs_hashes.storage()[i], + ); + } + offset += NUM_UNENC_LOGS; + // cc logs + let contract_class_logs_prefix = + field_from_bytes([CONTRACT_CLASS_LOGS_PREFIX, 0, NUM_CC_LOGS as u8], true); + reconstructed_tx_effects[offset] = contract_class_logs_prefix; + offset += 1; + for i in 0..NUM_CC_LOGS { + reconstructed_tx_effects[offset + i] = types::hash::silo_unencrypted_log_hash( + builder.tube_data.contract_class_logs_hashes.storage()[i], + ); + } + offset += NUM_CC_LOGS; + + // Sanity check - if this fails change the above use of 128 + assert(offset == 128); - let hash_input_flattened = [0; TX_EFFECTS_HASH_INPUT_FIELDS * 32]; - let sha_digest = std::hash::sha256(hash_input_flattened); - let expected_tx_effects_hash = field_from_bytes_32_trunc(sha_digest); - assert_eq(outputs.txs_effects_hash, expected_tx_effects_hash); + let mut expected_sponge = outputs.start_sponge_blob; + expected_sponge.absorb(reconstructed_tx_effects, offset); + assert(outputs.end_sponge_blob.eq(expected_sponge)); } #[test] diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/public_base_rollup.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/public_base_rollup.nr index 1fff4bb07ff..f095b81b5d2 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/public_base_rollup.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/public_base_rollup.nr @@ -11,7 +11,7 @@ use crate::{ }, state_diff_hints::PublicBaseStateDiffHints, }, - components::{compute_kernel_out_hash, compute_tx_effects_hash}, + components::{append_tx_effects_for_blob, compute_kernel_out_hash}, }; use dep::types::{ abis::{ @@ -22,6 +22,7 @@ use dep::types::{ log_hash::{LogHash, ScopedLogHash}, nullifier_leaf_preimage::NullifierLeafPreimage, public_data_write::PublicDataWrite, + sponge_blob::SpongeBlob, tube::PublicTubeData, }, constants::{ @@ -44,6 +45,7 @@ pub struct PublicBaseRollupInputs { avm_proof_data: AvmProofData, start: PartialStateReference, + start_sponge_blob: SpongeBlob, state_diff_hints: PublicBaseStateDiffHints, fee_payer_fee_juice_balance_read_hint: PublicDataHint, @@ -185,12 +187,13 @@ impl PublicBaseRollupInputs { let revert_code = if reverted { 1 } else { 0 }; - let tx_effects_hash = compute_tx_effects_hash( + let end_sponge_blob = append_tx_effects_for_blob( combined_accumulated_data, revert_code, self.avm_proof_data.public_inputs.transaction_fee, all_public_data_update_requests, - out_hash, + siloed_l2_to_l1_msgs, + self.start_sponge_blob, ); // Perform membership checks that the notes provided exist within the historical trees data @@ -210,7 +213,8 @@ impl PublicBaseRollupInputs { nullifier_tree: end_nullifier_tree_snapshot, public_data_tree: end_public_data_tree_snapshot, }, - txs_effects_hash: tx_effects_hash, + start_sponge_blob: self.start_sponge_blob, + end_sponge_blob, out_hash, accumulated_fees: self.avm_proof_data.public_inputs.transaction_fee, } @@ -371,22 +375,27 @@ mod tests { components::fees::compute_fee_payer_fee_juice_balance_leaf_slot, public_base_rollup::PublicBaseRollupInputs, state_diff_hints::PublicBaseStateDiffHints, }, - components::TX_EFFECTS_HASH_INPUT_FIELDS, + components::{append_tx_effects_for_blob, TX_EFFECTS_BLOB_HASH_INPUT_FIELDS}, }; use dep::types::{ abis::{ + accumulated_data::CombinedAccumulatedData, append_only_tree_snapshot::AppendOnlyTreeSnapshot, nullifier_leaf_preimage::NullifierLeafPreimage, public_data_write::PublicDataWrite, + sponge_blob::SpongeBlob, }, address::{AztecAddress, EthAddress}, constants::{ - ARCHIVE_HEIGHT, AVM_VK_INDEX, MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, + ARCHIVE_HEIGHT, AVM_VK_INDEX, CONTRACT_CLASS_LOGS_PREFIX, ENCRYPTED_LOGS_PREFIX, + L2_L1_MSGS_PREFIX, MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, NOTE_HASH_SUBTREE_HEIGHT, - NOTE_HASH_SUBTREE_SIBLING_PATH_LENGTH, NOTE_HASH_TREE_HEIGHT, NULLIFIER_SUBTREE_HEIGHT, - NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH, NULLIFIER_TREE_HEIGHT, - PRIVATE_KERNEL_EMPTY_INDEX, PROTOCOL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, - PUBLIC_DATA_TREE_HEIGHT, TUBE_VK_INDEX, + NOTE_HASH_SUBTREE_SIBLING_PATH_LENGTH, NOTE_HASH_TREE_HEIGHT, NOTES_PREFIX, + NULLIFIER_SUBTREE_HEIGHT, NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH, NULLIFIER_TREE_HEIGHT, + NULLIFIERS_PREFIX, PRIVATE_KERNEL_EMPTY_INDEX, + PROTOCOL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, PUBLIC_DATA_TREE_HEIGHT, + PUBLIC_DATA_UPDATE_REQUESTS_PREFIX, REVERT_CODE_PREFIX, TUBE_VK_INDEX, TX_FEE_PREFIX, + TX_START_PREFIX, UNENCRYPTED_LOGS_PREFIX, }, data::{public_data_hint::PublicDataHint, PublicDataTreeLeaf, PublicDataTreeLeafPreimage}, hash::silo_l2_to_l1_message, @@ -396,8 +405,8 @@ mod tests { tests::{fixture_builder::FixtureBuilder, fixtures, merkle_tree_utils::NonEmptyMerkleTree}, traits::{Empty, is_empty}, utils::{ - arrays::get_sorted_tuple::get_sorted_tuple, - field::{field_from_bytes_32_trunc, full_field_less_than}, + arrays::{array_concat, get_sorted_tuple::get_sorted_tuple}, + field::{field_from_bytes, full_field_less_than}, }, }; @@ -537,6 +546,30 @@ mod tests { ) } + fn build_pre_existing_tx_effects( + self, + ) -> (CombinedAccumulatedData, [PublicDataWrite; MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX]) { + let mut res = CombinedAccumulatedData::empty(); + res.note_hashes = self.pre_existing_notes; + res.nullifiers = self.pre_existing_nullifiers.map(|nullifier: NullifierLeafPreimage| { + nullifier.nullifier + }); + let all_public_data_update_requests = self.pre_existing_public_data.map( + |leaf_preimage: PublicDataTreeLeafPreimage| { + PublicDataWrite { leaf_slot: leaf_preimage.slot, value: leaf_preimage.value } + }, + ); + let padded_all_public_data_update_requests = array_concat( + all_public_data_update_requests, + [ + PublicDataWrite::empty(); MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX + - PRE_EXISTING_PUBLIC_DATA_LEAVES + ], + ); + + (res, padded_all_public_data_update_requests) + } + fn extract_subtree_sibling_path( path: [Field; FULL_HEIGHT], mut sibling_path: [Field; SIBLING_PATH_LENGTH], @@ -726,6 +759,18 @@ mod tests { public_data_tree: start_public_data_tree_snapshot, }; + let (pre_existing_tx_effects, pre_existing_public_data_update_requests) = + self.build_pre_existing_tx_effects(); + + let start_sponge_blob = append_tx_effects_for_blob( + pre_existing_tx_effects, + 0, + 0, + pre_existing_public_data_update_requests, + [0; MAX_L2_TO_L1_MSGS_PER_TX], + SpongeBlob::new(TX_EFFECTS_BLOB_HASH_INPUT_FIELDS), + ); + let state_diff_hints = PublicBaseStateDiffHints { nullifier_predecessor_preimages, nullifier_predecessor_membership_witnesses, @@ -742,6 +787,7 @@ mod tests { tube_data, avm_proof_data, start, + start_sponge_blob, state_diff_hints, archive_root_membership_witness: MembershipWitness { leaf_index: 0, @@ -963,13 +1009,178 @@ mod tests { } #[test] - unconstrained fn empty_tx_effects_hash() { + unconstrained fn empty_tx_effects_sponge() { let outputs = PublicBaseRollupInputsBuilder::new().execute(); + let mut expected_sponge = outputs.start_sponge_blob; + assert(outputs.end_sponge_blob.eq(expected_sponge)); + } + + #[test] + unconstrained fn non_empty_tx_effects_sponge() { + let mut builder = PublicBaseRollupInputsBuilder::new(); + builder.avm_data.append_note_hashes(50); + let outputs = builder.execute(); + let mut tx_effects = [0; 53]; + // TODO(#8954): This test uses 50 notes and 3 extra absorbed fields + // This may change when logs are deconstructed + // Initial field = TX_START_PREFIX | 0 | txlen[0] txlen[1] | 0 | REVERT_CODE_PREFIX | 0 | revert_code + // The first 3 are: i=0 init field, i=1: tx fee, i=2: note prefix + tx_effects[0] = field_from_bytes( + array_concat( + TX_START_PREFIX.to_be_bytes::<8>(), + [0, 0, tx_effects.len() as u8, 0, REVERT_CODE_PREFIX, 0, 0], + ), + true, + ); + tx_effects[1] = field_from_bytes( + array_concat([TX_FEE_PREFIX, 0], (0).to_be_bytes::<29>()), + true, + ); + tx_effects[2] = field_from_bytes([NOTES_PREFIX, 0, 50 as u8], true); + for i in 0..50 { + tx_effects[i + 3] = builder.avm_data.note_hashes.storage()[i].value(); + } + let mut expected_sponge = outputs.start_sponge_blob; + + expected_sponge.absorb(tx_effects, tx_effects.len()); + assert(outputs.end_sponge_blob.eq(expected_sponge)); + } + + #[test] + unconstrained fn fuller_tx_effects_sponge() { + let NUM_NOTES = 50; + let NUM_NULLIFIERS = 3; + let NUM_MSGS = 5; + let NUM_ENC_LOGS = 4; + let NUM_UNENC_LOGS = 6; + let NUM_CC_LOGS = 1; + let PUB_DATA_SLOT = 25; + let PUB_DATA_VALUE = 60; + let tx_fee = 100_000; + let mut builder = PublicBaseRollupInputsBuilder::new(); + builder.transaction_fee = tx_fee; + builder.avm_data.append_note_hashes(NUM_NOTES); + // Copied from nullifier tests above: + builder.pre_existing_nullifiers[0] = + NullifierLeafPreimage { nullifier: 0, next_nullifier: 7, next_index: 1 }; + builder.pre_existing_nullifiers[1] = + NullifierLeafPreimage { nullifier: 7, next_nullifier: 0, next_index: 0 }; + for i in 0..NUM_NULLIFIERS { + builder.nullifiers.push( + NullifierInsertion { existing_index: 1, value: (8 + i) as Field }, + ); + } + builder.avm_data.append_l2_to_l1_msgs(NUM_MSGS); + // Copied from public data test below: + builder.pre_existing_public_data[0] = + PublicDataTreeLeafPreimage { slot: 20, value: 40, next_slot: 0, next_index: 0 }; + builder.public_data_writes.push(( + 0, PublicDataTreeLeaf { slot: PUB_DATA_SLOT, value: PUB_DATA_VALUE }, + )); + builder.tube_data.append_encrypted_log_hashes(NUM_ENC_LOGS); + builder.avm_data.append_unencrypted_log_hashes(NUM_UNENC_LOGS); + // Below will only work with NUM_CC_LOGS=1 + builder.tube_data.add_contract_class_log_hash(1, 2); + let outputs = builder.execute(); + + let mut reconstructed_tx_effects = [0; TX_EFFECTS_BLOB_HASH_INPUT_FIELDS]; + // Initial field = TX_START_PREFIX | 0 | txlen[0] txlen[1] | 0 | REVERT_CODE_PREFIX | 0 | revert_code + // revert code = 0 + // fields appended here = 80 = offset once appending complete + reconstructed_tx_effects[0] = field_from_bytes( + array_concat( + TX_START_PREFIX.to_be_bytes::<8>(), + [0, 0, 80, 0, REVERT_CODE_PREFIX, 0, 0], + ), + true, + ); + // tx fee + reconstructed_tx_effects[1] = field_from_bytes( + array_concat([TX_FEE_PREFIX, 0], tx_fee.to_be_bytes::<29>()), + true, + ); + // notes + let mut offset = 2; + let notes_prefix = field_from_bytes([NOTES_PREFIX, 0, NUM_NOTES as u8], true); + reconstructed_tx_effects[offset] = notes_prefix; + offset += 1; + for i in 0..NUM_NOTES { + reconstructed_tx_effects[offset + i] = + builder.avm_data.note_hashes.storage()[i].value(); + } + offset += NUM_NOTES; + // nullifiers + let nullifiers_prefix = + field_from_bytes([NULLIFIERS_PREFIX, 0, NUM_NULLIFIERS as u8], true); + reconstructed_tx_effects[offset] = nullifiers_prefix; + offset += 1; + for i in 0..NUM_NULLIFIERS { + reconstructed_tx_effects[offset + i] = builder.nullifiers.storage()[i].value; + } + offset += NUM_NULLIFIERS; + // l2 to l1 msgs + let l2_to_l1_msgs_prefix = field_from_bytes([L2_L1_MSGS_PREFIX, 0, NUM_MSGS as u8], true); + reconstructed_tx_effects[offset] = l2_to_l1_msgs_prefix; + offset += 1; + for i in 0..NUM_MSGS { + reconstructed_tx_effects[offset + i] = silo_l2_to_l1_message( + builder.avm_data.l2_to_l1_msgs.storage()[i], + builder.avm_data.tx_context.version, + builder.avm_data.tx_context.chain_id, + ); + } + offset += NUM_MSGS; + // public data update + let public_data_update_requests_prefix = + field_from_bytes([PUBLIC_DATA_UPDATE_REQUESTS_PREFIX, 0, 2], true); + reconstructed_tx_effects[offset] = public_data_update_requests_prefix; + offset += 1; + reconstructed_tx_effects[offset] = PUB_DATA_SLOT; + reconstructed_tx_effects[offset + 1] = PUB_DATA_VALUE; + offset += 2; + // TODO(#8954): The below will change with log deconstruction + // enc logs + let encrypted_logs_prefix = + field_from_bytes([ENCRYPTED_LOGS_PREFIX, 0, NUM_ENC_LOGS as u8], true); + reconstructed_tx_effects[offset] = encrypted_logs_prefix; + offset += 1; + for i in 0..NUM_ENC_LOGS { + reconstructed_tx_effects[offset + i] = types::hash::silo_encrypted_log_hash(builder + .tube_data + .encrypted_logs_hashes + .storage()[i] + .expose_to_public()); + } + offset += NUM_ENC_LOGS; + // unenc logs + let unencrypted_logs_prefix = + field_from_bytes([UNENCRYPTED_LOGS_PREFIX, 0, NUM_UNENC_LOGS as u8], true); + reconstructed_tx_effects[offset] = unencrypted_logs_prefix; + offset += 1; + for i in 0..NUM_UNENC_LOGS { + reconstructed_tx_effects[offset + i] = types::hash::silo_unencrypted_log_hash( + builder.avm_data.unencrypted_logs_hashes.storage()[i], + ); + } + offset += NUM_UNENC_LOGS; + // cc logs + let contract_class_logs_prefix = + field_from_bytes([CONTRACT_CLASS_LOGS_PREFIX, 0, NUM_CC_LOGS as u8], true); + reconstructed_tx_effects[offset] = contract_class_logs_prefix; + offset += 1; + for i in 0..NUM_CC_LOGS { + reconstructed_tx_effects[offset + i] = types::hash::silo_unencrypted_log_hash( + builder.tube_data.contract_class_logs_hashes.storage()[i], + ); + } + offset += NUM_CC_LOGS; + + // Sanity check - if this fails change the above use of 80 + assert(offset == 80); - let hash_input_flattened = [0; TX_EFFECTS_HASH_INPUT_FIELDS * 32]; - let sha_digest = std::hash::sha256(hash_input_flattened); - let expected_tx_effects_hash = field_from_bytes_32_trunc(sha_digest); - assert_eq(outputs.txs_effects_hash, expected_tx_effects_hash); + let mut expected_sponge = outputs.start_sponge_blob; + expected_sponge.absorb(reconstructed_tx_effects, offset); + assert(outputs.end_sponge_blob.eq(expected_sponge)); } #[test] diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_merge/block_merge_rollup_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_merge/block_merge_rollup_inputs.nr index 50b956e01a8..553a2ab1848 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_merge/block_merge_rollup_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_merge/block_merge_rollup_inputs.nr @@ -44,6 +44,12 @@ impl BlockMergeRollupInputs { let fees = components::accumulate_blocks_fees(left, right); + // TODO: We need to eventually accumulate blob info to a single BlobPublicInputs instance which will verify multiple blobs in one call + // For now, we do them individually + // How we accumulate is being worked on by @Mike + // let blob_public_inputs = left.blob_public_inputs.accumulate(right.blob_public_inputs); + let blob_public_inputs = components::accumulate_blob_public_inputs(left, right); + BlockRootOrBlockMergePublicInputs { previous_archive: left.previous_archive, new_archive: right.new_archive, @@ -56,6 +62,7 @@ impl BlockMergeRollupInputs { vk_tree_root: left.vk_tree_root, protocol_contract_tree_root: left.protocol_contract_tree_root, prover_id: left.prover_id, // TODO(#7346): Temporarily added prover_id while we verify block-root proofs on L1 + blob_public_inputs, } } } @@ -146,6 +153,25 @@ mod tests { ); } + #[test] + fn blob_inputs_are_accumulated() { + let mut inputs = default_block_merge_rollup_inputs(); + let outputs = inputs.block_merge_rollup_circuit(); + + assert_eq( + outputs.blob_public_inputs[0], + inputs.previous_rollup_data[0] + .block_root_or_block_merge_public_inputs + .blob_public_inputs[0], + ); + assert_eq( + outputs.blob_public_inputs[1], + inputs.previous_rollup_data[1] + .block_root_or_block_merge_public_inputs + .blob_public_inputs[0], + ); + } + #[test] fn valid_previous_circuit_block_root() { let mut inputs = default_block_merge_rollup_inputs(); diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_rollup_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_rollup_inputs.nr index bd2ee6a1cb6..73da5991875 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_rollup_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_rollup_inputs.nr @@ -5,12 +5,13 @@ use crate::{ }, components, }; +use blob::{blob::evaluate_blobs, blob_public_inputs::{BlobCommitment, BlockBlobPublicInputs}}; use parity_lib::root::root_rollup_parity_input::RootRollupParityInput; use types::{ abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot, constants::{ - ARCHIVE_HEIGHT, AZTEC_MAX_EPOCH_DURATION, L1_TO_L2_MSG_SUBTREE_HEIGHT, - L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH, MERGE_ROLLUP_INDEX, + ARCHIVE_HEIGHT, AZTEC_MAX_EPOCH_DURATION, BLOBS_PER_BLOCK, FIELDS_PER_BLOB, + L1_TO_L2_MSG_SUBTREE_HEIGHT, L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH, MERGE_ROLLUP_INDEX, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, PRIVATE_BASE_ROLLUP_VK_INDEX, PUBLIC_BASE_ROLLUP_VK_INDEX, }, @@ -20,7 +21,6 @@ use types::{ state_reference::StateReference, traits::Empty, }; -use types::debug_log::debug_log_format; global ALLOWED_PREVIOUS_CIRCUITS = [MERGE_ROLLUP_INDEX, PRIVATE_BASE_ROLLUP_VK_INDEX, PUBLIC_BASE_ROLLUP_VK_INDEX]; @@ -47,6 +47,14 @@ pub struct BlockRootRollupInputs { previous_block_hash: Field, // TODO(#7346): Temporarily added prover_id while we verify block-root proofs on L1 prover_id: Field, + // Fields for blob verification made of all tx effects in this block + // (will likely change to be accumulated and sent up to the final root) + blobs_fields: [Field; FIELDS_PER_BLOB * BLOBS_PER_BLOCK], + // see blob/src/main.nr -> main() - these are used for creating the challenge z + blob_commitments: [BlobCommitment; BLOBS_PER_BLOCK], + // Flat sha256 hash of the EVM blob hashes, can be injected here as the contract check its validity vs the blob_public_inputs below + // NB: to fit it into a field, we truncate to 31 bytes + blobs_hash: Field, } impl BlockRootRollupInputs { @@ -70,6 +78,7 @@ impl BlockRootRollupInputs { components::assert_txs_filled_from_left(left, right); components::assert_equal_constants(left, right); components::assert_prev_rollups_follow_on_from_each_other(left, right); + components::assert_first_sponge_blob_empty(left); // Insert subtree into the l1 to l2 data tree let empty_l1_to_l2_subtree_root = calculate_empty_tree_root(L1_TO_L2_MSG_SUBTREE_HEIGHT); @@ -90,30 +99,13 @@ impl BlockRootRollupInputs { let content_commitment = ContentCommitment { num_txs: (left.num_txs + right.num_txs) as Field, - txs_effects_hash: components::compute_txs_effects_hash(self.previous_rollup_data), + blobs_hash: self.blobs_hash, in_hash: self.l1_to_l2_roots.public_inputs.sha_root, out_hash: components::compute_out_hash(self.previous_rollup_data), }; let total_fees = components::accumulate_fees(left, right); - // unsafe { - // debug_log_format("Assembling header in block root rollup", []); - // debug_log_format( - // "header.last_archive={}", - // left.constants.last_archive.serialize() - // ); - // debug_log_format( - // "header.content_commitment={}", - // content_commitment.serialize() - // ); - // debug_log_format("header.state={}", state.serialize()); - // debug_log_format( - // "header.global_variables={}", - // left.constants.global_variables.serialize() - // ); - // debug_log_format("header.total_fees={0}", [total_fees]); - // } let header = Header { last_archive: left.constants.last_archive, content_commitment, @@ -138,6 +130,13 @@ impl BlockRootRollupInputs { fee_arr[0] = FeeRecipient { recipient: left.constants.global_variables.coinbase, value: total_fees }; + let mut blob_public_inputs = [BlockBlobPublicInputs::empty(); AZTEC_MAX_EPOCH_DURATION]; + blob_public_inputs[0] = evaluate_blobs( + self.blobs_fields, + self.blob_commitments, + right.end_sponge_blob, + ); + BlockRootOrBlockMergePublicInputs { previous_archive: left.constants.last_archive, // archive before this block was added new_archive: archive, // archive once this block was added @@ -150,6 +149,7 @@ impl BlockRootRollupInputs { vk_tree_root: left.constants.vk_tree_root, protocol_contract_tree_root: left.constants.protocol_contract_tree_root, prover_id: self.prover_id, + blob_public_inputs, } } } @@ -166,6 +166,9 @@ impl Empty for BlockRootRollupInputs { new_archive_sibling_path: [0; ARCHIVE_HEIGHT], previous_block_hash: 0, prover_id: 0, + blobs_fields: [0; FIELDS_PER_BLOB * BLOBS_PER_BLOCK], + blob_commitments: [BlobCommitment::empty(); BLOBS_PER_BLOCK], + blobs_hash: 0, } } } diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/empty_block_root_rollup_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/empty_block_root_rollup_inputs.nr index bbd263c34e0..6c7223dab66 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/empty_block_root_rollup_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/empty_block_root_rollup_inputs.nr @@ -1,5 +1,7 @@ -use crate::abis::block_root_or_block_merge_public_inputs::BlockRootOrBlockMergePublicInputs; -use crate::abis::block_root_or_block_merge_public_inputs::FeeRecipient; +use crate::abis::block_root_or_block_merge_public_inputs::{ + BlockRootOrBlockMergePublicInputs, FeeRecipient, +}; +use blob::blob_public_inputs::BlockBlobPublicInputs; use types::abis::{ append_only_tree_snapshot::AppendOnlyTreeSnapshot, global_variables::GlobalVariables, }; @@ -29,6 +31,7 @@ impl EmptyBlockRootRollupInputs { vk_tree_root: self.vk_tree_root, protocol_contract_tree_root: self.protocol_contract_tree_root, prover_id: self.prover_id, + blob_public_inputs: [BlockBlobPublicInputs::empty(); AZTEC_MAX_EPOCH_DURATION], } } } diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/mod.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/mod.nr index dd7f71030b0..f9c527cf425 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/mod.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/mod.nr @@ -9,6 +9,7 @@ pub use empty_block_root_rollup_inputs::EmptyBlockRootRollupInputs; mod tests { use crate::tests::block_root_rollup_inputs::default_block_root_rollup_inputs; use dep::types::hash::accumulate_sha256; + use std::hash::poseidon2::Poseidon2; #[test] fn check_block_hashes_empty_blocks() { @@ -39,4 +40,38 @@ mod tests { .global_variables, )); } + + #[test] + unconstrained fn check_blob() { + let inputs = default_block_root_rollup_inputs(); + let outputs = inputs.block_root_rollup_circuit(); + + let mut expected_sponge = + inputs.previous_rollup_data[0].base_or_merge_rollup_public_inputs.start_sponge_blob; + expected_sponge.absorb([1, 2], expected_sponge.expected_fields); + + assert(expected_sponge.eq( + inputs.previous_rollup_data[1].base_or_merge_rollup_public_inputs.end_sponge_blob, + )); + + let hashed_tx_effects = expected_sponge.squeeze(); + let expected_z = Poseidon2::hash( + [ + hashed_tx_effects, + inputs.blob_commitments[0].inner[0], + inputs.blob_commitments[0].inner[1], + ], + 3, + ); + + assert(outputs.blob_public_inputs[0].inner[0].z == expected_z); + } + + #[test(should_fail_with = "block's first blob sponge was not empty")] + unconstrained fn check_blob_empty() { + let mut inputs = default_block_root_rollup_inputs(); + inputs.previous_rollup_data[0].base_or_merge_rollup_public_inputs.start_sponge_blob.fields = + 1; + let _ = inputs.block_root_rollup_circuit(); + } } diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/components.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/components.nr index 7dbe6021d88..9fb87848685 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/components.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/components.nr @@ -1,28 +1,33 @@ use crate::abis::{ base_or_merge_rollup_public_inputs::BaseOrMergeRollupPublicInputs, block_root_or_block_merge_public_inputs::{BlockRootOrBlockMergePublicInputs, FeeRecipient}, -}; -use crate::abis::{ - previous_rollup_block_data::PreviousRollupBlockData, previous_rollup_data::PreviousRollupData, + previous_rollup_block_data::PreviousRollupBlockData, + previous_rollup_data::PreviousRollupData, }; use dep::types::{ abis::{ accumulated_data::CombinedAccumulatedData, log_hash::{LogHash, ScopedLogHash}, public_data_write::PublicDataWrite, + sponge_blob::SpongeBlob, }, constants::{ - AZTEC_MAX_EPOCH_DURATION, MAX_CONTRACT_CLASS_LOGS_PER_TX, MAX_L2_TO_L1_MSGS_PER_TX, - MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, - MAX_UNENCRYPTED_LOGS_PER_TX, + AZTEC_MAX_EPOCH_DURATION, CONTRACT_CLASS_LOGS_PREFIX, ENCRYPTED_LOGS_PREFIX, + L2_L1_MSGS_PREFIX, MAX_CONTRACT_CLASS_LOGS_PER_TX, MAX_ENCRYPTED_LOGS_PER_TX, + MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX, MAX_NOTE_HASHES_PER_TX, + MAX_NULLIFIERS_PER_TX, MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, + MAX_UNENCRYPTED_LOGS_PER_TX, NOTE_ENCRYPTED_LOGS_PREFIX, NOTES_PREFIX, NULLIFIERS_PREFIX, + PUBLIC_DATA_UPDATE_REQUESTS_PREFIX, REVERT_CODE_PREFIX, TX_FEE_PREFIX, TX_START_PREFIX, + UNENCRYPTED_LOGS_PREFIX, }, hash::{ accumulate_sha256, compute_tx_logs_hash, silo_encrypted_log_hash, silo_unencrypted_log_hash, }, merkle_tree::VariableMerkleTree, traits::is_empty, - utils::arrays::{array_length, array_merge}, + utils::{arrays::{array_concat, array_length, array_merge}, field::field_from_bytes}, }; +use blob::blob_public_inputs::BlockBlobPublicInputs; /** * Asserts that the tree formed by rollup circuits is filled greedily from L to R @@ -65,7 +70,7 @@ pub fn assert_equal_constants( } // asserts that the end snapshot of previous_rollup 0 equals the start snapshot of previous_rollup 1 (i.e. ensure they -// follow on from one-another). Ensures that right uses the tres that was updated by left. +// follow on from one-another). Ensures that right uses the tree that was updated by left. pub fn assert_prev_rollups_follow_on_from_each_other( left: BaseOrMergeRollupPublicInputs, right: BaseOrMergeRollupPublicInputs, @@ -82,9 +87,12 @@ pub fn assert_prev_rollups_follow_on_from_each_other( left.end.public_data_tree.eq(right.start.public_data_tree), "input proofs have different public data tree snapshots", ); + assert( + left.end_sponge_blob.eq(right.start_sponge_blob), + "input proofs have different blob data sponges", + ); } -// TODO(Miranda): split out? pub fn assert_prev_block_rollups_follow_on_from_each_other( left: BlockRootOrBlockMergePublicInputs, right: BlockRootOrBlockMergePublicInputs, @@ -156,6 +164,33 @@ pub fn accumulate_blocks_fees( array_merge(left.fees, right.fees) } +// TODO: This fn will be obselete once we have integrated accumulation of blob PIs +// The goal is to acc. the commitments and openings s.t. one set verifies the opening of many blobs +// How we accumulate is being worked on by @Mike +pub fn accumulate_blob_public_inputs( + left: BlockRootOrBlockMergePublicInputs, + right: BlockRootOrBlockMergePublicInputs, +) -> [BlockBlobPublicInputs; AZTEC_MAX_EPOCH_DURATION] { + let left_len = array_length(left.blob_public_inputs); + let right_len = array_length(right.blob_public_inputs); + assert( + left_len + right_len <= AZTEC_MAX_EPOCH_DURATION, + "too many blob public input structs accumulated in rollup", + ); + // NB: For some reason, the below is around 150k gates cheaper than array_merge + let mut add_from_left = true; + let mut result = [BlockBlobPublicInputs::empty(); AZTEC_MAX_EPOCH_DURATION]; + for i in 0..result.len() { + add_from_left &= i != left_len; + if (add_from_left) { + result[i] = left.blob_public_inputs[i]; + } else { + result[i] = right.blob_public_inputs[i - left_len]; + } + } + result +} + /** * @brief From two previous rollup data, compute a single out hash * @@ -168,7 +203,7 @@ pub fn compute_out_hash(previous_rollup_data: [PreviousRollupData; 2]) -> Field previous_rollup_data[1].base_or_merge_rollup_public_inputs.out_hash, ]) } -// TODO(Miranda): combine fns? + pub fn compute_blocks_out_hash(previous_rollup_data: [PreviousRollupBlockData; 2]) -> Field { if previous_rollup_data[1].block_root_or_block_merge_public_inputs.is_padding() { previous_rollup_data[0].block_root_or_block_merge_public_inputs.out_hash @@ -186,19 +221,6 @@ pub fn compute_kernel_out_hash(l2_to_l1_msgs: [Field; MAX_L2_TO_L1_MSGS_PER_TX]) merkle_tree.get_root() } -/** - * @brief From two previous rollup data, compute a single txs effects hash - * - * @param previous_rollup_data - * @return The hash of the transaction effects stored in 2 fields - */ -pub fn compute_txs_effects_hash(previous_rollup_data: [PreviousRollupData; 2]) -> Field { - accumulate_sha256([ - previous_rollup_data[0].base_or_merge_rollup_public_inputs.txs_effects_hash, - previous_rollup_data[1].base_or_merge_rollup_public_inputs.txs_effects_hash, - ]) -} - fn silo_and_hash_unencrypted_logs( unencrypted_logs_hashes: [ScopedLogHash; N], ) -> Field { @@ -213,7 +235,7 @@ fn silo_and_hash_unencrypted_logs( } fn silo_and_hash_encrypted_logs( - encrypted_logs_hashes: [ScopedLogHash; MAX_UNENCRYPTED_LOGS_PER_TX], + encrypted_logs_hashes: [ScopedLogHash; MAX_ENCRYPTED_LOGS_PER_TX], ) -> Field { let siloed_encrypted_logs = encrypted_logs_hashes.map(|log: ScopedLogHash| { LogHash { @@ -225,41 +247,51 @@ fn silo_and_hash_encrypted_logs( compute_tx_logs_hash(siloed_encrypted_logs) } -// Tx effects hash consists of +/** + * Asserts that the first sponge blob was empty to begin with. + * This prevents injecting unchecked tx effects in the first base of a rollup. + */ +pub fn assert_first_sponge_blob_empty(left: BaseOrMergeRollupPublicInputs) { + let expected_sponge_blob = SpongeBlob::new(left.start_sponge_blob.expected_fields); + assert( + left.start_sponge_blob.eq(expected_sponge_blob), + "block's first blob sponge was not empty", + ); +} + +// Tx effects consist of // 1 field for revert code // 1 field for transaction fee // MAX_NOTE_HASHES_PER_TX fields for note hashes // MAX_NULLIFIERS_PER_TX fields for nullifiers -// 1 field for L2 to L1 messages (represented by the out_hash) +// MAX_L2_TO_L1_MSGS_PER_TX for L2 to L1 messages // MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX public data update requests -> MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX * 2 fields -// __ -// 1 note encrypted logs length --> 1 field | -// 1 encrypted logs length --> 1 field | -> 4 types of logs - 4 fields for its lengths -// 1 unencrypted logs length --> 1 field | -// 1 contract class logs length --> 1 field __| -// __ -// 1 note encrypted logs hash --> 1 sha256 hash -> 31 bytes -> 1 fields | Beware when populating bytes that we fill (prepend) to 32! | -// 1 encrypted logs hash --> 1 sha256 hash -> 31 bytes -> 1 fields | Beware when populating bytes that we fill (prepend) to 32! | -> 4 types of logs - 4 fields for its hashes -// 1 unencrypted logs hash --> 1 sha256 hash -> 31 bytes -> 1 fields | Beware when populating bytes that we fill (prepend) to 32! | -// 1 contract class logs hash --> 1 sha256 hash -> 31 bytes -> 1 fields | Beware when populating bytes that we fill (prepend) to 32! __| -global TX_EFFECTS_HASH_INPUT_FIELDS = 1 +// TODO(#8954): When logs are refactored into fields, we will append the values here, for now appending the log hashes: +// MAX_NOTE_ENCRYPTED_LOGS_PER_TX fields for note encrypted logs +// MAX_ENCRYPTED_LOGS_PER_TX fields for encrypted logs +// MAX_UNENCRYPTED_LOGS_PER_TX fields for unencrypted logs +// MAX_CONTRACT_CLASS_LOGS_PER_TX fields for contract class logs +// 8 fields for prefixes for each of the above categories +global TX_EFFECTS_BLOB_HASH_INPUT_FIELDS: u32 = 1 + 1 + MAX_NOTE_HASHES_PER_TX + MAX_NULLIFIERS_PER_TX - + 1 + + MAX_L2_TO_L1_MSGS_PER_TX + MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX * 2 - + 4 - + 4; - -// Computes the tx effects hash for a base rollup (a single transaction) -pub fn compute_tx_effects_hash( + + MAX_NOTE_ENCRYPTED_LOGS_PER_TX + + MAX_ENCRYPTED_LOGS_PER_TX + + MAX_UNENCRYPTED_LOGS_PER_TX + + MAX_CONTRACT_CLASS_LOGS_PER_TX + + 8; +pub fn append_tx_effects_for_blob( combined: CombinedAccumulatedData, revert_code: u8, transaction_fee: Field, all_public_data_update_requests: [PublicDataWrite; MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX], - out_hash: Field, -) -> Field { - let mut tx_effects_hash_input = [0; TX_EFFECTS_HASH_INPUT_FIELDS]; + l2_to_l1_msgs: [Field; MAX_L2_TO_L1_MSGS_PER_TX], + start_sponge_blob: SpongeBlob, +) -> SpongeBlob { + let mut tx_effects_hash_input = [0; TX_EFFECTS_BLOB_HASH_INPUT_FIELDS]; let note_hashes = combined.note_hashes; let nullifiers = combined.nullifiers; @@ -268,94 +300,175 @@ pub fn compute_tx_effects_hash( // The incoming all_public_data_update_requests may have empty update requests in the middle, so we move those to the end of the array. let public_data_update_requests = get_all_update_requests_for_tx_effects(all_public_data_update_requests); - let note_logs_length = combined.note_encrypted_log_preimages_length; - let encrypted_logs_length = combined.encrypted_log_preimages_length; - let unencrypted_logs_length = combined.unencrypted_log_preimages_length; - let contract_class_logs_length = combined.contract_class_log_preimages_length; - let note_encrypted_logs_hash = compute_tx_logs_hash(combined.note_encrypted_logs_hashes); - let encrypted_logs_hash = silo_and_hash_encrypted_logs(combined.encrypted_logs_hashes); - let unencrypted_logs_hash = silo_and_hash_unencrypted_logs(combined.unencrypted_logs_hashes); - let contract_class_logs_hash = - silo_and_hash_unencrypted_logs(combined.contract_class_logs_hashes); + let note_encrypted_logs = combined.note_encrypted_logs_hashes.map(|log: LogHash| log.value); + let encrypted_logs = + combined.encrypted_logs_hashes.map(|log: ScopedLogHash| silo_encrypted_log_hash(log)); + let unencrypted_logs = + combined.unencrypted_logs_hashes.map(|log: ScopedLogHash| silo_unencrypted_log_hash(log)); + let contract_class_logs = combined.contract_class_logs_hashes.map(|log: ScopedLogHash| { + silo_unencrypted_log_hash(log) + }); let mut offset = 0; + let mut array_len = 0; - // REVERT CODE - // upcast to Field to have the same size for the purposes of the hash - tx_effects_hash_input[offset] = revert_code as Field; + // NB: for publishing fields of blob data we use the first element of the blob to encode: + // TX_START_PREFIX | 0 | txlen[0] txlen[1] | 0 | REVERT_CODE_PREFIX | 0 | revert_code + // Two bytes are used to encode the number of fields appended here, given by 'offset' + // We only know the value once the appending is complete, hence we overwrite input[0] below + tx_effects_hash_input[offset] = 0; offset += 1; // TX FEE - tx_effects_hash_input[offset] = transaction_fee; + // TODO(Miranda): how many bytes do we expect tx fee to be? Using 29 for now + tx_effects_hash_input[offset] = field_from_bytes( + array_concat([TX_FEE_PREFIX, 0], transaction_fee.to_be_bytes::<29>()), + true, + ); offset += 1; + // NB: The array_length function does NOT constrain we have a sorted left-packed array. + // We can use it because all inputs here come from the kernels which DO contrain left-packing. + // If that ever changes, we will have to constrain it by counting items differently. // NOTE HASHES - for j in 0..MAX_NOTE_HASHES_PER_TX { - tx_effects_hash_input[offset + j] = note_hashes[j]; + array_len = array_length(note_hashes); + if array_len != 0 { + let notes_prefix = field_from_bytes([NOTES_PREFIX, 0, array_len as u8], true); + tx_effects_hash_input[offset] = notes_prefix; + offset += 1; + + for j in 0..MAX_NOTE_HASHES_PER_TX { + tx_effects_hash_input[offset + j] = note_hashes[j]; + } + offset += array_len; } - offset += MAX_NOTE_HASHES_PER_TX; // NULLIFIERS - for j in 0..MAX_NULLIFIERS_PER_TX { - tx_effects_hash_input[offset + j] = nullifiers[j]; + array_len = array_length(nullifiers); + if array_len != 0 { + let nullifiers_prefix = field_from_bytes([NULLIFIERS_PREFIX, 0, array_len as u8], true); + tx_effects_hash_input[offset] = nullifiers_prefix; + offset += 1; + + for j in 0..MAX_NULLIFIERS_PER_TX { + tx_effects_hash_input[offset + j] = nullifiers[j]; + } + offset += array_len; } - offset += MAX_NULLIFIERS_PER_TX; // L2 TO L1 MESSAGES - tx_effects_hash_input[offset] = out_hash; - offset += 1; + array_len = array_length(l2_to_l1_msgs); + if array_len != 0 { + let l2_to_l1_msgs_prefix = field_from_bytes([L2_L1_MSGS_PREFIX, 0, array_len as u8], true); + tx_effects_hash_input[offset] = l2_to_l1_msgs_prefix; + offset += 1; + + for j in 0..MAX_L2_TO_L1_MSGS_PER_TX { + tx_effects_hash_input[offset + j] = l2_to_l1_msgs[j]; + } + offset += array_len; + } // PUBLIC DATA UPDATE REQUESTS - for j in 0..MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX { - tx_effects_hash_input[offset + j * 2] = public_data_update_requests[j].leaf_slot; - tx_effects_hash_input[offset + j * 2 + 1] = public_data_update_requests[j].value; + array_len = array_length(public_data_update_requests); + if array_len != 0 { + let public_data_update_requests_prefix = field_from_bytes( + [PUBLIC_DATA_UPDATE_REQUESTS_PREFIX, 0, (array_len as u8) * 2], + true, + ); + tx_effects_hash_input[offset] = public_data_update_requests_prefix; + offset += 1; + for j in 0..MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX { + tx_effects_hash_input[offset + j * 2] = public_data_update_requests[j].leaf_slot; + tx_effects_hash_input[offset + j * 2 + 1] = public_data_update_requests[j].value; + } + offset += array_len * 2; } - offset += MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX * 2; - // NOTE ENCRYPTED LOGS LENGTH - tx_effects_hash_input[offset] = note_logs_length; - offset += 1; + // TODO(#8954): When logs are refactored into fields, we will append the values here + // Currently appending the single log hash as an interim solution + // NOTE ENCRYPTED LOGS + array_len = array_length(note_encrypted_logs); + if array_len != 0 { + let note_encrypted_logs_prefix = + field_from_bytes([NOTE_ENCRYPTED_LOGS_PREFIX, 0, array_len as u8], true); + tx_effects_hash_input[offset] = note_encrypted_logs_prefix; + offset += 1; + + for j in 0..MAX_NOTE_ENCRYPTED_LOGS_PER_TX { + tx_effects_hash_input[offset + j] = note_encrypted_logs[j]; + } + offset += array_len; + } - // ENCRYPTED LOGS LENGTH - tx_effects_hash_input[offset] = encrypted_logs_length; - offset += 1; + // ENCRYPTED LOGS + array_len = array_length(encrypted_logs); + if array_len != 0 { + let encrypted_logs_prefix = + field_from_bytes([ENCRYPTED_LOGS_PREFIX, 0, array_len as u8], true); + tx_effects_hash_input[offset] = encrypted_logs_prefix; + offset += 1; - // UNENCRYPTED LOGS LENGTH - tx_effects_hash_input[offset] = unencrypted_logs_length; - offset += 1; + for j in 0..MAX_ENCRYPTED_LOGS_PER_TX { + tx_effects_hash_input[offset + j] = encrypted_logs[j]; + } + offset += array_len; + } - // CONTRACT CLASS LOGS LENGTH - tx_effects_hash_input[offset] = contract_class_logs_length; - offset += 1; + // UNENCRYPTED LOGS + array_len = array_length(unencrypted_logs); + if array_len != 0 { + let unencrypted_logs_prefix = + field_from_bytes([UNENCRYPTED_LOGS_PREFIX, 0, array_len as u8], true); + tx_effects_hash_input[offset] = unencrypted_logs_prefix; + offset += 1; - // NOTE ENCRYPTED LOGS HASH - tx_effects_hash_input[offset] = note_encrypted_logs_hash; - offset += 1; + for j in 0..MAX_UNENCRYPTED_LOGS_PER_TX { + tx_effects_hash_input[offset + j] = unencrypted_logs[j]; + } + offset += array_len; + } - // ENCRYPTED LOGS HASH - tx_effects_hash_input[offset] = encrypted_logs_hash; - offset += 1; + // CONTRACT CLASS LOGS + array_len = array_length(contract_class_logs); + if array_len != 0 { + let contract_class_logs_prefix = + field_from_bytes([CONTRACT_CLASS_LOGS_PREFIX, 0, array_len as u8], true); + tx_effects_hash_input[offset] = contract_class_logs_prefix; + offset += 1; - // UNENCRYPTED LOGS HASH - tx_effects_hash_input[offset] = unencrypted_logs_hash; - offset += 1; + for j in 0..MAX_CONTRACT_CLASS_LOGS_PER_TX { + tx_effects_hash_input[offset + j] = contract_class_logs[j]; + } + offset += array_len; + } - // CONTRACT CLASS LOGS HASH - tx_effects_hash_input[offset] = contract_class_logs_hash; - offset += 1; + // Now we know the number of fields appended, we can assign the first value: + // TX_START_PREFIX | 0 | txlen[0] txlen[1] | 0 | REVERT_CODE_PREFIX | 0 | revert_code + // Start prefix is "tx_start".to_field() => 8 bytes + let prefix_bytes = TX_START_PREFIX.to_be_bytes::<8>(); + // Assigning length to 2 bytes, since we may go over 255 fields + let length_bytes = (offset as Field).to_be_bytes::<2>(); + // REVERT CODE + tx_effects_hash_input[0] = field_from_bytes( + array_concat( + prefix_bytes, + [0, length_bytes[0], length_bytes[1], 0, REVERT_CODE_PREFIX, 0, revert_code], + ), + true, + ); - assert_eq(offset, TX_EFFECTS_HASH_INPUT_FIELDS); // Sanity check - let mut hash_input_flattened = [0; TX_EFFECTS_HASH_INPUT_FIELDS * 32]; - for offset in 0..TX_EFFECTS_HASH_INPUT_FIELDS { - // TODO: This is not checking that the decomposition is smaller than P - let input_as_bytes: [u8; 32] = tx_effects_hash_input[offset].to_be_radix(256); - for byte_index in 0..32 { - hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index]; - } + // NB: using start.absorb & returning start caused issues in ghost values appearing in + // base_rollup_inputs.start when using a fresh sponge. These only appeared when simulating via wasm. + let mut out_sponge = start_sponge_blob; + + // If we have an empty tx (usually a padding tx), we don't want to absorb anything + // An empty tx will only have 2 effects - revert code and fee - hence offset = 2 + if offset != 2 { + out_sponge.absorb(tx_effects_hash_input, offset); } - let sha_digest = dep::types::hash::sha256_to_field(hash_input_flattened); - sha_digest + out_sponge } fn get_all_update_requests_for_tx_effects( @@ -371,18 +484,3 @@ fn get_all_update_requests_for_tx_effects( all_update_requests.storage() } -#[test] -fn consistent_TX_EFFECTS_HASH_INPUT_FIELDS() { - let expected_size = 1 // revert code - + 1 // transaction fee - + MAX_NOTE_HASHES_PER_TX - + MAX_NULLIFIERS_PER_TX - + MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX * 2 - + 1 // out hash - + 4 // logs lengths - + 4; // logs hashes - assert( - TX_EFFECTS_HASH_INPUT_FIELDS == expected_size, - "tx effects hash input size is incorrect", - ); -} diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/merge/merge_rollup_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/merge/merge_rollup_inputs.nr index c2338609672..c58c6e0d081 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/merge/merge_rollup_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/merge/merge_rollup_inputs.nr @@ -42,8 +42,6 @@ impl MergeRollupInputs { components::assert_equal_constants(left, right); components::assert_prev_rollups_follow_on_from_each_other(left, right); - // compute calldata hash: - let txs_effects_hash = components::compute_txs_effects_hash(self.previous_rollup_data); let out_hash = components::compute_out_hash(self.previous_rollup_data); let accumulated_fees = components::accumulate_fees(left, right); @@ -54,7 +52,8 @@ impl MergeRollupInputs { constants: left.constants, start: left.start, end: right.end, - txs_effects_hash, + start_sponge_blob: left.start_sponge_blob, + end_sponge_blob: right.end_sponge_blob, out_hash, accumulated_fees, }; @@ -68,7 +67,6 @@ mod tests { use dep::types::constants::{ MERGE_ROLLUP_INDEX, PRIVATE_BASE_ROLLUP_VK_INDEX, ROOT_PARITY_INDEX, }; - use dep::types::hash::accumulate_sha256; use types::merkle_tree::merkle_tree::MerkleTree; use types::tests::fixtures; @@ -110,6 +108,16 @@ mod tests { let _output = inputs.merge_rollup_circuit(); } + #[test(should_fail_with = "input proofs have different blob data sponges")] + fn previous_rollups_dont_follow_sponge() { + let mut inputs = default_merge_rollup_inputs(); + inputs.previous_rollup_data[0].base_or_merge_rollup_public_inputs.end_sponge_blob.sponge.state[0] = + 0; + inputs.previous_rollup_data[1].base_or_merge_rollup_public_inputs.start_sponge_blob.sponge.state[0] = + 1; + let _output = inputs.merge_rollup_circuit(); + } + #[test] fn rollup_fields_are_set_correctly() { let mut inputs = default_merge_rollup_inputs(); @@ -167,12 +175,13 @@ mod tests { } #[test] - fn txs_effects_hash() { + fn txs_effects_sponge() { let mut inputs = default_merge_rollup_inputs(); - let expected_hash = accumulate_sha256([1, 2]); let outputs = inputs.merge_rollup_circuit(); + let mut expected_sponge = outputs.start_sponge_blob; + expected_sponge.absorb([1, 2], 2); - assert_eq(outputs.txs_effects_hash, expected_hash); + assert_eq(outputs.end_sponge_blob, expected_sponge); } #[test] diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_inputs.nr index 619aed711df..b358900ba3a 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_inputs.nr @@ -51,6 +51,12 @@ impl RootRollupInputs { let fees = components::accumulate_blocks_fees(left, right); + // TODO: We need to eventually accumulate blob info to a single BlobPublicInputs instance which will verify multiple blobs in one call + // For now, we do them individually + // How we accumulate is being worked on by @Mike + // let blob_public_inputs = left.blob_public_inputs.accumulate(right.blob_public_inputs); + let blob_public_inputs = components::accumulate_blob_public_inputs(left, right); + RootRollupPublicInputs { previous_archive: left.previous_archive, end_archive: right.new_archive, @@ -63,6 +69,7 @@ impl RootRollupInputs { vk_tree_root: left.vk_tree_root, protocol_contract_tree_root: left.protocol_contract_tree_root, prover_id: self.prover_id, + blob_public_inputs, } } } diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_public_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_public_inputs.nr index 2383e1481e1..a54ce7c1e3e 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_public_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/root/root_rollup_public_inputs.nr @@ -1,7 +1,7 @@ use crate::abis::block_root_or_block_merge_public_inputs::FeeRecipient; use dep::types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot; use dep::types::constants::AZTEC_MAX_EPOCH_DURATION; - +use blob::blob_public_inputs::BlockBlobPublicInputs; pub struct RootRollupPublicInputs { // Snapshot of archive tree before/after this rollup has been processed previous_archive: AppendOnlyTreeSnapshot, @@ -15,4 +15,5 @@ pub struct RootRollupPublicInputs { vk_tree_root: Field, protocol_contract_tree_root: Field, prover_id: Field, + blob_public_inputs: [BlockBlobPublicInputs; AZTEC_MAX_EPOCH_DURATION], } diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/tests/block_root_rollup_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/tests/block_root_rollup_inputs.nr index 7a213dc35da..556d308b3f3 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/tests/block_root_rollup_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/tests/block_root_rollup_inputs.nr @@ -58,5 +58,8 @@ pub fn default_block_root_rollup_inputs() -> BlockRootRollupInputs { inputs.previous_rollup_data = default_previous_rollup_data(); + inputs.blobs_fields[0] = 1; + inputs.blobs_fields[1] = 2; + inputs } diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/tests/previous_rollup_block_data.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/tests/previous_rollup_block_data.nr index 7b70fb93e17..714c410eef9 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/tests/previous_rollup_block_data.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/tests/previous_rollup_block_data.nr @@ -55,5 +55,10 @@ pub fn default_previous_rollup_block_data() -> [PreviousRollupBlockData; 2] { previous_rollup_data[0].block_root_or_block_merge_public_inputs.fees[0].value = 10; previous_rollup_data[1].block_root_or_block_merge_public_inputs.fees[0].value = 15; + previous_rollup_data[0].block_root_or_block_merge_public_inputs.blob_public_inputs[0].inner[0].z = + 1; + previous_rollup_data[1].block_root_or_block_merge_public_inputs.blob_public_inputs[0].inner[0].z = + 2; + previous_rollup_data } diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/tests/previous_rollup_data.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/tests/previous_rollup_data.nr index 962ff736dfa..98eb969713e 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/tests/previous_rollup_data.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/tests/previous_rollup_data.nr @@ -4,6 +4,7 @@ use dep::types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot; use dep::types::constants::PUBLIC_BASE_ROLLUP_VK_INDEX; use dep::types::merkle_tree::MembershipWitness; use dep::types::tests::fixtures; +use types::abis::sponge_blob::SpongeBlob; use types::merkle_tree::merkle_tree::MerkleTree; pub fn default_previous_rollup_data() -> [PreviousRollupData; 2] { @@ -46,6 +47,14 @@ pub fn default_previous_rollup_data() -> [PreviousRollupData; 2] { previous_rollup_data[1].base_or_merge_rollup_public_inputs.end.nullifier_tree = AppendOnlyTreeSnapshot { root: 2, next_available_leaf_index: 2 }; + previous_rollup_data[0].base_or_merge_rollup_public_inputs.start.public_data_tree = + AppendOnlyTreeSnapshot { root: 0, next_available_leaf_index: 1 }; + previous_rollup_data[0].base_or_merge_rollup_public_inputs.end.public_data_tree = + AppendOnlyTreeSnapshot { root: 1, next_available_leaf_index: 2 }; + previous_rollup_data[1].base_or_merge_rollup_public_inputs.start.public_data_tree = + AppendOnlyTreeSnapshot { root: 1, next_available_leaf_index: 2 }; + previous_rollup_data[1].base_or_merge_rollup_public_inputs.end.public_data_tree = + AppendOnlyTreeSnapshot { root: 2, next_available_leaf_index: 3 }; previous_rollup_data[0].base_or_merge_rollup_public_inputs.start.public_data_tree = AppendOnlyTreeSnapshot { root: 0, next_available_leaf_index: 1 }; previous_rollup_data[0].base_or_merge_rollup_public_inputs.end.public_data_tree = @@ -61,8 +70,15 @@ pub fn default_previous_rollup_data() -> [PreviousRollupData; 2] { previous_rollup_data[0].base_or_merge_rollup_public_inputs.num_txs = 1; previous_rollup_data[1].base_or_merge_rollup_public_inputs.num_txs = 1; - previous_rollup_data[0].base_or_merge_rollup_public_inputs.txs_effects_hash = 1; - previous_rollup_data[1].base_or_merge_rollup_public_inputs.txs_effects_hash = 2; + let mut sponge_blob = SpongeBlob::new(2); + previous_rollup_data[0].base_or_merge_rollup_public_inputs.start_sponge_blob = sponge_blob; + + sponge_blob.absorb([1], 1); + previous_rollup_data[0].base_or_merge_rollup_public_inputs.end_sponge_blob = sponge_blob; + previous_rollup_data[1].base_or_merge_rollup_public_inputs.start_sponge_blob = sponge_blob; + + sponge_blob.absorb([2], 1); + previous_rollup_data[1].base_or_merge_rollup_public_inputs.end_sponge_blob = sponge_blob; previous_rollup_data[0].base_or_merge_rollup_public_inputs.out_hash = 1; previous_rollup_data[1].base_or_merge_rollup_public_inputs.out_hash = 2; diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/mod.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/mod.nr index 890d2d4429d..2d79791848e 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/mod.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/mod.nr @@ -36,6 +36,7 @@ pub mod call_context; pub mod private_circuit_public_inputs; +pub mod sponge_blob; pub mod gas_fees; pub mod gas_settings; pub mod gas; diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/sponge_blob.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/sponge_blob.nr new file mode 100644 index 00000000000..fc65d14e083 --- /dev/null +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/sponge_blob.nr @@ -0,0 +1,143 @@ +use crate::{ + constants::{BLOBS_PER_BLOCK, FIELDS_PER_BLOB, SPONGE_BLOB_LENGTH}, + hash::poseidon2_absorb_chunks_existing_sponge, + traits::{Deserialize, Empty, Serialize}, +}; +use std::hash::poseidon2::Poseidon2; + +// A Poseidon2 sponge used to accumulate data that will be added to a blob +// (More accurately called BlobSponge, but that's not as fun) + +// Each base rollup circuit has a start and end SpongeBlob instance, like a PartialStateReference. +// Tx data is accumulated by calling absorb() on each field, and incrementing the number of fields. +// To save gates, we do not check after every absorb whether we have filled a blob (we do this in block root). + +// Each merge rollup circuit checks that the left rollup input's end SpongeBlob == the right rollup input's start SpongeBlob. + +// Finally, the block_root is given the list of all fields to be included in the blob. +// We hash these ^ and check that the hash matches the one given by the block_root's right input's end SpongeBlob.squeeze(). +// The hash is used as part of the blob challenge, as we've proven it encompasses all elts of the blob. + +// Init is given by input len * 2^64 (see noir/noir-repo/noir_stdlib/src/hash/poseidon2.nr -> hash_internal) +global IV: Field = (FIELDS_PER_BLOB * BLOBS_PER_BLOCK) as Field * 18446744073709551616; + +pub struct SpongeBlob { + pub sponge: Poseidon2, + pub fields: u32, + pub expected_fields: u32, // The hinted number of tx effects this will absorb +} + +impl SpongeBlob { + pub fn new_full_blobs() -> Self { + Self { sponge: Poseidon2::new(IV), fields: 0, expected_fields: 0 } + } + + pub fn new(expected_fields_hint: u32) -> Self { + Self { + sponge: Poseidon2::new((expected_fields_hint as Field) * 18446744073709551616), + fields: 0, + expected_fields: expected_fields_hint, + } + } + + // Add fields to the sponge + pub fn absorb(&mut self, input: [Field; N], in_len: u32) { + // We skip the 0 check below, as most use cases (e.g. base rollup) constrain that the input array + // is contructed from i=0->in_len from an empty array, so no need to check. + self.sponge = poseidon2_absorb_chunks_existing_sponge(self.sponge, input, in_len, true); + self.fields += in_len; + } + + // Finalise the sponge and output poseidon2 hash of all fields absorbed + pub fn squeeze(&mut self) -> Field { + // If the blob sponge is not 'full', we append 1 to match Poseidon2::hash_internal() + // NB: There is currently no use case in which we don't 'fill' a blob sponge, but adding for completeness + if self.fields != self.expected_fields { + self.sponge.absorb(1); + } + self.sponge.squeeze() + } +} + +impl Eq for SpongeBlob { + // TODO: should Poseidon2 struct have a .eq() impl? + fn eq(self, other: Self) -> bool { + (self.fields == other.fields) + & (self.sponge.cache == other.sponge.cache) + & (self.sponge.state == other.sponge.state) + & (self.sponge.cache_size == other.sponge.cache_size) + & (self.sponge.squeeze_mode == other.sponge.squeeze_mode) + } +} + +impl Serialize for SpongeBlob { + fn serialize(self) -> [Field; SPONGE_BLOB_LENGTH] { + let mut fields: BoundedVec = BoundedVec::new(); + fields.extend_from_array(self.sponge.cache); + fields.extend_from_array(self.sponge.state); + fields.push(self.sponge.cache_size as Field); + fields.push(self.sponge.squeeze_mode as Field); + fields.push(self.fields as Field); + fields.push(self.expected_fields as Field); + + fields.storage + } +} + +impl Deserialize for SpongeBlob { + fn deserialize(fields: [Field; SPONGE_BLOB_LENGTH]) -> Self { + Self { + sponge: Poseidon2 { + cache: [fields[0], fields[1], fields[2]], + state: [fields[3], fields[4], fields[5], fields[6]], + cache_size: fields[7] as u32, + squeeze_mode: fields[8] as bool, + }, + fields: fields[9] as u32, + expected_fields: fields[10] as u32, + } + } +} + +impl Empty for SpongeBlob { + fn empty() -> Self { + Self { sponge: Poseidon2::new(0), fields: 0, expected_fields: 0 } + } +} + +#[test] +fn serialization_of_empty() { + let item = SpongeBlob::empty(); + let serialized = item.serialize(); + let deserialized = SpongeBlob::deserialize(serialized); + assert(item.eq(deserialized)); +} + +use crate::utils::arrays::array_concat; + +#[test] +unconstrained fn absorb() { + // This tests that absorbing two arrays separately then squeezing matches an ordinary hash + let mut spongeblob = SpongeBlob::new(7); + let input_3 = [1, 2, 3]; + spongeblob.absorb(input_3, input_3.len()); + // Assert that we have correctly absorbed the first 3 inputs + assert(spongeblob.sponge.cache.eq(input_3)); + assert(spongeblob.fields == input_3.len()); + // Absorb the next 4 in a new call... + let input_4 = [4, 5, 6, 7]; + spongeblob.absorb(input_4, input_4.len()); + // ...and create a normal poseidon2 hash of the same input + let input: [Field; 7] = array_concat(input_3, input_4); + let expected = Poseidon2::hash(input, input.len()); + assert(spongeblob.squeeze() == expected); +} + +#[test(should_fail_with = "Given in_len to absorb is larger than the input array len")] +unconstrained fn absorb_incorrect_in_len() { + let mut spongeblob = SpongeBlob::new(10); + let input_3 = [1, 2, 3]; + // The below should fail, as we try to absorb 10 inputs but only provide 3 + spongeblob.absorb(input_3, 10); +} + diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr index fcf4127112f..cd8feceacaf 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr @@ -129,8 +129,9 @@ pub global FUNCTION_SELECTOR_NUM_BYTES: Field = 4; // to be large enough so that it's ensured that it doesn't collide with storage slots of other variables. pub global INITIALIZATION_SLOT_SEPARATOR: Field = 1000_000_000; pub global INITIAL_L2_BLOCK_NUM: Field = 1; +pub global FIELDS_PER_BLOB: u32 = 4096; +pub global BLOBS_PER_BLOCK: u32 = 3; pub global PRIVATE_LOG_SIZE_IN_BYTES: u32 = 576; // This is currently defined by aztec-nr/aztec/src/encrypted_logs/payload.nr. See the comment there for how this value is calculated. -pub global BLOB_SIZE_IN_BYTES: Field = 31 * 4096; pub global AZTEC_MAX_EPOCH_DURATION: u32 = 32; // The following is taken from building a block and looking at the `lastArchive` value in it. // You can run the `integration_l1_publisher.test.ts` and look at the first blocks in the fixtures. @@ -259,6 +260,9 @@ pub global FUNCTION_DATA_LENGTH: u32 = 2; pub global FUNCTION_LEAF_PREIMAGE_LENGTH: u32 = 5; pub global GLOBAL_VARIABLES_LENGTH: u32 = 7 + GAS_FEES_LENGTH; pub global APPEND_ONLY_TREE_SNAPSHOT_LENGTH: u32 = 2; +pub global APPEND_ONLY_TREE_SNAPSHOT_LENGTH_BYTES: u32 = 36; +pub global SPONGE_BLOB_LENGTH: u32 = 11; +pub global BLOB_PUBLIC_INPUTS: u32 = 6; pub global L1_TO_L2_MESSAGE_LENGTH: u32 = 6; pub global L2_TO_L1_MESSAGE_LENGTH: u32 = 3; pub global SCOPED_L2_TO_L1_MESSAGE_LENGTH: u32 = L2_TO_L1_MESSAGE_LENGTH + 1; @@ -303,6 +307,13 @@ pub global HEADER_LENGTH: u32 = APPEND_ONLY_TREE_SNAPSHOT_LENGTH + STATE_REFERENCE_LENGTH + GLOBAL_VARIABLES_LENGTH + TOTAL_FEES_LENGTH; +// Global variables are all 32 bytes, apart from coinbase which is 20, hence -12. A state reference is just 4 snapshots. +pub global HEADER_LENGTH_BYTES: u32 = APPEND_ONLY_TREE_SNAPSHOT_LENGTH_BYTES + + 32 * CONTENT_COMMITMENT_LENGTH + + 4 * APPEND_ONLY_TREE_SNAPSHOT_LENGTH_BYTES + + 32 * GLOBAL_VARIABLES_LENGTH + - 12 + + 32 * TOTAL_FEES_LENGTH; pub global PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH: u32 = CALL_CONTEXT_LENGTH + 4 + MAX_BLOCK_NUMBER_LENGTH @@ -442,11 +453,12 @@ pub global CONSTANT_ROLLUP_DATA_LENGTH: u32 = APPEND_ONLY_TREE_SNAPSHOT_LENGTH + 1 /* protocol_contract_tree_root */ + GLOBAL_VARIABLES_LENGTH; -// + 5 for rollup_type, height_in_block_tree, txs_effects_hash, out_hash, accumulated_fees +// + 4 for rollup_type, num_txs, out_hash, accumulated_fees pub global BASE_OR_MERGE_PUBLIC_INPUTS_LENGTH: u32 = CONSTANT_ROLLUP_DATA_LENGTH + PARTIAL_STATE_REFERENCE_LENGTH + PARTIAL_STATE_REFERENCE_LENGTH - + 5; + + 2 * SPONGE_BLOB_LENGTH + + 4; pub global BLOCK_ROOT_OR_BLOCK_MERGE_PUBLIC_INPUTS_LENGTH: u32 = 2 * APPEND_ONLY_TREE_SNAPSHOT_LENGTH + 1 /* previous_block_hash */ @@ -456,10 +468,13 @@ pub global BLOCK_ROOT_OR_BLOCK_MERGE_PUBLIC_INPUTS_LENGTH: u32 = 2 + AZTEC_MAX_EPOCH_DURATION * FEE_RECIPIENT_LENGTH + 1 /* vk_tree_root */ + 1 /* protocol_contract_tree_root */ - + 1 /* prover_id */; -pub global ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH: u32 = - 2 * APPEND_ONLY_TREE_SNAPSHOT_LENGTH + 8 + AZTEC_MAX_EPOCH_DURATION * FEE_RECIPIENT_LENGTH; - + + 1 /* prover_id */ + + AZTEC_MAX_EPOCH_DURATION * BLOB_PUBLIC_INPUTS * BLOBS_PER_BLOCK; +// + 8 for previous_block_hash, end_block_hash, end_timestamp, end_block_number, out_hash, vk_tree_root, protocol_contract_tree_root, prover_id +pub global ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH: u32 = 2 * APPEND_ONLY_TREE_SNAPSHOT_LENGTH + + 8 + + AZTEC_MAX_EPOCH_DURATION * FEE_RECIPIENT_LENGTH + + AZTEC_MAX_EPOCH_DURATION * BLOB_PUBLIC_INPUTS * BLOBS_PER_BLOCK; pub global GET_NOTES_ORACLE_RETURN_LENGTH: u32 = 674; pub global NOTE_HASHES_NUM_BYTES_PER_BASE_ROLLUP: u32 = 32 * MAX_NOTE_HASHES_PER_TX; pub global NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP: u32 = 32 * MAX_NULLIFIERS_PER_TX; @@ -695,6 +710,20 @@ pub global AVM_SENDL2TOL1MSG_BASE_DA_GAS: u32 = DA_BYTES_PER_FIELD * DA_GAS_PER_ // a single increment here corresponds to an entire additional field (hence x32 bytes per field) pub global AVM_EMITUNENCRYPTEDLOG_DYN_DA_GAS: u32 = DA_BYTES_PER_FIELD * DA_GAS_PER_BYTE; +// BLOB PREFIXES +// Used when decoding blobs of tightly packed effects +pub global TX_START_PREFIX: Field = 0x74785f7374617274; // = "tx_start".to_field() in nr +pub global REVERT_CODE_PREFIX: u8 = 1; +pub global TX_FEE_PREFIX: u8 = 2; +pub global NOTES_PREFIX: u8 = 3; +pub global NULLIFIERS_PREFIX: u8 = 4; +pub global L2_L1_MSGS_PREFIX: u8 = 5; +pub global PUBLIC_DATA_UPDATE_REQUESTS_PREFIX: u8 = 6; +pub global NOTE_ENCRYPTED_LOGS_PREFIX: u8 = 7; +pub global ENCRYPTED_LOGS_PREFIX: u8 = 8; +pub global UNENCRYPTED_LOGS_PREFIX: u8 = 9; +pub global CONTRACT_CLASS_LOGS_PREFIX: u8 = 10; + // Constants related to proof type of a recursive proof verification. // Keep following constants in sync with the enum acir_format::PROOF_TYPE in recursion_constraint.hpp pub global PROOF_TYPE_PLONK: u32 = 0; diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/content_commitment.nr b/noir-projects/noir-protocol-circuits/crates/types/src/content_commitment.nr index a02e7f8e46c..05948539625 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/content_commitment.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/content_commitment.nr @@ -2,7 +2,7 @@ use crate::{constants::CONTENT_COMMITMENT_LENGTH, traits::{Deserialize, Empty, S pub struct ContentCommitment { num_txs: Field, - txs_effects_hash: Field, + blobs_hash: Field, in_hash: Field, out_hash: Field, } @@ -12,7 +12,7 @@ impl Serialize for ContentCommitment { let mut fields: BoundedVec = BoundedVec::new(); fields.push(self.num_txs); - fields.push(self.txs_effects_hash); + fields.push(self.blobs_hash); fields.push(self.in_hash); fields.push(self.out_hash); @@ -24,26 +24,26 @@ impl Deserialize for ContentCommitment { fn deserialize(serialized: [Field; CONTENT_COMMITMENT_LENGTH]) -> Self { let num_txs = serialized[0]; - let txs_effects_hash = serialized[1]; + let blobs_hash = serialized[1]; let in_hash = serialized[2]; let out_hash = serialized[3]; - Self { num_txs, txs_effects_hash, in_hash, out_hash } + Self { num_txs, blobs_hash, in_hash, out_hash } } } impl Empty for ContentCommitment { fn empty() -> Self { - Self { num_txs: 0, txs_effects_hash: 0, in_hash: 0, out_hash: 0 } + Self { num_txs: 0, blobs_hash: 0, in_hash: 0, out_hash: 0 } } } impl Eq for ContentCommitment { fn eq(self, other: Self) -> bool { (self.num_txs == other.num_txs) - & (self.txs_effects_hash == other.txs_effects_hash) + & (self.blobs_hash == other.blobs_hash) & (self.in_hash == other.in_hash) & (self.out_hash == other.out_hash) } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr b/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr index 4aee1c46d57..3e709b9e176 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr @@ -252,6 +252,177 @@ where sponge.squeeze() } +// Performs a fixed length hash with a subarray of the given input. +// Useful for SpongeBlob in which we aborb M things and want to check it vs a hash of M elts of an N-len array. +// Using stdlib poseidon, this will always absorb an extra 1 as a 'variable' hash, and not match spongeblob.squeeze() +// or any ts implementation. Also checks that any remaining elts not hashed are empty. +#[no_predicates] +pub fn poseidon2_hash_subarray(input: [Field; N], in_len: u32) -> Field { + let mut sponge = poseidon2_absorb_chunks(input, in_len, false); + sponge.squeeze() +} + +// NB the below is the same as std::hash::poseidon2::Poseidon2::hash(), but replacing a range check with a bit check, +// and absorbing in chunks of 3 below. +#[no_predicates] +pub fn poseidon2_cheaper_variable_hash(input: [Field; N], in_len: u32) -> Field { + let mut sponge = poseidon2_absorb_chunks(input, in_len, true); + // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish + // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures + // fixed-length and variable-length hashes do not collide) + if in_len != N { + sponge.absorb(1); + } + sponge.squeeze() +} + +// The below fn reduces gates of a conditional poseidon2 hash by approx 3x (thank you ~* Giant Brain Dev @IlyasRidhuan *~ for the idea) +// Why? Because when we call stdlib poseidon, we call absorb for each item. When absorbing is conditional, it seems the compiler does not know +// what cache_size will be when calling absorb, so it assigns the permutation gates for /each i/ rather than /every 3rd i/, which is actually required. +// The below code forces the compiler to: +// - absorb normally up to 2 times to set cache_size to 1 +// - absorb in chunks of 3 to ensure perm. only happens every 3rd absorb +// - absorb normally up to 2 times to add any remaining values to the hash +// In fixed len hashes, the compiler is able to tell that it will only need to perform the permutation every 3 absorbs. +// NB: it also replaces unnecessary range checks (i < thing) with a bit check (&= i != thing), which alone reduces the gates of a var. hash by half. + +#[no_predicates] +fn poseidon2_absorb_chunks( + input: [Field; N], + in_len: u32, + variable: bool, +) -> std::hash::poseidon2::Poseidon2 { + let two_pow_64 = 18446744073709551616; + let iv: Field = (in_len as Field) * two_pow_64; + let mut sponge = std::hash::poseidon2::Poseidon2::new(iv); + // Even though shift is always 1 here, if we input in_len = 0 we get an underflow + // since we cannot isolate computation branches. The below is just to avoid that. + let shift = if in_len == 0 { 0 } else { 1 }; + if in_len != 0 { + // cache_size = 0, init absorb + sponge.cache[0] = input[0]; + sponge.cache_size = 1; + // shift = num elts already added to make cache_size 1 = 1 for a fresh sponge + // M = max_chunks = (N - 1 - (N - 1) % 3) / 3: (must be written as a fn of N to compile) + // max_remainder = (N - 1) % 3; + // max_chunks = (N - 1 - max_remainder) / 3; + sponge = poseidon2_absorb_chunks_loop::( + sponge, + input, + in_len, + variable, + shift, + ); + } + sponge +} + +// NB: If it's not required to check that the non-absorbed elts of 'input' are 0s, set skip_0_check=true +#[no_predicates] +pub fn poseidon2_absorb_chunks_existing_sponge( + in_sponge: std::hash::poseidon2::Poseidon2, + input: [Field; N], + in_len: u32, + skip_0_check: bool, +) -> std::hash::poseidon2::Poseidon2 { + let mut sponge = in_sponge; + // 'shift' is to account for already added inputs + let mut shift = 0; + // 'stop' is to avoid an underflow when inputting in_len = 0 + let mut stop = false; + for i in 0..3 { + if shift == in_len { + stop = true; + } + if (sponge.cache_size != 1) & (!stop) { + sponge.absorb(input[i]); + shift += 1; + } + } + sponge = if stop { + sponge + } else { + // max_chunks = (N - (N % 3)) / 3; + poseidon2_absorb_chunks_loop::( + sponge, + input, + in_len, + skip_0_check, + shift, + ) + }; + sponge +} + +// The below is the loop to absorb elts into a poseidon sponge in chunks of 3 +// shift - the num of elts already absorbed to ensure the sponge's cache_size = 1 +// M - the max number of chunks required to absorb N things (must be comptime to compile) +// NB: The 0 checks ('Found non-zero field...') are messy, but having a separate loop over N to check +// for 0s costs 3N gates. Current approach is approx 2N gates. +#[no_predicates] +fn poseidon2_absorb_chunks_loop( + in_sponge: std::hash::poseidon2::Poseidon2, + input: [Field; N], + in_len: u32, + variable: bool, + shift: u32, +) -> std::hash::poseidon2::Poseidon2 { + assert(in_len <= N, "Given in_len to absorb is larger than the input array len"); + // When we have an existing sponge, we may have a shift of 0, and the final 'k+2' below = N + // The below avoids an overflow + let skip_last = 3 * M == N; + // Writing in_sponge: &mut does not compile + let mut sponge = in_sponge; + let mut should_add = true; + // The num of things left over after absorbing in 3s + let remainder = (in_len - shift) % 3; + // The num of chunks of 3 to absorb (maximum M) + let chunks = (in_len - shift - remainder) / 3; + for i in 0..M { + // Now we loop through cache size = 1 -> 3 + should_add &= i != chunks; + // This is the index at the start of the chunk (for readability) + let k = 3 * i + shift; + if should_add { + // cache_size = 1, 2 => just assign + sponge.cache[1] = input[k]; + sponge.cache[2] = input[k + 1]; + // cache_size = 3 => duplex + perm + for j in 0..3 { + sponge.state[j] += sponge.cache[j]; + } + sponge.state = std::hash::poseidon2_permutation(sponge.state, 4); + sponge.cache[0] = input[k + 2]; + // cache_size is now 1 again, repeat loop + } else if (!variable) & (i != chunks) { + // if we are hashing a fixed len array which is a subarray, we check the remaining elts are 0 + // NB: we don't check at i == chunks, because that chunk contains elts to be absorbed or checked below + let last_0 = if (i == M - 1) & (skip_last) { + 0 + } else { + input[k + 2] + }; + let all_0 = (input[k] == 0) & (input[k + 1] == 0) & (last_0 == 0); + assert(all_0, "Found non-zero field after breakpoint"); + } + } + // we have 'remainder' num of items left to absorb + should_add = true; + // below is to avoid overflows (i.e. if inlen is close to N) + let mut should_check = !variable; + for i in 0..3 { + should_add &= i != remainder; + should_check &= in_len - remainder + i != N; + if should_add { + // we want to absorb the final 'remainder' items + sponge.absorb(input[in_len - remainder + i]); + } else if should_check { + assert(input[in_len - remainder + i] == 0, "Found non-zero field after breakpoint"); + } + } + sponge +} + pub fn poseidon2_hash_with_separator_slice(inputs: [Field], separator: T) -> Field where T: ToField, @@ -299,6 +470,61 @@ pub fn poseidon2_hash_bytes(inputs: [u8; N]) -> Field { sponge.squeeze() } +#[test] +fn poseidon_chunks_matches_fixed() { + let in_len = 501; + let mut input: [Field; 4096] = [0; 4096]; + let mut fixed_input = [3; 501]; + assert(in_len == fixed_input.len()); // sanity check + for i in 0..in_len { + input[i] = 3; + } + let sub_chunk_hash = poseidon2_hash_subarray(input, in_len); + let fixed_len_hash = std::hash::poseidon2::Poseidon2::hash(fixed_input, fixed_input.len()); + assert(sub_chunk_hash == fixed_len_hash); +} + +#[test] +fn poseidon_chunks_matches_variable() { + let in_len = 501; + let mut input: [Field; 4096] = [0; 4096]; + for i in 0..in_len { + input[i] = 3; + } + let variable_chunk_hash = poseidon2_cheaper_variable_hash(input, in_len); + let variable_len_hash = std::hash::poseidon2::Poseidon2::hash(input, in_len); + assert(variable_chunk_hash == variable_len_hash); +} + +#[test] +fn existing_sponge_poseidon_chunks_matches_fixed() { + let in_len = 501; + let mut input: [Field; 4096] = [0; 4096]; + let mut fixed_input = [3; 501]; + assert(in_len == fixed_input.len()); // sanity check + for i in 0..in_len { + input[i] = 3; + } + // absorb 250 of the 501 things + let two_pow_64 = 18446744073709551616; + let empty_sponge = std::hash::poseidon2::Poseidon2::new((in_len as Field) * two_pow_64); + let first_sponge = poseidon2_absorb_chunks_existing_sponge(empty_sponge, input, 250, true); + // now absorb the final 251 (since they are all 3s, im being lazy and not making a new array) + let mut final_sponge = poseidon2_absorb_chunks_existing_sponge(first_sponge, input, 251, true); + let fixed_len_hash = std::hash::poseidon2::Poseidon2::hash(fixed_input, fixed_input.len()); + assert(final_sponge.squeeze() == fixed_len_hash); +} + +#[test] +fn poseidon_chunks_empty_inputs() { + let in_len = 0; + let mut input: [Field; 4096] = [0; 4096]; + let mut contructed_empty_sponge = poseidon2_absorb_chunks(input, in_len, true); + let mut first_sponge = + poseidon2_absorb_chunks_existing_sponge(contructed_empty_sponge, input, in_len, true); + assert(first_sponge.squeeze() == contructed_empty_sponge.squeeze()); +} + #[test] fn smoke_sha256_to_field() { let full_buffer = [ diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/header.nr b/noir-projects/noir-protocol-circuits/crates/types/src/header.nr index 23e9c6a2a87..d7b6e42714d 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/header.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/header.nr @@ -116,7 +116,7 @@ fn empty_hash_is_zero() { let header = Header::empty(); let hash = header.hash(); - // Value from new_contract_data.test.ts "computes empty hash" test + // Value from header.test.ts "computes empty hash" test let test_data_empty_hash = 0x1c97ed6fbc35f8b400d31bd38ce5cc938921e0cf2e20159d316f8c7011f9f42c; assert_eq(hash, test_data_empty_hash); } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/tests/fixture_builder.nr b/noir-projects/noir-protocol-circuits/crates/types/src/tests/fixture_builder.nr index 94294b65c16..6ca3b4e5774 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/tests/fixture_builder.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/tests/fixture_builder.nr @@ -919,6 +919,10 @@ impl FixtureBuilder { self.contract_address } + pub fn set_gas_used(&mut self, da_gas: u32, l2_gas: u32) { + self.gas_used = Gas { da_gas, l2_gas }; + } + pub fn set_public_teardown_call_request(&mut self) { self.public_teardown_call_request = self.mock_public_teardown_call_request(); } diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/utils/arrays.nr b/noir-projects/noir-protocol-circuits/crates/types/src/utils/arrays.nr index 638cc76ecce..fd9812bcca5 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/utils/arrays.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/utils/arrays.nr @@ -135,6 +135,19 @@ where result } +// Helper fn to create a subarray from a given array +pub fn array_splice(array: [T; N], offset: u32) -> [T; M] +where + T: Empty, +{ + assert(M + offset <= N, "Subarray length larger than array length"); + let mut result: [T; M] = [T::empty(); M]; + for i in 0..M { + result[i] = array[offset + i]; + } + result +} + pub fn check_permutation( original_array: [T; N], permuted_array: [T; N], diff --git a/scripts/ci/get_e2e_jobs.sh b/scripts/ci/get_e2e_jobs.sh index 2dbdb42ac40..26d3853b320 100755 --- a/scripts/ci/get_e2e_jobs.sh +++ b/scripts/ci/get_e2e_jobs.sh @@ -25,7 +25,8 @@ allow_list=( "e2e_cross_chain_messaging" "e2e_crowdfunding_and_claim" "e2e_deploy_contract" - "e2e_epochs" + # TODO(#10177): reenable + # "e2e_epochs" "e2e_fees" "e2e_fees_failures" "e2e_fees_gas_estimation" diff --git a/yarn-project/archiver/src/archiver/archiver.test.ts b/yarn-project/archiver/src/archiver/archiver.test.ts index b542ee2475f..2a9b2f0d310 100644 --- a/yarn-project/archiver/src/archiver/archiver.test.ts +++ b/yarn-project/archiver/src/archiver/archiver.test.ts @@ -8,6 +8,7 @@ import { } from '@aztec/circuit-types'; import { GENESIS_ARCHIVE_ROOT } from '@aztec/circuits.js'; import { DefaultL1ContractsConfig } from '@aztec/ethereum'; +import { Blob } from '@aztec/foundation/blob'; import { EthAddress } from '@aztec/foundation/eth-address'; import { Fr } from '@aztec/foundation/fields'; import { sleep } from '@aztec/foundation/sleep'; @@ -451,12 +452,13 @@ function makeMessageSentEventWithIndexInL2BlockSubtree( function makeRollupTx(l2Block: L2Block) { const header = toHex(l2Block.header.toBuffer()); const body = toHex(l2Block.body.toBuffer()); + const blobInput = Blob.getEthBlobEvaluationInputs(Blob.getBlobs(l2Block.body.toBlobFields())); const archive = toHex(l2Block.archive.root.toBuffer()); const blockHash = toHex(l2Block.header.hash().toBuffer()); const input = encodeFunctionData({ abi: RollupAbi, functionName: 'propose', - args: [{ header, archive, blockHash, txHashes: [] }, [], body], + args: [{ header, archive, blockHash, txHashes: [] }, [], body, blobInput], }); return { input } as Transaction; } diff --git a/yarn-project/archiver/src/archiver/data_retrieval.ts b/yarn-project/archiver/src/archiver/data_retrieval.ts index ce3c6cadbd5..294b6a486ee 100644 --- a/yarn-project/archiver/src/archiver/data_retrieval.ts +++ b/yarn-project/archiver/src/archiver/data_retrieval.ts @@ -1,5 +1,6 @@ import { Body, InboxLeaf, L2Block } from '@aztec/circuit-types'; import { AppendOnlyTreeSnapshot, Fr, Header, Proof } from '@aztec/circuits.js'; +import { Blob } from '@aztec/foundation/blob'; import { type EthAddress } from '@aztec/foundation/eth-address'; import { type ViemSignature } from '@aztec/foundation/eth-signature'; import { type DebugLogger, createDebugLogger } from '@aztec/foundation/log'; @@ -139,7 +140,8 @@ async function getBlockFromRollupTx( if (!allowedMethods.includes(functionName)) { throw new Error(`Unexpected method called ${functionName}`); } - const [decodedArgs, , bodyHex] = args! as readonly [ + // TODO(#9101): 'bodyHex' will be removed from below + const [decodedArgs, , bodyHex, blobInputs] = args! as readonly [ { header: Hex; archive: Hex; @@ -148,11 +150,44 @@ async function getBlockFromRollupTx( }, ViemSignature[], Hex, + Hex, ]; const header = Header.fromBuffer(Buffer.from(hexToBytes(decodedArgs.header))); + // TODO(#9101): Retreiving the block body from calldata is a temporary soln before we have + // either a beacon chain client or link to some blob store. Web2 is ok because we will + // verify the block body vs the blob as below. const blockBody = Body.fromBuffer(Buffer.from(hexToBytes(bodyHex))); + const blockFields = blockBody.toBlobFields(); + // TODO(#9101): The below reconstruction is currently redundant, but once we extract blobs will be the way to construct blocks. + // The blob source will give us blockFields, and we must construct the body from them: + // TODO(#8954): When logs are refactored into fields, we won't need to inject them here. + const reconstructedBlock = Body.fromBlobFields( + blockFields, + blockBody.noteEncryptedLogs, + blockBody.encryptedLogs, + blockBody.unencryptedLogs, + blockBody.contractClassLogs, + ); + + if (!reconstructedBlock.toBuffer().equals(blockBody.toBuffer())) { + // TODO(#9101): Remove below check (without calldata there will be nothing to check against) + throw new Error(`Block reconstructed from blob fields does not match`); + } + + // TODO(#9101): Once we stop publishing calldata, we will still need the blobCheck below to ensure that the block we are building does correspond to the blob fields + const blobCheck = Blob.getBlobs(blockFields); + if (Blob.getEthBlobEvaluationInputs(blobCheck) !== blobInputs) { + // NB: We can just check the blobhash here, which is the first 32 bytes of blobInputs + // A mismatch means that the fields published in the blob in propose() do NOT match those in the extracted block. + throw new Error( + `Block body mismatched with blob for block number ${l2BlockNum}. \nExpected: ${Blob.getEthBlobEvaluationInputs( + blobCheck, + )} \nGot: ${blobInputs}`, + ); + } + const blockNumberFromHeader = header.globalVariables.blockNumber.toBigInt(); if (blockNumberFromHeader !== l2BlockNum) { @@ -287,10 +322,10 @@ export async function getProofFromSubmitProofTx( let proof: Proof; if (functionName === 'submitEpochRootProof') { - const [_epochSize, nestedArgs, _fees, aggregationObjectHex, proofHex] = args!; + const [submitArgs, aggregationObjectHex, proofHex] = args!; aggregationObject = Buffer.from(hexToBytes(aggregationObjectHex)); - proverId = Fr.fromString(nestedArgs[6]); - archiveRoot = Fr.fromString(nestedArgs[1]); + proverId = Fr.fromString(submitArgs.args[6]); + archiveRoot = Fr.fromString(submitArgs.args[1]); proof = Proof.fromBuffer(Buffer.from(hexToBytes(proofHex))); } else { throw new Error(`Unexpected proof method called ${functionName}`); diff --git a/yarn-project/bb-prover/src/test/test_circuit_prover.ts b/yarn-project/bb-prover/src/test/test_circuit_prover.ts index 506728a6558..6441ca1ac60 100644 --- a/yarn-project/bb-prover/src/test/test_circuit_prover.ts +++ b/yarn-project/bb-prover/src/test/test_circuit_prover.ts @@ -38,6 +38,7 @@ import { import { createDebugLogger } from '@aztec/foundation/log'; import { sleep } from '@aztec/foundation/sleep'; import { Timer } from '@aztec/foundation/timer'; +import { fileURLToPath } from '@aztec/foundation/url'; import { ProtocolCircuitVks, type ServerProtocolArtifact, @@ -63,10 +64,16 @@ import { convertSimulatedPublicBaseRollupInputsToWitnessMap, convertSimulatedPublicBaseRollupOutputsFromWitnessMap, } from '@aztec/noir-protocol-circuits-types'; -import { type SimulationProvider, WASMSimulator, emitCircuitSimulationStats } from '@aztec/simulator'; +import { + NativeACVMSimulator, + type SimulationProvider, + WASMSimulator, + emitCircuitSimulationStats, +} from '@aztec/simulator'; import { type TelemetryClient, trackSpan } from '@aztec/telemetry-client'; import { type WitnessMap } from '@noir-lang/types'; +import path from 'path'; import { ProverInstrumentation } from '../instrumentation.js'; import { mapProtocolArtifactNameToCircuitName } from '../stats.js'; @@ -313,7 +320,21 @@ export class TestCircuitProver implements ServerCircuitProver { const witnessMap = convertInput(input); const circuitName = mapProtocolArtifactNameToCircuitName(artifactName); - const simulationProvider = this.simulationProvider ?? this.wasmSimulator; + let simulationProvider = this.simulationProvider ?? this.wasmSimulator; + // With the blob circuit, we require a long array of constants and lots of unconstrained. + // Unfortunately, this overflows wasm limits, so cannot be simulated via wasm. + // The below forces use of the native simulator just for this circuit: + if (artifactName == 'BlockRootRollupArtifact' && !(simulationProvider instanceof NativeACVMSimulator)) { + simulationProvider = new NativeACVMSimulator( + process.env.TEMP_DIR || `/tmp`, + process.env.ACVM_BINARY_PATH || + `${path.resolve( + path.dirname(fileURLToPath(import.meta.url)), + '../../../../noir/', + process.env.NOIR_RELEASE_DIRECTORY || 'noir-repo/target/release', + )}/acvm`, + ); + } const witness = await simulationProvider.simulateCircuit(witnessMap, SimulatedServerCircuitArtifacts[artifactName]); const result = convertOutput(witness); diff --git a/yarn-project/circuit-types/src/body.test.ts b/yarn-project/circuit-types/src/body.test.ts new file mode 100644 index 00000000000..5ed7188fdf2 --- /dev/null +++ b/yarn-project/circuit-types/src/body.test.ts @@ -0,0 +1,40 @@ +import { Fr } from '@aztec/circuits.js'; + +import { Body } from './body.js'; + +describe('Body', () => { + it('converts to and from buffer', () => { + const body = Body.random(); + const buf = body.toBuffer(); + expect(Body.fromBuffer(buf)).toEqual(body); + }); + + it('converts to and from fields', () => { + const body = Body.random(); + const fields = body.toBlobFields(); + // TODO(#8954): When logs are refactored into fields, we won't need to inject them here + expect( + Body.fromBlobFields( + fields, + body.noteEncryptedLogs, + body.encryptedLogs, + body.unencryptedLogs, + body.contractClassLogs, + ), + ).toEqual(body); + }); + + it('converts empty to and from fields', () => { + const body = Body.empty(); + const fields = body.toBlobFields(); + expect(Body.fromBlobFields(fields)).toEqual(body); + }); + + it('fails with invalid fields', () => { + const body = Body.random(); + const fields = body.toBlobFields(); + // Replace the initial field with an invalid encoding + fields[0] = new Fr(12); + expect(() => Body.fromBlobFields(fields)).toThrow('Invalid fields'); + }); +}); diff --git a/yarn-project/circuit-types/src/body.ts b/yarn-project/circuit-types/src/body.ts index 48617fa2016..dbaf41b33d6 100644 --- a/yarn-project/circuit-types/src/body.ts +++ b/yarn-project/circuit-types/src/body.ts @@ -1,5 +1,5 @@ +import { type Fr } from '@aztec/circuits.js'; import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize'; -import { computeUnbalancedMerkleRoot } from '@aztec/foundation/trees'; import { inspect } from 'util'; import { z } from 'zod'; @@ -51,26 +51,60 @@ export class Body { return new this(reader.readVector(TxEffect)); } + /** + * Returns a flat packed array of fields of all tx effects - used for blobs. + */ + toBlobFields() { + let flattened: Fr[] = []; + this.txEffects.forEach((effect: TxEffect) => { + flattened = flattened.concat(effect.toBlobFields()); + }); + return flattened; + } + + /** + * Decodes a block from blob fields. + * TODO(#8954): When logs are refactored into fields, we won't need to inject them here, instead just reading from fields in TxEffect.fromBlobFields. + * Logs are best input by gathering from the getters below, as they don't remove empty log arrays. + */ + static fromBlobFields( + fields: Fr[], + noteEncryptedLogs?: EncryptedNoteL2BlockL2Logs, + encryptedLogs?: EncryptedL2BlockL2Logs, + unencryptedLogs?: UnencryptedL2BlockL2Logs, + contractClassLogs?: ContractClass2BlockL2Logs, + ) { + const txEffectsFields: Fr[][] = []; + let checkedFields = 0; + while (checkedFields !== fields.length) { + if (!TxEffect.isFirstField(fields[checkedFields])) { + throw new Error('Invalid fields given to Body.fromBlobFields(): First field invalid.'); + } + const len = TxEffect.decodeFirstField(fields[checkedFields]).length; + txEffectsFields.push(fields.slice(checkedFields, checkedFields + len)); + checkedFields += len; + } + const txEffects = txEffectsFields + .filter(effect => effect.length) + .map((effect, i) => + TxEffect.fromBlobFields( + effect, + noteEncryptedLogs?.txLogs[i], + encryptedLogs?.txLogs[i], + unencryptedLogs?.txLogs[i], + contractClassLogs?.txLogs[i], + ), + ); + return new this(txEffects); + } + [inspect.custom]() { return `Body { txEffects: ${inspect(this.txEffects)}, emptyTxEffectsCount: ${this.numberOfTxsIncludingPadded}, - emptyTxEffectHash: ${TxEffect.empty().hash().toString('hex')}, - txsEffectsHash: ${this.getTxsEffectsHash().toString('hex')}, }`; } - /** - * Computes the transactions effects hash for the L2 block - * This hash is also computed in the `TxDecoder`. - * @returns The txs effects hash. - */ - getTxsEffectsHash() { - const emptyTxEffectHash = TxEffect.empty().hash(); - const leaves: Buffer[] = this.txEffects.map(txEffect => txEffect.hash()); - return computeUnbalancedMerkleRoot(leaves, emptyTxEffectHash); - } - get noteEncryptedLogs(): EncryptedNoteL2BlockL2Logs { const logs = this.txEffects.map(txEffect => txEffect.noteEncryptedLogs); @@ -97,7 +131,6 @@ export class Body { /** * Computes the number of transactions in the block including padding transactions. - * @dev Modified code from TxsDecoder.computeNumTxEffectsToPad */ get numberOfTxsIncludingPadded() { const numTxEffects = this.txEffects.length; diff --git a/yarn-project/circuit-types/src/interfaces/block-builder.ts b/yarn-project/circuit-types/src/interfaces/block-builder.ts index bad2bcda99b..3a0cfc05c14 100644 --- a/yarn-project/circuit-types/src/interfaces/block-builder.ts +++ b/yarn-project/circuit-types/src/interfaces/block-builder.ts @@ -8,17 +8,16 @@ import { type ProcessedTxHandler } from './processed-tx-handler.js'; export interface BlockBuilder extends ProcessedTxHandler { /** * Prepares to build a new block. Updates the L1 to L2 message tree. - * @param numTxs - The complete size of the block. * @param globalVariables - The global variables for this block. * @param l1ToL2Messages - The set of L1 to L2 messages to be included in this block. */ - startNewBlock(numTxs: number, globalVariables: GlobalVariables, l1ToL2Messages: Fr[]): Promise; + startNewBlock(globalVariables: GlobalVariables, l1ToL2Messages: Fr[]): Promise; /** - * Adds a processed tx to the block. Updates world state with the effects from this tx. - * @param tx - The transaction to be added. + * Adds all processed txs to the block. Updates world state with the effects from this tx. + * @param txs - The transactions to be added. */ - addNewTx(tx: ProcessedTx): Promise; + addTxs(txs: ProcessedTx[]): Promise; /** * Pads the block with empty txs if it hasn't reached the declared number of txs. diff --git a/yarn-project/circuit-types/src/interfaces/processed-tx-handler.ts b/yarn-project/circuit-types/src/interfaces/processed-tx-handler.ts index 2793b35bbef..6b215bc294b 100644 --- a/yarn-project/circuit-types/src/interfaces/processed-tx-handler.ts +++ b/yarn-project/circuit-types/src/interfaces/processed-tx-handler.ts @@ -3,8 +3,8 @@ import { type ProcessedTx } from '../tx/processed_tx.js'; /** Receives processed txs as part of block simulation or proving. */ export interface ProcessedTxHandler { /** - * Handles a processed txs. - * @param tx - The transaction to be handled. + * Handles processed txs. + * @param txs - The transactions to be handled. */ - addNewTx(tx: ProcessedTx): Promise; + addTxs(txs: ProcessedTx[]): Promise; } diff --git a/yarn-project/circuit-types/src/l2_block.ts b/yarn-project/circuit-types/src/l2_block.ts index bf5f8bffe33..82ac73e88fd 100644 --- a/yarn-project/circuit-types/src/l2_block.ts +++ b/yarn-project/circuit-types/src/l2_block.ts @@ -106,11 +106,9 @@ export class L2Block { numUnencryptedLogsPerCall, ); - const txsEffectsHash = body.getTxsEffectsHash(); - return new L2Block( makeAppendOnlyTreeSnapshot(l2BlockNum + 1), - makeHeader(0, l2BlockNum, slotNumber ?? l2BlockNum, txsEffectsHash, inHash), + makeHeader(0, txsPerBlock, l2BlockNum, slotNumber ?? l2BlockNum, inHash), body, ); } @@ -138,6 +136,7 @@ export class L2Block { /** * Computes the public inputs hash for the L2 block. * The same output as the hash of RootRollupPublicInputs. + * TODO(Miranda): Check where/if this is used (v diff now with epochs and blobs) * @returns The public input hash for the L2 block as a field element. */ // TODO(#4844) @@ -154,7 +153,6 @@ export class L2Block { this.header.state.partial.publicDataTree, this.header.state.l1ToL2MessageTree, this.archive, - this.body.getTxsEffectsHash(), ]; return sha256ToField(preimage); diff --git a/yarn-project/circuit-types/src/l2_block_code_to_purge.ts b/yarn-project/circuit-types/src/l2_block_code_to_purge.ts index 68b0cc3528a..d40979bd62e 100644 --- a/yarn-project/circuit-types/src/l2_block_code_to_purge.ts +++ b/yarn-project/circuit-types/src/l2_block_code_to_purge.ts @@ -19,14 +19,14 @@ import { toBufferBE } from '@aztec/foundation/bigint-buffer'; */ export function makeHeader( seed = 0, + numTxs: number | undefined = undefined, blockNumber: number | undefined = undefined, slotNumber: number | undefined = undefined, - txsEffectsHash: Buffer | undefined = undefined, inHash: Buffer | undefined = undefined, ): Header { return new Header( makeAppendOnlyTreeSnapshot(seed + 0x100), - makeContentCommitment(seed + 0x200, txsEffectsHash, inHash), + makeContentCommitment(seed + 0x200, numTxs, inHash), makeStateReference(seed + 0x600), makeGlobalVariables((seed += 0x700), blockNumber, slotNumber ?? blockNumber), fr(seed + 0x800), @@ -47,12 +47,12 @@ export function makeAppendOnlyTreeSnapshot(seed = 1): AppendOnlyTreeSnapshot { */ function makeContentCommitment( seed = 0, - txsEffectsHash: Buffer | undefined = undefined, + numTxs: number | undefined = undefined, inHash: Buffer | undefined = undefined, ): ContentCommitment { return new ContentCommitment( - new Fr(seed), - txsEffectsHash ?? toBufferBE(BigInt(seed + 0x100), NUM_BYTES_PER_SHA256), + numTxs ? new Fr(numTxs) : new Fr(seed), + toBufferBE(BigInt(seed + 0x100), NUM_BYTES_PER_SHA256), inHash ?? toBufferBE(BigInt(seed + 0x200), NUM_BYTES_PER_SHA256), toBufferBE(BigInt(seed + 0x300), NUM_BYTES_PER_SHA256), ); diff --git a/yarn-project/circuit-types/src/tx/processed_tx.ts b/yarn-project/circuit-types/src/tx/processed_tx.ts index 69da14b2f12..793c4f1e9e0 100644 --- a/yarn-project/circuit-types/src/tx/processed_tx.ts +++ b/yarn-project/circuit-types/src/tx/processed_tx.ts @@ -166,6 +166,12 @@ export function makeProcessedTxFromPrivateOnlyTx( }; } +export function toNumBlobFields(txs: ProcessedTx[]): number { + return txs.reduce((acc, tx) => { + return acc + tx.txEffect.toBlobFields().length; + }, 0); +} + export function makeProcessedTxFromTxWithPublicCalls( tx: Tx, avmProvingRequest: AvmProvingRequest, diff --git a/yarn-project/circuit-types/src/tx_effect.test.ts b/yarn-project/circuit-types/src/tx_effect.test.ts index 18df05d6dc4..9b50180e852 100644 --- a/yarn-project/circuit-types/src/tx_effect.test.ts +++ b/yarn-project/circuit-types/src/tx_effect.test.ts @@ -1,15 +1,74 @@ +import { Fr } from '@aztec/circuits.js'; + import { TxEffect } from './tx_effect.js'; describe('TxEffect', () => { - it('convert to and from buffer', () => { + it('converts to and from buffer', () => { const txEffect = TxEffect.random(); const buf = txEffect.toBuffer(); expect(TxEffect.fromBuffer(buf)).toEqual(txEffect); }); - it('hash of empty tx effect matches snapshot', () => { - const txEffectHash = TxEffect.empty().hash().toString('hex'); - // If you change this you have to change the hardcoded value in TxsDecoder.sol! - expect(txEffectHash).toMatchInlineSnapshot(`"00c2dece9c9f14c67b8aafabdcb80793f1cffe95a801e15d648fd214a0522ee8"`); + it('converts to and from fields', () => { + const txEffect = TxEffect.random(); + const fields = txEffect.toBlobFields(); + // TODO(#8954): When logs are refactored into fields, we won't need to inject them here + expect( + TxEffect.fromBlobFields( + fields, + txEffect.noteEncryptedLogs, + txEffect.encryptedLogs, + txEffect.unencryptedLogs, + txEffect.contractClassLogs, + ), + ).toEqual(txEffect); + }); + + it('converts empty to and from fields', () => { + const txEffect = TxEffect.empty(); + const fields = txEffect.toBlobFields(); + expect(TxEffect.fromBlobFields(fields)).toEqual(txEffect); + }); + + it('fails with invalid fields', () => { + let txEffect = TxEffect.random(); + let fields = txEffect.toBlobFields(); + // Replace the initial field with an invalid encoding + fields[0] = new Fr(12); + expect(() => TxEffect.fromBlobFields(fields)).toThrow('Invalid fields'); + + txEffect = TxEffect.random(); + fields = txEffect.toBlobFields(); + // Add an extra field + fields.push(new Fr(7)); + // TODO(#8954): When logs are refactored into fields, we won't need to inject them here + expect(() => + TxEffect.fromBlobFields( + fields, + txEffect.noteEncryptedLogs, + txEffect.encryptedLogs, + txEffect.unencryptedLogs, + txEffect.contractClassLogs, + ), + ).toThrow('Too many fields'); + + txEffect = TxEffect.random(); + fields = txEffect.toBlobFields(); + const buf = Buffer.alloc(3); + buf.writeUint8(6); + buf.writeUint8(0, 2); + // Add an extra field which looks like a valid prefix + const fakePrefix = new Fr(buf); + fields.push(fakePrefix); + // TODO(#8954): When logs are refactored into fields, we won't need to inject them here + expect(() => + TxEffect.fromBlobFields( + fields, + txEffect.noteEncryptedLogs, + txEffect.encryptedLogs, + txEffect.unencryptedLogs, + txEffect.contractClassLogs, + ), + ).toThrow('Invalid fields'); }); }); diff --git a/yarn-project/circuit-types/src/tx_effect.ts b/yarn-project/circuit-types/src/tx_effect.ts index 8a06a7fb09b..3c84eb6ae96 100644 --- a/yarn-project/circuit-types/src/tx_effect.ts +++ b/yarn-project/circuit-types/src/tx_effect.ts @@ -1,23 +1,54 @@ import { + CONTRACT_CLASS_LOGS_PREFIX, + ENCRYPTED_LOGS_PREFIX, Fr, + L2_L1_MSGS_PREFIX, MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, + NOTES_PREFIX, + NOTE_ENCRYPTED_LOGS_PREFIX, + NULLIFIERS_PREFIX, + PUBLIC_DATA_UPDATE_REQUESTS_PREFIX, PublicDataWrite, + REVERT_CODE_PREFIX, RevertCode, + TX_FEE_PREFIX, + TX_START_PREFIX, + UNENCRYPTED_LOGS_PREFIX, } from '@aztec/circuits.js'; import { makeTuple } from '@aztec/foundation/array'; +import { toBufferBE } from '@aztec/foundation/bigint-buffer'; import { padArrayEnd } from '@aztec/foundation/collection'; import { sha256Trunc } from '@aztec/foundation/crypto'; import { hexSchemaFor } from '@aztec/foundation/schemas'; -import { BufferReader, serializeArrayOfBufferableToVector, serializeToBuffer } from '@aztec/foundation/serialize'; +import { + BufferReader, + FieldReader, + serializeArrayOfBufferableToVector, + serializeToBuffer, +} from '@aztec/foundation/serialize'; import { inspect } from 'util'; -import { ContractClassTxL2Logs, EncryptedNoteTxL2Logs, EncryptedTxL2Logs, UnencryptedTxL2Logs } from './logs/index.js'; +import { + ContractClassTxL2Logs, + type EncryptedL2Log, + EncryptedL2NoteLog, + EncryptedNoteTxL2Logs, + EncryptedTxL2Logs, + type TxL2Logs, + type UnencryptedL2Log, + UnencryptedTxL2Logs, +} from './logs/index.js'; import { TxHash } from './tx/tx_hash.js'; +// These are helper constants to decode tx effects from blob encoded fields +const TX_START_PREFIX_BYTES_LENGTH = TX_START_PREFIX.toString(16).length / 2; +// 7 bytes for: | 0 | txlen[0] | txlen[1] | 0 | REVERT_CODE_PREFIX | 0 | revertCode | +const TX_EFFECT_PREFIX_BYTE_LENGTH = TX_START_PREFIX_BYTES_LENGTH + 7; + export class TxEffect { constructor( /** @@ -143,51 +174,10 @@ export class TxEffect { ); } - /** - * Computes the hash of the TxEffect object. - * @returns The hash of the TxEffect object. - * @dev This function must correspond with compute_tx_effects_hash() in Noir and TxsDecoder.sol decode(). - */ - hash() { - const padBuffer = (buf: Buffer, length: number) => Buffer.concat([buf, Buffer.alloc(length - buf.length)]); - - const noteHashesBuffer = padBuffer(serializeToBuffer(this.noteHashes), Fr.SIZE_IN_BYTES * MAX_NOTE_HASHES_PER_TX); - const nullifiersBuffer = padBuffer(serializeToBuffer(this.nullifiers), Fr.SIZE_IN_BYTES * MAX_NULLIFIERS_PER_TX); - const outHashBuffer = this.txOutHash(); - const publicDataWritesBuffer = padBuffer( - serializeToBuffer(this.publicDataWrites), - PublicDataWrite.SIZE_IN_BYTES * MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, - ); - - const noteEncryptedLogsHashKernel0 = this.noteEncryptedLogs.hash(); - const encryptedLogsHashKernel0 = this.encryptedLogs.hash(); - const unencryptedLogsHashKernel0 = this.unencryptedLogs.hash(); - const contractClassLogsHashKernel0 = this.contractClassLogs.hash(); - - const inputValue = Buffer.concat([ - this.revertCode.toHashPreimage(), - this.transactionFee.toBuffer(), - noteHashesBuffer, - nullifiersBuffer, - outHashBuffer, - publicDataWritesBuffer, - this.noteEncryptedLogsLength.toBuffer(), - this.encryptedLogsLength.toBuffer(), - this.unencryptedLogsLength.toBuffer(), - this.contractClassLogsLength.toBuffer(), - noteEncryptedLogsHashKernel0, - encryptedLogsHashKernel0, - unencryptedLogsHashKernel0, - contractClassLogsHashKernel0, - ]); - - return sha256Trunc(inputValue); - } - /** * Computes txOutHash of this tx effect. * TODO(#7218): Revert to fixed height tree for outbox - * @dev Follows computeTxOutHash in TxsDecoder.sol and new_sha in variable_merkle_tree.nr + * @dev Follows new_sha in variable_merkle_tree.nr */ txOutHash() { const { l2ToL1Msgs } = this; @@ -224,7 +214,7 @@ export class TxEffect { const contractClassLogs = ContractClassTxL2Logs.random(1, 1); return new TxEffect( RevertCode.random(), - Fr.random(), + new Fr(Math.floor(Math.random() * 100_000)), makeTuple(MAX_NOTE_HASHES_PER_TX, Fr.random), makeTuple(MAX_NULLIFIERS_PER_TX, Fr.random), makeTuple(MAX_L2_TO_L1_MSGS_PER_TX, Fr.random), @@ -268,6 +258,273 @@ export class TxEffect { return this.toBuffer().toString('hex'); } + /** + * Returns the prefix as used in a blob. + * Used to prefix a 'block' of tx effects with its type and length. + */ + private toPrefix(type: number, length: number): Fr { + const buf = Buffer.alloc(3); + buf.writeUint8(type); + buf.writeUint8(length, 2); + return new Fr(buf); + } + + /** + * Decodes the prefix as used in a blob to tx effect type and length. + */ + static fromPrefix(prefix: Fr) { + const buf = prefix.toBuffer().subarray(-3); + return { type: buf[0], length: buf[2] }; + } + + /** + * Encodes the first field of a tx effect as used in a blob: + * TX_START_PREFIX | 0 | txlen[0] txlen[1] | 0 | REVERT_CODE_PREFIX | 0 | revert_code + */ + private encodeFirstField(length: number, revertCode: RevertCode) { + const lengthBuf = Buffer.alloc(2); + lengthBuf.writeUInt16BE(length, 0); + return new Fr( + Buffer.concat([ + toBufferBE(TX_START_PREFIX, TX_START_PREFIX_BYTES_LENGTH), + Buffer.alloc(1), + lengthBuf, + Buffer.alloc(1), + Buffer.from([REVERT_CODE_PREFIX]), + Buffer.alloc(1), + revertCode.toBuffer(), + ]), + ); + } + + /** + * Decodes the first field of a tx effect as used in a blob: + * TX_START_PREFIX | 0 | txlen[0] txlen[1] | 0 | REVERT_CODE_PREFIX | 0 | revert_code + * Assumes that isFirstField has been called already. + */ + static decodeFirstField(field: Fr) { + const buf = field.toBuffer().subarray(-TX_EFFECT_PREFIX_BYTE_LENGTH); + return { + length: new Fr(buf.subarray(TX_START_PREFIX_BYTES_LENGTH + 1, TX_START_PREFIX_BYTES_LENGTH + 3)).toNumber(), + revertCode: buf[buf.length - 1], + }; + } + + /** + * Determines whether a field is the first field of a tx effect + */ + static isFirstField(field: Fr) { + const buf = field.toBuffer(); + if ( + !buf + .subarray(0, field.size - TX_EFFECT_PREFIX_BYTE_LENGTH) + .equals(Buffer.alloc(field.size - TX_EFFECT_PREFIX_BYTE_LENGTH)) + ) { + return false; + } + const sliced = buf.subarray(-TX_EFFECT_PREFIX_BYTE_LENGTH); + if ( + // Checking we start with the correct prefix... + !new Fr(sliced.subarray(0, TX_START_PREFIX_BYTES_LENGTH)).equals(new Fr(TX_START_PREFIX)) || + // ...and include the revert code prefix.. + sliced[sliced.length - 3] !== REVERT_CODE_PREFIX || + // ...and the following revert code is valid. + sliced[sliced.length - 1] > 4 + ) { + return false; + } + return true; + } + + /** + * Returns a flat packed array of prefixed fields of all tx effects, used for blobs. + */ + toBlobFields(): Fr[] { + if (this.isEmpty()) { + return []; + } + const flattened: Fr[] = []; + // We reassign the first field when we know the length of all effects - see below + flattened.push(Fr.ZERO); + // TODO: how long should tx fee be? For now, not using toPrefix() + flattened.push( + new Fr( + Buffer.concat([Buffer.from([TX_FEE_PREFIX]), Buffer.alloc(1), this.transactionFee.toBuffer().subarray(3)]), + ), + ); + if (this.noteHashes.length) { + flattened.push(this.toPrefix(NOTES_PREFIX, this.noteHashes.length)); + flattened.push(...this.noteHashes); + } + if (this.nullifiers.length) { + flattened.push(this.toPrefix(NULLIFIERS_PREFIX, this.nullifiers.length)); + flattened.push(...this.nullifiers); + } + if (this.l2ToL1Msgs.length) { + flattened.push(this.toPrefix(L2_L1_MSGS_PREFIX, this.l2ToL1Msgs.length)); + flattened.push(...this.l2ToL1Msgs); + } + if (this.publicDataWrites.length) { + flattened.push(this.toPrefix(PUBLIC_DATA_UPDATE_REQUESTS_PREFIX, this.publicDataWrites.length * 2)); + flattened.push(...this.publicDataWrites.map(w => [w.leafSlot, w.value]).flat()); + } + // TODO(#8954): When logs are refactored into fields, we will append the values here + // Currently appending the single log hash as an interim solution + if (this.noteEncryptedLogs.unrollLogs().length) { + flattened.push(this.toPrefix(NOTE_ENCRYPTED_LOGS_PREFIX, this.noteEncryptedLogs.unrollLogs().length)); + flattened.push(...this.noteEncryptedLogs.unrollLogs().map(log => Fr.fromBuffer(log.hash()))); + } + if (this.encryptedLogs.unrollLogs().length) { + flattened.push(this.toPrefix(ENCRYPTED_LOGS_PREFIX, this.encryptedLogs.unrollLogs().length)); + flattened.push(...this.encryptedLogs.unrollLogs().map(log => Fr.fromBuffer(log.getSiloedHash()))); + } + if (this.unencryptedLogs.unrollLogs().length) { + flattened.push(this.toPrefix(UNENCRYPTED_LOGS_PREFIX, this.unencryptedLogs.unrollLogs().length)); + flattened.push(...this.unencryptedLogs.unrollLogs().map(log => Fr.fromBuffer(log.getSiloedHash()))); + } + if (this.contractClassLogs.unrollLogs().length) { + flattened.push(this.toPrefix(CONTRACT_CLASS_LOGS_PREFIX, this.contractClassLogs.unrollLogs().length)); + flattened.push(...this.contractClassLogs.unrollLogs().map(log => Fr.fromBuffer(log.getSiloedHash()))); + } + + // The first value appended to each list of fields representing a tx effect is: + // TX_START_PREFIX | 0 | txlen[0] txlen[1] | 0 | REVERT_CODE_PREFIX | 0 | revert_code + // Tx start and len are to aid decomposing/ identifying when we reach a new tx effect + // The remaining bytes are used for revert code, since that only requires 3 bytes + flattened[0] = this.encodeFirstField(flattened.length, this.revertCode); + return flattened; + } + + /** + * Decodes a flat packed array of prefixed fields to TxEffect + * TODO(#8954): When logs are refactored into fields, we won't need to inject them here, instead just reading from fields as below + */ + static fromBlobFields( + fields: Fr[] | FieldReader, + noteEncryptedLogs?: EncryptedNoteTxL2Logs, + encryptedLogs?: EncryptedTxL2Logs, + unencryptedLogs?: UnencryptedTxL2Logs, + contractClassLogs?: ContractClassTxL2Logs, + ) { + const ensureEmpty = (arr: Array) => { + if (arr.length) { + throw new Error('Invalid fields given to TxEffect.fromBlobFields(): Attempted to assign property twice.'); + } + }; + const effect = this.empty(); + if (!(fields instanceof FieldReader) && !fields.length) { + return effect; + } + const reader = FieldReader.asReader(fields); + const firstField = reader.readField(); + if (!this.isFirstField(firstField)) { + throw new Error('Invalid fields given to TxEffect.fromBlobFields(): First field invalid.'); + } + const { length: _, revertCode } = this.decodeFirstField(firstField); + effect.revertCode = RevertCode.fromField(new Fr(revertCode)); + // TODO: how long should tx fee be? For now, not using fromPrefix() + const prefixedFee = reader.readField(); + // NB: Fr.fromBuffer hangs here if you provide a buffer less than 32 in len + effect.transactionFee = Fr.fromBuffer(Buffer.concat([Buffer.alloc(3), prefixedFee.toBuffer().subarray(3)])); + while (!reader.isFinished()) { + const { type, length } = this.fromPrefix(reader.readField()); + switch (type) { + case NOTES_PREFIX: + ensureEmpty(effect.noteHashes); + effect.noteHashes = reader.readFieldArray(length); + break; + case NULLIFIERS_PREFIX: + ensureEmpty(effect.nullifiers); + effect.nullifiers = reader.readFieldArray(length); + break; + case L2_L1_MSGS_PREFIX: + ensureEmpty(effect.l2ToL1Msgs); + effect.l2ToL1Msgs = reader.readFieldArray(length); + break; + case PUBLIC_DATA_UPDATE_REQUESTS_PREFIX: { + ensureEmpty(effect.publicDataWrites); + const publicDataPairs = reader.readFieldArray(length); + for (let i = 0; i < length; i += 2) { + effect.publicDataWrites.push(new PublicDataWrite(publicDataPairs[i], publicDataPairs[i + 1])); + } + break; + } + // TODO(#8954): When logs are refactored into fields, we will append the read fields here + case NOTE_ENCRYPTED_LOGS_PREFIX: + // effect.noteEncryptedLogs = EncryptedNoteTxL2Logs.fromFields(reader.readFieldArray(length)); + ensureEmpty(effect.noteEncryptedLogs.functionLogs); + if (!noteEncryptedLogs) { + throw new Error(`Tx effect has note logs, but they were not passed raw to .fromBlobFields()`); + } + this.checkInjectedLogs(noteEncryptedLogs, reader.readFieldArray(length)); + effect.noteEncryptedLogs = noteEncryptedLogs; + effect.noteEncryptedLogsLength = new Fr(noteEncryptedLogs.getKernelLength()); + break; + case ENCRYPTED_LOGS_PREFIX: + // effect.encryptedLogs = EncryptedTxL2Logs.fromFields(reader.readFieldArray(length)); + ensureEmpty(effect.encryptedLogs.functionLogs); + if (!encryptedLogs) { + throw new Error(`Tx effect has encrypted logs, but they were not passed raw to .fromBlobFields()`); + } + this.checkInjectedLogs(encryptedLogs, reader.readFieldArray(length)); + effect.encryptedLogs = encryptedLogs; + effect.encryptedLogsLength = new Fr(encryptedLogs.getKernelLength()); + break; + case UNENCRYPTED_LOGS_PREFIX: + // effect.unencryptedLogs = UnencryptedTxL2Logs.fromFields(reader.readFieldArray(length)); + ensureEmpty(effect.unencryptedLogs.functionLogs); + if (!unencryptedLogs) { + throw new Error(`Tx effect has unencrypted logs, but they were not passed raw to .fromBlobFields()`); + } + this.checkInjectedLogs(unencryptedLogs, reader.readFieldArray(length)); + effect.unencryptedLogs = unencryptedLogs; + effect.unencryptedLogsLength = new Fr(unencryptedLogs.getKernelLength()); + break; + case CONTRACT_CLASS_LOGS_PREFIX: + // effect.contractClassLogs = ContractClassTxL2Logs.fromFields(reader.readFieldArray(length)); + ensureEmpty(effect.contractClassLogs.functionLogs); + if (!contractClassLogs) { + throw new Error(`Tx effect has contractClassLogs logs, but they were not passed raw to .fromBlobFields()`); + } + this.checkInjectedLogs(contractClassLogs, reader.readFieldArray(length)); + effect.contractClassLogs = contractClassLogs; + effect.contractClassLogsLength = new Fr(contractClassLogs.getKernelLength()); + break; + case REVERT_CODE_PREFIX: + default: + throw new Error(`Too many fields to decode given to TxEffect.fromBlobFields()`); + } + } + + // If the input fields have no logs, ensure we match the original struct by reassigning injected logs + effect.noteEncryptedLogs = + !effect.noteEncryptedLogs.getTotalLogCount() && noteEncryptedLogs ? noteEncryptedLogs : effect.noteEncryptedLogs; + effect.encryptedLogs = + !effect.encryptedLogs.getTotalLogCount() && encryptedLogs ? encryptedLogs : effect.encryptedLogs; + effect.unencryptedLogs = + !effect.unencryptedLogs.getTotalLogCount() && unencryptedLogs ? unencryptedLogs : effect.unencryptedLogs; + effect.contractClassLogs = + !effect.contractClassLogs.getTotalLogCount() && contractClassLogs ? contractClassLogs : effect.contractClassLogs; + return effect; + } + + // TODO(#8954): Remove below when logs are refactored into fields + private static checkInjectedLogs( + injected: TxL2Logs, + expectedHashes: Fr[], + ) { + injected.unrollLogs().forEach((log, i) => { + const logHash = log instanceof EncryptedL2NoteLog ? log.hash() : log.getSiloedHash(); + if (!Fr.fromBuffer(logHash).equals(expectedHashes[i])) { + throw new Error( + `Log hash mismatch when reconstructing tx effect. Expected: ${Fr.fromBuffer(logHash)}, Got: ${ + expectedHashes[i] + }`, + ); + } + }); + } + toJSON() { return this.toString(); } diff --git a/yarn-project/circuits.js/src/constants.gen.ts b/yarn-project/circuits.js/src/constants.gen.ts index ff6911cf4f3..08f07a540bb 100644 --- a/yarn-project/circuits.js/src/constants.gen.ts +++ b/yarn-project/circuits.js/src/constants.gen.ts @@ -79,8 +79,9 @@ export const PRIVATE_KERNEL_RESET_INDEX = 20; export const FUNCTION_SELECTOR_NUM_BYTES = 4; export const INITIALIZATION_SLOT_SEPARATOR = 1000000000; export const INITIAL_L2_BLOCK_NUM = 1; +export const FIELDS_PER_BLOB = 4096; +export const BLOBS_PER_BLOCK = 3; export const PRIVATE_LOG_SIZE_IN_BYTES = 576; -export const BLOB_SIZE_IN_BYTES = 126976; export const AZTEC_MAX_EPOCH_DURATION = 32; export const GENESIS_ARCHIVE_ROOT = 19007378675971183768036762391356802220352606103602592933942074152320327194720n; export const FEE_JUICE_INITIAL_MINT = 200000000000000; @@ -148,6 +149,9 @@ export const FUNCTION_DATA_LENGTH = 2; export const FUNCTION_LEAF_PREIMAGE_LENGTH = 5; export const GLOBAL_VARIABLES_LENGTH = 9; export const APPEND_ONLY_TREE_SNAPSHOT_LENGTH = 2; +export const APPEND_ONLY_TREE_SNAPSHOT_LENGTH_BYTES = 36; +export const SPONGE_BLOB_LENGTH = 11; +export const BLOB_PUBLIC_INPUTS = 6; export const L1_TO_L2_MESSAGE_LENGTH = 6; export const L2_TO_L1_MESSAGE_LENGTH = 3; export const SCOPED_L2_TO_L1_MESSAGE_LENGTH = 4; @@ -180,6 +184,7 @@ export const TX_CONTEXT_LENGTH = 8; export const TX_REQUEST_LENGTH = 12; export const TOTAL_FEES_LENGTH = 1; export const HEADER_LENGTH = 24; +export const HEADER_LENGTH_BYTES = 616; export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 490; export const PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 866; export const PRIVATE_CONTEXT_INPUTS_LENGTH = 37; @@ -201,9 +206,9 @@ export const PRIVATE_TO_PUBLIC_KERNEL_CIRCUIT_PUBLIC_INPUTS_LENGTH = 1140; export const KERNEL_CIRCUIT_PUBLIC_INPUTS_LENGTH = 605; export const AVM_CIRCUIT_PUBLIC_INPUTS_LENGTH = 1006; export const CONSTANT_ROLLUP_DATA_LENGTH = 13; -export const BASE_OR_MERGE_PUBLIC_INPUTS_LENGTH = 30; -export const BLOCK_ROOT_OR_BLOCK_MERGE_PUBLIC_INPUTS_LENGTH = 90; -export const ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH = 76; +export const BASE_OR_MERGE_PUBLIC_INPUTS_LENGTH = 51; +export const BLOCK_ROOT_OR_BLOCK_MERGE_PUBLIC_INPUTS_LENGTH = 666; +export const ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH = 652; export const GET_NOTES_ORACLE_RETURN_LENGTH = 674; export const NOTE_HASHES_NUM_BYTES_PER_BASE_ROLLUP = 2048; export const NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP = 2048; @@ -317,6 +322,17 @@ export const AVM_EMITNOTEHASH_BASE_DA_GAS = 512; export const AVM_EMITNULLIFIER_BASE_DA_GAS = 512; export const AVM_SENDL2TOL1MSG_BASE_DA_GAS = 512; export const AVM_EMITUNENCRYPTEDLOG_DYN_DA_GAS = 512; +export const TX_START_PREFIX = 8392562855083340404n; +export const REVERT_CODE_PREFIX = 1; +export const TX_FEE_PREFIX = 2; +export const NOTES_PREFIX = 3; +export const NULLIFIERS_PREFIX = 4; +export const L2_L1_MSGS_PREFIX = 5; +export const PUBLIC_DATA_UPDATE_REQUESTS_PREFIX = 6; +export const NOTE_ENCRYPTED_LOGS_PREFIX = 7; +export const ENCRYPTED_LOGS_PREFIX = 8; +export const UNENCRYPTED_LOGS_PREFIX = 9; +export const CONTRACT_CLASS_LOGS_PREFIX = 10; export const PROOF_TYPE_PLONK = 0; export const PROOF_TYPE_HONK = 1; export const PROOF_TYPE_OINK = 2; diff --git a/yarn-project/circuits.js/src/structs/blob_public_inputs.test.ts b/yarn-project/circuits.js/src/structs/blob_public_inputs.test.ts new file mode 100644 index 00000000000..9dc9c42d7be --- /dev/null +++ b/yarn-project/circuits.js/src/structs/blob_public_inputs.test.ts @@ -0,0 +1,79 @@ +import { Blob } from '@aztec/foundation/blob'; +import { randomInt } from '@aztec/foundation/crypto'; + +import { BLOBS_PER_BLOCK, BLOB_PUBLIC_INPUTS } from '../constants.gen.js'; +import { makeBlobPublicInputs, makeBlockBlobPublicInputs } from '../tests/factories.js'; +import { BlobPublicInputs, BlockBlobPublicInputs } from './blob_public_inputs.js'; +import { Fr } from './index.js'; + +describe('BlobPublicInputs', () => { + let blobPI: BlobPublicInputs; + + beforeAll(() => { + blobPI = makeBlobPublicInputs(randomInt(1000)); + }); + + it('serializes to buffer and deserializes it back', () => { + const buffer = blobPI.toBuffer(); + const res = BlobPublicInputs.fromBuffer(buffer); + expect(res).toEqual(blobPI); + }); + + it('converts correctly from Blob class', () => { + const blob = new Blob(Array(400).fill(new Fr(3))); + const converted = BlobPublicInputs.fromBlob(blob); + expect(converted.z).toEqual(blob.challengeZ); + expect(Buffer.from(converted.y.toString(16), 'hex')).toEqual(blob.evaluationY); + expect(converted.kzgCommitment).toEqual(blob.commitmentToFields()); + expect(converted.commitmentToBuffer()).toEqual(blob.commitment); + }); + + it('serializes to field array and deserializes it back', () => { + const fieldArray = blobPI.toFields(); + const res = BlobPublicInputs.fromFields(fieldArray); + expect(res).toEqual(blobPI); + }); + + // NB: In noir, blob.y is represented as a BigNum = 3x Fr fields. In ts, we use bigint for ease of calcs. + it('number of fields matches constant', () => { + const fields = blobPI.toFields(); + expect(fields.length).toBe(BLOB_PUBLIC_INPUTS); + }); +}); + +describe('BlockBlobPublicInputs', () => { + let blobPI: BlockBlobPublicInputs; + + beforeAll(() => { + blobPI = makeBlockBlobPublicInputs(randomInt(1000)); + }); + + it('serializes to buffer and deserializes it back', () => { + const buffer = blobPI.toBuffer(); + const res = BlockBlobPublicInputs.fromBuffer(buffer); + expect(res).toEqual(blobPI); + }); + + it('converts correctly from Blob class', () => { + const blobs = Array.from({ length: BLOBS_PER_BLOCK }, (_, i) => new Blob(Array(400).fill(new Fr(i + 1)))); + const converted = BlockBlobPublicInputs.fromBlobs(blobs); + converted.inner.forEach((blobPI, i) => { + expect(blobPI.z).toEqual(blobs[i].challengeZ); + expect(Buffer.from(blobPI.y.toString(16), 'hex')).toEqual(blobs[i].evaluationY); + expect(blobPI.kzgCommitment).toEqual(blobs[i].commitmentToFields()); + expect(blobPI.commitmentToBuffer()).toEqual(blobs[i].commitment); + }); + }); + + it('serializes to field array and deserializes it back', () => { + const fieldArray = blobPI.toFields(); + const res = BlockBlobPublicInputs.fromFields(fieldArray); + expect(res).toEqual(blobPI); + }); + + // NB: In noir, blob.y is represented as a BigNum = 3x Fr fields. In ts, we use bigint for ease of calcs. + it('number of fields matches constant', () => { + const fields = blobPI.toFields(); + expect(fields.length).toBe(BLOB_PUBLIC_INPUTS * BLOBS_PER_BLOCK); + }); +}); diff --git a/yarn-project/circuits.js/src/structs/blob_public_inputs.ts b/yarn-project/circuits.js/src/structs/blob_public_inputs.ts new file mode 100644 index 00000000000..bbec9f51eaf --- /dev/null +++ b/yarn-project/circuits.js/src/structs/blob_public_inputs.ts @@ -0,0 +1,161 @@ +import { makeTuple } from '@aztec/foundation/array'; +import { toBigIntBE, toBufferBE, toHex } from '@aztec/foundation/bigint-buffer'; +import { type Blob } from '@aztec/foundation/blob'; +import { sha256, sha256Trunc } from '@aztec/foundation/crypto'; +import { Fr } from '@aztec/foundation/fields'; +import { BufferReader, FieldReader, type Tuple, serializeToBuffer } from '@aztec/foundation/serialize'; +import { type FieldsOf } from '@aztec/foundation/types'; + +import { BLOBS_PER_BLOCK } from '../constants.gen.js'; + +// The prefix to the EVM blobHash, defined here: https://eips.ethereum.org/EIPS/eip-4844#specification +// Also defined in yarn-project/foundation/src/blob/index.ts, which can't take in our circuits.js constants +export const VERSIONED_HASH_VERSION_KZG = 0x01; + +/** + * Public inputs required to be passed from our rollup circuits to verify a blob. + */ +export class BlobPublicInputs { + constructor( + /** Challenge point z (= H(H(tx_effects), kzgCommmitment). */ + public z: Fr, + /** Evaluation y = p(z), where p() is the blob polynomial. */ + public y: bigint, + /** Commitment to the blob C. */ + public kzgCommitment: Tuple, + ) {} + + static empty(): BlobPublicInputs { + return new BlobPublicInputs(Fr.ZERO, 0n, [Fr.ZERO, Fr.ZERO]); + } + + isEmpty(): boolean { + return this.z.isZero() && this.y == 0n && this.kzgCommitment[0].isZero() && this.kzgCommitment[1].isZero(); + } + + static fromBuffer(buffer: Buffer | BufferReader): BlobPublicInputs { + const reader = BufferReader.asReader(buffer); + return new BlobPublicInputs(Fr.fromBuffer(reader), toBigIntBE(reader.readBytes(32)), reader.readArray(2, Fr)); + } + + toBuffer() { + return serializeToBuffer(...BlobPublicInputs.getFields(this)); + } + + static fromFields(fields: Fr[] | FieldReader): BlobPublicInputs { + const reader = FieldReader.asReader(fields); + // TODO: Create a BigNum to fields conversion we can use here and in type_conversion.ts + const fromBigNum = (fieldArr: Fr[]) => { + return BigInt( + fieldArr[2].toString().concat(fieldArr[1].toString().substring(2), fieldArr[0].toString().substring(2)), + ); + }; + return new BlobPublicInputs(reader.readField(), fromBigNum(reader.readFieldArray(3)), reader.readFieldArray(2)); + } + + // NB: y is NOT a BN254 field, it's a larger BLS field, we cannot use serialiseToFields here as it assumes bigints will fit + // TODO: Create a BigNum to fields conversion we can use here and in type_conversion.ts + toFields() { + const hex = toHex(this.y, true); + const bigNum = [ + Fr.fromString('0x' + hex.substring(36)), + Fr.fromString('0x' + hex.substring(6, 36)), + Fr.fromString(hex.substring(0, 6)), + ]; + return [this.z, ...bigNum, ...this.kzgCommitment]; + } + + static getFields(fields: FieldsOf) { + return [fields.z, fields.y, fields.kzgCommitment] as const; + } + + static fromBlob(input: Blob): BlobPublicInputs { + return new BlobPublicInputs(input.challengeZ, toBigIntBE(input.evaluationY), input.commitmentToFields()); + } + + getBlobHash(): Buffer { + const hash = sha256(this.commitmentToBuffer()); + hash[0] = VERSIONED_HASH_VERSION_KZG; + return hash; + } + + // Performs the reverse conversion of blob.commitmentToFields() + // 48 bytes encoded in fields as [Fr, Fr] = [0->31, 31->48] + commitmentToBuffer(): Buffer { + return Buffer.concat([ + this.kzgCommitment[0].toBuffer().subarray(1), + this.kzgCommitment[1].toBuffer().subarray(-17), + ]); + } + + equals(other: BlobPublicInputs) { + return ( + this.z.equals(other.z) && + this.y == other.y && + this.kzgCommitment[0].equals(other.kzgCommitment[0]) && + this.kzgCommitment[1].equals(other.kzgCommitment[1]) + ); + } +} + +// NB: it is much cleaner throughout the protocol circuits to define this struct rather than use a nested array. +// Once we accumulate blob inputs, it should be removed, and we just use BlobPublicInputs::accumulate everywhere. +export class BlockBlobPublicInputs { + constructor(public inner: Tuple) {} + + static empty(): BlockBlobPublicInputs { + return new BlockBlobPublicInputs(makeTuple(BLOBS_PER_BLOCK, BlobPublicInputs.empty)); + } + + static fromBuffer(buffer: Buffer | BufferReader): BlockBlobPublicInputs { + const reader = BufferReader.asReader(buffer); + return new BlockBlobPublicInputs(reader.readArray(BLOBS_PER_BLOCK, BlobPublicInputs)); + } + + toBuffer() { + return serializeToBuffer(...BlockBlobPublicInputs.getFields(this)); + } + + static fromFields(fields: Fr[] | FieldReader): BlockBlobPublicInputs { + const reader = FieldReader.asReader(fields); + return new BlockBlobPublicInputs(reader.readArray(BLOBS_PER_BLOCK, BlobPublicInputs)); + } + + toFields() { + return this.inner.map(i => i.toFields()).flat(); + } + + static getFields(fields: FieldsOf) { + return [fields.inner] as const; + } + + static fromBlobs(inputs: Blob[]): BlockBlobPublicInputs { + const inner = makeTuple(BLOBS_PER_BLOCK, BlobPublicInputs.empty); + if (inputs.length > BLOBS_PER_BLOCK) { + throw new Error(`Can only fit ${BLOBS_PER_BLOCK} in one BlockBlobPublicInputs instance (given ${inputs.length})`); + } + inputs.forEach((input, i) => { + inner[i] = BlobPublicInputs.fromBlob(input); + }); + return new BlockBlobPublicInputs(inner); + } + + getBlobsHash() { + const blobHashes = this.inner.map(item => (item.isEmpty() ? Buffer.alloc(0) : item.getBlobHash())); + return sha256Trunc(serializeToBuffer(blobHashes)); + } + + // The below is used to send to L1 for proof verification + toString() { + const nonEmptyBlobs = this.inner.filter(item => !item.isEmpty()); + // Write the number of blobs for L1 to verify + let buf = Buffer.alloc(1); + buf.writeUInt8(nonEmptyBlobs.length); + // Using standard toBuffer() does not correctly encode the commitment + // On L1, it's a 48 byte number, which we convert to 2 fields for use in the circuits + nonEmptyBlobs.forEach(blob => { + buf = Buffer.concat([buf, blob.z.toBuffer(), toBufferBE(blob.y, 32), blob.commitmentToBuffer()]); + }); + return buf.toString('hex'); + } +} diff --git a/yarn-project/circuits.js/src/structs/content_commitment.ts b/yarn-project/circuits.js/src/structs/content_commitment.ts index 578a6831ff5..2eb8846ec60 100644 --- a/yarn-project/circuits.js/src/structs/content_commitment.ts +++ b/yarn-project/circuits.js/src/structs/content_commitment.ts @@ -9,12 +9,13 @@ import { CONTENT_COMMITMENT_LENGTH } from '../constants.gen.js'; export const NUM_BYTES_PER_SHA256 = 32; export class ContentCommitment { - constructor(public numTxs: Fr, public txsEffectsHash: Buffer, public inHash: Buffer, public outHash: Buffer) { - if (txsEffectsHash.length !== NUM_BYTES_PER_SHA256) { - throw new Error(`txsEffectsHash buffer must be ${NUM_BYTES_PER_SHA256} bytes`); + constructor(public numTxs: Fr, public blobsHash: Buffer, public inHash: Buffer, public outHash: Buffer) { + // NB: we do not calculate blobHash in the circuit, but we still truncate it so it fits in a field + if (blobsHash.length !== NUM_BYTES_PER_SHA256) { + throw new Error(`blobHash buffer must be ${NUM_BYTES_PER_SHA256} bytes`); } - if (txsEffectsHash[0] !== 0) { - throw new Error(`txsEffectsHash buffer should be truncated and left padded`); + if (blobsHash[0] !== 0) { + throw new Error(`blobHash buffer should be truncated and left padded`); } if (inHash.length !== NUM_BYTES_PER_SHA256) { throw new Error(`inHash buffer must be ${NUM_BYTES_PER_SHA256} bytes`); @@ -34,19 +35,17 @@ export class ContentCommitment { return z .object({ numTxs: schemas.Fr, - txsEffectsHash: schemas.BufferHex, + blobsHash: schemas.BufferHex, inHash: schemas.BufferHex, outHash: schemas.BufferHex, }) - .transform( - ({ numTxs, txsEffectsHash, inHash, outHash }) => new ContentCommitment(numTxs, txsEffectsHash, inHash, outHash), - ); + .transform(({ numTxs, blobsHash, inHash, outHash }) => new ContentCommitment(numTxs, blobsHash, inHash, outHash)); } toJSON() { return { numTxs: this.numTxs, - txsEffectsHash: this.txsEffectsHash.toString('hex'), + blobsHash: this.blobsHash.toString('hex'), inHash: this.inHash.toString('hex'), outHash: this.outHash.toString('hex'), }; @@ -57,18 +56,20 @@ export class ContentCommitment { } toBuffer() { - return serializeToBuffer(this.numTxs, this.txsEffectsHash, this.inHash, this.outHash); + return serializeToBuffer(this.numTxs, this.blobsHash, this.inHash, this.outHash); } toFields(): Fr[] { const serialized = [ this.numTxs, - Fr.fromBuffer(this.txsEffectsHash), + Fr.fromBuffer(this.blobsHash), Fr.fromBuffer(this.inHash), Fr.fromBuffer(this.outHash), ]; if (serialized.length !== CONTENT_COMMITMENT_LENGTH) { - throw new Error(`Expected content commitment to have 4 fields, but it has ${serialized.length} fields`); + throw new Error( + `Expected content commitment to have ${CONTENT_COMMITMENT_LENGTH} fields, but it has ${serialized.length} fields`, + ); } return serialized; } @@ -106,7 +107,7 @@ export class ContentCommitment { isEmpty(): boolean { return ( this.numTxs.isZero() && - this.txsEffectsHash.equals(Buffer.alloc(NUM_BYTES_PER_SHA256)) && + this.blobsHash.equals(Buffer.alloc(NUM_BYTES_PER_SHA256)) && this.inHash.equals(Buffer.alloc(NUM_BYTES_PER_SHA256)) && this.outHash.equals(Buffer.alloc(NUM_BYTES_PER_SHA256)) ); @@ -126,7 +127,7 @@ export class ContentCommitment { this.inHash.equals(other.inHash) && this.outHash.equals(other.outHash) && this.numTxs.equals(other.numTxs) && - this.txsEffectsHash.equals(other.txsEffectsHash) + this.blobsHash.equals(other.blobsHash) ); } } diff --git a/yarn-project/circuits.js/src/structs/header.ts b/yarn-project/circuits.js/src/structs/header.ts index f31f85a2ef9..5648c55ff85 100644 --- a/yarn-project/circuits.js/src/structs/header.ts +++ b/yarn-project/circuits.js/src/structs/header.ts @@ -155,8 +155,8 @@ export class Header { [inspect.custom]() { return `Header { lastArchive: ${inspect(this.lastArchive)}, - contentCommitment.numTx: ${this.contentCommitment.numTxs.toNumber()}, - contentCommitment.txsEffectsHash: ${this.contentCommitment.txsEffectsHash.toString('hex')}, + contentCommitment.numTxs: ${this.contentCommitment.numTxs.toNumber()}, + contentCommitment.blobsHash: ${this.contentCommitment.blobsHash.toString('hex')}, contentCommitment.inHash: ${this.contentCommitment.inHash.toString('hex')}, contentCommitment.outHash: ${this.contentCommitment.outHash.toString('hex')}, state.l1ToL2MessageTree: ${inspect(this.state.l1ToL2MessageTree)}, diff --git a/yarn-project/circuits.js/src/structs/index.ts b/yarn-project/circuits.js/src/structs/index.ts index 96b87bbbc6f..614c6815feb 100644 --- a/yarn-project/circuits.js/src/structs/index.ts +++ b/yarn-project/circuits.js/src/structs/index.ts @@ -2,6 +2,7 @@ export * from '@aztec/foundation/eth-address'; export * from './avm/avm.js'; export * from './avm/avm_accumulated_data.js'; export * from './avm/avm_circuit_public_inputs.js'; +export * from './blob_public_inputs.js'; export * from './call_context.js'; export * from './client_ivc_proof.js'; export * from './complete_address.js'; @@ -87,6 +88,7 @@ export * from './rollup/state_diff_hints.js'; export * from './rollup/tube_inputs.js'; export * from './rollup_validation_requests.js'; export * from './scoped_key_validation_request_and_generator.js'; +export * from './sponge_blob.js'; export * from './shared.js'; export * from './state_reference.js'; export * from './tree_leaf_read_request.js'; diff --git a/yarn-project/circuits.js/src/structs/kernel/private_kernel_tail_circuit_public_inputs.ts b/yarn-project/circuits.js/src/structs/kernel/private_kernel_tail_circuit_public_inputs.ts index 7ce5ae26c0d..9a0775d7a93 100644 --- a/yarn-project/circuits.js/src/structs/kernel/private_kernel_tail_circuit_public_inputs.ts +++ b/yarn-project/circuits.js/src/structs/kernel/private_kernel_tail_circuit_public_inputs.ts @@ -240,6 +240,16 @@ export class PrivateKernelTailCircuitPublicInputs { return nullifiers.filter(n => !n.isZero()); } + getNonEmptyL2toL1Msgs() { + const msgs = this.forPublic + ? mergeAccumulatedData( + this.forPublic.nonRevertibleAccumulatedData.l2ToL1Msgs, + this.forPublic.revertibleAccumulatedData.l2ToL1Msgs, + ) + : this.forRollup!.end.l2ToL1Msgs; + return msgs.filter(n => !n.isEmpty()); + } + static fromBuffer(buffer: Buffer | BufferReader): PrivateKernelTailCircuitPublicInputs { const reader = BufferReader.asReader(buffer); const isForPublic = reader.readBoolean(); diff --git a/yarn-project/circuits.js/src/structs/rollup/base_or_merge_rollup_public_inputs.ts b/yarn-project/circuits.js/src/structs/rollup/base_or_merge_rollup_public_inputs.ts index 981d1f0faa6..db6d645e168 100644 --- a/yarn-project/circuits.js/src/structs/rollup/base_or_merge_rollup_public_inputs.ts +++ b/yarn-project/circuits.js/src/structs/rollup/base_or_merge_rollup_public_inputs.ts @@ -4,6 +4,7 @@ import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize'; import { PartialStateReference } from '../partial_state_reference.js'; import { RollupTypes } from '../shared.js'; +import { SpongeBlob } from '../sponge_blob.js'; import { ConstantRollupData } from './constant_rollup_data.js'; /** @@ -32,16 +33,18 @@ export class BaseOrMergeRollupPublicInputs { */ public end: PartialStateReference, /** - * SHA256 hash of transactions effects. Used to make public inputs constant-sized (to then be unpacked on-chain). - * Note: Truncated to 31 bytes to fit in Fr. + * Sponge state to absorb blob inputs at the start of the rollup circuit. + */ + public startSpongeBlob: SpongeBlob, + /** + * Sponge state to absorb blob inputs at the end of the rollup circuit. */ - public txsEffectsHash: Fr, + public endSpongeBlob: SpongeBlob, /** * SHA256 hash of outhash. Used to make public inputs constant-sized (to then be unpacked on-chain). * Note: Truncated to 31 bytes to fit in Fr. */ public outHash: Fr, - /** * The summed `transaction_fee` of the constituent transactions. */ @@ -56,7 +59,8 @@ export class BaseOrMergeRollupPublicInputs { ConstantRollupData.empty(), PartialStateReference.empty(), PartialStateReference.empty(), - Fr.zero(), + SpongeBlob.empty(), + SpongeBlob.empty(), Fr.zero(), Fr.zero(), ); @@ -76,8 +80,8 @@ export class BaseOrMergeRollupPublicInputs { reader.readObject(ConstantRollupData), reader.readObject(PartialStateReference), reader.readObject(PartialStateReference), - //TODO check - Fr.fromBuffer(reader), + reader.readObject(SpongeBlob), + reader.readObject(SpongeBlob), Fr.fromBuffer(reader), Fr.fromBuffer(reader), ); @@ -96,7 +100,9 @@ export class BaseOrMergeRollupPublicInputs { this.start, this.end, - this.txsEffectsHash, + this.startSpongeBlob, + this.endSpongeBlob, + this.outHash, this.accumulatedFees, diff --git a/yarn-project/circuits.js/src/structs/rollup/base_rollup_hints.ts b/yarn-project/circuits.js/src/structs/rollup/base_rollup_hints.ts index d9176c82f6d..42d728911d2 100644 --- a/yarn-project/circuits.js/src/structs/rollup/base_rollup_hints.ts +++ b/yarn-project/circuits.js/src/structs/rollup/base_rollup_hints.ts @@ -5,6 +5,7 @@ import { ARCHIVE_HEIGHT } from '../../constants.gen.js'; import { MembershipWitness } from '../membership_witness.js'; import { PartialStateReference } from '../partial_state_reference.js'; import { PublicDataHint } from '../public_data_hint.js'; +import { SpongeBlob } from '../sponge_blob.js'; import { ConstantRollupData } from './constant_rollup_data.js'; import { PrivateBaseStateDiffHints, PublicBaseStateDiffHints } from './state_diff_hints.js'; @@ -14,6 +15,8 @@ export class PrivateBaseRollupHints { constructor( /** Partial state reference at the start of the rollup. */ public start: PartialStateReference, + /** Sponge state to absorb blob inputs at the start of the rollup. */ + public startSpongeBlob: SpongeBlob, /** Hints used while proving state diff validity. */ public stateDiffHints: PrivateBaseStateDiffHints, /** Public data read hint for accessing the balance of the fee payer. */ @@ -36,6 +39,7 @@ export class PrivateBaseRollupHints { static getFields(fields: FieldsOf) { return [ fields.start, + fields.startSpongeBlob, fields.stateDiffHints, fields.feePayerFeeJuiceBalanceReadHint, fields.archiveRootMembershipWitness, @@ -63,6 +67,7 @@ export class PrivateBaseRollupHints { const reader = BufferReader.asReader(buffer); return new PrivateBaseRollupHints( reader.readObject(PartialStateReference), + reader.readObject(SpongeBlob), reader.readObject(PrivateBaseStateDiffHints), reader.readObject(PublicDataHint), MembershipWitness.fromBuffer(reader, ARCHIVE_HEIGHT), @@ -77,6 +82,7 @@ export class PrivateBaseRollupHints { static empty() { return new PrivateBaseRollupHints( PartialStateReference.empty(), + SpongeBlob.empty(), PrivateBaseStateDiffHints.empty(), PublicDataHint.empty(), MembershipWitness.empty(ARCHIVE_HEIGHT), @@ -89,6 +95,8 @@ export class PublicBaseRollupHints { constructor( /** Partial state reference at the start of the rollup. */ public start: PartialStateReference, + /** Sponge state to absorb blob inputs at the start of the rollup. */ + public startSpongeBlob: SpongeBlob, /** Hints used while proving state diff validity. */ public stateDiffHints: PublicBaseStateDiffHints, /** Public data read hint for accessing the balance of the fee payer. */ @@ -110,6 +118,7 @@ export class PublicBaseRollupHints { static getFields(fields: FieldsOf) { return [ fields.start, + fields.startSpongeBlob, fields.stateDiffHints, fields.feePayerFeeJuiceBalanceReadHint, fields.archiveRootMembershipWitness, @@ -137,6 +146,7 @@ export class PublicBaseRollupHints { const reader = BufferReader.asReader(buffer); return new PublicBaseRollupHints( reader.readObject(PartialStateReference), + reader.readObject(SpongeBlob), reader.readObject(PublicBaseStateDiffHints), reader.readObject(PublicDataHint), MembershipWitness.fromBuffer(reader, ARCHIVE_HEIGHT), @@ -151,6 +161,7 @@ export class PublicBaseRollupHints { static empty() { return new PublicBaseRollupHints( PartialStateReference.empty(), + SpongeBlob.empty(), PublicBaseStateDiffHints.empty(), PublicDataHint.empty(), MembershipWitness.empty(ARCHIVE_HEIGHT), diff --git a/yarn-project/circuits.js/src/structs/rollup/block_root_or_block_merge_public_inputs_test.ts b/yarn-project/circuits.js/src/structs/rollup/block_root_or_block_merge_public_inputs.test.ts similarity index 100% rename from yarn-project/circuits.js/src/structs/rollup/block_root_or_block_merge_public_inputs_test.ts rename to yarn-project/circuits.js/src/structs/rollup/block_root_or_block_merge_public_inputs.test.ts diff --git a/yarn-project/circuits.js/src/structs/rollup/block_root_or_block_merge_public_inputs.ts b/yarn-project/circuits.js/src/structs/rollup/block_root_or_block_merge_public_inputs.ts index 639f335b760..0b27aee6104 100644 --- a/yarn-project/circuits.js/src/structs/rollup/block_root_or_block_merge_public_inputs.ts +++ b/yarn-project/circuits.js/src/structs/rollup/block_root_or_block_merge_public_inputs.ts @@ -5,6 +5,7 @@ import { BufferReader, type Tuple, serializeToBuffer, serializeToFields } from ' import { type FieldsOf } from '@aztec/foundation/types'; import { AZTEC_MAX_EPOCH_DURATION } from '../../constants.gen.js'; +import { BlockBlobPublicInputs } from '../blob_public_inputs.js'; import { GlobalVariables } from '../global_variables.js'; import { AppendOnlyTreeSnapshot } from './append_only_tree_snapshot.js'; @@ -58,6 +59,10 @@ export class BlockRootOrBlockMergePublicInputs { * TODO(#7346): Temporarily added prover_id while we verify block-root proofs on L1 */ public proverId: Fr, + /** + * Public inputs required to verify a blob (challenge point z, evaluation y = p(z), and the commitment to p() for each blob) + */ + public blobPublicInputs: Tuple, ) {} /** @@ -79,6 +84,7 @@ export class BlockRootOrBlockMergePublicInputs { Fr.fromBuffer(reader), Fr.fromBuffer(reader), Fr.fromBuffer(reader), + reader.readArray(AZTEC_MAX_EPOCH_DURATION, BlockBlobPublicInputs), ); } @@ -99,6 +105,7 @@ export class BlockRootOrBlockMergePublicInputs { this.vkTreeRoot, this.protocolContractTreeRoot, this.proverId, + this.blobPublicInputs, ); } diff --git a/yarn-project/circuits.js/src/structs/rollup/block_root_rollup.ts b/yarn-project/circuits.js/src/structs/rollup/block_root_rollup.ts index 3a63c40ddb3..d469ada1216 100644 --- a/yarn-project/circuits.js/src/structs/rollup/block_root_rollup.ts +++ b/yarn-project/circuits.js/src/structs/rollup/block_root_rollup.ts @@ -5,6 +5,8 @@ import { type FieldsOf } from '@aztec/foundation/types'; import { ARCHIVE_HEIGHT, + BLOBS_PER_BLOCK, + FIELDS_PER_BLOB, L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH, NESTED_RECURSIVE_PROOF_LENGTH, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, @@ -54,6 +56,22 @@ export class BlockRootRollupInputs { * TODO(#7346): Temporarily added prover_id while we verify block-root proofs on L1 */ public proverId: Fr, + /** + * Flat list of all tx effects which will be added to the blob. + * Below line gives error 'Type instantiation is excessively deep and possibly infinite. ts(2589)' + * Tuple + */ + public blobFields: Fr[], + /** + * KZG commitments representing the blob (precomputed in ts, injected to use inside circuit). + * TODO(Miranda): Rename to kzg_commitment to match BlobPublicInputs? + */ + public blobCommitments: Tuple, typeof BLOBS_PER_BLOCK>, + /** + * The hash of eth blob hashes for this block + * See yarn-project/foundation/src/blob/index.ts or body.ts for calculation + */ + public blobsHash: Fr, ) {} /** @@ -97,6 +115,9 @@ export class BlockRootRollupInputs { fields.newArchiveSiblingPath, fields.previousBlockHash, fields.proverId, + fields.blobFields, + fields.blobCommitments, + fields.blobsHash, ] as const; } @@ -117,6 +138,11 @@ export class BlockRootRollupInputs { reader.readArray(ARCHIVE_HEIGHT, Fr), Fr.fromBuffer(reader), Fr.fromBuffer(reader), + // Below line gives error 'Type instantiation is excessively deep and possibly infinite. ts(2589)' + // reader.readArray(FIELDS_PER_BLOB, Fr), + Array.from({ length: FIELDS_PER_BLOB * BLOBS_PER_BLOCK }, () => Fr.fromBuffer(reader)), + reader.readArray(BLOBS_PER_BLOCK, { fromBuffer: () => reader.readArray(2, Fr) }), + Fr.fromBuffer(reader), ); } diff --git a/yarn-project/circuits.js/src/structs/rollup/root_rollup.test.ts b/yarn-project/circuits.js/src/structs/rollup/root_rollup.test.ts index 3b26ccb1cf9..7a10ef1d431 100644 --- a/yarn-project/circuits.js/src/structs/rollup/root_rollup.test.ts +++ b/yarn-project/circuits.js/src/structs/rollup/root_rollup.test.ts @@ -1,3 +1,4 @@ +import { ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH } from '../../constants.gen.js'; import { makeRootRollupPublicInputs } from '../../tests/factories.js'; import { RootRollupPublicInputs } from './root_rollup.js'; @@ -15,4 +16,10 @@ describe('structs/root_rollup', () => { const res = RootRollupPublicInputs.fromString(str); expect(res).toEqual(expected); }); + + it(`serializes a RootRollupPublicInputs to fields and matches constant`, () => { + const expected = makeRootRollupPublicInputs(); + const fields = expected.toFields(); + expect(fields.length).toBe(ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH); + }); }); diff --git a/yarn-project/circuits.js/src/structs/rollup/root_rollup.ts b/yarn-project/circuits.js/src/structs/rollup/root_rollup.ts index a8eb8b433e5..c59ab16a71e 100644 --- a/yarn-project/circuits.js/src/structs/rollup/root_rollup.ts +++ b/yarn-project/circuits.js/src/structs/rollup/root_rollup.ts @@ -4,6 +4,7 @@ import { BufferReader, type Tuple, serializeToBuffer, serializeToFields } from ' import { type FieldsOf } from '@aztec/foundation/types'; import { AZTEC_MAX_EPOCH_DURATION } from '../../constants.gen.js'; +import { BlockBlobPublicInputs } from '../blob_public_inputs.js'; import { AppendOnlyTreeSnapshot } from './append_only_tree_snapshot.js'; import { FeeRecipient } from './block_root_or_block_merge_public_inputs.js'; import { PreviousRollupBlockData } from './previous_rollup_block_data.js'; @@ -110,6 +111,7 @@ export class RootRollupPublicInputs { public vkTreeRoot: Fr, public protocolContractTreeRoot: Fr, public proverId: Fr, + public blobPublicInputs: Tuple, ) {} static getFields(fields: FieldsOf) { @@ -125,6 +127,7 @@ export class RootRollupPublicInputs { fields.vkTreeRoot, fields.protocolContractTreeRoot, fields.proverId, + fields.blobPublicInputs, ] as const; } @@ -159,6 +162,7 @@ export class RootRollupPublicInputs { Fr.fromBuffer(reader), Fr.fromBuffer(reader), Fr.fromBuffer(reader), + reader.readArray(AZTEC_MAX_EPOCH_DURATION, BlockBlobPublicInputs), ); } diff --git a/yarn-project/circuits.js/src/structs/sponge_blob.test.ts b/yarn-project/circuits.js/src/structs/sponge_blob.test.ts new file mode 100644 index 00000000000..b5f7d195b67 --- /dev/null +++ b/yarn-project/circuits.js/src/structs/sponge_blob.test.ts @@ -0,0 +1,56 @@ +import { poseidon2Hash } from '@aztec/foundation/crypto'; +import { Fr } from '@aztec/foundation/fields'; + +import { SPONGE_BLOB_LENGTH } from '../constants.gen.js'; +import { makeSpongeBlob } from '../tests/factories.js'; +import { SpongeBlob } from './sponge_blob.js'; + +describe('SpongeBlob', () => { + let spongeBlob: SpongeBlob; + + beforeAll(() => { + spongeBlob = makeSpongeBlob(1); + }); + + it('serializes to buffer and deserializes it back', () => { + const buffer = spongeBlob.toBuffer(); + const res = SpongeBlob.fromBuffer(buffer); + expect(res).toEqual(spongeBlob); + }); + + // TODO(Miranda): reinstate if we need to/from fields + // it('serializes to field array and deserializes it back', () => { + // const fieldArray = spongeBlob.toFields(); + // const res = SpongeBlob.fromFields(fieldArray); + // expect(res).toEqual(spongeBlob); + // }); + + it('number of fields matches constant', () => { + const fields = spongeBlob.sponge.cache.concat([ + ...spongeBlob.sponge.state, + new Fr(spongeBlob.sponge.cacheSize), + new Fr(spongeBlob.sponge.squeezeMode), + new Fr(spongeBlob.fields), + new Fr(spongeBlob.expectedFields), + ]); + expect(fields.length).toBe(SPONGE_BLOB_LENGTH); + }); + + it('matches an ordinary short poseidon2 hash', () => { + spongeBlob = SpongeBlob.init(4); + const input = [Fr.ONE, new Fr(2), new Fr(3), new Fr(4)]; + spongeBlob.absorb(input); + const expectedHash = poseidon2Hash(input); + const res = spongeBlob.squeeze(); + expect(res).toEqual(expectedHash); + }); + + it('matches an ordinary long poseidon2 hash', () => { + spongeBlob = SpongeBlob.init(4096); + const input = Array(4096).fill(new Fr(3)); + spongeBlob.absorb(input); + const expectedHash = poseidon2Hash(input); + const res = spongeBlob.squeeze(); + expect(res).toEqual(expectedHash); + }); +}); diff --git a/yarn-project/circuits.js/src/structs/sponge_blob.ts b/yarn-project/circuits.js/src/structs/sponge_blob.ts new file mode 100644 index 00000000000..5189909b956 --- /dev/null +++ b/yarn-project/circuits.js/src/structs/sponge_blob.ts @@ -0,0 +1,137 @@ +import { makeTuple } from '@aztec/foundation/array'; +import { poseidon2Permutation } from '@aztec/foundation/crypto'; +import { Fr } from '@aztec/foundation/fields'; +import { BufferReader, type Tuple, serializeToBuffer } from '@aztec/foundation/serialize'; + +/** + * A Poseidon2 sponge used to accumulate data that will be added to a blob. + * See noir-projects/noir-protocol-circuits/crates/types/src/abis/sponge_blob.nr. + */ +export class SpongeBlob { + constructor( + /** Sponge with absorbed tx effects that will go into a blob. */ + public readonly sponge: Poseidon2Sponge, + /** Number of effects absorbed so far. */ + public fields: number, + /** Number of effects that will be absorbed. */ + public readonly expectedFields: number, + ) {} + + static fromBuffer(buffer: Buffer | BufferReader): SpongeBlob { + const reader = BufferReader.asReader(buffer); + return new SpongeBlob(reader.readObject(Poseidon2Sponge), reader.readNumber(), reader.readNumber()); + } + + toBuffer() { + return serializeToBuffer(this.sponge, this.fields, this.expectedFields); + } + + clone() { + return SpongeBlob.fromBuffer(this.toBuffer()); + } + + absorb(fields: Fr[]) { + if (this.fields + fields.length > this.expectedFields) { + throw new Error( + `Attempted to fill spongeblob with ${this.fields + fields.length}, but it has a max of ${this.expectedFields}`, + ); + } + this.sponge.absorb(fields); + this.fields += fields.length; + } + + squeeze(): Fr { + // If the blob sponge is not 'full', we append 1 to match Poseidon2::hash_internal() + // NB: There is currently no use case in which we don't 'fill' a blob sponge, but adding for completeness + if (this.fields != this.expectedFields) { + this.sponge.absorb([Fr.ONE]); + } + return this.sponge.squeeze(); + } + + static empty(): SpongeBlob { + return new SpongeBlob(Poseidon2Sponge.empty(), 0, 0); + } + + static init(expectedFields: number): SpongeBlob { + return new SpongeBlob(Poseidon2Sponge.init(expectedFields), 0, expectedFields); + } +} + +// This is just noir's stdlib version of the poseidon2 sponge. We use it for a blob-specific implmentation of the hasher. +export class Poseidon2Sponge { + constructor( + public cache: Tuple, + public state: Tuple, + public cacheSize: number, + public squeezeMode: boolean, + ) {} + + static fromBuffer(buffer: Buffer | BufferReader): Poseidon2Sponge { + const reader = BufferReader.asReader(buffer); + return new Poseidon2Sponge( + reader.readArray(3, Fr), + reader.readArray(4, Fr), + reader.readNumber(), + reader.readBoolean(), + ); + } + + toBuffer() { + return serializeToBuffer(this.cache, this.state, this.cacheSize, this.squeezeMode); + } + + static empty(): Poseidon2Sponge { + return new Poseidon2Sponge( + makeTuple(3, () => Fr.ZERO), + makeTuple(4, () => Fr.ZERO), + 0, + false, + ); + } + + static init(expectedFields: number): Poseidon2Sponge { + const iv = new Fr(expectedFields).mul(new Fr(BigInt('18446744073709551616'))); + const sponge = Poseidon2Sponge.empty(); + sponge.state[3] = iv; + return sponge; + } + + // Note: there isn't currently an impl in ts that allows for a custom aborption via an + // existing sponge. + // A custom blob-based impl of noir/noir-repo/noir_stdlib/src/hash/poseidon2.nr + performDuplex() { + for (let i = 0; i < this.cache.length; i++) { + if (i < this.cacheSize) { + this.state[i] = this.state[i].add(this.cache[i]); + } + } + const perm = poseidon2Permutation(this.state); + // ts doesn't understand that the above always gives 4 + this.state = [perm[0], perm[1], perm[2], perm[3]]; + } + + absorb(fields: Fr[]) { + if (this.squeezeMode) { + throw new Error(`Poseidon sponge is not able to absorb more inputs.`); + } + fields.forEach(field => { + if (this.cacheSize == this.cache.length) { + this.performDuplex(); + this.cache[0] = field; + this.cacheSize = 1; + } else { + this.cache[this.cacheSize++] = field; + } + }); + } + + squeeze(): Fr { + if (this.squeezeMode) { + throw new Error(`Poseidon sponge has already been squeezed.`); + } + this.performDuplex(); + this.squeezeMode = true; + return this.state[0]; + } +} diff --git a/yarn-project/circuits.js/src/tests/factories.ts b/yarn-project/circuits.js/src/tests/factories.ts index 3a2da20f3e9..c96b8c3b740 100644 --- a/yarn-project/circuits.js/src/tests/factories.ts +++ b/yarn-project/circuits.js/src/tests/factories.ts @@ -26,6 +26,7 @@ import { AvmExecutionHints, AvmExternalCallHint, AvmKeyValueHint, + BLOBS_PER_BLOCK, BaseOrMergeRollupPublicInputs, BaseParityInputs, CallContext, @@ -35,6 +36,7 @@ import { ContractStorageRead, ContractStorageUpdateRequest, EncryptedLogHash, + FIELDS_PER_BLOB, Fr, FunctionData, FunctionSelector, @@ -137,7 +139,10 @@ import { AvmProofData, AvmPublicDataReadTreeHint, AvmPublicDataWriteTreeHint, + BlobPublicInputs, + BlockBlobPublicInputs, CountedPublicCallRequest, + Poseidon2Sponge, PrivateBaseRollupHints, PrivateBaseRollupInputs, PrivateBaseStateDiffHints, @@ -152,6 +157,7 @@ import { PublicDataWrite, PublicTubeData, ScopedL2ToL1Message, + SpongeBlob, TreeSnapshots, TxConstantData, VkWitnessData, @@ -635,6 +641,36 @@ export function makeAppendOnlyTreeSnapshot(seed = 1): AppendOnlyTreeSnapshot { return new AppendOnlyTreeSnapshot(fr(seed), seed); } +/** + * Makes arbitrary poseidon sponge for blob inputs. + * Note: will not verify inside the circuit. + * @param seed - The seed to use for generating the sponge. + * @returns A sponge blob instance. + */ +export function makeSpongeBlob(seed = 1): SpongeBlob { + return new SpongeBlob(new Poseidon2Sponge(makeTuple(3, fr), makeTuple(4, fr), 1, false), seed, seed + 1); +} + +/** + * Makes arbitrary blob public inputs. + * Note: will not verify inside the circuit. + * @param seed - The seed to use for generating the blob inputs. + * @returns A blob public inputs instance. + */ +export function makeBlobPublicInputs(seed = 1): BlobPublicInputs { + return new BlobPublicInputs(fr(seed), BigInt(seed + 1), makeTuple(2, fr)); +} + +/** + * Makes arbitrary block blob public inputs. + * Note: will not verify inside the circuit. + * @param seed - The seed to use for generating the blob inputs. + * @returns A block blob public inputs instance. + */ +export function makeBlockBlobPublicInputs(seed = 1): BlockBlobPublicInputs { + return new BlockBlobPublicInputs(makeTuple(BLOBS_PER_BLOCK, () => makeBlobPublicInputs(seed))); +} + /** * Makes arbitrary eth address. * @param seed - The seed to use for generating the eth address. @@ -688,9 +724,10 @@ export function makeBaseOrMergeRollupPublicInputs( makeConstantBaseRollupData(seed + 0x200, globalVariables), makePartialStateReference(seed + 0x300), makePartialStateReference(seed + 0x400), + makeSpongeBlob(seed + 0x500), + makeSpongeBlob(seed + 0x600), fr(seed + 0x901), fr(seed + 0x902), - fr(seed + 0x903), ); } @@ -716,6 +753,7 @@ export function makeBlockRootOrBlockMergeRollupPublicInputs( fr(seed + 0x800), fr(seed + 0x801), fr(seed + 0x900), + makeTuple(AZTEC_MAX_EPOCH_DURATION, () => makeBlockBlobPublicInputs(seed), 0x100), ); } @@ -785,6 +823,9 @@ export function makeBlockRootRollupInputs(seed = 0, globalVariables?: GlobalVari makeTuple(ARCHIVE_HEIGHT, fr, 0x2300), fr(seed + 0x2400), fr(seed + 0x2500), + makeTuple(FIELDS_PER_BLOB * BLOBS_PER_BLOCK, fr, 0x2400), + makeTuple(BLOBS_PER_BLOCK, () => makeTuple(2, fr, 0x2500)), + fr(seed + 0x2600), ); } @@ -861,16 +902,17 @@ export function makeRootRollupPublicInputs(seed = 0): RootRollupPublicInputs { fr(seed + 0x100), fr(seed + 0x101), fr(seed + 0x200), + makeTuple(AZTEC_MAX_EPOCH_DURATION, () => makeBlockBlobPublicInputs(seed), 0x300), ); } /** * Makes content commitment */ -export function makeContentCommitment(seed = 0, txsEffectsHash: Buffer | undefined = undefined): ContentCommitment { +export function makeContentCommitment(seed = 0): ContentCommitment { return new ContentCommitment( new Fr(seed), - txsEffectsHash ?? toBufferBE(BigInt(seed + 0x100), NUM_BYTES_PER_SHA256), + toBufferBE(BigInt(seed + 0x100), NUM_BYTES_PER_SHA256), toBufferBE(BigInt(seed + 0x200), NUM_BYTES_PER_SHA256), toBufferBE(BigInt(seed + 0x300), NUM_BYTES_PER_SHA256), ); @@ -883,11 +925,10 @@ export function makeHeader( seed = 0, blockNumber: number | undefined = undefined, slotNumber: number | undefined = undefined, - txsEffectsHash: Buffer | undefined = undefined, ): Header { return new Header( makeAppendOnlyTreeSnapshot(seed + 0x100), - makeContentCommitment(seed + 0x200, txsEffectsHash), + makeContentCommitment(seed + 0x200), makeStateReference(seed + 0x600), makeGlobalVariables((seed += 0x700), { ...(blockNumber ? { blockNumber: new Fr(blockNumber) } : {}), @@ -1091,6 +1132,8 @@ function makePrivateTubeData(seed = 1, kernelPublicInputs?: KernelCircuitPublicI function makePrivateBaseRollupHints(seed = 1) { const start = makePartialStateReference(seed + 0x100); + const startSpongeBlob = makeSpongeBlob(seed + 0x200); + const stateDiffHints = makePrivateBaseStateDiffHints(seed + 0x600); const archiveRootMembershipWitness = makeMembershipWitness(ARCHIVE_HEIGHT, seed + 0x9000); @@ -1101,6 +1144,7 @@ function makePrivateBaseRollupHints(seed = 1) { return PrivateBaseRollupHints.from({ start, + startSpongeBlob, stateDiffHints, archiveRootMembershipWitness, constants, @@ -1111,6 +1155,8 @@ function makePrivateBaseRollupHints(seed = 1) { function makePublicBaseRollupHints(seed = 1) { const start = makePartialStateReference(seed + 0x100); + const startSpongeBlob = makeSpongeBlob(seed + 0x200); + const stateDiffHints = makePublicBaseStateDiffHints(seed + 0x600); const archiveRootMembershipWitness = makeMembershipWitness(ARCHIVE_HEIGHT, seed + 0x9000); @@ -1121,6 +1167,7 @@ function makePublicBaseRollupHints(seed = 1) { return PublicBaseRollupHints.from({ start, + startSpongeBlob, stateDiffHints, archiveRootMembershipWitness, constants, diff --git a/yarn-project/end-to-end/scripts/e2e_test_config.yml b/yarn-project/end-to-end/scripts/e2e_test_config.yml index 04f2212d5a1..d508c9df007 100644 --- a/yarn-project/end-to-end/scripts/e2e_test_config.yml +++ b/yarn-project/end-to-end/scripts/e2e_test_config.yml @@ -35,7 +35,8 @@ tests: e2e_devnet_smoke: {} docs_examples: use_compose: true - e2e_epochs: {} + # TODO(#10177): reenable + # e2e_epochs: {} e2e_escrow_contract: {} e2e_fees_account_init: test_path: 'e2e_fees/account_init.test.ts' diff --git a/yarn-project/end-to-end/src/composed/integration_l1_publisher.test.ts b/yarn-project/end-to-end/src/composed/integration_l1_publisher.test.ts index d2775d2eda4..89798fe5c79 100644 --- a/yarn-project/end-to-end/src/composed/integration_l1_publisher.test.ts +++ b/yarn-project/end-to-end/src/composed/integration_l1_publisher.test.ts @@ -10,6 +10,7 @@ import { } from '@aztec/circuit-types'; import { makeBloatedProcessedTx } from '@aztec/circuit-types/test'; import { + BlockBlobPublicInputs, EthAddress, GENESIS_ARCHIVE_ROOT, GasFees, @@ -20,6 +21,8 @@ import { import { fr } from '@aztec/circuits.js/testing'; import { type L1ContractAddresses, createEthereumChain } from '@aztec/ethereum'; import { range } from '@aztec/foundation/array'; +import { Blob } from '@aztec/foundation/blob'; +import { sha256, sha256ToField } from '@aztec/foundation/crypto'; import { openTmpStore } from '@aztec/kv-store/utils'; import { OutboxAbi, RollupAbi } from '@aztec/l1-artifacts'; import { SHA256Trunc, StandardTree } from '@aztec/merkle-tree'; @@ -219,6 +222,7 @@ describe('L1Publisher integration', () => { fileName: string, block: L2Block, l1ToL2Content: Fr[], + blobs: Blob[], recipientAddress: AztecAddress, deployerAddress: `0x${string}`, ): void => { @@ -245,13 +249,12 @@ describe('L1Publisher integration', () => { archive: `0x${block.archive.root.toBuffer().toString('hex').padStart(64, '0')}`, blockHash: `0x${block.hash().toBuffer().toString('hex').padStart(64, '0')}`, body: `0x${block.body.toBuffer().toString('hex')}`, - txsEffectsHash: `0x${block.body.getTxsEffectsHash().toString('hex').padStart(64, '0')}`, decodedHeader: { contentCommitment: { + blobsHash: `0x${block.header.contentCommitment.blobsHash.toString('hex').padStart(64, '0')}`, inHash: `0x${block.header.contentCommitment.inHash.toString('hex').padStart(64, '0')}`, outHash: `0x${block.header.contentCommitment.outHash.toString('hex').padStart(64, '0')}`, numTxs: Number(block.header.contentCommitment.numTxs), - txsEffectsHash: `0x${block.header.contentCommitment.txsEffectsHash.toString('hex').padStart(64, '0')}`, }, globalVariables: { blockNumber: block.number, @@ -296,6 +299,7 @@ describe('L1Publisher integration', () => { }, header: `0x${block.header.toBuffer().toString('hex')}`, publicInputsHash: `0x${block.getPublicInputsHash().toBuffer().toString('hex').padStart(64, '0')}`, + blobInputs: Blob.getEthBlobEvaluationInputs(blobs), numTxs: block.body.txEffects.length, }, }; @@ -305,10 +309,8 @@ describe('L1Publisher integration', () => { }; const buildBlock = async (globalVariables: GlobalVariables, txs: ProcessedTx[], l1ToL2Messages: Fr[]) => { - await builder.startNewBlock(txs.length, globalVariables, l1ToL2Messages); - for (const tx of txs) { - await builder.addNewTx(tx); - } + await builder.startNewBlock(globalVariables, l1ToL2Messages); + await builder.addTxs(txs); return builder.setBlockCompleted(); }; @@ -370,7 +372,19 @@ describe('L1Publisher integration', () => { // Check that we have not yet written a root to this blocknumber expect(BigInt(emptyRoot)).toStrictEqual(0n); - writeJson(`mixed_block_${block.number}`, block, l1ToL2Content, recipientAddress, deployerAccount.address); + const blobs = Blob.getBlobs(block.body.toBlobFields()); + expect(block.header.contentCommitment.blobsHash).toEqual( + sha256ToField(blobs.map(b => b.getEthVersionedBlobHash())).toBuffer(), + ); + + writeJson( + `mixed_block_${block.number}`, + block, + l1ToL2Content, + blobs, + recipientAddress, + deployerAccount.address, + ); await publisher.proposeL2Block(block); @@ -389,6 +403,10 @@ describe('L1Publisher integration', () => { hash: logs[i].transactionHash!, }); + const blobPublicInputsHash = await rollup.read.blobPublicInputsHashes([BigInt(i + 1)]); + const expectedHash = sha256(Buffer.from(BlockBlobPublicInputs.fromBlobs(blobs).toString().substring(2), 'hex')); + expect(blobPublicInputsHash).toEqual(`0x${expectedHash.toString('hex')}`); + const expectedData = encodeFunctionData({ abi: RollupAbi, functionName: 'propose', @@ -400,7 +418,9 @@ describe('L1Publisher integration', () => { txHashes: [], }, [], + // TODO(#9101): Extract blobs from beacon chain => calldata will only contain what's needed to verify blob: `0x${block.body.toBuffer().toString('hex')}`, + Blob.getEthBlobEvaluationInputs(blobs), ], }); expect(ethTx.input).toEqual(expectedData); @@ -469,7 +489,12 @@ describe('L1Publisher integration', () => { blockSource.getL1ToL2Messages.mockResolvedValueOnce(l1ToL2Messages); blockSource.getBlocks.mockResolvedValueOnce([block]); - writeJson(`empty_block_${block.number}`, block, [], AztecAddress.ZERO, deployerAccount.address); + const blobs = Blob.getBlobs(block.body.toBlobFields()); + expect(block.header.contentCommitment.blobsHash).toEqual( + sha256ToField(blobs.map(b => b.getEthVersionedBlobHash())).toBuffer(), + ); + + writeJson(`empty_block_${block.number}`, block, [], blobs, AztecAddress.ZERO, deployerAccount.address); await publisher.proposeL2Block(block); @@ -488,6 +513,10 @@ describe('L1Publisher integration', () => { hash: logs[i].transactionHash!, }); + const blobPublicInputsHash = await rollup.read.blobPublicInputsHashes([BigInt(i + 1)]); + const expectedHash = sha256(Buffer.from(BlockBlobPublicInputs.fromBlobs(blobs).toString().substring(2), 'hex')); + expect(blobPublicInputsHash).toEqual(`0x${expectedHash.toString('hex')}`); + const expectedData = encodeFunctionData({ abi: RollupAbi, functionName: 'propose', @@ -499,7 +528,9 @@ describe('L1Publisher integration', () => { txHashes: [], }, [], + // TODO(#9101): Extract blobs from beacon chain => calldata will only contain what's needed to verify blob: `0x${block.body.toBuffer().toString('hex')}`, + Blob.getEthBlobEvaluationInputs(blobs), ], }); expect(ethTx.input).toEqual(expectedData); diff --git a/yarn-project/end-to-end/src/e2e_epochs.test.ts b/yarn-project/end-to-end/src/e2e_epochs.test.ts index 3ac4e07afd8..ea5a38bbbcb 100644 --- a/yarn-project/end-to-end/src/e2e_epochs.test.ts +++ b/yarn-project/end-to-end/src/e2e_epochs.test.ts @@ -25,7 +25,7 @@ describe('e2e_epochs', () => { let handle: NodeJS.Timeout; const EPOCH_DURATION = 4; - const L1_BLOCK_TIME = 5; + const L1_BLOCK_TIME = 25; const L2_SLOT_DURATION_IN_L1_BLOCKS = 2; beforeAll(async () => { @@ -98,6 +98,7 @@ describe('e2e_epochs', () => { afterAll(async () => { clearInterval(handle); + // TODO(#10177): The below times out await context.teardown(); }); @@ -111,7 +112,7 @@ describe('e2e_epochs', () => { /** Waits until the given L2 block number is mined. */ const waitUntilL2BlockNumber = async (target: number) => { - await retryUntil(() => Promise.resolve(target === l2BlockNumber), `Wait until L2 block ${l2BlockNumber}`, 60, 0.1); + await retryUntil(() => Promise.resolve(target === l2BlockNumber), `Wait until L2 block ${target}`, 200, 0.1); }; it('does not allow submitting proof after epoch end', async () => { @@ -129,6 +130,8 @@ describe('e2e_epochs', () => { sequencerDelayer.pauseNextTxUntilTimestamp(epoch2Start + BigInt(L1_BLOCK_TIME)); // Next sequencer to publish a block should trigger a rollback to block 1 + // The below is a bit of a hack - to avoid the waitUntilL1Timestamp timing out, I wait until the reorg back to block 1 is complete + await waitUntilL2BlockNumber(1); await waitUntilL1Timestamp(l1Client, epoch2Start + BigInt(L1_BLOCK_TIME)); expect(await rollup.getBlockNumber()).toEqual(1n); expect(await rollup.getSlotNumber()).toEqual(8n); @@ -142,5 +145,5 @@ describe('e2e_epochs', () => { const lastL2BlockTxReceipt = await l1Client.getTransactionReceipt({ hash: lastL2BlockTxHash! }); expect(lastL2BlockTxReceipt.status).toEqual('success'); expect(lastL2BlockTxReceipt.blockNumber).toBeGreaterThan(lastProverTxReceipt!.blockNumber); - }); + }, 400_000); }); diff --git a/yarn-project/end-to-end/src/e2e_prover/full.test.ts b/yarn-project/end-to-end/src/e2e_prover/full.test.ts index 6bc9e3f3005..6e6c197d66e 100644 --- a/yarn-project/end-to-end/src/e2e_prover/full.test.ts +++ b/yarn-project/end-to-end/src/e2e_prover/full.test.ts @@ -6,7 +6,7 @@ import { type Chain, type GetContractReturnType, type HttpTransport, type Public import { FullProverTest } from './e2e_prover_test.js'; -const TIMEOUT = 1_800_000; +const TIMEOUT = 3_000_000; // This makes AVM proving throw if there's a failure. process.env.AVM_PROVING_STRICT = '1'; diff --git a/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json b/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json index c7ba001966f..97470ed164d 100644 --- a/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json +++ b/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json @@ -1 +1 @@ -{"proof":"00003f64000001fb0000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000000119dc71af02455fd7b437af6a07b08fbe005c18b2f4be65c19bf1eb7cc0c884ad0000000000000000000000000000000000000000000000000000000000000002224a70c36120d8e08b02885ec88395e57c7db919607b2b26d7b1a761a85d3ba100000000000000000000000000000000000000000000000000000000000000040d500ce5eea424fc5dbedd9d2e20273f74ef1093210ecddec74c65b7fbec3a9d032a9a79c14883dbdd78fe7bab0394b0491e66bc66bfaac2edb5d1c5a5994f70000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000160f89744843c7ed99f717a7b6285740719b13fc8c71cc781b2b7bc669662a6a0d560ad12f14dd5026070bc037ac343535db339212f0904dfc96c4aea4dcc8ab000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000834a970c905b9562b00000000000000000000000000000000000000000000000c7d5c02a95a9a337e000000000000000000000000000000000000000000000005ceda57613203dd4f0000000000000000000000000000000000000000000000000000c1c503300e3e000000000000000000000000000000000000000000000008082065a4a84a90e500000000000000000000000000000000000000000000000bb2b0f32aafcd2bff00000000000000000000000000000000000000000000000d67b884a1de8ecb920000000000000000000000000000000000000000000000000000fce7c0913d0a000000000000000000000000000000000000000000000002034d9338bd3d6ab7000000000000000000000000000000000000000000000008dcce0d1678c9907700000000000000000000000000000000000000000000000cf585a862aea5dd3d0000000000000000000000000000000000000000000000000000df8d6ba9e6b30000000000000000000000000000000000000000000000086294e2ab67d8865a000000000000000000000000000000000000000000000002ab59cc5bea75cef1000000000000000000000000000000000000000000000008b5087c2441388a6500000000000000000000000000000000000000000000000000002a1274ba4c66000000000000000000000000000000815438d32a9c665412bb63add5a5a3f35700000000000000000000000000000000001f69b29e9a7572dc5c068b26b81845000000000000000000000000000000d51931e4f65d90de5d3d1d7f51b4f5af9000000000000000000000000000000000001709882923c6136e725f50342baeb9000000000000000000000000000000eb683b39a96aa101869de13857b72f820400000000000000000000000000000000000a55283b4c720b959a7ecb72d77ee300000000000000000000000000000001a1d7e8e0cc06db48350f6dbe0cdd07850000000000000000000000000000000000046c847fe41f2349bdf2a9daaa62410000000000000000000000000000003fc174cc1e8138051cb9fe591e64be2f6f0000000000000000000000000000000000167ba0ea3e1b7617e0a3fe380d949e0000000000000000000000000000005a8f95cd9c2f71d1bdda70f82208c1c097000000000000000000000000000000000014be29da3c73a7cea72d0291594a5c00000000000000000000000000000024eba1cbffaf8f4196d7f6f82bd5bed62f00000000000000000000000000000000002e44b96fb9dc942c716766c5098d9600000000000000000000000000000071772aaa9d0de4691948882169ee308d430000000000000000000000000000000000084a44c23aeffc619c84d1f84df2720000000000000000000000000000008b094f2e2fbd2bfc9d0123d26c9a2fdca8000000000000000000000000000000000003b4f947cd0f6a54760e5df757134600000000000000000000000000000023e3f180615c14ae4eef7711ae7be4ab13000000000000000000000000000000000005e3308e8d1ad9cd86677acc1fc38a000000000000000000000000000000f6be300b828d885f1b77c5b1c5b3ab222800000000000000000000000000000000001251067fcf0ea9e69ad16a1ad576890000000000000000000000000000004a6257d9d6f0128f8482b92f0c8b95dc57000000000000000000000000000000000012d2725382847994628a8529f0a58d000000000000000000000000000000ae9ecf3f5472945da551ee4ff8543d64ad000000000000000000000000000000000000b21ccbda3256445ec970c016cbf000000000000000000000000000000080c24c54bc38f160c4cc5f6dc5f9fd4aa8000000000000000000000000000000000026037434a8c386531db65fafeb05c4000000000000000000000000000000c0a53b12577b4e8b96572a453261647b0e0000000000000000000000000000000000045617b9f8aba63a37ed91ef75174a000000000000000000000000000000649d3c201e7717b1729ef780274e715b2c00000000000000000000000000000000000cab2441a6c3879dc40976c37cdb7a056680c34d76bcd98f0137a4fb0ca95631fdfe8ab05916f574954cf2e7216f422afdcdaf93bae350294f0e118674af06f635e9bdc960599bcf4ca8a108de90bf0560d6087d6ea4c18b47883a22dbe84b56fbdc268ce787b1d6ae8912fb9cc2d71d73c0f88f27e449ec237e43be3e5c176ce40c46fb99fda058bab59c7e98952d015f76dda337eecc31d02c22fef79b53005d0177372d9495a921a4fecb8412b829fa56b116dc189245218cd08d6a76a4d34da00889372cef9ebf4bd713e51b133021ed58c231516ba3001a0a28f13f47c1312806404debe453e765207bd00d50176980aac4d5b564fc42ffc9d2a086fcbd6bb179ed47cd4ccaa9ace0a88b1a3d2196cfa5bba7c8441a19363af4c69f77f69e189ec77eb5b4f08b6aa47cd76ab72d310eb54beb06b5a035323b0d48a5871bfe19d7ed64fbc7128f586814ea8b181fc3f145066eee6589b045e34a0607097104b17e68636b0244c58a70c1d0b3a1097a1e158290570bc00c813cd33f1ef1122154e33b14b1af66f0f70a8cc130521906e6317d749728aa4565c01005a97c736cbbfb0ae9b1067e81e06bbe0624dd029e87080742fb8b66e349d69b404dd075226d82e849c65ec52eadda7c7c23340b449cb736ca47a116301d6b035155fa871645042ed38eee3030a74ea45a49422a4eb8236ab31db9b57bb6658dfec1a6397f3215ee55c23774597040993980951629ae3690fc60f87a95a85201d7b31d068efcb525ea603aab6f37ff21bdbd391c095a6ce972b0668f6a74ae3d9db3dd7dce63ed6f86f4aab902a9b3e0602ecb10b56a5c1c85d3e000ad9b1dcb66f5f5a2114744fd7033d5a8a9692f5b8f1b1118c4c5c9f73fc1064c22a41dae1c6961540a318f309c0d02db188dd44616fd9020126a5027cffa0e85fa56e93846e892864f8c5f9a6b11ef0883b009f7b0a8060c5b9acaa669825490067ec821d756228bff04f4ea2af65ba846779969595610011fe57ee3f0361ef72e60cb80c47015b47b52d1d4297d09181d8e597ffbddb92682fa60acf769cfe1e3486446839bdc3a5209bf694da2501167ed3eb863a2e92ffbf0154aa99c955f7b8ca53bacbc2e8b32ac013cd4cdd0a8cb6f65330bcd6328ce73b329dc97744499ed884d2c0d84b76cdb36d205819e7b3ec547745940fd0f94f69f19364dabf9e68a186eea14860c0ecff138da769e9198aaf5ec793472296b794c55eaef4469cf6730bb7a5958acd0a24b0d5856924f8136fb57af452b2c29732315e923938cd9dad83c4e79d169812c6adf8edae5e434ba1f5a71042c0530029c187c01d0dda2849f5673953f6789c9ec331ad0f0df5836d92834625e1fc97de6a83b3345a2fc583372f6d5b135a98292c155a1442a1e2e338b9929561defc27e1edfae36f0924ab82e221c623002e74488f7ec5443a888702b1d1e26101620abcbc79e777dfc58eeb69cf04d4d159a9584d242707f3c27eff7165c3d18e116d5e4fa21a1fe5ef1ff15c7a0d2edd2c2a0cc527b76c18adf3e9d8bf4380ef82ee1f7f1a709ea80e03a77b4eeb19590fe47028a1b395e832ad35fcf87841b6c94e930858746d46c1e557da06d88cb37081b5a5584a92fbaf35322af8092225ed900cec2d0b84b02730db921aa021926e63461c3fecd5783a5f259e3850c00fd9b4283a288e41f339b9a8e35d01b83957b2effc58aa7aa76c3c369ecbef02a1816c79934b3812596f467ad946c804e1246fdf32f4a18bef0cd7341f0a5791e3f1acbebf456af3ab16598c9ae6262c0d58dc67c1bc9c65ca4a60dda0002e219b248de765cd9811eda04c9680a092460db9a52c16e1109e076339601d681fe1eada3f9b645d1137fbf62ecd207b0bcb998127ab50f1c1fe30275d41e7ab41f1a9d752b53166228690f571717346085d90a5d2c620ee7f3b3f2e584dd23d223102c26931d4230800176a6e3e2df9412b1a073d083d624c920fa97cf0c24d01e2949903b511df4ede0914c945f1c3f91c1e75635de46d24b02d5e5bb2d16bfe3141c32803e9ec1ae774b3d1579fbd7ef01aa8429a773065a2a58bf78fa55c74124719f75c265599507a4b3496ab8ed0f4aa66ed0c56d7594d9576f19bdc60f2022b7236c6e35c65c922aa4ac430a27822a29ae39757d58de80ff4fd355b2a64b0b9fd2bb8d70e3f62dee506e7ae25df5fa1d004945f6dc7aee2c0cfe388c1dd10eaaa0d5faf75664d1891b866298024890ff041dc974865bf91e229e2df311111c4f2affd23bd3188f4d3661cff51c4120ff223883566e24be635939a36e920c1fbe5df0df0757b2e8ed41a73f3e67b9ed105702818bcac56cb72ff7990bd72b21ebf5a3bb60eee2e4ec77904d3df4fe36e16df2b37a5f373d4f07617f98338d2c44a3549f8bea983e343d512def355e07b24e16421b2e420d27a410abba810e1b1a171d98d03f04b6890ace2311eb6081ad05c67c07408a47784789b1634a2d073903f801f271c1ec2f8015bc85aa57c33fc03708b00ceac23c88f3def4dacf2c61fb5e1ae1075b0bb693ef315ea2ab7cb2651c710bcea3c7efc2ceb68f38ae13157311ebfba02f76e6755d09cdecec7c690c0b50786ffd2f27ebb641e7f41e1c7e70de65ea91e8ef2c07edcff57b33f0dce6a3898754048cfcaf6adce04db82cd96746130f154b0ac41b262ecab78cecc01554a8f79b2015ed8ab907aacf2c0fd9177a674cf381d48132d5ca350521ad0a9ff0fffdc0b80eff87d7a93e38cf0be20a8634d7b0086bb4c0647c0b9177d8637ffc52d1f3b000e98bbf3b82c67627a59bc28b1d5eed73df87e99bf1b6d5e5104c16f9e152ecbee45a592ac119af155e6e989e9db1a43643f84ba4d1f2164ca1285cfaa1c32f543867dfac7c99750e33156d21cfe439920056426908813d33955b8dcc56f7feb65bd74ecea391a31b15e885c6b8ce92b2626d32780179b4861f48433fbfcad20e9f959d6521d7ae03a1cbd120e0a559289f0b512a039117c97ee01d956bb7db867e3ae10df3d40a02ebb273078303ca8aec244f01e42ba39fdc8ac8d3234692e1450fcccfc4fd4211b9198c9c0d73052d3c61e2ec398371fb2fdb44f087149f7e1935f52e5d2c5012e66522d88d55351d7c90e8c2af4a1eece22c780f704af1481bbbae095ae8170d15226ddae72111f2e8efca4b3cee852f5a5bd7ea175246b16c0db582425c101480ce3dbf3f0c027929b61c1be491fd9904346cccb769db8e88d5e465c6e7161c5c955e54e2de59af4cb398ca17f83ab5c431f65ed713e8fffa53600143e0b21ab431b49c9ceaa3490a08f8e27324513f969aefedf9d394d48e635d2f158eb7117e82027fa262cd95f3a405f2a9a26cf62eaedf4dd85eead5fb7c546f20a2ea2aa1736e6af14ff49c8c2c39adad4d5c275cc3fd9c3f429db91fcd163b2eeb9c05c107c85eff294c8cfd32401f140e84984afd0f2ad015b0fe9a1dbdc3b190b816a88238822ec98717fa4ef757d93f1f7c553f84515479347b231ebf9a1e62d80c69964449414058923123754060cd7664209ca446405324d91edb3ab51f4bad2e0cd8b1ce22ca55b7e18bfa7e0d73394c6b6360602b89a2891df0e3ab3f97a81740cdddfc0732af881ea9a895a26bdcfae644d80a0cdd9728416df0be35f811218d2617a5008ac0e2e500d49b3462973162c7c50a72b691cf39c15817271f8d1bb962600afa00d2b545b296b9aaad418d7de95c3b8fa9b29b7407d330179b7222496bd3ef097eeaaa22ce94b0d3a3e685ad26b14b182f3cc2b024c33d982ac30679aa2120b99ce059abececd25817e9a0f7cdf9f45908f4e0eb57d984a00b601944a5b6d89192ae7a3da290f6b25c3b092dbd33bc8c4d90aa9f39a7ce6b8984250e84d0a949131da1b9ca5d2b6191a7ebb519cdd9191c991168d650f0814a7925faac7420767b339493c8800e3b7ae60f9c2f057c766e372b30a5f5a354d453137a3a74b822d13381b8ce7585039780da30f80cf9772fdf8889e96ae81a222426fd41dd51bb299aa342f76e78f1bfee84ea5d7a6c9f45a0103d0d04c824ddd21c748b8054dc7c817b9e544acfef01008a538320f16cd4e28847b3c5d58a918a228339750e806845a2cfb6caf2f376c14ba812aff17eb3bc3f3600fdcccc21162249e32424938ff11337d8d502d1bc3998942daab251eae3aacd758676c2cb5f2e915287894314c7806ad433897242e42e275cfc488af516f878881299e8d6451cf2098ad66ad7ef852e6efff7dcffd5bbf21faa63fc58b780b15dd7d1c7a2630211183ea91697718badca03a4da5355ae0b36a92f332ce6929f170dfe81b4101d08baf870347221afca53ae366071832c0dd253ccaf2cb65a3e7cef1462364622e0efa826243d49b60bf260c2c81d7c526047d5c79d7ed80a491b9b26c5bcd723a5d1a3b2149c6a32112c1345eedd2dcf307df0f8c4472c3c5cb0c5e5b6a03029ac1ab93f42eb3290da9caeb42504890bef82e4575e424f7641630dcc4b76002d4ecb799603ef5b21525ca3ca3181a4cf9c80a222f32dee584a136b4ab7eac41dab70e109ad4d478b2be79f23f417adddeab2d24a6aa0d6329e3e410a05738b04bb3814f0100d5d9437757f03ffc41ee1a04f7498ac0e9eac6bbd05ed1fedb51fb22a4bdeb1e837a68600c7c6977f8b7c8a555c8698e71cabdb869c75f44ca917595d20af2c25f24cf36f39cdf82a7558945a09c2878fe62a4b1bb1a895c84c03c53728bd6043f9ca1de6a92534d62720f9783efbc509e3221d074207a3db2e166f19215d4e4608fb6ff6bf21f70d019ec9eb80414cd13cfa882866cf33163a0356404967e67dfc99c119af4b6d19705da54c312a1836d50e7d1311584029d80f25ff2f2b30ed9856602b9ad550472ac77f2de92a8c7a063a1c78cd4bfa771610fff6b311f7e1b053ed69fa7a94ba39e462fb3bccd82937395dde56e0f791bc2d450f00ce020f218c443f9b744c4f8253ae445e9e7e2129ea0eca8c7ef7a2111bd87e8d1f0bdd2a31b1019add7f003d74a68b50ddedc5165895a4d8cf3a7e600c2c5645d1befb7ec8c989b489ef16818ea1d22c192d13c0abe6c603abb270692cf905b59bcd392bb6b2bf05ac778510eadf7bac3709272af90726cf3a35eb162a91c2365ac05e796f1d9628061db93e0e3b987e5a00837b9c9c045985bec32d099cd3d2a7923fe97caf6893b477f70e63545b4a1254d54bbae47f6b3845a94a28ef83b224deb69a8ff46c08f9065d06418fe75775f443befebd75d36d68bb562cc42de4ce5709663c605feea8712aa07cb6361b5596f0867ef0d30dadf9b6db02e5e06bc09e03f2682ab2a20bdcac8d0b1d5be9c71df873bbd9d72b3605f08203e8f6bf09c64c897d2e12e29adbf95399d3510373c97caa467a002b601623162a080613228fe088581bdb7ff1032eaa16f8dd73aa145aede9081e5cb9f645d32fa5dd1d6b553d7f9b224746cee59b035cfdc8a0a6babb420af12774eb113e242b3779e7b43fe5b9e24bf0ae965b357b0c08900a95c36ab50de660d446fc86930f38c3cb068d3054d8590596e0b1b8012f16fc8b6b9db4b678337b46d0f793572c11516df2c0e95757b295447bcc5ecc510210c914d30f7cc4d0feb4e4e9318c265dd0634e6e15d282c43d2b1e8dc503c9ae51ee7195c7731f5f4fde8e43d4fb0890f3c744b775f4b42f7932b503304fae42ee83ca2727d05b826be2e3a2e89721c97bed35c38bb8b946120f7ac9494537e442422271e6941685e12827c509d019e0484adff2c5613069925a8897dac838aa3628a0bbcfa63786bc8967a5d193076ee39d992e49d16a031643ca61b0f242f8ab797b07e2f292d746538d749b5c1e879a7abfb18f13d67b2e17f78a481e7c1e59e21aab58c0d9d9c953e85542341d7244510bc555f0b45c1c02c7e501e22e98b4a41976004f309e5564c4d4b09b22e8bd636668260e8fab34c986d4ae2145b1b188d1c23ed26e26660519beb0ef014c87d236b49066173fd5b58daea40f7dbc05692bd05ea0f164c451f26771a5276ab7fd34a84d1148632d560d0fce5bbd368dc04291e497312d7563204f16b117b430e558b4b5ab62e6e0666b9ff633d2fc719954f4a9b27f6bc0d85a7dd14e2b3dd35dfb3fec0a240e7752e5ffd4458c72a0eabb74838a038105a8baa284b907d4cafaa76d5b1514ce08731f6765c3a22e3c3689f89905efd62e12505aa0742046aef3e0e3f9168364f928a2e31b10d31c4df762752ab37c1727a46ee193bf0a2b4d884f2e5d41052b7f46cab545b3b189bbf6cafb61d53b7872be6b4e8ff61ff7a59efb4fc669521afd7c6bc05492db59daf5165e5c2edd99e432fd8bebb30a92cf5126efbe2f9443386826ddb05ca8ea5c018581a31b81c543427eed0392252d3b4a0aed3535dab3a44ebd46d7d256a9587e96db23550bf56d3eaacf40e92529095cb5130b1ea9ebcc6a3fb80c156a24fde3e42d217c62a2b012ed1ec75208da59d7f80314cab02dea1905691dd005353cfa45abd6d683e9de8fd535481e22df7dc4c4a1865d3a2d351486f4f20193dd8f1bfd3c9841f81bd3d01022a3462c01c7e1f70209631355452134cfa688155379ca9f19dfdb6a0b01d2b3b9d0df00b629f2af61f82cb80d918e443e01c98b272685d09316b65a7d780247f75c8b19d825486338b2a134309366f6caace6625e7e5fa35101779891244515628c240501a66c658717f5ccbc72a8b7b2ed7a04343acc7f914f853fd6f173145df37a0050899e0d2cd2312add28e523f951d9339a40937c703d2777b45d7426b6dd2324a9377a5403b441944ab9b8755c59951138b7fd95fe8d2cc3bd2303a346d04710b9fc8519da6af88b27ddeaad054cf34b8e819ed0932d73f0c40f70b9884f051688316db3f3e881e7f38c84f64af879e77fd60233e715eab4e631d0587932552a7ff53290ddd259e566fa547fc9b19114ef1f64d3fe32283734b6da099e4cae11f6745d94c2c224705f712040e33086233803aa3c9b482f7a5e9ff9afe59d8104d33dc6e86fcf551502a6b3e4a9633ffd968b0014c83846d09e977c1011d0781ccedd6da350b90fb9b8bdc8d9ae8b21e3d025624e1e4474a4f0ea777f2dd0f428553edb50baebc7fd7e3478c24d90bc357b3d012a102ca36ae59d9fe81eba9e03a0daa81fbba19d860a3ba8d6157a0bde3e8bf0121462b5e488c1656968bcd9054075d813740d03cf622e1fe358e1fb4e79e929423415fd19c7abc7140b0b691c2a655363e824d46f97201dcc6cc3540c653cdd008bb9b17e5a7d1a2cbf95a20ce8dd3adfd2a6ba00bb1fc9526c324c7e8cde668ae8664bdc9a593ad2eae3ab182f4319808798eac0aad1bb02c78886541218bb96351eaf0eae3c4e38429cef20bdcf55870d946c785a60fe77f6174a802f2afa17a1478bf57346d812d5ad0419953e087770a6213594f908c644b43c447b528784cca69eabb8ff47a016d8f00de77fe590bd012d7671e189d1895da73d65f7cedda30c386b0f655d890386182fba3ba61b5b0d5e1c721dba8afea640fb7d8d783ac2cfbc9866c1dcb5409f4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000299179abb56149560ed425c742bcb879811d3cf56071a479240e6108ffa6e131196edb574f4f8aadfa13d7e62fb99692e2e0fa43e6a54aa260c6d73fa1c4b30c1cb8df94b2d75c9fe6186fee49d3d9bc9520b5f980b68840f2e9e90be7e0b7f21c2904fb68813c3cdf8d382f80217c097f273b7d29064395fc683d53957c0d1b2d3aef80bb7d5396655edf72c6f9140670d783ac5dccb62b849f45af4a83e0ee23b35c3e9146662d8dc4a95928c57b71055fb2f077a36f3d65b20497867eaeb118dc253f6ed05239a407097e7d47768b08196aee4fd667dba80ff3dcfae66bf12060d77d50d38563d140d068dfdb10fbd8ea0f9d9682d68b7fd47878495b3f4216812a01bb27b89a07a146e1b22041d30ad8943fede9c71615a0637f2365aabe05048b371461e89a8552b6263b3359f68a3d8f4c00964fbcdbc703d13c837ad421c7ea0c8d3d13e8e5caa87bdbdb3d5a3319f89a6e01f55d5e526668a108a2b51f6a5f09a3fe264caeb7b3d9be6f18a7ff4be543cf7fa9aa6bf431bd26befdc72e02658f2328fcbcd74504d89e6f902234c6990c91cbea2425a8ad117b6f1bc4108c4d695b929454a048b4e60585dc1a0600619091340df45225a4c2f5de52cd1b0fc74f6af97cf5abc0df3cf93ef42b5ff9e387438a2805e5b9ee9ddf11d1ba1627888a418a71c8ee884fa5a61e2dd9d263d56a34321b359a878167f90fb0da22301fda5326289b7ad05633c00662dd4f6d438e48a63cce05e240575081066e2da263c7eeceaa3fa1996abe31daa005292db627d55f2c6f38a4441587525fa5215ae7f9a0fe09b07d47cec9487f021600714ff0772cac700270fbe6acc649fb294b306281b954f5d656d25dbd98c7e555b568f41bf21dff2a51ea96b9aabce708da306640224916198e73fb702a0895438155bf1f6f6167a9834e4532819911076e0b9b053be6d43a6f64821f665536cb356c0fcfc78d9870879e34a500c8ca1ead9bde7a5cdcd3388c7e2a356da23fabee65e1e4343a7c1aff58fc045fdc5d2effefbff062de159411942091d17f413795d7f564cf68e0d75a106e0d27d92509b9fbaf5100bacce4b6472d27174b85d1f65d0f82d819f9a74c1f62e03686ea1f38e29d6c37603356a2b4a58dba6c55db04ab7d9085e063c93d207a228ba6bd1b090beaf62e2c9223818642ec77a0936e4d3c937bae589a4df604d354c005951bc0cf093f4c46c7560ffec609e13fbcd21e019949c25eef6883ed30cd074b1f0eb835faf204891c1de6ca2ca159d514793776692f4ad1728a595ae670126e10154f590429d792afecfd2012dd607eb78366ec786a1ce9e45d4797e1d38d4082087f2be81fa4f338b979a9da6ece7ca24ba14595eb03d4c1d921f8c663b659930b647fe50351254950025b142ac6c41b653d4a103eabaf111defbc2ee1af56831325785c96572909c8c5664fe06d51717555462d92be073dcc0e19d37ff3b44e2a5102f3984771702abd115eae19b76d82d73614aaf665e8ba4b3a7c5575eb8326bd7c3f70db6924a833a5407d899f76c6c11efe33ff579cd9fb59b5915859bf1b3497278699f0f1562e49a6ecc45d091960cd440946dcfd59694d1612efa2d12f2fc9bb9499cb1019a8177346f49309bb69500cf849c58a922f1e9c9bd7210a2995e5699a307302115880edff6d068e91c61da9c7d123de7db435cfc8f78bce0f82fc7d4c3e7082d2a3f7f9b2675a56d723cc8f49cf648cb687bddd6c18add40b405c0e278c319aa7640c4941d30414fb5eb38baa23c7770717c4612b7c28382b621243320f945a50d26b10669236ccb3db47f70ab21854d0b7c0ba52ceefcd30111d2dda27762f06d7a78e812705088600748483eddf419a297a739c6c6d56190343291e732b096b3b0306e7844f708800fdee8c364253d8b9864cb3df109f0fe9edecf6da250feedbea86a921d8d844b022efc49ed46d29da4b74e3eacd9000000000000000000000000000000096d91c5fbcd9fa3f3c9c40376a5afcbc320000000000000000000000000000000000265110b7d31ca42e8272053eecc5f20000000000000000000000000000000a0a97acf20edd350325c3329ba77cc8df00000000000000000000000000000000000d19a7a1262a9c4baf3bfbb65045940000000000000000000000000000009c69ddd455e989f4084513595ca5dd14a5000000000000000000000000000000000014fe155cfadace223a4d9545bc9f6800000000000000000000000000000046bb732c16e0846bbcd158b61765e672a20000000000000000000000000000000000144accd117ba2915177973c6663f3a0000000000000000000000000000004acd3cb46ff38df9a81e8e5a7d5b123dff0000000000000000000000000000000000045df89ec8311432c488d379b0aa2d0000000000000000000000000000004a9b9f18f4ea8a68e7f8ef77364bf9af6e00000000000000000000000000000000002296a3c393a43befaa77b404ee521f0000000000000000000000000000007220ed1e5f16b3f8f0529c524d2b12414f00000000000000000000000000000000002e62d4271481355349b0d0189646e2000000000000000000000000000000e13bc6c670b6c72b2d2fc789bc04c71f470000000000000000000000000000000000002a3cd313014291a4695f75e410ef000000000000000000000000000000bcecb2a9d89c07a357c265035ddaff3e8100000000000000000000000000000000001b389f346d7cf2462cf2dec385e128000000000000000000000000000000a2154b076826e6bef085d73c13f49129310000000000000000000000000000000000031b6702b7cfb4be0f6692a3bac7b3000000000000000000000000000000dacd79a097522d56620088968f3bde767000000000000000000000000000000000001d0e74be751f05cc4b81a3fb6a422f0000000000000000000000000000003e8df4bb037daa92246b9ce5ddd0aac080000000000000000000000000000000000000f2b3440bbd00c687a407494a7dcc000000000000000000000000000000c0cce09b54f55ae72ff7b9d43e2fda988c00000000000000000000000000000000002b98d77e4b13864e69ebbaa48365e5000000000000000000000000000000fc3edae5ec8a24b61f0a07127c719bd9c900000000000000000000000000000000002ed7e6e96bdfbb4237def720a116e7000000000000000000000000000000525bc1f11cf0c314cd742bb2407c18adb700000000000000000000000000000000000ea314edb4407eddd6145319198d8d00000000000000000000000000000072310e9b94e317638eae85b8894596239800000000000000000000000000000000000bba580fb1b031fc0667552c430b9a0000000000000000000000000000009d268709493a2d6fd13967ff258469bc4000000000000000000000000000000000000f06c089dcda094fcad125e1ee91cf0000000000000000000000000000008df08f94dd49c762d588a09bdfb0dd72710000000000000000000000000000000000197df83785ff8906641cea13c2b6ca00000000000000000000000000000026f4cca45edbf52f9a297cd71beccfd15b0000000000000000000000000000000000302b83330392e9bc13cb1325598336000000000000000000000000000000dbe51a88266a67fa97161ffd0e67552fa50000000000000000000000000000000000038b8448a99858a1bfced9be9bd9bd000000000000000000000000000000f26857ed6499c96268dc09ec3b8024fb5a000000000000000000000000000000000014c05b26f75faf3d8f139bd609d1bc000000000000000000000000000000ec812c68c9a117e90de0ca9cd054a3d9b800000000000000000000000000000000002e62eff69e6e54d8f8abddbcf671c7000000000000000000000000000000dfae4bc64e124586b6da46a09fc536653d00000000000000000000000000000000001b9a470640d0be8f192d0cc3e4061d00000000000000000000000000000086ac1ae9d29f80c61275b685edd9d48c3400000000000000000000000000000000000fee993c976c5195ecedbac43db04b00000000000000000000000000000002d4e17f5dd313b0324586456514ba5f080000000000000000000000000000000000071e3ea502be114aa538455bbc319d0000000000000000000000000000004bea6399737139b8ce17fbe9f7b4c7607f000000000000000000000000000000000028ef9112bac3a48705f2d5c5991092000000000000000000000000000000a4765ec1e6e082bdb287a26f279cfbfe6600000000000000000000000000000000001817a75825ecff001deedc6d7c03f20000000000000000000000000000003d9c16043b4efcb3c1ccc01c73c0a5e5a100000000000000000000000000000000001850358f1b10eecd15d14cda40391d000000000000000000000000000000117dd106a740f124481f79c2e00dc0b517000000000000000000000000000000000022af6c8e792946f9ab0ece9f411942000000000000000000000000000000f626a621417487bba7182d071365f8e1d0000000000000000000000000000000000011ccea3a87b6944d2a2b4dea9de4a0000000000000000000000000000000d635f5b2342fda66e8d0d987d7772927de00000000000000000000000000000000001ff3095f983e3514ea01906271a49900000000000000000000000000000073e235ebd8bf9268b066ad05ba33792ecb000000000000000000000000000000000024e49fd470b55e99c25398393e2434000000000000000000000000000000b198d860097d71b1929f407d2066ee0dac000000000000000000000000000000000007941f15d06c8f65b144b7fa48dd03000000000000000000000000000000204923effd9d10b5727f667c50409f22ac000000000000000000000000000000000004a552c385e9e827284e948dd642e700000000000000000000000000000013ab17fc0be263fa84f71a27f77b3cb41500000000000000000000000000000000002b09b2ffbb071932461e8914f15572000000000000000000000000000000c09d31b362c36baf02bf9245ed044a0187000000000000000000000000000000000014f2af9791ca84baec34b4620024e0000000000000000000000000000000977eb643265e229fcd1485aa86890fedf5000000000000000000000000000000000025376db2aa47392181e97a46569a870000000000000000000000000000000103773f5e32275aa48148a6dde00ab912000000000000000000000000000000000022df157a2c015d47277241de82c2ba00000000000000000000000000000044509218df19dce556686e305fba5f51fc00000000000000000000000000000000001e52a95ede5c93d8eb151a8e462b52000000000000000000000000000000b395f548eb0cc1b64b12eb27229e8ce0d000000000000000000000000000000000001df0d2549017ea43d36f15c584154200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001d06d7c70fe39f4428f9759377ca84abd836c5962cf1585b9f551494a87771102011da31edb85766e836fc406c73f72dc84c90c338cadb8b0899cf4616dcb5350fa15ccbaf228f713cff3bb68a4e4679deeb156dbc4df4ca1669606e9f0a562f25a206b33e77861e1b562fed029453124a28588ef688ad7dd03f4ce24d54ad6a00071c3097afe8ad968e88550dab4f3330cbeb82fd9545eebb05ff72ccd0fad42867e4a60721834aaf9886194bb1e7e52ccfcbe8ff1d830d3f3e80074c4c86070c26992ef8619f0dda29daa6b77e3883f09980b2db8aef89ee792a7307aff99918a15ac4195de595cce8f90126dc475a9bf9470f1312a236edc760f6b9775d3808c2fa3a43e223ff44d383b9a15583b2d544a413c9eeb68712869120be1bde9e1b2e8f4759e322b32170f0f5b011a8e0bfffd3028a4b62a257e6543e39b03be402416c537aa8439fd8ae591c1a87b4558261dcc6c7c5e550ed62a67bdbb6d7e3005d15dd3b37fd10b4003ce9ec6a317ba9316bb550934e5f393bdf97381503c72d7a193185bb81ec73b39cad371e031a98cdd670e78cc0509fc39d0e9080f0cc17b1359d7211020b00bd867abe8d6876fd5b06791890bad16a923cd2408c28ca293c3f2b8535451e50186dedb36f1cef89afadcd502985b1683607a3e28d4313270b69abc41fa89654650a7baff92e515b6b6110a208aa3e05db1023deae679f1b33775bf329cdf22135cff5d71fef2fe91100e58c2155c610fc94717f07824e22203ebf5bcb50ae4c9c1ff3f29e2c9120e643fde1cddad7f94a8b213bd135aa28e5576baa55571c2acdc8d1c695c0667c0a880d67da8353622779f6984ab0220dad20b4105789c821521334826a43274146cff6f86c7ddee79925975d564c620852c38dadd36f4d64046c1c25cfb565825782ca80a26efb7ca44eaf06d3f5a900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008db5060c8593df5608bd34ed5b021d1fb500000000000000000000000000000000000d964ebc77169d8ec65d38514421570000000000000000000000000000000a12d4a34607550641fd28c5dcf9c0b838000000000000000000000000000000000011ffa635b0d0c3410cbb8a2a6d7d32000000000000000000000000000000fa8e3ffe254c3bf4493a985bb2189c2e2c00000000000000000000000000000000000fa62dba3c96f2975fc88082aec4ea00000000000000000000000000000021472a58a601d94a319e0278603713afdc0000000000000000000000000000000000070a0839e4e42c6d5cf49680ceaee50000003c","publicInputs":"19dc71af02455fd7b437af6a07b08fbe005c18b2f4be65c19bf1eb7cc0c884ad00000002224a70c36120d8e08b02885ec88395e57c7db919607b2b26d7b1a761a85d3ba1000000040d500ce5eea424fc5dbedd9d2e20273f74ef1093210ecddec74c65b7fbec3a9d032a9a79c14883dbdd78fe7bab0394b0491e66bc66bfaac2edb5d1c5a5994f70000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000160f89744843c7ed99f717a7b6285740719b13fc8c71cc781b2b7bc669662a6a0d560ad12f14dd5026070bc037ac343535db339212f0904dfc96c4aea4dcc8ab0000000000000000000000000000000000000000000000000000000000000000"} \ No newline at end of file +{"proof":"00008b640000045b0000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000029c000000000000000000000000000000000000000000000000000000000000000102569a59ee1ac7a8d3d639e5b0ce3d403b83817fad4ef0ce64ae2befa3e5b9880000000000000000000000000000000000000000000000000000000000000002125c927dd0de76f063cb388b0eb79006a71c2c467d77347c912716e226214d6300000000000000000000000000000000000000000000000000000000000000041bdef12b868de34c7158964699584da32b1e7f038d2db9e86937f4320f0b209b1fe377018287e4433534dd3e41c258ecfb4f45d32c6bc672cfd0207185fde0fe000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000193267463615cd9b4ecaa6f720f5802327eac0b7313912d4f33b80b572fbc14508ba3c9b66832b1f42f21e1fbcca04fe95cc97b2c32a66f24f16e42853993a0e00000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012189e27304c838e300000000000000000000000000000000000000000000000985c06289c30a6a9f000000000000000000000000000000000000000000000009420ce02918efb1880000000000000000000000000000000000000000000000000000f48c23066f5e000000000000000000000000000000000000000000000008f73303fb5521728500000000000000000000000000000000000000000000000441d894a4da4b43270000000000000000000000000000000000000000000000097e112b4dad2e16b80000000000000000000000000000000000000000000000000002d4845277c71d000000000000000000000000000000000000000000000003532fda527bef209b00000000000000000000000000000000000000000000000018fb29dde3adc50c00000000000000000000000000000000000000000000000a3284a388739fc7620000000000000000000000000000000000000000000000000002bcbb9a83ebda0000000000000000000000000000000000000000000000051b88c6a06c0f8d6300000000000000000000000000000000000000000000000d2275b2fb2e01048e00000000000000000000000000000000000000000000000041ea5add096a879e00000000000000000000000000000000000000000000000000022998a28814a800000000000000000000000000000020a4c09b8157a83ede3e933a0c8a17cb0800000000000000000000000000000000000e10b37afd746f69689ef702a863470000000000000000000000000000003bdc6f25064046c31fac6815ad6d834f52000000000000000000000000000000000015532f1394158280e9c5b262495bca000000000000000000000000000000200f5a8c403c3ae98e465ece5d93565808000000000000000000000000000000000001b3d265f330ec060e354e19932941000000000000000000000000000000d9adf8961780b226c47c87476786a04bf200000000000000000000000000000000000741a698ce4d0bc1f593ce7ceece51000000000000000000000000000000a259417e85fda5c9d3a13a85e88c0b5ac9000000000000000000000000000000000011ed0b39603c1b8b252e73385367c0000000000000000000000000000000467158cda2d8a4beabb695c6e7e1672ae30000000000000000000000000000000000142e068301743e86fba4f53335f92200000000000000000000000000000096650cbf350fd79e4e21a3a53f084e5359000000000000000000000000000000000025e86237c45eeb6939f852e4019e10000000000000000000000000000000870ec61adc23bc1294a793de7d329135e300000000000000000000000000000000000d59e4f667228b55d76d57b80cbb4a000000000000000000000000000000dfa123d263c27f5e0a447510bbbf014a24000000000000000000000000000000000014c0e9197abcac09fcca8aa3f56231000000000000000000000000000000693200aaa7a1cf111060bfd9649742812e00000000000000000000000000000000000a64ac6619042e406467e1ef5c7d8000000000000000000000000000000017242d34ae4d5bc824da2a7b879251db3000000000000000000000000000000000001bd2c1cfb5141b0e5a5be4b94e65da00000000000000000000000000000065d868bbcd8b74f45dd8f024f2428cdeca0000000000000000000000000000000000222d34b257386cc9497f829dddaee8000000000000000000000000000000d50105a74dbf09f4818c455b6d7b0fa27000000000000000000000000000000000002abdf5ec09815d6c5bf9f88e0d26fd000000000000000000000000000000d34505e69518c155621b27dea90d44c862000000000000000000000000000000000028e927dd263b5a5eecbab80b4f0ac30000000000000000000000000000003087be9b771666928f848dd7bfc5e957dc000000000000000000000000000000000010bfc3e0fdecef090eb1705d77ec2b000000000000000000000000000000c9e70926e040e8728ad4d1678beeb4670400000000000000000000000000000000002946af12346abfd95caf6699b543a21a3793a9a941b6e4dd953b737235778140fbba9ac9c36b531d371bda74aa1fd6162cbac937efe944dabb0a430f4be0dbe7382dadaff6053e26aad9b97b55e02b16ab9efed44bea0071b2c05a093c31e7252538ed8f53dc730a04cf16b0d55c5c261022d541b8676341ddadb61f9626f05abd6f656ee4e1929e5c303916ae7f3404f11061e011161df0cf1a31e084d3e1c37135d45364d2ab1e39253d689f31b419965fb39c9829702afe0681cb3b58b5a46648d6f17cbe45aee13165b3de25bd1f63ee0ce13aa8e5f2e42b8bf6dddc6abdb38ca12c38a7f90035779fb3560a3402106c22f7743b27312fcd5fa39c0c5ef9393192bda7d86ba51f3fc1ea331f670ae7ab9a7d83a39a1d56b5833afaf6d2486f780a64adb200fd1cedd76e9aa7501c6b958892a372a0d31ee97c25b27585ab615ded56c7b202709bcea02f4ad746029b9c89243932aceb3c6eabc08ed44c4e78ee760e2cebe204bd87a737cf0c100fa6a19b5f300b28e99add95c4db87945001bc77380e632387fc9bf8fb4e75360d1c2e5b00ee6a997b86d6bec1aa58b5db4b8dc4bc1f73ebca7168c3510a57a12cee9edd53478ef81fb7d56355ad2bafa78ef21455a7f43e36b8a7b2b0d7ee0a2bf7ca51c74be0d52657e6f5024b8775ef36292b7e9bda109b817efbcec84dca11c5c3429a6e7988aef74142045258c7e64ac77baf33d46464526342c2def8f51d464bdd9a17f986db9e0912e407c4ebef64aef6ba1f744cabe3b104a02236ba0d27a85b2b04a4136d9671c9aaea77fadb0d8854564f52f52df2dd7baee926d5075458dd715570fe26f268f5221fa866dfbd587d8abb0943cde1554914d3d2d2232660003c75d1e9c4c3c00f72bee367dda32110b8a14dad1858313439fb43ec014be463c31af0bac5b0ce597e94aec7f6705a699712f3eace15164f39b938752a3b86ad3e1da20fdb6fd54c397acb300738a37afe6611c84e2f22d5d54919830259eab18f0ea42f1dab14f042813bd28133a815680798b4442ae3c32cf595140bfe7e793f4ed5678c627740779f3bd5404ff3cc6ec717e181732cafd2e22d6724bbdaf40a45f95640d65ae5da5b4a17dbff2b2bc66b0076f00ab24dc1a6d9aa2bc874886a704b74ff967cd2fd1ad8bb42cae90ab0f79b9e246642e4b7f9ddf10cf2f9e44db39561406b4cba8bd2c86356d024782bfc1976323bd5e4616946631ae25763db7c26ebdf5e4a427835a7966d5d87cb56978d6a92d8873a27e9800a07a29c7f148a82dcb8ad4c2088078769ee20753de841d6e51c27080a9259737d2ffb6e31dd85ea0c8e2f369edc0b37debaf3c08acc8dbb825b7a3bc6206c99560a3257319e4b1803cc5aca51f7a18867333b0a8dd6c743e38da249bfdf6ae587059fd4ec89f4a9d0fce1779e9e9e5206f66b8d8f0b1152d734fc15e313e5824b0aabc25cd1ba5ece0d708c2a9cb2f3974e5e99adc10c9ce5eae4024740cbf85c2bcf74ff536c8f020e992a6627f007a1bf522776d89dc1e1073cf92ff50c1f962ef279021f6f7c6a281d66d0f6507f031c9fc54c4d9d8e1b04b9619f7ac1dbe517bd743e57a03e8e69299e4ef50a9ca13f60d5043c9de40b5c235018cadd07e21f7896d9d17f5ee0ac3babd4006f560a0e123e3d4f51345f80c7a50ec8d2b0d42f4fcdb6ff7e6f365073b38ba45f810eb785ce3b8683da42a8d58e57e6220b8f056833b6e5bcc887d513c9351fbda047a348b816d30442089059716029ece25c26638ec9a41291a49263bc047cb70c3bed2f937e9ffd56509a3b6efd2eb5b56d13fb29a78a0083a85772eda91f76c9d372af4e894cc7c6424a9e5bb95d2408f60f8125a22e746efb0dd5036f9d15a0044b0ce6824d1dce055ff164612182bb77039363e4aa1714cc81cc02818e0d0a05023aa1c6d49a31810bc98a1f418f496a019924b173fcf343b986ed489ab82d7149ac4347ca31815712a9b7470b8950912d4969ae35ad30bdbda3c2578e7a3bf663be902dfb30040da4505b3ec3d7951419b3ac856ddbac7e3c33b5f31379948c59930e7b3e70e19144cc011088abfa231195cc3f057c533d83f0bdbe0d46df6c5f106400a29b354337b178a6cf16c2d52f34b73766e0cda98376dd9eef548a02e6f7dd5739c7ced639fbbf8add45225309dad42e760821bb781540dd9488e7a094a300234d27eeb19335db02f7b35221055e1f0bccfff895ffcb852d42ed5dad249228b01a99c9124e771056b2011699065a6ae251d889b74ebe4c8a081285c05a333772be976242e7794d8ce1292ea02c34ddf89e06afe7fcafacbe3ff380c4c6ac2d8c6f0ebcbeea31b6dcbd8f883c1491a73470cc6ed2a64c85ebf85650c980d6455c4161c0c590e27a00be97ea682dabf2c027be8c392a33e2e0e327117de8baef83c2b16e73e5e564591da163e2295544427ef991ba9eae1d6c4145e9b3a3e9f78d1b2bdac68c1e14e1a661108f1c46723ffd82434bfc32c2a5eefd71d3d30f00fb3ac9e1ea3b2afd555cfd57a72277d571f6f5e15a8104f75f809c350606a6b2675318cde836a924a8c6a2187414f3bef92347292bd3a81b69d955774c112ee996f33235dd028087fb5f56a75d0ee679a841c6a822ef2235e5107f5a1414556bf0d4a67870de5806fb2a35d0370bca02651b89f0fd6ae04e52a5c0bcfdbde8096299a5116d21214839d7ef56a720b6e3b394c9e7c77816bd24b143d9a6f5f5e7f378dcc3c41549d10cdc10a33d21ab96de1843f9729a7e4c6b499b628a2e3c51f1e51855bd0a8623ae1b701cdf0db1c53dc3b3ad63e79efae4826c9a4022b673327a1e5a99a021961e1f9877460b5627961b25b3f1c3beb9da1d00735c5fe3eda62872be3bc1aa7ff0c9caa4b71f00284219ed4e00691cb8d38c4d4e0c699e86479b0ba11fbb4597ac44b34e4700375b434bea848b21b3533f3552d119140224305204b5b89c08ce981c5165c6045a1ba261fd66bac1c7e1f42131262156aa7a52466c9504c3736c10571b6e6319e56ce2f62387fea59df9c9545cf3b8deddfd2d5c4abaf3de7cf08e95889c3426797310c5adb5b12bdf53d8de0b409fb365ec1ad572b41a406e213b3086930b0fd4e837d1aa46aca7faa17b077653c4398253f7c7f6f5d16fb36c314a63087a2501378020b090395c15a36915ee144fdc5eeb1e02b199159baacfafc4b84fa3112d3d8930b50776e5da242f29446de0200bd77dd54ad8a1aa2589e30673029606fd00ea75886a050975bcaec46eb2c5733bb026c5920c05ed28ba4a063135371d912736b053d46439bf9a68ba6eedf941357abc5d878e6e53008c9db59aad5629a06e5ffa90c911f366cba8d2f7104a742b03cb96e8cae8c78c50584e9bc8550fc8fd8e4ac147d101d78390d18c60d1f5f291b554227b48384d1a6300ddca56154d320dd43c82f0ea5aecdc4f176eb5f3d9d87faf33ce9e7e180f991d8f5060095fad700e44198822b0af7978e17599f1e06ea0575e298ead4692ab44a9489b1d8d9bf4436a2b863b88b39d0b9cc8354dc6d0c15e17b402adcaf06ea66be07606234912f0fd32ed8f6a8ea485d30486fe12c80224c4d9aa6831d2e2d9423a6610473387f5624a055835e6a6dccd324d7d5262daca77019febd171497d53652a1180e1c76c53e3dfe126576b8b173f9a545fdacfb6dfac476f2440d8f193bc411be4e0f7351dfd2ec6fd2f8a5421639a49ec4fc6a156c452dbf7045d5477bbca2ab4673d80f6ed21d500f64627a758005179607b119bc057ce0fa0c47eb9094e1b88b5694786e591a5ec7d4dda0f51fd7cd25580483f4d571542930da8cf87150ce769ce7207787e7b11b9a2a9ebc0a449e85d18193662a20a7b06fee8ecd7b22b12e7ef98f6d6b928d4a332c89688f4357bf66d3145918c944a6d9737ce69c20176ac1dd368c287891ccb6ac708383d7e19a4c0bb550b37ef43109c701aaf6b060986e5de4aaa19d55c0f4d2bcb28c8fa2bf8198252cbba7d438005eaadfafb25a3945fd9bbbbc2f733c35b8f52ee47e6328b0c4cfbe1a55892f69504629362107de9c1ea93ce5f6f9fe4ea153a0c34b82468da7ad603fa47300620163fa79f05e65b742f9d108eb8c165a17aa59205146388b4b041f96c820bc049bc12017c194e299b08850a6962d72f86adecf38662c1b887cdc00c630de454cd5e0eadd52cd0543c898dc78c9c41647b1c644aec36905b8b48754ed28c9c1642315d532f13d6a7e246f5ed1a420e648d1420e249ef591db854790f13ff8472e9d5716db2225c3fdc86b1b9ae0f49a737776f663e0961b5a3d097273ea025993f8eddb6ed166524ff7013a9505ab0697ab9656ef8df024288eb0246f3d479b98d49dac14824da7f57e458c9e692792e3665e686a92517fd3d85e8095de86a55545b6bf7280a4a5961688b9976d48667a3eafa29e4ab85e42f73f903cfb282f82fe85a095913b5bfb988aefb5372ead5968301f97473a39827adfc0d639d19b72ec91e2530159cf73c74aa49cbcba799c8142dbc663dad8fad71d871180c640e5c09a48cb60d12539e1f0854a22a7ceadcd92c6757bf81277bfdf73387d93057d0dc17306c294309b187ae6f3b963e6eda567bb25568630739eae17d03a1583fd03a363d8e2f39ef61fd7f473cadf59e34fe571599aa265912d19d36995029ce08eeb0ae5e122c87ad8b0eeb81742015bbaa9b1ad1cde0d314925eb1dfe999f96b9b73f2de2b1df5e24336e7045710dd2a598e8cdc9b4a60fd2e495a386101975cec2b730125c4b612696d968093ef30d7798ff3d89750ee37d27ccff3c165541fdcb71cd92a2b5a8b69a9c7cbbaca4ed8619122b031d01746d98b328d5125c342b3542a1a27b2de2cf6ee19aca504fdbed41b82acfd2e35f9fe21b2cbf48923de49ce94a10308c12fbaf3a006dd8480579aa3dc67fd606d30f8ffb6c72af37a9b975f0d230fa5c900868d929ca5debc440fea04da76707f55aa2711b6c2e705283e62c43e081e4ce2964478cb7a407061331548eedcdc943649de08e219f3735d60245136117b6e4974845c04a553ba17577012ca708c9e0778dc04dd9bde3607b552b2450f8ecee6aae366ebf27daf9e73a7a5ff1f41e1e58859f3516fe506fbc52306422459bc5cb9b5160babe71ed79b8299794d3e84e85043d655cbc0c865048a4bf602b7fdef6eb81cf63d875280a36af50e800b9b2018ac74dcd813ddb556ba55d51e3a1b0484d38bf0b332ea375887c5a9bc4abbfee35f3a2b7036927ec6e4d5700ffcb728d107c93b0463e84f7afaa535eef609f49a1ba9d6b5323fd3c6257ade2486fddef5f12453bda4afdf58af6fa1d87b9604d2ba76dacc0a29e61abdfe3b2f40670d057dd13208d1a8d1fe980868adea0c98bdff8a923df4bfaae14c0f6f04f260b9b8dd86fe2e4bfc5f588fc38afc222cf0681abe5cacf6a8d9d01fea962889a1fc5e40fdd2a2aaa5f28aab864b72471c65744f08df7e4c22bfdfb12e6608caa0510fb51c74047a8e4959794d97d196fd3def2a82f42c18c3e28dc3f0c221017f784c6e9c87374fe2abb69f8dcead7e8f461e3b851e760f985a8fc888991811b2e3460c96f4e57f47fb79eb0126fc3b491dc654a5718e2b76d17f7ccc5a23b6591f7488fd295acfc4af9a0846a0229bbd4a9323920bcef5c39acf8b96940a5e9d3fa3cb770937a86385f956af6596c466fbc8bdd7ce6cb922dad7d5340c0a483fab0a66cc6298833a72e67770e184efe1ea85b84996368100035f8a599927cba10ed7514a95f87c85eff8c2f73031178117c94a5d75b98babdcc77a1e3715cdbd25640175e07f6d48862479306927c96a985ccde9211c899016b9b76312088a3a8d95aad87d74332a765c46c48ec88f964da624744bc1dbc9e5767d5e4a1b03081838cbc541d72daf68c9acc5cdb556b48b9986099525879c96fa54b0071f9c314d017ae49cb966e5e99ac832beee1405a22742c9d92f4923a07dabc88c0771311e26af2c044d4ab793e2e5edf9e23e23702c313f91d9355519e3bcc77e0a17a498f05b63bc72955e597c35603b015bf00fbeb766b7b079d4cc3bccd95321d79afaf7242b08d5d8468e7662453561e87c4cc0add16c4c193abe86b1c84e126c910075b2b11bd5eafbfdb02e4322ea28dbdfeae3e7f80ae1bead12c6c98804387c23debeed15fd9cf14a859c1888e90b606bab746308eee70b77dd5b234e0b6e9ade85584168a385dbfdb666a6d32c4087ab1d8b2d5ac1e9b9c76c2f178927ef87a3fe660fc38511db450e423f69e3af5f287d02ac32ff5ef6be0c37211d101e8b407891319927949adf5fa2187f046d04b7271bfa4c15b679d30d67432204c7018a3bcb0ab57dce794c0dc7aa1a391e085b18ec07956640ec2d2e8535a1223650e1a8595310c152cd6ba4edebf3bc74224c752840d2387a72f7a91b750418eb5053ebbaf44c686f7f1eab04d936010b39e0ab380746925af72f034a94831188b55d60605c1f11d444159c4b6b76ea3a380e8830b2f7510de6a69abd1c7e20fee8b86649318150383b52707d2879b64bea7a78b30f4f038213bdbe4f179b23b4811128cc53717aca1e949ec0db406ac1fd4132ba8a50460c28b2a900adbd03a71aa7a47bed45b42a6ee50ef07fa754f42b83917899cb189628b8ed1c08ce2442f78e792d36c0727579fd95e2761a45e48c1b3152740fa65e676eb45ed2a3184d3b40d9620b53d748bcd365809fa8f1cfb6fadf16f76e21167ba17b61724c13dc78c7eaebdf2b1f7a353b81f198f4614ff9b674540f275ddbdab00a6ad50e00ff3fa0ab62677be7b24d1989d7e491a2d40b541ab31e0f2f845313e6d58133254ec3b7fdc5a657767922b1f95e8e27dd24d98704e9aad298618a666f5b9f001dd453fd334f0efd4474f50afe94f5910e272fa88bd0ef642a52bb32bfcc1bd60d4e9a6643795aa9d3b35569a0bca6a2baa7e4363e54ae7cb2017616d15f2d910515692752df16e4026d00b7de61fb5416581c627c296cf20cbcf7141f7728ab15f5c1cd527ca111e217de87b07fde9e297592e82e446eed82d4ff6eebcd135f148e6ba7491f31f73588d9b19bf480138d96e2c74b8cf69eff55af499b71eabb1bf39091abcd27f00a7d21661d138f66c2def69535bc456099f770030d162c8822a3b5bd1a8d2ae07f3d563f27e4d27a45ac1d9b1e37123ca2d1d538700e747b2a9b41e5c19aee15c5cbcef302f5d4f784943cd709db1d595977e9fd8b217247297df5252225af7e0c8d46c9dbc638e9680a172f8ba923bcfe84f507c234e8da1efa2d9c1a61f0922860bd2bc949f8d94dbbc7ba8268aa4e0d491d31fd9d741c305444e8510cfc7dc53eff164228892196a3316501e45138edd7ccf5499d03ac17473cb8c960910c5662caf159d5b10573c825736a0d3e9538d6e3b0c7ea955f2bdd1c1492ad8cfd0323401ba4eaafd8995421356caa3f7c8da40f6eea88a34f0be976eb318393872322087d8619a822c6ea17494df22619d59ba956986460da2e38f0fa65203a9db98ba0e903286d68b1bf1490aad7bc93921ef3e4b787da2b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006aa6080e2e0426a7ab1f68a05c174e8bc01866330086dca2248ab3b3731ff26003949201707b407a0f67de1b95b4fc091bf19111f4437188732ef16eea1a6b6020c4975d1ea76a8e96cb18c92941fa00d0c2efb76803b9112074fbbae2cb9f42b7d8fc760038e2c5c24d2dc10e04404d9f6906a1673de95df84921810a21e5e1d7c23d4c1f5c218388cadf0e8da4c243c6e6ee54340729901d76d32cf1ae17f2e213dd9f61ccf1bf3ff4f5c1790084fe2575704477d346096df1273e5976e84079a5fdb9620f0de62b617ab0bb45aa3e4d87b45632d05ac95ef16a14fa60b27030cca2b7a9e94ba354d03489fdcdfa16d8af1fdcabb53be4112636d7267affc2f1e34508a24318a79fcc433579c97b701496f8c79c1068e198eac96ddf826c60d70c2b305b9f895ccb79ca919329a4299ebbea320cf57d3125a990a4bad9c830d7c7b357ea202fcd10bd9a07dc304c48e48dba2b1e70a653c60a93621192b5c2f22e09d7126391835cb630533690ba9618ddc4e2b6105e3bb929431c1870e781654c43c7885922a4bee8b2bbe7ed296fa2d34e737bc5c1f1d17a10bc652cc980b344f4dd31f25a48b7d45e37e09280c6bb8b17e37715e341f6107d8ef5864731322aee5f839697b7c916d3f321bea17e94fbaee8349c4a75949837fba2805802f9c51a89797ddbf4e9384d68d5cbbc9cdef5dc41af215c74e4ccc22247bda181e8316132a6fc947a533ba66ab3e9a5c6268025eddbe85f15bb9ff853dd9bc012ea3f216a358c4b7e1838484d6f24ccd7192342ffe7e30f7e73b617eada1fe32301e3162a484531d7a44677d4a435ecca0249c3f735f2ecb2b2fd41cee14874a1f49fe2f5f3a20ac51e93e37084ba1f57eeb671dd085ecd319597ee5f66bc5ca11e7a2ca111f5308c3467230c3f0d4ed3e6a25ff171da0289015649ab46f251e0e83c4b37415d77cf92169c4d17008118a0e8fda870bfd2d8d71b706009a277a2fd06ef22bd28770dde752c12c269d771abd22971ec728c24d394b677ad677c0053ae2d18fe754e8537481ac49e2f20ac97fed84fb1fcfa0fa946e7a0086dce7099053a22392bf331f1ce01be8f72a8dbc7d2570b1b2504c1cc3e97a8c0dc04b0039da1f917cb23c7ce9c37d900919eb8c43194d9652fe97e9328436770d6a0f1090b95ec5aae37820ae544c4570ab44fe732c6b59f1839a44dacfd66fb82e511a0387fb4e12908b53de55e1d29eacd588d6b8dff658c804404e27f72a434bbd039887f27d43af85cb8fd572f63cd49f4c2dc49102b4c8be8df393e7d789ba23189bc621566c9f642b0f5714d6bcc141372ce9bd7408762037c4a70925d84bdd298602f3f1015ce659643ac4ab7ec26ba2080dee04413a19fc3dd345e135f0d40857f2874659cfb3bec91bb4d85cc799e16252f39236ca2120d25db8d47c094a0919d2eb4ed07350880b9f887eeb9040882136ed03c33a6870ffe79a8eaf0fb911cde6ecb3f7c468c864b82905376d49dd409996660b85efb7cac1798700eb920645261885277c62b6d9fb29e0a797daec4442071965306fef93e421cb928020243775aa72809864b0d2d68e737eb085fed6744654b4b947ff18017773a9a0710a28ccb0da53d77d181fd0aa3062e35fe65a5ed56cc8ebe57dad940393e025522816b1d1d97fdfa28af6c748d317080b4499409d2efdcf8f1b6273a5f5faff412d190ee38bb1a7924590f2a74d08eac36ca8081589af0b1fea392cf3337474c8107f9a59f56ef65719b1f1521489af9f21d6546b20bedc2e617b3b9d2e3c5dbf03306b320ade8dca97a3110dc761f2faa9843c7aa0c0d92427c64ccb6ba92fdc290bba04878b6274106d6395fc4b24e340dd02a10e01d5acaefde133f93efeff07628206218c2407335307640faba6aa649c216dc6b1fc980ad2856f54068baf1b799de76265cf605c086c49b735ee3b315dd157384dc136cdb6f54e7e0cfcba0000000000000000000000000000006a75c485cf87be4c92744f7df0a2eaeeba000000000000000000000000000000000000f2d07648da4fcd65d82617d173a400000000000000000000000000000038f6bf97c50dd6a375e7cf762fc67c6a0a00000000000000000000000000000000001b93f5f761c9455f73bda5e4edfe900000000000000000000000000000000bf432e3efd16e7ff66f81a2dd12aa730a000000000000000000000000000000000009d05f9292ddf99e80707fadffb0bc000000000000000000000000000000d4e97ed86b6a6fdd1926753b08c2fc638c00000000000000000000000000000000000fe866ac3a6809213c08dc15f11ba9000000000000000000000000000000e0c52820ebc863d2dbcbd777fe77b02c4500000000000000000000000000000000000e3f707fd46be5e0074fbae0989ba2000000000000000000000000000000ac9344428bfb0c9217f7c4626c7b317fc4000000000000000000000000000000000012629e191041c6ea93e5c0aae0f755000000000000000000000000000000d1c0a2db28bc1894e3d8a2d22dc60e8c970000000000000000000000000000000000304c99def73a55ae1c3ebd9d4d7009000000000000000000000000000000e54f6413a82290147564fb057cfa789b0400000000000000000000000000000000002583673b3ecd28404eeef0f8d9d0d4000000000000000000000000000000af6c2adde50398cedf2089031e2291dc520000000000000000000000000000000000056d69be1fb381aedebf7de8bca03200000000000000000000000000000025148637aca922a6e3b3cc79c318b2fd25000000000000000000000000000000000007eb04afb8bf7f6dbe2736f662f337000000000000000000000000000000767769c9f7492f460d4e30d8dd7b8a83c9000000000000000000000000000000000027070450cedd24e4039fa316ca1290000000000000000000000000000000701de0578eb2c6188da4d522c8984b8a6b00000000000000000000000000000000003042027948358066c2e49a4409bb68000000000000000000000000000000f1300b2c2e0a9e10795b044615d88e9438000000000000000000000000000000000003c2ad4b58ddbae60dd4143c765b6600000000000000000000000000000066f9d8176ef2177148bc3baa83462c9a5300000000000000000000000000000000002314f62e871c26d03a4448071ddefa000000000000000000000000000000d2e877f9e3968766f08b068f38c5781082000000000000000000000000000000000026a0de05ed713dd3b67e579d147e23000000000000000000000000000000e6f4695b853d46cda09ceb24719a78376d0000000000000000000000000000000000174665fba01ebaa4e5f0353c8521e5000000000000000000000000000000af8c81347e1d282627d5835d921ccc0511000000000000000000000000000000000011989e4a9332d9d034cab27923d0b9000000000000000000000000000000d6c49d309f441cdfa1d1ba5da2abbb85d3000000000000000000000000000000000011a480e1a0f8140ed9984b83a7facb000000000000000000000000000000204ee3af0f077c1e20afeb1f22ba8dea3b00000000000000000000000000000000001cc114cd66e97fc4fac20ef47bbf03000000000000000000000000000000a5575335ae35f1a417ead6e54b52589431000000000000000000000000000000000023e2c9fc4acbc6a97445fbbbe6dace000000000000000000000000000000b81bcd56f66e1d60048a7abfa2ac63e07100000000000000000000000000000000001909118832ad01e1276d3055672a2700000000000000000000000000000095337ca1eaa682bd5572994e119cc39828000000000000000000000000000000000007006cb1bb8aa584fb992ce1657307000000000000000000000000000000015e035f523f149f2bc71ee1a0604e69280000000000000000000000000000000000269a1c5429d7e738e852d12e5b2b63000000000000000000000000000000226fa99b18cb6d8044c98bc8f6498bab170000000000000000000000000000000000094d10f2d45d21656244c7af981225000000000000000000000000000000c849ade589b7f6238fe559c8931d46554200000000000000000000000000000000002f2adbe2217506a9e84472c243925d00000000000000000000000000000025bd045bd02c5a4da42c9d856ebaa1ffcc000000000000000000000000000000000010fe648f46df182c985146b90d5ee200000000000000000000000000000005e10400efe15441967580ac93a295f4d10000000000000000000000000000000000093ad3274859a19238f1a48fef0f53000000000000000000000000000000969d87a40cb83590c542a52c81c43b311e000000000000000000000000000000000019fd918dd63ef760a7d71120162b80000000000000000000000000000000ddc1368e48261d537fee14e9776d1ffc090000000000000000000000000000000000123b1e637b4057652320d424a224ae000000000000000000000000000000bd0fc4f32ecba6ea917593bd9283672614000000000000000000000000000000000021e8455de8ec340bcae353deaedb4b000000000000000000000000000000e2a0730f81a0faf77795cfd01d431c9a7400000000000000000000000000000000002f4fa7e14edca2efcc49b146a55a3700000000000000000000000000000017560a101e4e62a17b7ba85d76ccd1132e000000000000000000000000000000000018404b2834d98aedf3df71cd08de6f000000000000000000000000000000dec37e48cde642b80c272d4b2417cb112200000000000000000000000000000000002b02b6fa16a8a4e9d049031152a13800000000000000000000000000000069c2ea187fc5527d577e1c0b0421c7af860000000000000000000000000000000000024d712941f81e82492ffa716b23fd000000000000000000000000000000a03b0a28ec2ebdc96ff63d22b1b9546286000000000000000000000000000000000019d47bb2be4d1f474b039769c43daf000000000000000000000000000000648e22ac49d53b073e51099b4e155290ad000000000000000000000000000000000020232516630aea7abd4bf3f59f2f2a000000000000000000000000000000d7b56dae0b6b4fb2ca8dc4c6877388d6c400000000000000000000000000000000000020ae5182691dd99cd00db855bd2d0000000000000000000000000000009065bbf34a82043b945219dda959e9e7e20000000000000000000000000000000000190b95174efda20ee247c51390009700000000000000000000000000000039b3c3a59cbb81dc3e5bd7db84bf37f0f800000000000000000000000000000000001050b9a04b0be3196344f7b3bd5a6d000000000000000000000000000000ede920772a1cf5c75399b3b3ac0fa6e24000000000000000000000000000000000000a762b1f7a0e36cbb858ad616305bc0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000027161cd7d94ba07d570dc05049367c18d5216051070f00266e3d38e5683ab93129387a1590eae334e1d4338dcb8c82ca96fbf7942473b2383002261d8c3c8851ab7869a89bf3a502a8b56f9776cb290c4c9a4ec3e034e9f981a68f89ba5cc1027bc23eb01977528cdefa37841a12e8f22df810b5e95f3ca98869475dd527bf428bedbfc26f5cf9a5df1bdf8432c8a7908bb3612b9bfb0a6befbcb2118235e6c0f78585666f9f1e0442a55f4a57f1f83c02c956b6c917e57ac38036ae38941d3263916eb4c67179ee88a44fcd6b6c98f002f4fe2cdeadd7065f4ed66b3fa6a481d106837378da9b357a9ce58820d8b8bbcb6f66ce661a02bb93f71bc532916b003ac85f048fb3724836b6a024cdaef9166a7adf87ab185d093a0817daf05009320ee862a3af62fd94a74ad64f6fe04c6cc316b36269b45c10aef262194d312cd09675217eb8dc68b2cd141eacf973e9ce7434cca47f6d5c58295b60e7b201c172f084069512ddc88e3ff33c34c5c48f6b26ca233ef89f6d33e1062a156ea86a914e68ee034c8c1554244303975d6786cc9897b44db6c02d44d677a71674a6e1504ce2768010cb18423e55f064448b9cdcd45fe3b8e4b58dfd542d9c5e3d355181c4bd4fe1c6cadece19fd14e76f19451fc60f4e8f8bc6935fc0786ca88e0a3d419bcd8ab0f019655ff3109aaedb49f0e6f0888e99f18da4c799bf905a7d3f9360d5ec93b851acc7ada9510dc383a0dd7f9b9baee59d0e6f0e310b4a3e89b929711f561890ed8ad279dd2bfe648e6ed056c195d1c5d8de9b30cb1c5b13e1783c8029ba89ac82b835f1059e6ed9e47f5f3889c8fde43ca956ae3fcbf319654eaf711d7ef8096e220d644654342dee2bbafe5ead303e17d136e6b010d921b9aa0030abba364f85bde187d35e2587dabf837cd2fd214ac5a93c40153e30857cbc7890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e384122fa6ef39cd678c54b3acf21ccc0800000000000000000000000000000000001fe645c24f836a5f9f2e7f2bfb64c80000000000000000000000000000005aa1afa7f068421f97e7b135bbcc72f72c0000000000000000000000000000000000231051ed83ade2ca091843c6e106ef000000000000000000000000000000a8a5ddd351e975251400bd35e402d946f200000000000000000000000000000000000449a718d48f5adddb0c289bc672a20000000000000000000000000000005912b23ff4f97982c1b6b19081bce393620000000000000000000000000000000000086eec3524f43ea66f02b65c18d4620000029c","publicInputs":"02569a59ee1ac7a8d3d639e5b0ce3d403b83817fad4ef0ce64ae2befa3e5b98800000002125c927dd0de76f063cb388b0eb79006a71c2c467d77347c912716e226214d63000000041bdef12b868de34c7158964699584da32b1e7f038d2db9e86937f4320f0b209b1fe377018287e4433534dd3e41c258ecfb4f45d32c6bc672cfd0207185fde0fe000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000193267463615cd9b4ecaa6f720f5802327eac0b7313912d4f33b80b572fbc14508ba3c9b66832b1f42f21e1fbcca04fe95cc97b2c32a66f24f16e42853993a0e00000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"} \ No newline at end of file diff --git a/yarn-project/ethereum/src/deploy_l1_contracts.ts b/yarn-project/ethereum/src/deploy_l1_contracts.ts index fae1608e821..81c532341d6 100644 --- a/yarn-project/ethereum/src/deploy_l1_contracts.ts +++ b/yarn-project/ethereum/src/deploy_l1_contracts.ts @@ -21,11 +21,8 @@ import { RewardDistributorBytecode, RollupAbi, RollupBytecode, - RollupLinkReferences, TestERC20Abi, TestERC20Bytecode, - TxsDecoderAbi, - TxsDecoderBytecode, } from '@aztec/l1-artifacts'; import type { Abi, Narrow } from 'abitype'; @@ -166,15 +163,6 @@ export const l1Artifacts: L1ContractArtifactsForDeployment = { rollup: { contractAbi: RollupAbi, contractBytecode: RollupBytecode, - libraries: { - linkReferences: RollupLinkReferences, - libraryCode: { - TxsDecoder: { - contractAbi: TxsDecoderAbi, - contractBytecode: TxsDecoderBytecode, - }, - }, - }, }, feeJuice: { contractAbi: TestERC20Abi, diff --git a/yarn-project/foundation/package.json b/yarn-project/foundation/package.json index 46cc1d6d96b..25533ff256f 100644 --- a/yarn-project/foundation/package.json +++ b/yarn-project/foundation/package.json @@ -40,6 +40,7 @@ "./wasm": "./dest/wasm/index.js", "./worker": "./dest/worker/index.js", "./bigint-buffer": "./dest/bigint-buffer/index.js", + "./blob": "./dest/blob/index.js", "./types": "./dest/types/index.js", "./schemas": "./dest/schemas/index.js", "./url": "./dest/url/index.js", @@ -102,6 +103,7 @@ "@koa/cors": "^5.0.0", "@noble/curves": "^1.2.0", "bn.js": "^5.2.1", + "c-kzg": "4.0.0-alpha.1", "debug": "^4.3.4", "detect-node": "^2.1.0", "elliptic": "^6.5.4", diff --git a/yarn-project/foundation/src/blob/blob.test.ts b/yarn-project/foundation/src/blob/blob.test.ts new file mode 100644 index 00000000000..e4a5746ec06 --- /dev/null +++ b/yarn-project/foundation/src/blob/blob.test.ts @@ -0,0 +1,135 @@ +import cKzg from 'c-kzg'; +import type { Blob as BlobBuffer, Bytes48, KZGProof } from 'c-kzg'; + +import { poseidon2Hash } from '../crypto/index.js'; +import { Fr } from '../fields/index.js'; +import { Blob } from './index.js'; + +// Importing directly from 'c-kzg' does not work, ignoring import/no-named-as-default-member err: +/* eslint-disable import/no-named-as-default-member */ + +const { + BYTES_PER_BLOB, + FIELD_ELEMENTS_PER_BLOB, + blobToKzgCommitment, + computeBlobKzgProof, + computeKzgProof, + loadTrustedSetup, + verifyBlobKzgProofBatch, + verifyKzgProof, +} = cKzg; + +try { + loadTrustedSetup(); +} catch (error: any) { + if (error.message.includes('trusted setup is already loaded')) { + // NB: The c-kzg lib has no way of checking whether the setup is loaded or not, + // and it throws an error if it's already loaded, even though nothing is wrong. + // This is a rudimentary way of ensuring we load the trusted setup if we need it. + } else { + throw new Error(error); + } +} + +describe('blob', () => { + it('c-kzg lib should verify a batch of blobs', () => { + // This test is taken from the blob-lib repo + const BATCH_SIZE = 3; + const blobs: BlobBuffer[] = []; + const commitments: Bytes48[] = []; + const kzgProofs: KZGProof[] = []; + + for (let i = 0; i < BATCH_SIZE; i++) { + blobs.push(Buffer.alloc(BYTES_PER_BLOB)); + (blobs[i] as Buffer).write('potato', 0, 'utf8'); + (blobs[i] as Buffer).write('potato', BYTES_PER_BLOB - 50, 'utf8'); + commitments.push(blobToKzgCommitment(blobs[i])); + kzgProofs.push(computeBlobKzgProof(blobs[i], commitments[i])); + } + const isValid = verifyBlobKzgProofBatch(blobs, commitments, kzgProofs); + + expect(isValid).toBe(true); + }); + + it('should verify a kzg precise proof', () => { + // This test is taken from the blob-lib repo + const zBytes = Buffer.alloc(32); + + // blobs[0][31] = x, and z = 0x01 results in y = x. + // So the first blob field is evaluated at 0x01. + (zBytes as Buffer).write('01', 31, 'hex'); + + // This is the 2nd root of unity, after 1, because we actually get the bit_reversal_permutation of the root of unity. And although `7` is the primitive root of unity, the roots of unity are derived as 7 ^ ((BLS_MODULUS - 1) / FIELD_ELEMENTS_PER_BLOB) mod BLS_MODULUS. + (zBytes as Buffer).write('73EDA753299D7D483339D80809A1D80553BDA402FFFE5BFEFFFFFFFF00000000', 0, 'hex'); // equiv to 52435875175126190479447740508185965837690552500527637822603658699938581184512 which is actually -1 in the scalar field! + + const blob = Buffer.alloc(BYTES_PER_BLOB); + (blob as Buffer).write('09', 31, 'hex'); + (blob as Buffer).write('07', 31 + 32, 'hex'); + + const proofResult = computeKzgProof(blob, zBytes); + const commitment = blobToKzgCommitment(blob); + + const isValid = verifyKzgProof(commitment, zBytes, proofResult[1], proofResult[0]); + + expect(isValid).toBe(true); + }); + + it('should evaluate a blob of 400 items', () => { + // This test ensures that the Blob class correctly matches the c-kzg lib + // The values here are used to test Noir's blob evaluation in noir-projects/noir-protocol-circuits/crates/blob/src/blob.nr -> test_400 + const blobItems = Array(400).fill(new Fr(3)); + const ourBlob = new Blob(blobItems); + const blobItemsHash = poseidon2Hash(Array(400).fill(new Fr(3))); + expect(blobItemsHash).toEqual(ourBlob.fieldsHash); + expect(blobToKzgCommitment(ourBlob.data)).toEqual(ourBlob.commitment); + + const z = poseidon2Hash([blobItemsHash, ...ourBlob.commitmentToFields()]); + expect(z).toEqual(ourBlob.challengeZ); + + const res = computeKzgProof(ourBlob.data, ourBlob.challengeZ.toBuffer()); + expect(res[0]).toEqual(ourBlob.proof); + expect(res[1]).toEqual(ourBlob.evaluationY); + + const isValid = verifyKzgProof( + ourBlob.commitment, + ourBlob.challengeZ.toBuffer(), + ourBlob.evaluationY, + ourBlob.proof, + ); + expect(isValid).toBe(true); + }); + + it('should evaluate full blobs', () => { + // This test ensures that the Blob class correctly matches the c-kzg lib + // The values here are used to test Noir's blob evaluation in noir-projects/noir-protocol-circuits/crates/blob/src/blob.nr -> test_full_blobs + + const blobItems = []; + for (let j = 0; j < 3; j++) { + for (let i = 0; i < FIELD_ELEMENTS_PER_BLOB; i++) { + blobItems[j * FIELD_ELEMENTS_PER_BLOB + i] = new Fr(i + 2); + } + } + const blobItemsHash = poseidon2Hash(blobItems); + const blobs = Blob.getBlobs(blobItems); + blobs.forEach(ourBlob => { + // const ourBlob = new Blob(blobItems.slice(j * FIELD_ELEMENTS_PER_BLOB, (j + 1) * FIELD_ELEMENTS_PER_BLOB), blobItemsHash); + expect(blobItemsHash).toEqual(ourBlob.fieldsHash); + expect(blobToKzgCommitment(ourBlob.data)).toEqual(ourBlob.commitment); + + const z = poseidon2Hash([blobItemsHash, ...ourBlob.commitmentToFields()]); + expect(z).toEqual(ourBlob.challengeZ); + + const res = computeKzgProof(ourBlob.data, ourBlob.challengeZ.toBuffer()); + expect(res[0]).toEqual(ourBlob.proof); + expect(res[1]).toEqual(ourBlob.evaluationY); + + const isValid = verifyKzgProof( + ourBlob.commitment, + ourBlob.challengeZ.toBuffer(), + ourBlob.evaluationY, + ourBlob.proof, + ); + expect(isValid).toBe(true); + }); + }); +}); diff --git a/yarn-project/foundation/src/blob/index.ts b/yarn-project/foundation/src/blob/index.ts new file mode 100644 index 00000000000..6c1651f4c56 --- /dev/null +++ b/yarn-project/foundation/src/blob/index.ts @@ -0,0 +1,152 @@ +import cKzg from 'c-kzg'; +import type { Blob as BlobBuffer } from 'c-kzg'; + +import { poseidon2Hash, sha256 } from '../crypto/index.js'; +import { Fr } from '../fields/index.js'; +import { serializeToBuffer } from '../serialize/index.js'; + +// Importing directly from 'c-kzg' does not work, ignoring import/no-named-as-default-member err: +/* eslint-disable import/no-named-as-default-member */ + +const { + BYTES_PER_BLOB, + FIELD_ELEMENTS_PER_BLOB, + blobToKzgCommitment, + computeKzgProof, + loadTrustedSetup, + verifyKzgProof, +} = cKzg; + +try { + loadTrustedSetup(); +} catch (error: any) { + if (error.message.includes('trusted setup is already loaded')) { + // NB: The c-kzg lib has no way of checking whether the setup is loaded or not, + // and it throws an error if it's already loaded, even though nothing is wrong. + // This is a rudimentary way of ensuring we load the trusted setup if we need it. + } else { + throw new Error(error); + } +} + +// The prefix to the EVM blobHash, defined here: https://eips.ethereum.org/EIPS/eip-4844#specification +export const VERSIONED_HASH_VERSION_KZG = 0x01; + +/** + * A class to create, manage, and prove EVM blobs. + */ +export class Blob { + /** The blob to be broadcast on L1 in bytes form. */ + public readonly data: BlobBuffer; + /** The hash of all tx effects inside the blob. Used in generating the challenge z and proving that we have included all required effects. */ + public readonly fieldsHash: Fr; + /** Challenge point z (= H(H(tx_effects), kzgCommmitment). Used such that p(z) = y. */ + public readonly challengeZ: Fr; + /** Evaluation y = p(z), where p() is the blob polynomial. BLS12 field element, rep. as BigNum in nr, bigint in ts. */ + public readonly evaluationY: Buffer; + /** Commitment to the blob C. Used in compressed BLS12 point format (48 bytes). */ + public readonly commitment: Buffer; + /** KZG opening proof for y = p(z). The commitment to quotient polynomial Q, used in compressed BLS12 point format (48 bytes). */ + public readonly proof: Buffer; + + constructor( + /** All fields to be broadcast in the blob. */ + fields: Fr[], + /** If we want to broadcast more fields than fit into a blob, we hash those and used it as the fieldsHash across all blobs. + * This is much simpler and cheaper in the circuit to do, but MUST BE CHECKED before injecting here. + */ + multiBlobFieldsHash?: Fr, + ) { + if (fields.length > FIELD_ELEMENTS_PER_BLOB) { + throw new Error( + `Attempted to overfill blob with ${fields.length} elements. The maximum is ${FIELD_ELEMENTS_PER_BLOB}`, + ); + } + this.data = Buffer.concat([serializeToBuffer(fields)], BYTES_PER_BLOB); + // This matches the output of SpongeBlob.squeeze() in the blob circuit + this.fieldsHash = multiBlobFieldsHash ? multiBlobFieldsHash : poseidon2Hash(fields); + this.commitment = Buffer.from(blobToKzgCommitment(this.data)); + this.challengeZ = poseidon2Hash([this.fieldsHash, ...this.commitmentToFields()]); + const res = computeKzgProof(this.data, this.challengeZ.toBuffer()); + if (!verifyKzgProof(this.commitment, this.challengeZ.toBuffer(), res[1], res[0])) { + throw new Error(`KZG proof did not verify.`); + } + this.proof = Buffer.from(res[0]); + this.evaluationY = Buffer.from(res[1]); + } + + // 48 bytes encoded in fields as [Fr, Fr] = [0->31, 31->48] + commitmentToFields(): [Fr, Fr] { + return [new Fr(this.commitment.subarray(0, 31)), new Fr(this.commitment.subarray(31, 48))]; + } + + // Returns ethereum's versioned blob hash, following kzg_to_versioned_hash: https://eips.ethereum.org/EIPS/eip-4844#helpers + getEthVersionedBlobHash(): Buffer { + const hash = sha256(this.commitment); + hash[0] = VERSIONED_HASH_VERSION_KZG; + return hash; + } + + static getEthVersionedBlobHash(commitment: Buffer): Buffer { + const hash = sha256(commitment); + hash[0] = VERSIONED_HASH_VERSION_KZG; + return hash; + } + + // Returns a proof of opening of the blob to verify on L1 using the point evaluation precompile: + // * input[:32] - versioned_hash + // * input[32:64] - z + // * input[64:96] - y + // * input[96:144] - commitment C + // * input[144:192] - proof (a commitment to the quotient polynomial q(X)) + // See https://eips.ethereum.org/EIPS/eip-4844#point-evaluation-precompile + getEthBlobEvaluationInputs(): `0x${string}` { + const buf = Buffer.concat([ + this.getEthVersionedBlobHash(), + this.challengeZ.toBuffer(), + this.evaluationY, + this.commitment, + this.proof, + ]); + return `0x${buf.toString('hex')}`; + } + + static getEthBlobEvaluationInputs(blobs: Blob[]): `0x${string}` { + let buf = Buffer.alloc(0); + blobs.forEach(blob => { + buf = Buffer.concat([ + buf, + blob.getEthVersionedBlobHash(), + blob.challengeZ.toBuffer(), + blob.evaluationY, + blob.commitment, + blob.proof, + ]); + }); + // For multiple blobs, we prefix the number of blobs: + const lenBuf = Buffer.alloc(1); + lenBuf.writeUint8(blobs.length); + buf = Buffer.concat([lenBuf, buf]); + return `0x${buf.toString('hex')}`; + } + + static getViemKzgInstance() { + return { + blobToKzgCommitment: cKzg.blobToKzgCommitment, + computeBlobKzgProof: cKzg.computeBlobKzgProof, + }; + } + + // Returns as many blobs as we require to broadcast the given fields + // Assumes we share the fields hash between all blobs + static getBlobs(fields: Fr[]): Blob[] { + const numBlobs = Math.max(Math.ceil(fields.length / FIELD_ELEMENTS_PER_BLOB), 1); + const multiBlobFieldsHash = poseidon2Hash(fields); + const res = []; + for (let i = 0; i < numBlobs; i++) { + const end = fields.length < (i + 1) * FIELD_ELEMENTS_PER_BLOB ? fields.length : (i + 1) * FIELD_ELEMENTS_PER_BLOB; + res.push(new Blob(fields.slice(i * FIELD_ELEMENTS_PER_BLOB, end), multiBlobFieldsHash)); + } + return res; + } +} diff --git a/yarn-project/foundation/src/index.ts b/yarn-project/foundation/src/index.ts index 78694f262f8..e8a8348de1f 100644 --- a/yarn-project/foundation/src/index.ts +++ b/yarn-project/foundation/src/index.ts @@ -3,6 +3,7 @@ export * as abi from './abi/index.js'; export * as asyncMap from './async-map/index.js'; export * as aztecAddress from './aztec-address/index.js'; export * as bigintBuffer from './bigint-buffer/index.js'; +export * as blob from './blob/index.js'; export * as collection from './collection/index.js'; export * as committable from './committable/index.js'; export * as crypto from './crypto/index.js'; diff --git a/yarn-project/foundation/src/serialize/field_reader.ts b/yarn-project/foundation/src/serialize/field_reader.ts index 1c1242457b4..98e80c80909 100644 --- a/yarn-project/foundation/src/serialize/field_reader.ts +++ b/yarn-project/foundation/src/serialize/field_reader.ts @@ -140,4 +140,12 @@ export class FieldReader { }): T { return deserializer.fromFields(this); } + + /** + * Returns whether the reader has finished reading all fields. + * @returns A bool. + */ + public isFinished(): boolean { + return this.index === this.length; + } } diff --git a/yarn-project/l1-artifacts/scripts/generate-artifacts.sh b/yarn-project/l1-artifacts/scripts/generate-artifacts.sh index 4ddefda991c..b3d2eb00a57 100755 --- a/yarn-project/l1-artifacts/scripts/generate-artifacts.sh +++ b/yarn-project/l1-artifacts/scripts/generate-artifacts.sh @@ -28,7 +28,6 @@ CONTRACTS=( "l1-contracts:GovernanceProposer" "l1-contracts:Governance" "l1-contracts:NewGovernanceProposerPayload" - "l1-contracts:TxsDecoder" ) diff --git a/yarn-project/noir-protocol-circuits-types/src/type_conversion.ts b/yarn-project/noir-protocol-circuits-types/src/type_conversion.ts index 27391eb641f..1123498d680 100644 --- a/yarn-project/noir-protocol-circuits-types/src/type_conversion.ts +++ b/yarn-project/noir-protocol-circuits-types/src/type_conversion.ts @@ -7,8 +7,11 @@ import { type AvmCircuitPublicInputs, type AvmProofData, AztecAddress, + BLOBS_PER_BLOCK, BaseOrMergeRollupPublicInputs, type BaseParityInputs, + BlobPublicInputs, + BlockBlobPublicInputs, type BlockMergeRollupInputs, BlockRootOrBlockMergePublicInputs, type BlockRootRollupInputs, @@ -74,6 +77,7 @@ import { PartialStateReference, type PendingReadHint, Point, + Poseidon2Sponge, type PreviousRollupBlockData, type PreviousRollupData, PrivateAccumulatedData, @@ -119,6 +123,7 @@ import { ScopedNullifier, ScopedReadRequest, type SettledReadHint, + SpongeBlob, StateReference, type TUBE_PROOF_LENGTH, type TransientDataIndexHint, @@ -129,7 +134,7 @@ import { type VerificationKeyAsFields, type VkWitnessData, } from '@aztec/circuits.js'; -import { toBufferBE } from '@aztec/foundation/bigint-buffer'; +import { toBufferBE, toHex } from '@aztec/foundation/bigint-buffer'; import { type Tuple, mapTuple, toTruncField } from '@aztec/foundation/serialize'; import type { @@ -139,6 +144,10 @@ import type { AvmProofData as AvmProofDataNoir, BaseOrMergeRollupPublicInputs as BaseOrMergeRollupPublicInputsNoir, BaseParityInputs as BaseParityInputsNoir, + BigNum, + BlobCommitment as BlobCommitmentNoir, + BlobPublicInputs as BlobPublicInputsNoir, + BlockBlobPublicInputs as BlockBlobPublicInputsNoir, BlockMergeRollupInputs as BlockMergeRollupInputsNoir, BlockRootOrBlockMergePublicInputs as BlockRootOrBlockMergePublicInputsNoir, BlockRootRollupInputs as BlockRootRollupInputsNoir, @@ -189,6 +198,7 @@ import type { RootParityInput as ParityRootParityInputNoir, PartialStateReference as PartialStateReferenceNoir, PendingReadHint as PendingReadHintNoir, + Poseidon2 as Poseidon2SpongeNoir, PreviousRollupBlockData as PreviousRollupBlockDataNoir, PreviousRollupData as PreviousRollupDataNoir, PrivateAccumulatedData as PrivateAccumulatedDataNoir, @@ -229,6 +239,7 @@ import type { ScopedNoteHash as ScopedNoteHashNoir, ScopedNullifier as ScopedNullifierNoir, ScopedReadRequest as ScopedReadRequestNoir, + SpongeBlob as SpongeBlobNoir, StateReference as StateReferenceNoir, TransientDataIndexHint as TransientDataIndexHintNoir, TreeSnapshots as TreeSnapshotsNoir, @@ -282,6 +293,29 @@ export function mapNumberToNoir(number: number): NoirField { return new Fr(BigInt(number)).toString(); } +/** + * Maps a BigNum coming to/from noir. + * TODO(): Is BigInt the best way to represent this? + * @param number - The BigNum representing the number. + * @returns The number + */ +export function mapBLS12BigNumFromNoir(bignum: BigNum): bigint { + // TODO(Miranda): there's gotta be a better way to convert this + const paddedLimbs = [ + `0x` + bignum.limbs[2].substring(2).padStart(4, '0'), + bignum.limbs[1].substring(2).padStart(30, '0'), + bignum.limbs[0].substring(2).padStart(30, '0'), + ]; + return BigInt(paddedLimbs[0].concat(paddedLimbs[1], paddedLimbs[2])); +} + +export function mapBLS12BigNumToNoir(number: bigint): BigNum { + const hex = toHex(number, true); + return { + limbs: ['0x' + hex.substring(36), '0x' + hex.substring(6, 36), hex.substring(0, 6)], + }; +} + /** * Maps a point to a noir point. * @param point - The point. @@ -1598,6 +1632,123 @@ export function mapFeeRecipientFromNoir(feeRecipient: FeeRecipientNoir): FeeReci return new FeeRecipient(mapEthAddressFromNoir(feeRecipient.recipient), mapFieldFromNoir(feeRecipient.value)); } +/** + * Maps poseidon sponge to noir. + * @param sponge - The circuits.js poseidon sponge. + * @returns The noir poseidon sponge. + */ +export function mapPoseidon2SpongeToNoir(sponge: Poseidon2Sponge): Poseidon2SpongeNoir { + return { + cache: mapTuple(sponge.cache, mapFieldToNoir), + state: mapTuple(sponge.state, mapFieldToNoir), + cache_size: mapNumberToNoir(sponge.cacheSize), + squeeze_mode: sponge.squeezeMode, + }; +} + +/** + * Maps poseidon sponge from noir. + * @param sponge - The noir poseidon sponge. + * @returns The circuits.js poseidon sponge. + */ +export function mapPoseidon2SpongeFromNoir(sponge: Poseidon2SpongeNoir): Poseidon2Sponge { + return new Poseidon2Sponge( + mapTupleFromNoir(sponge.cache, 3, mapFieldFromNoir), + mapTupleFromNoir(sponge.state, 4, mapFieldFromNoir), + mapNumberFromNoir(sponge.cache_size), + sponge.squeeze_mode, + ); +} + +/** + * Maps sponge blob to noir. + * @param spongeBlob - The circuits.js sponge blob. + * @returns The noir sponge blob. + */ +export function mapSpongeBlobToNoir(spongeBlob: SpongeBlob): SpongeBlobNoir { + return { + sponge: mapPoseidon2SpongeToNoir(spongeBlob.sponge), + fields: mapNumberToNoir(spongeBlob.fields), + expected_fields: mapNumberToNoir(spongeBlob.expectedFields), + }; +} + +/** + * Maps sponge blob from noir. + * @param spongeBlob - The noir sponge blob. + * @returns The circuits.js sponge blob. + */ +export function mapSpongeBlobFromNoir(spongeBlob: SpongeBlobNoir): SpongeBlob { + return new SpongeBlob( + mapPoseidon2SpongeFromNoir(spongeBlob.sponge), + mapNumberFromNoir(spongeBlob.fields), + mapNumberFromNoir(spongeBlob.expected_fields), + ); +} + +/** + * Maps blob commitment to noir. + * @param commitment - The circuits.js commitment. + * @returns The noir commitment. + */ +export function mapBlobCommitmentToNoir(commitment: [Fr, Fr]): BlobCommitmentNoir { + return { + inner: mapTuple(commitment, mapFieldToNoir), + }; +} + +/** + * Maps blob public inputs to noir. + * @param blobPublicInputs - The circuits.js blob public inputs. + * @returns The noir blob public inputs. + */ +export function mapBlobPublicInputsToNoir(blobPublicInputs: BlobPublicInputs): BlobPublicInputsNoir { + return { + z: mapFieldToNoir(blobPublicInputs.z), + y: mapBLS12BigNumToNoir(blobPublicInputs.y), + kzg_commitment: mapBlobCommitmentToNoir(blobPublicInputs.kzgCommitment), + }; +} + +/** + * Maps blob public inputs from noir. + * @param blobPublicInputs - The noir blob public inputs. + * @returns The circuits.js blob public inputs. + */ +export function mapBlobPublicInputsFromNoir(blobPublicInputs: BlobPublicInputsNoir): BlobPublicInputs { + return new BlobPublicInputs( + mapFieldFromNoir(blobPublicInputs.z), + mapBLS12BigNumFromNoir(blobPublicInputs.y), + mapTupleFromNoir(blobPublicInputs.kzg_commitment.inner, 2, mapFieldFromNoir), + ); +} + +/** + * Maps block blob public inputs to noir. + * @param blockBlobPublicInputs - The circuits.js block blob public inputs. + * @returns The noir block blob public inputs. + */ +export function mapBlockBlobPublicInputsToNoir( + blockBlobPublicInputs: BlockBlobPublicInputs, +): BlockBlobPublicInputsNoir { + return { + inner: mapTuple(blockBlobPublicInputs.inner, mapBlobPublicInputsToNoir), + }; +} + +/** + * Maps block blob public inputs from noir. + * @param blockBlobPublicInputs - The noir block blob public inputs. + * @returns The circuits.js block blob public inputs. + */ +export function mapBlockBlobPublicInputsFromNoir( + blockBlobPublicInputs: BlockBlobPublicInputsNoir, +): BlockBlobPublicInputs { + return new BlockBlobPublicInputs( + mapTupleFromNoir(blockBlobPublicInputs.inner, BLOBS_PER_BLOCK, mapBlobPublicInputsFromNoir), + ); +} + /** * Maps a constant rollup data to a noir constant rollup data. * @param constantRollupData - The circuits.js constant rollup data. @@ -1640,7 +1791,8 @@ export function mapBaseOrMergeRollupPublicInputsToNoir( constants: mapConstantRollupDataToNoir(baseOrMergeRollupPublicInputs.constants), start: mapPartialStateReferenceToNoir(baseOrMergeRollupPublicInputs.start), end: mapPartialStateReferenceToNoir(baseOrMergeRollupPublicInputs.end), - txs_effects_hash: mapFieldToNoir(baseOrMergeRollupPublicInputs.txsEffectsHash), + start_sponge_blob: mapSpongeBlobToNoir(baseOrMergeRollupPublicInputs.startSpongeBlob), + end_sponge_blob: mapSpongeBlobToNoir(baseOrMergeRollupPublicInputs.endSpongeBlob), out_hash: mapFieldToNoir(baseOrMergeRollupPublicInputs.outHash), accumulated_fees: mapFieldToNoir(baseOrMergeRollupPublicInputs.accumulatedFees), }; @@ -1666,6 +1818,7 @@ export function mapBlockRootOrBlockMergePublicInputsToNoir( vk_tree_root: mapFieldToNoir(blockRootOrBlockMergePublicInputs.vkTreeRoot), protocol_contract_tree_root: mapFieldToNoir(blockRootOrBlockMergePublicInputs.protocolContractTreeRoot), prover_id: mapFieldToNoir(blockRootOrBlockMergePublicInputs.proverId), + blob_public_inputs: mapTuple(blockRootOrBlockMergePublicInputs.blobPublicInputs, mapBlockBlobPublicInputsToNoir), }; } @@ -1712,7 +1865,8 @@ export function mapBaseOrMergeRollupPublicInputsFromNoir( mapConstantRollupDataFromNoir(baseOrMergeRollupPublicInputs.constants), mapPartialStateReferenceFromNoir(baseOrMergeRollupPublicInputs.start), mapPartialStateReferenceFromNoir(baseOrMergeRollupPublicInputs.end), - mapFieldFromNoir(baseOrMergeRollupPublicInputs.txs_effects_hash), + mapSpongeBlobFromNoir(baseOrMergeRollupPublicInputs.start_sponge_blob), + mapSpongeBlobFromNoir(baseOrMergeRollupPublicInputs.end_sponge_blob), mapFieldFromNoir(baseOrMergeRollupPublicInputs.out_hash), mapFieldFromNoir(baseOrMergeRollupPublicInputs.accumulated_fees), ); @@ -1738,6 +1892,11 @@ export function mapBlockRootOrBlockMergePublicInputsFromNoir( mapFieldFromNoir(blockRootOrBlockMergePublicInputs.vk_tree_root), mapFieldFromNoir(blockRootOrBlockMergePublicInputs.protocol_contract_tree_root), mapFieldFromNoir(blockRootOrBlockMergePublicInputs.prover_id), + mapTupleFromNoir( + blockRootOrBlockMergePublicInputs.blob_public_inputs, + AZTEC_MAX_EPOCH_DURATION, + mapBlockBlobPublicInputsFromNoir, + ), ); } @@ -1837,6 +1996,10 @@ export function mapBlockRootRollupInputsToNoir(rootRollupInputs: BlockRootRollup new_archive_sibling_path: mapTuple(rootRollupInputs.newArchiveSiblingPath, mapFieldToNoir), previous_block_hash: mapFieldToNoir(rootRollupInputs.previousBlockHash), prover_id: mapFieldToNoir(rootRollupInputs.proverId), + // @ts-expect-error - below line gives error 'Type instantiation is excessively deep and possibly infinite. ts(2589)' + blobs_fields: mapTuple(rootRollupInputs.blobFields, mapFieldToNoir), + blob_commitments: mapTuple(rootRollupInputs.blobCommitments, mapBlobCommitmentToNoir), + blobs_hash: mapFieldToNoir(rootRollupInputs.blobsHash), }; } @@ -1915,6 +2078,11 @@ export function mapRootRollupPublicInputsFromNoir( mapFieldFromNoir(rootRollupPublicInputs.vk_tree_root), mapFieldFromNoir(rootRollupPublicInputs.protocol_contract_tree_root), mapFieldFromNoir(rootRollupPublicInputs.prover_id), + mapTupleFromNoir( + rootRollupPublicInputs.blob_public_inputs, + AZTEC_MAX_EPOCH_DURATION, + mapBlockBlobPublicInputsFromNoir, + ), ); } @@ -1968,7 +2136,7 @@ export function mapHeaderFromNoir(header: HeaderNoir): Header { export function mapContentCommitmentToNoir(contentCommitment: ContentCommitment): ContentCommitmentNoir { return { num_txs: mapFieldToNoir(contentCommitment.numTxs), - txs_effects_hash: mapSha256HashToNoir(contentCommitment.txsEffectsHash), + blobs_hash: mapSha256HashToNoir(contentCommitment.blobsHash), in_hash: mapSha256HashToNoir(contentCommitment.inHash), out_hash: mapSha256HashToNoir(contentCommitment.outHash), }; @@ -1981,7 +2149,7 @@ export function mapContentCommitmentToNoir(contentCommitment: ContentCommitment) export function mapContentCommitmentFromNoir(contentCommitment: ContentCommitmentNoir): ContentCommitment { return new ContentCommitment( mapFieldFromNoir(contentCommitment.num_txs), - mapSha256HashFromNoir(contentCommitment.txs_effects_hash), + mapSha256HashFromNoir(contentCommitment.blobs_hash), mapSha256HashFromNoir(contentCommitment.in_hash), mapSha256HashFromNoir(contentCommitment.out_hash), ); @@ -2208,8 +2376,8 @@ function mapPrivateTubeDataToNoir(data: PrivateTubeData): PrivateTubeDataNoir { export function mapPrivateBaseRollupInputsToNoir(inputs: PrivateBaseRollupInputs): PrivateBaseRollupInputsNoir { return { tube_data: mapPrivateTubeDataToNoir(inputs.tubeData), - start: mapPartialStateReferenceToNoir(inputs.hints.start), + start_sponge_blob: mapSpongeBlobToNoir(inputs.hints.startSpongeBlob), state_diff_hints: mapPrivateBaseStateDiffHintsToNoir(inputs.hints.stateDiffHints), archive_root_membership_witness: mapMembershipWitnessToNoir(inputs.hints.archiveRootMembershipWitness), @@ -2238,8 +2406,8 @@ export function mapPublicBaseRollupInputsToNoir(inputs: PublicBaseRollupInputs): return { tube_data: mapPublicTubeDataToNoir(inputs.tubeData), avm_proof_data: mapAvmProofDataToNoir(inputs.avmProofData), - start: mapPartialStateReferenceToNoir(inputs.hints.start), + start_sponge_blob: mapSpongeBlobToNoir(inputs.hints.startSpongeBlob), state_diff_hints: mapPublicBaseStateDiffHintsToNoir(inputs.hints.stateDiffHints), archive_root_membership_witness: mapMembershipWitnessToNoir(inputs.hints.archiveRootMembershipWitness), diff --git a/yarn-project/prover-client/src/mocks/test_context.ts b/yarn-project/prover-client/src/mocks/test_context.ts index ebecd07801a..8c94750da39 100644 --- a/yarn-project/prover-client/src/mocks/test_context.ts +++ b/yarn-project/prover-client/src/mocks/test_context.ts @@ -2,7 +2,6 @@ import { type BBProverConfig } from '@aztec/bb-prover'; import { type MerkleTreeWriteOperations, type ProcessedTx, - type ProcessedTxHandler, type PublicExecutionRequest, type ServerCircuitProver, type Tx, @@ -147,12 +146,7 @@ export class TestContext { } } - public async processPublicFunctions( - txs: Tx[], - maxTransactions: number, - txHandler?: ProcessedTxHandler, - txValidator?: TxValidator, - ) { + public async processPublicFunctions(txs: Tx[], maxTransactions: number, txValidator?: TxValidator) { const defaultExecutorImplementation = ( _stateManager: AvmPersistableStateManager, executionRequest: PublicExecutionRequest, @@ -177,7 +171,6 @@ export class TestContext { return await this.processPublicFunctionsWithMockExecutorImplementation( txs, maxTransactions, - txHandler, txValidator, defaultExecutorImplementation, ); @@ -186,7 +179,6 @@ export class TestContext { private async processPublicFunctionsWithMockExecutorImplementation( txs: Tx[], maxTransactions: number, - txHandler?: ProcessedTxHandler, txValidator?: TxValidator, executorMock?: ( stateManager: AvmPersistableStateManager, @@ -214,6 +206,6 @@ export class TestContext { if (executorMock) { simulateInternal.mockImplementation(executorMock); } - return await this.publicProcessor.process(txs, maxTransactions, txHandler, txValidator); + return await this.publicProcessor.process(txs, maxTransactions, txValidator); } } diff --git a/yarn-project/prover-client/src/orchestrator/block-building-helpers.ts b/yarn-project/prover-client/src/orchestrator/block-building-helpers.ts index 121d13a00d2..889605aece6 100644 --- a/yarn-project/prover-client/src/orchestrator/block-building-helpers.ts +++ b/yarn-project/prover-client/src/orchestrator/block-building-helpers.ts @@ -45,15 +45,17 @@ import { PublicDataTreeLeafPreimage, type RecursiveProof, RootRollupInputs, + type SpongeBlob, StateReference, VK_TREE_HEIGHT, type VerificationKeyAsFields, } from '@aztec/circuits.js'; import { makeTuple } from '@aztec/foundation/array'; +import { Blob } from '@aztec/foundation/blob'; import { padArrayEnd } from '@aztec/foundation/collection'; import { sha256Trunc } from '@aztec/foundation/crypto'; import { type DebugLogger } from '@aztec/foundation/log'; -import { type Tuple, assertLength, toFriendlyJSON } from '@aztec/foundation/serialize'; +import { type Tuple, assertLength, serializeToBuffer, toFriendlyJSON } from '@aztec/foundation/serialize'; import { computeUnbalancedMerkleRoot } from '@aztec/foundation/trees'; import { getVKIndex, getVKSiblingPath, getVKTreeRoot } from '@aztec/noir-protocol-circuits-types'; import { protocolContractTreeRoot } from '@aztec/protocol-contracts'; @@ -76,6 +78,7 @@ export async function buildBaseRollupHints( tx: ProcessedTx, globalVariables: GlobalVariables, db: MerkleTreeWriteOperations, + startSpongeBlob: SpongeBlob, ) { // Get trees info before any changes hit const constants = await getConstantRollupData(globalVariables, db); @@ -139,6 +142,10 @@ export async function buildBaseRollupHints( i < nullifierSubtreeSiblingPathArray.length ? nullifierSubtreeSiblingPathArray[i] : Fr.ZERO, ); + // Append new data to startSpongeBlob + const inputSpongeBlob = startSpongeBlob.clone(); + startSpongeBlob.absorb(tx.txEffect.toBlobFields()); + if (tx.avmProvingRequest) { // Build public base rollup hints const stateDiffHints = PublicBaseStateDiffHints.from({ @@ -183,6 +190,7 @@ export async function buildBaseRollupHints( return PublicBaseRollupHints.from({ start, + startSpongeBlob: inputSpongeBlob, stateDiffHints, feePayerFeeJuiceBalanceReadHint: feePayerFeeJuiceBalanceReadHint, archiveRootMembershipWitness, @@ -236,6 +244,7 @@ export async function buildBaseRollupHints( return PrivateBaseRollupHints.from({ start, + startSpongeBlob: inputSpongeBlob, stateDiffHints, feePayerFeeJuiceBalanceReadHint: feePayerFeeJuiceBalanceReadHint, archiveRootMembershipWitness, @@ -301,11 +310,10 @@ export function buildHeaderFromCircuitOutputs( updatedL1ToL2TreeSnapshot: AppendOnlyTreeSnapshot, logger?: DebugLogger, ) { + const blobsHash = rootRollupOutputs.blobPublicInputs[0].getBlobsHash(); const contentCommitment = new ContentCommitment( new Fr(previousMergeData[0].numTxs + previousMergeData[1].numTxs), - sha256Trunc( - Buffer.concat([previousMergeData[0].txsEffectsHash.toBuffer(), previousMergeData[1].txsEffectsHash.toBuffer()]), - ), + blobsHash, parityPublicInputs.shaRoot.toBuffer(), sha256Trunc(Buffer.concat([previousMergeData[0].outHash.toBuffer(), previousMergeData[1].outHash.toBuffer()])), ); @@ -356,10 +364,11 @@ export async function buildHeaderFromTxEffects( const parityShaRoot = new MerkleTreeCalculator(parityHeight, Fr.ZERO.toBuffer(), hasher).computeTreeRoot( l1ToL2Messages.map(msg => msg.toBuffer()), ); + const blobsHash = getBlobsHashFromBlobs(Blob.getBlobs(body.toBlobFields())); const contentCommitment = new ContentCommitment( new Fr(body.numberOfTxsIncludingPadded), - body.getTxsEffectsHash(), + blobsHash, parityShaRoot, outHash, ); @@ -368,6 +377,11 @@ export async function buildHeaderFromTxEffects( return new Header(previousArchive, contentCommitment, stateReference, globalVariables, fees); } +export function getBlobsHashFromBlobs(inputs: Blob[]): Buffer { + const blobHashes = serializeToBuffer(inputs.map(b => b.getEthVersionedBlobHash())); + return sha256Trunc(serializeToBuffer(blobHashes)); +} + // Validate that the roots of all local trees match the output of the root circuit simulation export async function validateBlockRootOutput( blockRootOutput: BlockRootOrBlockMergePublicInputs, diff --git a/yarn-project/prover-client/src/orchestrator/block-proving-state.ts b/yarn-project/prover-client/src/orchestrator/block-proving-state.ts index fd6b3626ca1..75f7afa809a 100644 --- a/yarn-project/prover-client/src/orchestrator/block-proving-state.ts +++ b/yarn-project/prover-client/src/orchestrator/block-proving-state.ts @@ -14,6 +14,7 @@ import { type RECURSIVE_PROOF_LENGTH, type RecursiveProof, type RootParityInput, + SpongeBlob, type VerificationKeyAsFields, } from '@aztec/circuits.js'; import { type Tuple } from '@aztec/foundation/serialize'; @@ -44,12 +45,13 @@ export class BlockProvingState { public blockRootRollupStarted: boolean = false; public finalProof: Proof | undefined; public block: L2Block | undefined; + public spongeBlobState: SpongeBlob | undefined = undefined; + public totalNumTxs: number | undefined; private txs: TxProvingState[] = []; public error: string | undefined; constructor( public readonly index: number, - public readonly totalNumTxs: number, public readonly globalVariables: GlobalVariables, public readonly newL1ToL2Messages: Tuple, public readonly messageTreeSnapshot: AppendOnlyTreeSnapshot, @@ -69,7 +71,7 @@ export class BlockProvingState { // Returns the number of levels of merge rollups public get numMergeLevels() { - return BigInt(Math.ceil(Math.log2(this.totalNumTxs)) - 1); + return BigInt(Math.ceil(Math.log2(this.totalNumTxs!)) - 1); } // Calculates the index and level of the parent rollup circuit @@ -83,7 +85,7 @@ export class BlockProvingState { index >>= 1n; return { thisLevelSize: levelSize, thisIndex: index, shiftUp: nodeToShift }; }; - let [thisLevelSize, shiftUp] = this.totalNumTxs & 1 ? [this.totalNumTxs - 1, true] : [this.totalNumTxs, false]; + let [thisLevelSize, shiftUp] = this.totalNumTxs! & 1 ? [this.totalNumTxs! - 1, true] : [this.totalNumTxs!, false]; const maxLevel = this.numMergeLevels + 1n; let placeholder = currentIndex; for (let i = 0; i < maxLevel - currentLevel; i++) { @@ -98,8 +100,21 @@ export class BlockProvingState { return [mergeLevel - 1n, thisIndex >> 1n, thisIndex & 1n]; } + public startNewBlock(numTxs: number, numBlobFields: number) { + if (this.spongeBlobState) { + throw new Error(`Must end previous block before starting a new one`); + } + // Initialise the sponge which will eventually absorb all tx effects to be added to the blob. + // Like l1 to l2 messages, we need to know beforehand how many effects will be absorbed. + this.spongeBlobState = SpongeBlob.init(numBlobFields); + this.totalNumTxs = numTxs; + } + // Adds a transaction to the proving state, returns it's index public addNewTx(tx: TxProvingState) { + if (!this.spongeBlobState) { + throw new Error(`Invalid block proving state, call startNewBlock before adding transactions.`); + } this.txs.push(tx); return this.txs.length - 1; } @@ -199,11 +214,6 @@ export class BlockProvingState { return this.rootParityInputs.findIndex(p => !p) === -1; } - // Returns true if we are still able to accept transactions, false otherwise - public isAcceptingTransactions() { - return this.totalNumTxs > this.txs.length; - } - // Returns whether the proving state is still valid public verifyState() { return this.parentEpoch.verifyState(); diff --git a/yarn-project/prover-client/src/orchestrator/epoch-proving-state.ts b/yarn-project/prover-client/src/orchestrator/epoch-proving-state.ts index a13a8d600dc..a2793bb54ea 100644 --- a/yarn-project/prover-client/src/orchestrator/epoch-proving-state.ts +++ b/yarn-project/prover-client/src/orchestrator/epoch-proving-state.ts @@ -101,7 +101,6 @@ export class EpochProvingState { // Adds a block to the proving state, returns its index // Will update the proving life cycle if this is the last block public startNewBlock( - numTxs: number, globalVariables: GlobalVariables, l1ToL2Messages: Fr[], messageTreeSnapshot: AppendOnlyTreeSnapshot, @@ -113,7 +112,6 @@ export class EpochProvingState { ) { const block = new BlockProvingState( this.blocks.length, - numTxs, globalVariables, padArrayEnd(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP), messageTreeSnapshot, diff --git a/yarn-project/prover-client/src/orchestrator/orchestrator.ts b/yarn-project/prover-client/src/orchestrator/orchestrator.ts index 84cfa185945..6acb7833e52 100644 --- a/yarn-project/prover-client/src/orchestrator/orchestrator.ts +++ b/yarn-project/prover-client/src/orchestrator/orchestrator.ts @@ -6,6 +6,7 @@ import { type ServerCircuitProver, type TxEffect, makeEmptyProcessedTx, + toNumBlobFields, } from '@aztec/circuit-types'; import { type EpochProver, @@ -16,12 +17,15 @@ import { type CircuitName } from '@aztec/circuit-types/stats'; import { AVM_PROOF_LENGTH_IN_FIELDS, AVM_VERIFICATION_KEY_LENGTH_IN_FIELDS, + BLOBS_PER_BLOCK, type BaseOrMergeRollupPublicInputs, BaseParityInputs, type BaseRollupHints, + BlobPublicInputs, type BlockRootOrBlockMergePublicInputs, BlockRootRollupInputs, EmptyBlockRootRollupInputs, + FIELDS_PER_BLOB, Fr, type GlobalVariables, type Header, @@ -40,7 +44,9 @@ import { makeEmptyRecursiveProof, } from '@aztec/circuits.js'; import { makeTuple } from '@aztec/foundation/array'; +import { Blob } from '@aztec/foundation/blob'; import { padArrayEnd } from '@aztec/foundation/collection'; +import { sha256ToField } from '@aztec/foundation/crypto'; import { AbortError } from '@aztec/foundation/error'; import { createDebugLogger } from '@aztec/foundation/log'; import { promiseWithResolvers } from '@aztec/foundation/promise'; @@ -138,17 +144,14 @@ export class ProvingOrchestrator implements EpochProver { /** * Starts off a new block - * @param numTxs - The total number of transactions in the block. * @param globalVariables - The global variables for the block * @param l1ToL2Messages - The l1 to l2 messages for the block - * @param verificationKeys - The private kernel verification keys * @returns A proving ticket, containing a promise notifying of proving completion */ - @trackSpan('ProvingOrchestrator.startNewBlock', (numTxs, globalVariables) => ({ - [Attributes.BLOCK_SIZE]: numTxs, + @trackSpan('ProvingOrchestrator.startNewBlock', globalVariables => ({ [Attributes.BLOCK_NUMBER]: globalVariables.blockNumber.toNumber(), })) - public async startNewBlock(numTxs: number, globalVariables: GlobalVariables, l1ToL2Messages: Fr[]) { + public async startNewBlock(globalVariables: GlobalVariables, l1ToL2Messages: Fr[]) { if (!this.provingState) { throw new Error(`Invalid proving state, call startNewEpoch before starting a block`); } @@ -157,10 +160,6 @@ export class ProvingOrchestrator implements EpochProver { throw new Error(`Epoch not accepting further blocks`); } - if (!Number.isInteger(numTxs) || numTxs < 2) { - throw new Error(`Invalid number of txs for block (got ${numTxs})`); - } - if (this.provingState.currentBlock && !this.provingState.currentBlock.block) { throw new Error(`Must end previous block before starting a new one`); } @@ -175,9 +174,7 @@ export class ProvingOrchestrator implements EpochProver { ); } - logger.info( - `Starting block ${globalVariables.blockNumber} for slot ${globalVariables.slotNumber} with ${numTxs} transactions`, - ); + logger.info(`Starting block ${globalVariables.blockNumber} for slot ${globalVariables.slotNumber}`); // we start the block by enqueueing all of the base parity circuits let baseParityInputs: BaseParityInputs[] = []; @@ -219,7 +216,6 @@ export class ProvingOrchestrator implements EpochProver { ); this.provingState!.startNewBlock( - numTxs, globalVariables, l1ToL2MessagesPadded, messageTreeSnapshot, @@ -237,38 +233,41 @@ export class ProvingOrchestrator implements EpochProver { } /** - * The interface to add a simulated transaction to the scheduler - * @param tx - The transaction to be proven + * The interface to add simulated transactions to the scheduler + * @param txs - The transactions to be proven */ - @trackSpan('ProvingOrchestrator.addNewTx', tx => ({ - [Attributes.TX_HASH]: tx.hash.toString(), + @trackSpan('ProvingOrchestrator.addTxs', txs => ({ + [Attributes.BLOCK_TXS_COUNT]: txs.length, })) - public async addNewTx(tx: ProcessedTx): Promise { + public async addTxs(txs: ProcessedTx[]): Promise { const provingState = this?.provingState?.currentBlock; if (!provingState) { throw new Error(`Invalid proving state, call startNewBlock before adding transactions`); } - if (!provingState.isAcceptingTransactions()) { - throw new Error(`Rollup not accepting further transactions`); - } - - if (!provingState.verifyState()) { - throw new Error(`Invalid proving state when adding a tx`); - } + const numBlobFields = toNumBlobFields(txs); + provingState.startNewBlock(Math.max(2, txs.length), numBlobFields); - validateTx(tx); + logger.info( + `Adding ${txs.length} transactions with ${numBlobFields} effects to block ${provingState?.blockNumber}`, + ); + for (const tx of txs) { + if (!provingState.verifyState()) { + throw new Error(`Invalid proving state when adding a tx`); + } - logger.info(`Received transaction: ${tx.hash}`); + validateTx(tx); - if (tx.isEmpty) { - logger.warn(`Ignoring empty transaction ${tx.hash} - it will not be added to this block`); - return; - } + logger.info(`Received transaction: ${tx.hash}`); - const [hints, treeSnapshots] = await this.prepareTransaction(tx, provingState); - this.enqueueFirstProofs(hints, treeSnapshots, tx, provingState); + if (tx.isEmpty) { + logger.warn(`Ignoring empty transaction ${tx.hash} - it will not be added to this block`); + return; + } + const [hints, treeSnapshots] = await this.prepareTransaction(tx, provingState); + this.enqueueFirstProofs(hints, treeSnapshots, tx, provingState); + } if (provingState.transactionsReceived === provingState.totalNumTxs) { logger.verbose(`All transactions received for block ${provingState.globalVariables.blockNumber}.`); } @@ -279,7 +278,7 @@ export class ProvingOrchestrator implements EpochProver { * Computes the block header and updates the archive tree. */ @trackSpan('ProvingOrchestrator.setBlockCompleted', function () { - const block = this.provingState?.currentBlock; + const block: BlockProvingState | undefined = this.provingState?.currentBlock; if (!block) { return {}; } @@ -291,7 +290,7 @@ export class ProvingOrchestrator implements EpochProver { }) public async setBlockCompleted(expectedHeader?: Header): Promise { const provingState = this.provingState?.currentBlock; - if (!provingState) { + if (!provingState || !provingState.totalNumTxs) { throw new Error(`Invalid proving state, call startNewBlock before adding transactions or completing the block`); } @@ -442,14 +441,6 @@ export class ProvingOrchestrator implements EpochProver { const newArchive = await getTreeSnapshot(MerkleTreeId.ARCHIVE, this.db); const l2Block = new L2Block(newArchive, header, body); - if (!l2Block.body.getTxsEffectsHash().equals(header.contentCommitment.txsEffectsHash)) { - throw new Error( - `Txs effects hash mismatch, ${l2Block.body - .getTxsEffectsHash() - .toString('hex')} == ${header.contentCommitment.txsEffectsHash.toString('hex')} `, - ); - } - logger.verbose(`Orchestrator finalised block ${l2Block.number}`); provingState.block = l2Block; } @@ -559,6 +550,22 @@ export class ProvingOrchestrator implements EpochProver { ); } + /** + * Collect all new nullifiers, commitments, and contracts from all txs in a block + * @returns The array of non empty tx effects. + */ + private extractTxEffects(provingState: BlockProvingState) { + // Note: this check should ensure that we have all txs and their effects ready. + if (!provingState.finalRootParityInput?.publicInputs.shaRoot) { + throw new Error(`Invalid proving state, a block must be ready to be proven before its effects can be extracted.`); + } + const nonEmptyTxEffects: TxEffect[] = provingState.allTxs + .map(txProvingState => txProvingState.processedTx.txEffect) + .filter(txEffect => !txEffect.isEmpty()); + + return nonEmptyTxEffects; + } + /** * Returns the proof for the current epoch. */ @@ -692,14 +699,16 @@ export class ProvingOrchestrator implements EpochProver { provingState: BlockProvingState | undefined, tx: ProcessedTx, ): Promise<[BaseRollupHints, TreeSnapshots] | undefined> { - if (!provingState?.verifyState()) { + if (!provingState?.verifyState() || !provingState.spongeBlobState) { logger.debug('Not preparing base rollup inputs, state invalid'); return; } // We build the base rollup inputs using a mock proof and verification key. // These will be overwritten later once we have proven the tube circuit and any public kernels - const [ms, hints] = await elapsed(buildBaseRollupHints(tx, provingState.globalVariables, this.db)); + const [ms, hints] = await elapsed( + buildBaseRollupHints(tx, provingState.globalVariables, this.db, provingState.spongeBlobState), + ); if (!tx.isEmpty) { this.metrics.recordBaseRollupInputs(ms); @@ -772,7 +781,7 @@ export class ProvingOrchestrator implements EpochProver { ); } - // Enqueues the tub circuit for a given transaction index + // Enqueues the tube circuit for a given transaction index // Once completed, will enqueue the next circuit, either a public kernel or the base rollup private enqueueTube(provingState: BlockProvingState, txIndex: number) { if (!provingState?.verifyState()) { @@ -854,9 +863,14 @@ export class ProvingOrchestrator implements EpochProver { provingState.blockRootRollupStarted = true; const mergeInputData = provingState.getMergeInputs(0); const rootParityInput = provingState.finalRootParityInput!; + const blobFields = this.extractTxEffects(provingState) + .map(tx => tx.toBlobFields()) + .flat(); + const blobs = Blob.getBlobs(blobFields); + const blobsHash = sha256ToField(blobs.map(b => b.getEthVersionedBlobHash())); logger.debug( - `Enqueuing block root rollup for block ${provingState.blockNumber} with ${provingState.newL1ToL2Messages.length} l1 to l2 msgs`, + `Enqueuing block root rollup for block ${provingState.blockNumber} with ${provingState.newL1ToL2Messages.length} l1 to l2 msgs and ${blobs.length} blobs.`, ); const previousRollupData: BlockRootRollupInputs['previousRollupData'] = makeTuple(2, i => @@ -877,6 +891,13 @@ export class ProvingOrchestrator implements EpochProver { newArchiveSiblingPath: provingState.archiveTreeRootSiblingPath, previousBlockHash: provingState.previousBlockHash, proverId: this.proverId, + blobFields: padArrayEnd(blobFields, Fr.ZERO, FIELDS_PER_BLOB * BLOBS_PER_BLOCK), + blobCommitments: padArrayEnd( + blobs.map(b => b.commitmentToFields()), + [Fr.ZERO, Fr.ZERO], + BLOBS_PER_BLOCK, + ), + blobsHash: blobsHash, }); this.deferredProving( @@ -901,6 +922,17 @@ export class ProvingOrchestrator implements EpochProver { provingState.blockRootRollupPublicInputs = result.inputs; provingState.finalProof = result.proof.binaryProof; + const blobOutputs = result.inputs.blobPublicInputs[0]; + blobOutputs.inner.forEach((blobOutput, i) => { + if (!blobOutput.isEmpty() && !blobOutput.equals(BlobPublicInputs.fromBlob(blobs[i]))) { + throw new Error( + `Rollup circuits produced mismatched blob evaluation: + z: ${blobOutput.z} == ${blobs[i].challengeZ}, + y: ${blobOutput.y.toString(16)} == ${blobs[i].evaluationY.toString('hex')}, + C: ${blobOutput.kzgCommitment} == ${blobs[i].commitmentToFields()}`, + ); + } + }); logger.debug(`Completed proof for block root rollup for ${provingState.block?.number}`); // validatePartialState(result.inputs.end, tx.treeSnapshots); // TODO(palla/prover) diff --git a/yarn-project/prover-client/src/orchestrator/orchestrator_errors.test.ts b/yarn-project/prover-client/src/orchestrator/orchestrator_errors.test.ts index 56bb5996868..765249b814a 100644 --- a/yarn-project/prover-client/src/orchestrator/orchestrator_errors.test.ts +++ b/yarn-project/prover-client/src/orchestrator/orchestrator_errors.test.ts @@ -37,14 +37,11 @@ describe('prover/orchestrator/errors', () => { ]; context.orchestrator.startNewEpoch(1, 1); - await context.orchestrator.startNewBlock(txs.length, context.globalVariables, []); + await context.orchestrator.startNewBlock(context.globalVariables, []); + await context.orchestrator.addTxs(txs); - for (const tx of txs) { - await context.orchestrator.addNewTx(tx); - } - - await expect(async () => await context.orchestrator.addNewTx(makeEmptyProcessedTestTx())).rejects.toThrow( - 'Rollup not accepting further transactions', + await expect(async () => await context.orchestrator.addTxs([makeEmptyProcessedTestTx()])).rejects.toThrow( + 'Must end previous block before starting a new one', ); const block = await context.orchestrator.setBlockCompleted(); @@ -54,23 +51,24 @@ describe('prover/orchestrator/errors', () => { it('throws if adding too many blocks', async () => { context.orchestrator.startNewEpoch(1, 1); - await context.orchestrator.startNewBlock(2, context.globalVariables, []); + await context.orchestrator.startNewBlock(context.globalVariables, []); + await context.orchestrator.addTxs([]); await context.orchestrator.setBlockCompleted(); - await expect( - async () => await context.orchestrator.startNewBlock(2, context.globalVariables, []), - ).rejects.toThrow('Epoch not accepting further blocks'); + await expect(async () => await context.orchestrator.startNewBlock(context.globalVariables, [])).rejects.toThrow( + 'Epoch not accepting further blocks', + ); }); it('throws if adding a transaction before starting epoch', async () => { - await expect(async () => await context.orchestrator.addNewTx(makeEmptyProcessedTestTx())).rejects.toThrow( + await expect(async () => await context.orchestrator.addTxs([makeEmptyProcessedTestTx()])).rejects.toThrow( `Invalid proving state, call startNewBlock before adding transactions`, ); }); it('throws if adding a transaction before starting block', async () => { context.orchestrator.startNewEpoch(1, 1); - await expect(async () => await context.orchestrator.addNewTx(makeEmptyProcessedTestTx())).rejects.toThrow( + await expect(async () => await context.orchestrator.addTxs([makeEmptyProcessedTestTx()])).rejects.toThrow( `Invalid proving state, call startNewBlock before adding transactions`, ); }); @@ -84,32 +82,22 @@ describe('prover/orchestrator/errors', () => { it('throws if setting an incomplete block as completed', async () => { context.orchestrator.startNewEpoch(1, 1); - await context.orchestrator.startNewBlock(3, context.globalVariables, []); + await context.orchestrator.startNewBlock(context.globalVariables, []); await expect(async () => await context.orchestrator.setBlockCompleted()).rejects.toThrow( - `Block not ready for completion: expecting ${3} more transactions.`, + `Invalid proving state, call startNewBlock before adding transactions or completing the block`, ); }); it('throws if adding to a cancelled block', async () => { context.orchestrator.startNewEpoch(1, 1); - await context.orchestrator.startNewBlock(2, context.globalVariables, []); + await context.orchestrator.startNewBlock(context.globalVariables, []); context.orchestrator.cancel(); - await expect(async () => await context.orchestrator.addNewTx(makeEmptyProcessedTestTx())).rejects.toThrow( + await expect(async () => await context.orchestrator.addTxs([makeEmptyProcessedTestTx()])).rejects.toThrow( 'Invalid proving state when adding a tx', ); }); - it.each([[-4], [0], [1], [8.1]] as const)( - 'fails to start a block with %i transactions', - async (blockSize: number) => { - context.orchestrator.startNewEpoch(1, 1); - await expect( - async () => await context.orchestrator.startNewBlock(blockSize, context.globalVariables, []), - ).rejects.toThrow(`Invalid number of txs for block (got ${blockSize})`); - }, - ); - it.each([[-4], [0], [8.1]] as const)('fails to start an epoch with %i blocks', (epochSize: number) => { context.orchestrator.startNewEpoch(1, 1); expect(() => context.orchestrator.startNewEpoch(1, epochSize)).toThrow( @@ -121,7 +109,7 @@ describe('prover/orchestrator/errors', () => { const l1ToL2Messages = new Array(100).fill(new Fr(0n)); context.orchestrator.startNewEpoch(1, 1); await expect( - async () => await context.orchestrator.startNewBlock(2, context.globalVariables, l1ToL2Messages), + async () => await context.orchestrator.startNewBlock(context.globalVariables, l1ToL2Messages), ).rejects.toThrow('Too many L1 to L2 messages'); }); }); diff --git a/yarn-project/prover-client/src/orchestrator/orchestrator_failures.test.ts b/yarn-project/prover-client/src/orchestrator/orchestrator_failures.test.ts index 40dd1b10901..e8536d8aeb3 100644 --- a/yarn-project/prover-client/src/orchestrator/orchestrator_failures.test.ts +++ b/yarn-project/prover-client/src/orchestrator/orchestrator_failures.test.ts @@ -56,15 +56,13 @@ describe('prover/orchestrator/failures', () => { const msgs = [new Fr(i + 100)]; // these operations could fail if the target circuit fails before adding all blocks or txs try { - await orchestrator.startNewBlock(txs.length, globalVariables, msgs); + await orchestrator.startNewBlock(globalVariables, msgs); let allTxsAdded = true; - for (const tx of txs) { - try { - await orchestrator.addNewTx(tx); - } catch (err) { - allTxsAdded = false; - break; - } + try { + await orchestrator.addTxs(txs); + } catch (err) { + allTxsAdded = false; + break; } if (!allTxsAdded) { diff --git a/yarn-project/prover-client/src/orchestrator/orchestrator_lifecycle.test.ts b/yarn-project/prover-client/src/orchestrator/orchestrator_lifecycle.test.ts index ba76c3d0c23..3fe53076c69 100644 --- a/yarn-project/prover-client/src/orchestrator/orchestrator_lifecycle.test.ts +++ b/yarn-project/prover-client/src/orchestrator/orchestrator_lifecycle.test.ts @@ -39,7 +39,7 @@ describe('prover/orchestrator/lifecycle', () => { }); orchestrator.startNewEpoch(1, 1); - await orchestrator.startNewBlock(2, makeGlobalVariables(1), []); + await orchestrator.startNewBlock(makeGlobalVariables(1), []); await sleep(1); diff --git a/yarn-project/prover-client/src/orchestrator/orchestrator_mixed_blocks.test.ts b/yarn-project/prover-client/src/orchestrator/orchestrator_mixed_blocks.test.ts index 9aa8a2e793e..1657472d97b 100644 --- a/yarn-project/prover-client/src/orchestrator/orchestrator_mixed_blocks.test.ts +++ b/yarn-project/prover-client/src/orchestrator/orchestrator_mixed_blocks.test.ts @@ -37,10 +37,8 @@ describe('prover/orchestrator/mixed-blocks', () => { const l1ToL2Messages = range(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, 1 + 0x400).map(fr); context.orchestrator.startNewEpoch(1, 1); - await context.orchestrator.startNewBlock(3, context.globalVariables, l1ToL2Messages); - for (const tx of txs) { - await context.orchestrator.addNewTx(tx); - } + await context.orchestrator.startNewBlock(context.globalVariables, l1ToL2Messages); + await context.orchestrator.addTxs(txs); const block = await context.orchestrator.setBlockCompleted(); await context.orchestrator.finaliseEpoch(); @@ -53,11 +51,9 @@ describe('prover/orchestrator/mixed-blocks', () => { const l1ToL2Messages = range(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, 1 + 0x400).map(fr); context.orchestrator.startNewEpoch(1, 1); - await context.orchestrator.startNewBlock(txs.length, context.globalVariables, l1ToL2Messages); + await context.orchestrator.startNewBlock(context.globalVariables, l1ToL2Messages); - for (const tx of txs) { - await context.orchestrator.addNewTx(tx); - } + await context.orchestrator.addTxs(txs); const block = await context.orchestrator.setBlockCompleted(); await context.orchestrator.finaliseEpoch(); diff --git a/yarn-project/prover-client/src/orchestrator/orchestrator_multi_public_functions.test.ts b/yarn-project/prover-client/src/orchestrator/orchestrator_multi_public_functions.test.ts index e805a15dd3b..181578f6418 100644 --- a/yarn-project/prover-client/src/orchestrator/orchestrator_multi_public_functions.test.ts +++ b/yarn-project/prover-client/src/orchestrator/orchestrator_multi_public_functions.test.ts @@ -1,4 +1,4 @@ -import { EmptyTxValidator, mockTx } from '@aztec/circuit-types'; +import { mockTx } from '@aztec/circuit-types'; import { times } from '@aztec/foundation/collection'; import { createDebugLogger } from '@aztec/foundation/log'; import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types'; @@ -41,20 +41,13 @@ describe('prover/orchestrator/public-functions', () => { } context.orchestrator.startNewEpoch(1, 1); - await context.orchestrator.startNewBlock(numTransactions, context.globalVariables, []); + await context.orchestrator.startNewBlock(context.globalVariables, []); - const [processed, failed] = await context.processPublicFunctions( - txs, - numTransactions, - undefined, - new EmptyTxValidator(), - ); + const [processed, failed] = await context.processPublicFunctions(txs, numTransactions); expect(processed.length).toBe(numTransactions); expect(failed.length).toBe(0); - for (const tx of processed) { - await context.orchestrator.addNewTx(tx); - } + await context.orchestrator.addTxs(processed); const block = await context.orchestrator.setBlockCompleted(); await context.orchestrator.finaliseEpoch(); diff --git a/yarn-project/prover-client/src/orchestrator/orchestrator_multiple_blocks.test.ts b/yarn-project/prover-client/src/orchestrator/orchestrator_multiple_blocks.test.ts index 5919fa383bf..9a85103351d 100644 --- a/yarn-project/prover-client/src/orchestrator/orchestrator_multiple_blocks.test.ts +++ b/yarn-project/prover-client/src/orchestrator/orchestrator_multiple_blocks.test.ts @@ -36,12 +36,11 @@ describe('prover/orchestrator/multi-block', () => { const blockNum = i + 1000; const globals = makeGlobals(blockNum); - // This will need to be a 2 tx block - await context.orchestrator.startNewBlock(2, globals, []); + await context.orchestrator.startNewBlock(globals, []); - await context.orchestrator.addNewTx(tx); + await context.orchestrator.addTxs([tx]); - // we need to complete the block as we have not added a full set of txs + // Completing the block will set off padding tx logic, as we only have 1 tx const block = await context.orchestrator.setBlockCompleted(); header = block!.header; } diff --git a/yarn-project/prover-client/src/orchestrator/orchestrator_public_functions.test.ts b/yarn-project/prover-client/src/orchestrator/orchestrator_public_functions.test.ts index 91c34a355f2..e6607fdbdc3 100644 --- a/yarn-project/prover-client/src/orchestrator/orchestrator_public_functions.test.ts +++ b/yarn-project/prover-client/src/orchestrator/orchestrator_public_functions.test.ts @@ -39,15 +39,13 @@ describe('prover/orchestrator/public-functions', () => { tx.data.constants.vkTreeRoot = getVKTreeRoot(); tx.data.constants.protocolContractTreeRoot = protocolContractTreeRoot; - const [processed, _] = await context.processPublicFunctions([tx], 1, undefined); + const [processed, _] = await context.processPublicFunctions([tx], 1); // This will need to be a 2 tx block context.orchestrator.startNewEpoch(1, 1); - await context.orchestrator.startNewBlock(2, context.globalVariables, []); + await context.orchestrator.startNewBlock(context.globalVariables, []); - for (const processedTx of processed) { - await context.orchestrator.addNewTx(processedTx); - } + await context.orchestrator.addTxs(processed); const block = await context.orchestrator.setBlockCompleted(); await context.orchestrator.finaliseEpoch(); diff --git a/yarn-project/prover-client/src/orchestrator/orchestrator_single_blocks.test.ts b/yarn-project/prover-client/src/orchestrator/orchestrator_single_blocks.test.ts index 5c82382d054..4ef7b2bbfe1 100644 --- a/yarn-project/prover-client/src/orchestrator/orchestrator_single_blocks.test.ts +++ b/yarn-project/prover-client/src/orchestrator/orchestrator_single_blocks.test.ts @@ -2,7 +2,6 @@ import { NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP } from '@aztec/circuits.js'; import { fr } from '@aztec/circuits.js/testing'; import { range } from '@aztec/foundation/array'; import { createDebugLogger } from '@aztec/foundation/log'; -import { sleep } from '@aztec/foundation/sleep'; import { makeBloatedProcessedTxWithVKRoot } from '../mocks/fixtures.js'; import { TestContext } from '../mocks/test_context.js'; @@ -23,7 +22,9 @@ describe('prover/orchestrator/blocks', () => { describe('blocks', () => { it('builds an empty L2 block', async () => { context.orchestrator.startNewEpoch(1, 1); - await context.orchestrator.startNewBlock(2, context.globalVariables, []); + await context.orchestrator.startNewBlock(context.globalVariables, []); + + await context.orchestrator.addTxs([]); const block = await context.orchestrator.setBlockCompleted(); await context.orchestrator.finaliseEpoch(); @@ -35,11 +36,9 @@ describe('prover/orchestrator/blocks', () => { // This will need to be a 2 tx block context.orchestrator.startNewEpoch(1, 1); - await context.orchestrator.startNewBlock(2, context.globalVariables, []); + await context.orchestrator.startNewBlock(context.globalVariables, []); - for (const tx of txs) { - await context.orchestrator.addNewTx(tx); - } + await context.orchestrator.addTxs(txs); const block = await context.orchestrator.setBlockCompleted(); await context.orchestrator.finaliseEpoch(); @@ -57,12 +56,9 @@ describe('prover/orchestrator/blocks', () => { const l1ToL2Messages = range(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, 1 + 0x400).map(fr); context.orchestrator.startNewEpoch(1, 1); - await context.orchestrator.startNewBlock(txs.length, context.globalVariables, l1ToL2Messages); + await context.orchestrator.startNewBlock(context.globalVariables, l1ToL2Messages); - for (const tx of txs) { - await context.orchestrator.addNewTx(tx); - await sleep(1000); - } + await context.orchestrator.addTxs(txs); const block = await context.orchestrator.setBlockCompleted(); await context.orchestrator.finaliseEpoch(); diff --git a/yarn-project/prover-client/src/orchestrator/orchestrator_workflow.test.ts b/yarn-project/prover-client/src/orchestrator/orchestrator_workflow.test.ts index 7675933f239..31c8957f7ae 100644 --- a/yarn-project/prover-client/src/orchestrator/orchestrator_workflow.test.ts +++ b/yarn-project/prover-client/src/orchestrator/orchestrator_workflow.test.ts @@ -79,7 +79,7 @@ describe('prover/orchestrator', () => { }); orchestrator.startNewEpoch(1, 1); - await orchestrator.startNewBlock(2, globalVariables, [message]); + await orchestrator.startNewBlock(globalVariables, [message]); await sleep(10); expect(mockProver.getBaseParityProof).toHaveBeenCalledTimes(NUM_BASE_PARITY_PER_ROOT_PARITY); @@ -108,9 +108,12 @@ describe('prover/orchestrator', () => { it('waits for block to be completed before enqueueing block root proof', async () => { orchestrator.startNewEpoch(1, 1); - await orchestrator.startNewBlock(2, globalVariables, []); - await orchestrator.addNewTx(makeBloatedProcessedTxWithVKRoot(actualDb, 1)); - await orchestrator.addNewTx(makeBloatedProcessedTxWithVKRoot(actualDb, 2)); + const txs = [ + makeBloatedProcessedTxWithVKRoot(context.actualDb, 1), + makeBloatedProcessedTxWithVKRoot(actualDb, 2), + ]; + await orchestrator.startNewBlock(globalVariables, []); + await orchestrator.addTxs(txs); // wait for the block root proof to try to be enqueued await sleep(1000); diff --git a/yarn-project/prover-client/src/test/bb_prover_base_rollup.test.ts b/yarn-project/prover-client/src/test/bb_prover_base_rollup.test.ts index e8b644a8a26..5ab93d750a2 100644 --- a/yarn-project/prover-client/src/test/bb_prover_base_rollup.test.ts +++ b/yarn-project/prover-client/src/test/bb_prover_base_rollup.test.ts @@ -6,6 +6,7 @@ import { PrivateBaseRollupInputs, PrivateKernelEmptyInputData, PrivateTubeData, + SpongeBlob, VkWitnessData, } from '@aztec/circuits.js'; import { createDebugLogger } from '@aztec/foundation/log'; @@ -41,6 +42,7 @@ describe('prover/bb_prover/base-rollup', () => { const vkTreeRoot = getVKTreeRoot(); const tx = makeEmptyProcessedTx(header, chainId, version, vkTreeRoot, protocolContractTreeRoot); + const startSpongeBlob = SpongeBlob.init(tx.txEffect.toBlobFields().length); logger.verbose('Building empty private proof'); const privateInputs = new PrivateKernelEmptyInputData( @@ -59,7 +61,7 @@ describe('prover/bb_prover/base-rollup', () => { const tubeData = new PrivateTubeData(tubeProof.inputs, tubeProof.proof, vkData); - const baseRollupHints = await buildBaseRollupHints(tx, context.globalVariables, context.actualDb); + const baseRollupHints = await buildBaseRollupHints(tx, context.globalVariables, context.actualDb, startSpongeBlob); const baseRollupInputs = new PrivateBaseRollupInputs(tubeData, baseRollupHints as PrivateBaseRollupHints); logger.verbose('Proving base rollups'); diff --git a/yarn-project/prover-client/src/test/bb_prover_full_rollup.test.ts b/yarn-project/prover-client/src/test/bb_prover_full_rollup.test.ts index ee3dc99956d..b0ef9763fee 100644 --- a/yarn-project/prover-client/src/test/bb_prover_full_rollup.test.ts +++ b/yarn-project/prover-client/src/test/bb_prover_full_rollup.test.ts @@ -53,11 +53,13 @@ describe('prover/bb_prover/full-rollup', () => { }); log.info(`Starting new block #${blockNum}`); - await context.orchestrator.startNewBlock(totalTxs, globals, l1ToL2Messages); + + await context.orchestrator.startNewBlock(globals, l1ToL2Messages); log.info(`Processing public functions`); - const [processed, failed] = await context.processPublicFunctions(txs, nonEmptyTxs, context.epochProver); + const [processed, failed] = await context.processPublicFunctions(txs, nonEmptyTxs); expect(processed.length).toBe(nonEmptyTxs); expect(failed.length).toBe(0); + await context.orchestrator.addTxs(processed); log.info(`Setting block as completed`); await context.orchestrator.setBlockCompleted(); @@ -99,13 +101,15 @@ describe('prover/bb_prover/full-rollup', () => { context.orchestrator.startNewEpoch(1, 1); - await context.orchestrator.startNewBlock(numTransactions, context.globalVariables, l1ToL2Messages); + await context.orchestrator.startNewBlock(context.globalVariables, l1ToL2Messages); - const [processed, failed] = await context.processPublicFunctions(txs, numTransactions, context.epochProver); + const [processed, failed] = await context.processPublicFunctions(txs, numTransactions); expect(processed.length).toBe(numTransactions); expect(failed.length).toBe(0); + await context.orchestrator.addTxs(processed); + await context.orchestrator.setBlockCompleted(); const result = await context.orchestrator.finaliseEpoch(); diff --git a/yarn-project/prover-node/src/job/epoch-proving-job.ts b/yarn-project/prover-node/src/job/epoch-proving-job.ts index c50e6682be4..7728c4e72ba 100644 --- a/yarn-project/prover-node/src/job/epoch-proving-job.ts +++ b/yarn-project/prover-node/src/job/epoch-proving-job.ts @@ -100,13 +100,13 @@ export class EpochProvingJob { uuid: this.uuid, ...globalVariables, }); - // Start block proving - await this.prover.startNewBlock(txCount, globalVariables, l1ToL2Messages); + await this.prover.startNewBlock(globalVariables, l1ToL2Messages); // Process public fns const publicProcessor = this.publicProcessorFactory.create(this.db, previousHeader, globalVariables); - await this.processTxs(publicProcessor, txs, txCount); + const processed = await this.processTxs(publicProcessor, txs, txCount); + await this.prover.addTxs(processed); this.log.verbose(`Processed all txs for block`, { blockNumber: block.number, blockHash: block.hash().toString(), @@ -170,12 +170,7 @@ export class EpochProvingJob { txs: Tx[], totalNumberOfTxs: number, ): Promise { - const [processedTxs, failedTxs] = await publicProcessor.process( - txs, - totalNumberOfTxs, - this.prover, - new EmptyTxValidator(), - ); + const [processedTxs, failedTxs] = await publicProcessor.process(txs, totalNumberOfTxs, new EmptyTxValidator()); if (failedTxs.length) { throw new Error( diff --git a/yarn-project/sequencer-client/src/block_builder/light.test.ts b/yarn-project/sequencer-client/src/block_builder/light.test.ts index 43cbd91a83b..299a8bd77e1 100644 --- a/yarn-project/sequencer-client/src/block_builder/light.test.ts +++ b/yarn-project/sequencer-client/src/block_builder/light.test.ts @@ -5,13 +5,21 @@ import { type ProcessedTx, type ServerCircuitProver, makeEmptyProcessedTx, + toNumBlobFields, } from '@aztec/circuit-types'; import { makeBloatedProcessedTx } from '@aztec/circuit-types/test'; import { + AZTEC_MAX_EPOCH_DURATION, type AppendOnlyTreeSnapshot, + BLOBS_PER_BLOCK, type BaseOrMergeRollupPublicInputs, BaseParityInputs, + BlockBlobPublicInputs, + BlockRootOrBlockMergePublicInputs, BlockRootRollupInputs, + EthAddress, + FIELDS_PER_BLOB, + FeeRecipient, Fr, type GlobalVariables, L1_TO_L2_MSG_SUBTREE_HEIGHT, @@ -29,6 +37,7 @@ import { type RecursiveProof, RootParityInput, RootParityInputs, + SpongeBlob, TUBE_VK_INDEX, VK_TREE_HEIGHT, type VerificationKeyAsFields, @@ -36,7 +45,9 @@ import { makeEmptyRecursiveProof, } from '@aztec/circuits.js'; import { makeGlobalVariables } from '@aztec/circuits.js/testing'; +import { Blob } from '@aztec/foundation/blob'; import { padArrayEnd, times } from '@aztec/foundation/collection'; +import { sha256ToField } from '@aztec/foundation/crypto'; import { type DebugLogger, createDebugLogger } from '@aztec/foundation/log'; import { type Tuple, assertLength } from '@aztec/foundation/serialize'; import { @@ -194,11 +205,8 @@ describe('LightBlockBuilder', () => { // Builds the block header using the ts block builder const buildHeader = async (txs: ProcessedTx[], l1ToL2Messages: Fr[]) => { - const txCount = Math.max(2, txs.length); - await builder.startNewBlock(txCount, globalVariables, l1ToL2Messages); - for (const tx of txs) { - await builder.addNewTx(tx); - } + await builder.startNewBlock(globalVariables, l1ToL2Messages); + await builder.addTxs(txs); const { header } = await builder.setBlockCompleted(); return header; }; @@ -235,7 +243,7 @@ describe('LightBlockBuilder', () => { const l1ToL2Snapshot = await getL1ToL2Snapshot(l1ToL2Messages); const parityOutput = await getParityOutput(l1ToL2Messages); const messageTreeSnapshot = await getTreeSnapshot(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, expectsFork); - const rootOutput = await getBlockRootOutput(mergeLeft, mergeRight, parityOutput, l1ToL2Snapshot); + const rootOutput = await getBlockRootOutput(mergeLeft, mergeRight, parityOutput, l1ToL2Snapshot, txs); const expectedHeader = buildHeaderFromCircuitOutputs( [mergeLeft, mergeRight], parityOutput, @@ -263,12 +271,13 @@ describe('LightBlockBuilder', () => { const getPrivateBaseRollupOutputs = async (txs: ProcessedTx[]) => { const rollupOutputs = []; + const spongeBlobState = SpongeBlob.init(toNumBlobFields(txs)); for (const tx of txs) { const vkIndex = TUBE_VK_INDEX; const vkPath = getVKSiblingPath(vkIndex); const vkData = new VkWitnessData(TubeVk, vkIndex, vkPath); const tubeData = new PrivateTubeData(tx.data.toKernelCircuitPublicInputs(), emptyProof, vkData); - const hints = await buildBaseRollupHints(tx, globalVariables, expectsFork); + const hints = await buildBaseRollupHints(tx, globalVariables, expectsFork, spongeBlobState); const inputs = new PrivateBaseRollupInputs(tubeData, hints as PrivateBaseRollupHints); const result = await simulator.getPrivateBaseRollupProof(inputs); rollupOutputs.push(result.inputs); @@ -314,6 +323,7 @@ describe('LightBlockBuilder', () => { newL1ToL2MessageTreeRootSiblingPath: Tuple; messageTreeSnapshot: AppendOnlyTreeSnapshot; }, + txs: ProcessedTx[], ) => { const mergeRollupVk = ProtocolCircuitVks['MergeRollupArtifact'].keyAsFields; const mergeRollupVkWitness = getVkMembershipWitness(mergeRollupVk); @@ -324,7 +334,9 @@ describe('LightBlockBuilder', () => { const newArchiveSiblingPath = await getRootTreeSiblingPath(MerkleTreeId.ARCHIVE, expectsFork); const previousBlockHashLeafIndex = BigInt(startArchiveSnapshot.nextAvailableLeafIndex - 1); const previousBlockHash = (await expectsFork.getLeafValue(MerkleTreeId.ARCHIVE, previousBlockHashLeafIndex))!; - + const blobFields = txs.map(tx => tx.txEffect.toBlobFields()).flat(); + const blobs = Blob.getBlobs(blobFields); + const blobsHash = sha256ToField(blobs.map(b => b.getEthVersionedBlobHash())); const rootParityVk = ProtocolCircuitVks['RootParityArtifact'].keyAsFields; const rootParityVkWitness = getVkMembershipWitness(rootParityVk); @@ -345,10 +357,53 @@ describe('LightBlockBuilder', () => { newArchiveSiblingPath, previousBlockHash, proverId: Fr.ZERO, + blobFields: padArrayEnd(blobFields, Fr.ZERO, FIELDS_PER_BLOB * BLOBS_PER_BLOCK), + blobCommitments: padArrayEnd( + blobs.map(b => b.commitmentToFields()), + [Fr.ZERO, Fr.ZERO], + BLOBS_PER_BLOCK, + ), + blobsHash, }); - const result = await simulator.getBlockRootRollupProof(inputs); - return result.inputs; + // TODO(Miranda): the wasm simulator can't run block root due to the bignum-based blob lib (stack too deep). + // For this test only I'm building outputs in ts. For other tests, I force the simulator to use native ACVM (not wasm). + // const result = await simulator.getBlockRootRollupProof(inputs); + + const newArchiveSnapshot = await getTreeSnapshot(MerkleTreeId.ARCHIVE, fork); + const newBlockHash = await fork.getLeafValue( + MerkleTreeId.ARCHIVE, + BigInt(newArchiveSnapshot.nextAvailableLeafIndex - 1), + ); + const fees = [ + new FeeRecipient( + rollupLeft.baseOrMergeRollupPublicInputs.constants.globalVariables.coinbase, + rollupLeft.baseOrMergeRollupPublicInputs.accumulatedFees.add( + rollupRight.baseOrMergeRollupPublicInputs.accumulatedFees, + ), + ), + ]; + + const blobPublicInputs = [BlockBlobPublicInputs.fromBlobs(blobs)]; + const outputs = new BlockRootOrBlockMergePublicInputs( + inputs.startArchiveSnapshot, + newArchiveSnapshot, + previousBlockHash, + newBlockHash!, + rollupLeft.baseOrMergeRollupPublicInputs.constants.globalVariables, + rollupLeft.baseOrMergeRollupPublicInputs.constants.globalVariables, + sha256ToField([ + rollupLeft.baseOrMergeRollupPublicInputs.outHash, + rollupRight.baseOrMergeRollupPublicInputs.outHash, + ]), + padArrayEnd(fees, new FeeRecipient(EthAddress.ZERO, Fr.ZERO), AZTEC_MAX_EPOCH_DURATION), + rollupLeft.baseOrMergeRollupPublicInputs.constants.vkTreeRoot, + rollupLeft.baseOrMergeRollupPublicInputs.constants.protocolContractTreeRoot, + inputs.proverId, + padArrayEnd(blobPublicInputs, BlockBlobPublicInputs.empty(), AZTEC_MAX_EPOCH_DURATION), + ); + + return outputs; }; function getVkMembershipWitness(vk: VerificationKeyAsFields) { diff --git a/yarn-project/sequencer-client/src/block_builder/light.ts b/yarn-project/sequencer-client/src/block_builder/light.ts index 44d92ca2a23..b8d6c014836 100644 --- a/yarn-project/sequencer-client/src/block_builder/light.ts +++ b/yarn-project/sequencer-client/src/block_builder/light.ts @@ -8,8 +8,9 @@ import { type ProcessedTx, type TxEffect, makeEmptyProcessedTx, + toNumBlobFields, } from '@aztec/circuit-types'; -import { Fr, type GlobalVariables, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP } from '@aztec/circuits.js'; +import { Fr, type GlobalVariables, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, SpongeBlob } from '@aztec/circuits.js'; import { padArrayEnd } from '@aztec/foundation/collection'; import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types'; import { protocolContractTreeRoot } from '@aztec/protocol-contracts'; @@ -22,36 +23,43 @@ import { NoopTelemetryClient } from '@aztec/telemetry-client/noop'; */ export class LightweightBlockBuilder implements BlockBuilder { private numTxs?: number; + private spongeBlobState?: SpongeBlob; private globalVariables?: GlobalVariables; private l1ToL2Messages?: Fr[]; - private readonly txs: ProcessedTx[] = []; + private txs: ProcessedTx[] = []; private readonly logger = createDebugLogger('aztec:sequencer-client:block_builder_light'); constructor(private db: MerkleTreeWriteOperations, private telemetry: TelemetryClient) {} - async startNewBlock(numTxs: number, globalVariables: GlobalVariables, l1ToL2Messages: Fr[]): Promise { - this.logger.verbose('Starting new block', { numTxs, globalVariables: globalVariables.toJSON(), l1ToL2Messages }); - this.numTxs = numTxs; + async startNewBlock(globalVariables: GlobalVariables, l1ToL2Messages: Fr[]): Promise { + this.logger.verbose('Starting new block', { globalVariables: globalVariables.toJSON(), l1ToL2Messages }); this.globalVariables = globalVariables; this.l1ToL2Messages = padArrayEnd(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP); + this.txs = []; + this.numTxs = 0; + this.spongeBlobState = undefined; // Update L1 to L2 tree await this.db.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, this.l1ToL2Messages!); } - async addNewTx(tx: ProcessedTx): Promise { - this.logger.verbose('Adding new tx to block', { txHash: tx.hash.toString() }); - this.txs.push(tx); - await buildBaseRollupHints(tx, this.globalVariables!, this.db); + async addTxs(txs: ProcessedTx[]): Promise { + this.numTxs = Math.max(2, txs.length); + this.spongeBlobState = SpongeBlob.init(toNumBlobFields(txs)); + for (const tx of txs) { + this.logger.verbose('Adding new tx to block', { txHash: tx.hash.toString() }); + this.txs.push(tx); + await buildBaseRollupHints(tx, this.globalVariables!, this.db, this.spongeBlobState!); + } } async setBlockCompleted(): Promise { const paddingTxCount = this.numTxs! - this.txs.length; this.logger.verbose(`Setting block as completed and adding ${paddingTxCount} padding txs`); for (let i = 0; i < paddingTxCount; i++) { - await this.addNewTx( + await this.addTxs([ makeEmptyProcessedTx( this.db.getInitialHeader(), this.globalVariables!.chainId, @@ -59,7 +67,7 @@ export class LightweightBlockBuilder implements BlockBuilder { getVKTreeRoot(), protocolContractTreeRoot, ), - ); + ]); } return this.buildBlock(); diff --git a/yarn-project/sequencer-client/src/block_builder/orchestrator.ts b/yarn-project/sequencer-client/src/block_builder/orchestrator.ts index 862963f10fe..ad0501d5a58 100644 --- a/yarn-project/sequencer-client/src/block_builder/orchestrator.ts +++ b/yarn-project/sequencer-client/src/block_builder/orchestrator.ts @@ -23,14 +23,14 @@ export class OrchestratorBlockBuilder implements BlockBuilder { this.orchestrator = new ProvingOrchestrator(db, testProver, telemetry); } - startNewBlock(numTxs: number, globalVariables: GlobalVariables, l1ToL2Messages: Fr[]): Promise { - return this.orchestrator.startNewBlock(numTxs, globalVariables, l1ToL2Messages); + startNewBlock(globalVariables: GlobalVariables, l1ToL2Messages: Fr[]): Promise { + return this.orchestrator.startNewBlock(globalVariables, l1ToL2Messages); } setBlockCompleted(): Promise { return this.orchestrator.setBlockCompleted(); } - addNewTx(tx: ProcessedTx): Promise { - return this.orchestrator.addNewTx(tx); + addTxs(txs: ProcessedTx[]): Promise { + return this.orchestrator.addTxs(txs); } } diff --git a/yarn-project/sequencer-client/src/publisher/l1-publisher.test.ts b/yarn-project/sequencer-client/src/publisher/l1-publisher.test.ts index 6c817d70a2c..e7c024421ce 100644 --- a/yarn-project/sequencer-client/src/publisher/l1-publisher.test.ts +++ b/yarn-project/sequencer-client/src/publisher/l1-publisher.test.ts @@ -1,13 +1,20 @@ import { L2Block } from '@aztec/circuit-types'; -import { EthAddress } from '@aztec/circuits.js'; +import { EthAddress, Fr } from '@aztec/circuits.js'; import { type L1ContractsConfig, getL1ContractsConfigEnvVars } from '@aztec/ethereum'; +import { Blob } from '@aztec/foundation/blob'; import { type ViemSignature } from '@aztec/foundation/eth-signature'; import { sleep } from '@aztec/foundation/sleep'; import { RollupAbi } from '@aztec/l1-artifacts'; import { NoopTelemetryClient } from '@aztec/telemetry-client/noop'; import { type MockProxy, mock } from 'jest-mock-extended'; -import { type GetTransactionReceiptReturnType, type PrivateKeyAccount } from 'viem'; +import { + type GetTransactionReceiptReturnType, + type Kzg, + type PrivateKeyAccount, + type SendTransactionReturnType, + encodeFunctionData, +} from 'viem'; import { type PublisherConfig, type TxSenderConfig } from './config.js'; import { L1Publisher } from './l1-publisher.js'; @@ -16,14 +23,24 @@ interface MockPublicClient { getTransactionReceipt: ({ hash }: { hash: '0x${string}' }) => Promise; getBlock(): Promise<{ timestamp: bigint }>; getTransaction: ({ hash }: { hash: '0x${string}' }) => Promise<{ input: `0x${string}`; hash: `0x${string}` }>; - estimateGas: ({ to, data }: { to: '0x${string}'; data: '0x${string}' }) => Promise; } -interface MockRollupContractWrite { - propose: ( - args: readonly [`0x${string}`, `0x${string}`] | readonly [`0x${string}`, `0x${string}`, `0x${string}`], - options: { account: PrivateKeyAccount }, - ) => Promise<`0x${string}`>; +interface MockWalletClient { + sendTransaction: ({ + data, + account, + to, + blobs, + kzg, + maxFeePerBlobGas, + }: { + data: '0x${string}'; + account: '0x${string}'; + to: '0x${string}'; + blobs: [Buffer]; + kzg: Kzg; + maxFeePerBlobGas: bigint; + }) => Promise; } interface MockRollupContractRead { @@ -41,15 +58,19 @@ interface MockRollupContractRead { } class MockRollupContract { - constructor(public write: MockRollupContractWrite, public read: MockRollupContractRead, public abi = RollupAbi) {} + constructor( + public read: MockRollupContractRead, + public abi = RollupAbi, + public address = EthAddress.fromField(new Fr(1)).toString(), + ) {} } describe('L1Publisher', () => { let rollupContractRead: MockProxy; - let rollupContractWrite: MockProxy; let rollupContract: MockRollupContract; let publicClient: MockProxy; + let walletClient: MockProxy; let proposeTxHash: `0x${string}`; let proposeTxReceipt: GetTransactionReceiptReturnType; @@ -64,8 +85,6 @@ describe('L1Publisher', () => { let publisher: L1Publisher; - const GAS_GUESS = 300_000n; - beforeEach(() => { l2Block = L2Block.random(42); @@ -82,17 +101,19 @@ describe('L1Publisher', () => { logs: [], } as unknown as GetTransactionReceiptReturnType; - rollupContractWrite = mock(); rollupContractRead = mock(); - rollupContract = new MockRollupContract(rollupContractWrite, rollupContractRead); + rollupContract = new MockRollupContract(rollupContractRead); publicClient = mock(); + walletClient = mock(); const config = { l1RpcUrl: `http://127.0.0.1:8545`, l1ChainId: 1, publisherPrivateKey: `0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80`, - l1Contracts: { rollupAddress: EthAddress.ZERO.toString() }, + l1Contracts: { + rollupAddress: rollupContract.address, + }, l1PublishRetryIntervalMS: 1, ethereumSlotDuration: getL1ContractsConfigEnvVars().ethereumSlotDuration, } as unknown as TxSenderConfig & PublisherConfig & Pick; @@ -101,17 +122,17 @@ describe('L1Publisher', () => { (publisher as any)['rollupContract'] = rollupContract; (publisher as any)['publicClient'] = publicClient; + (publisher as any)['walletClient'] = walletClient; account = (publisher as any)['account']; rollupContractRead.getCurrentSlot.mockResolvedValue(l2Block.header.globalVariables.slotNumber.toBigInt()); publicClient.getBlock.mockResolvedValue({ timestamp: 12n }); - publicClient.estimateGas.mockResolvedValue(GAS_GUESS); }); it('publishes and propose l2 block to l1', async () => { rollupContractRead.archive.mockResolvedValue(l2Block.header.lastArchive.root.toString() as `0x${string}`); - rollupContractWrite.propose.mockResolvedValueOnce(proposeTxHash); + walletClient.sendTransaction.mockResolvedValueOnce(proposeTxHash); publicClient.getTransactionReceipt.mockResolvedValueOnce(proposeTxReceipt); @@ -119,6 +140,10 @@ describe('L1Publisher', () => { expect(result).toEqual(true); + const blobs = Blob.getBlobs(l2Block.body.toBlobFields()); + + const blobInput = Blob.getEthBlobEvaluationInputs(blobs); + const args = [ { header: `0x${header.toString('hex')}`, @@ -128,22 +153,35 @@ describe('L1Publisher', () => { }, [], `0x${body.toString('hex')}`, + blobInput, ] as const; - expect(rollupContractWrite.propose).toHaveBeenCalledWith(args, { - account: account, - gas: L1Publisher.PROPOSE_GAS_GUESS + GAS_GUESS, + + const data = encodeFunctionData({ + abi: RollupAbi, + functionName: 'propose', + args, + }); + + const kzg = Blob.getViemKzgInstance(); + expect(walletClient.sendTransaction).toHaveBeenCalledWith({ + data, + account, + to: rollupContract.address, + blobs: blobs.map(blob => blob.data), + kzg, + maxFeePerBlobGas: 10000000000n, }); expect(publicClient.getTransactionReceipt).toHaveBeenCalledWith({ hash: proposeTxHash }); }); it('does not retry if sending a propose tx fails', async () => { rollupContractRead.archive.mockResolvedValue(l2Block.header.lastArchive.root.toString() as `0x${string}`); - rollupContractWrite.propose.mockRejectedValueOnce(new Error()).mockResolvedValueOnce(proposeTxHash); + walletClient.sendTransaction.mockRejectedValueOnce(new Error()).mockResolvedValueOnce(proposeTxHash); const result = await publisher.proposeL2Block(l2Block); expect(result).toEqual(false); - expect(rollupContractWrite.propose).toHaveBeenCalledTimes(1); + expect(walletClient.sendTransaction).toHaveBeenCalledTimes(1); }); it('does not retry if simulating a publish and propose tx fails', async () => { @@ -153,22 +191,22 @@ describe('L1Publisher', () => { await expect(publisher.proposeL2Block(l2Block)).rejects.toThrow(); expect(rollupContractRead.validateHeader).toHaveBeenCalledTimes(1); - expect(rollupContractWrite.propose).toHaveBeenCalledTimes(0); + expect(walletClient.sendTransaction).toHaveBeenCalledTimes(0); }); it('does not retry if sending a publish and propose tx fails', async () => { rollupContractRead.archive.mockResolvedValue(l2Block.header.lastArchive.root.toString() as `0x${string}`); - rollupContractWrite.propose.mockRejectedValueOnce(new Error()); + walletClient.sendTransaction.mockRejectedValueOnce(new Error()); const result = await publisher.proposeL2Block(l2Block); expect(result).toEqual(false); - expect(rollupContractWrite.propose).toHaveBeenCalledTimes(1); + expect(walletClient.sendTransaction).toHaveBeenCalledTimes(1); }); it('retries if fetching the receipt fails (propose)', async () => { rollupContractRead.archive.mockResolvedValue(l2Block.header.lastArchive.root.toString() as `0x${string}`); - rollupContractWrite.propose.mockResolvedValueOnce(proposeTxHash); + walletClient.sendTransaction.mockResolvedValueOnce(proposeTxHash); publicClient.getTransactionReceipt.mockRejectedValueOnce(new Error()).mockResolvedValueOnce(proposeTxReceipt); const result = await publisher.proposeL2Block(l2Block); @@ -179,7 +217,7 @@ describe('L1Publisher', () => { it('retries if fetching the receipt fails (publish propose)', async () => { rollupContractRead.archive.mockResolvedValue(l2Block.header.lastArchive.root.toString() as `0x${string}`); - rollupContractWrite.propose.mockResolvedValueOnce(proposeTxHash as `0x${string}`); + walletClient.sendTransaction.mockResolvedValueOnce(proposeTxHash as `0x${string}`); publicClient.getTransactionReceipt.mockRejectedValueOnce(new Error()).mockResolvedValueOnce(proposeTxReceipt); const result = await publisher.proposeL2Block(l2Block); @@ -190,7 +228,7 @@ describe('L1Publisher', () => { it('returns false if publish and propose tx reverts', async () => { rollupContractRead.archive.mockResolvedValue(l2Block.header.lastArchive.root.toString() as `0x${string}`); - rollupContractWrite.propose.mockResolvedValueOnce(proposeTxHash); + walletClient.sendTransaction.mockResolvedValueOnce(proposeTxHash); publicClient.getTransactionReceipt.mockResolvedValueOnce({ ...proposeTxReceipt, status: 'reverted' }); const result = await publisher.proposeL2Block(l2Block); @@ -210,7 +248,7 @@ describe('L1Publisher', () => { it('returns false if sending publish and progress tx is interrupted', async () => { rollupContractRead.archive.mockResolvedValue(l2Block.header.lastArchive.root.toString() as `0x${string}`); - rollupContractWrite.propose.mockImplementationOnce(() => sleep(10, proposeTxHash) as Promise<`0x${string}`>); + walletClient.sendTransaction.mockImplementationOnce(() => sleep(10, proposeTxHash) as Promise<`0x${string}`>); const resultPromise = publisher.proposeL2Block(l2Block); publisher.interrupt(); @@ -222,7 +260,7 @@ describe('L1Publisher', () => { it('returns false if sending propose tx is interrupted', async () => { rollupContractRead.archive.mockResolvedValue(l2Block.header.lastArchive.root.toString() as `0x${string}`); - rollupContractWrite.propose.mockImplementationOnce(() => sleep(10, proposeTxHash) as Promise<`0x${string}`>); + walletClient.sendTransaction.mockImplementationOnce(() => sleep(10, proposeTxHash) as Promise<`0x${string}`>); const resultPromise = publisher.proposeL2Block(l2Block); publisher.interrupt(); diff --git a/yarn-project/sequencer-client/src/publisher/l1-publisher.ts b/yarn-project/sequencer-client/src/publisher/l1-publisher.ts index 9226059ab6c..7bb4d259070 100644 --- a/yarn-project/sequencer-client/src/publisher/l1-publisher.ts +++ b/yarn-project/sequencer-client/src/publisher/l1-publisher.ts @@ -19,6 +19,8 @@ import { } from '@aztec/circuits.js'; import { type EthereumChain, type L1ContractsConfig, createEthereumChain } from '@aztec/ethereum'; import { makeTuple } from '@aztec/foundation/array'; +import { toHex } from '@aztec/foundation/bigint-buffer'; +import { Blob } from '@aztec/foundation/blob'; import { areArraysEqual, compactArray, times } from '@aztec/foundation/collection'; import { type Signature } from '@aztec/foundation/eth-signature'; import { Fr } from '@aztec/foundation/fields'; @@ -32,7 +34,7 @@ import { type TelemetryClient } from '@aztec/telemetry-client'; import pick from 'lodash.pick'; import { inspect } from 'util'; import { - type BaseError, + BaseError, type Chain, type Client, type ContractFunctionExecutionError, @@ -53,6 +55,7 @@ import { getAbiItem, getAddress, getContract, + getContractError, hexToBytes, http, publicActions, @@ -61,7 +64,7 @@ import { privateKeyToAccount } from 'viem/accounts'; import { type PublisherConfig, type TxSenderConfig } from './config.js'; import { L1PublisherMetrics } from './l1-publisher-metrics.js'; -import { prettyLogViemError, prettyLogViemErrorMsg } from './utils.js'; +import { prettyLogViemErrorMsg } from './utils.js'; /** * Stats for a sent transaction. @@ -103,8 +106,10 @@ type L1ProcessArgs = { archive: Buffer; /** The L2 block's leaf in the archive tree. */ blockHash: Buffer; - /** L2 block body. */ + /** L2 block body. TODO(#9101): Remove block body once we can extract blobs. */ body: Buffer; + /** L2 block blobs containing all tx effects. */ + blobs: Blob[]; /** L2 block tx hashes */ txHashes: TxHash[]; /** Attestations */ @@ -321,7 +326,10 @@ export class L1Publisher { try { await this.rollupContract.read.validateEpochProofRightClaimAtTime(args, { account: this.account }); } catch (err) { - const errorName = tryGetCustomErrorName(err); + let errorName = tryGetCustomErrorName(err); + if (!errorName) { + errorName = tryGetCustomErrorNameContractFunction(err as ContractFunctionExecutionError); + } this.log.warn(`Proof quote validation failed: ${errorName}`); return undefined; } @@ -354,7 +362,7 @@ export class L1Publisher { formattedSignatures, `0x${attestationData.digest.toString('hex')}`, ts, - `0x${header.contentCommitment.txsEffectsHash.toString('hex')}`, + `0x${header.contentCommitment.blobsHash.toString('hex')}`, flags, ] as const; @@ -481,10 +489,10 @@ export class L1Publisher { archive: block.archive.root.toBuffer(), blockHash: block.header.hash().toBuffer(), body: block.body.toBuffer(), + blobs: Blob.getBlobs(block.body.toBlobFields()), attestations, txHashes: txHashes ?? [], }; - // Publish body and propose block (if not already published) if (this.interrupted) { this.log.verbose('L2 block data syncing interrupted while processing blocks.', ctx); @@ -513,7 +521,21 @@ export class L1Publisher { return false; } - const { hash: txHash, args, functionName, gasLimit } = tx; + const { hash: txHash, args, functionName, err } = tx; + + if (err instanceof BaseError) { + const errorMsg = await this.tryGetErrorFromRevertedTx(txHash, { + args, + functionName, + abi: RollupAbi, + address: this.rollupContract.address, + }); + this.log.error(`Rollup process tx reverted. ${errorMsg}`, undefined, { + ...ctx, + }); + this.metrics.recordFailedTx('process'); + return false; + } const receipt = await this.getTransactionReceipt(txHash); if (!receipt) { @@ -536,44 +558,55 @@ export class L1Publisher { return true; } - this.metrics.recordFailedTx('process'); - - const errorMsg = await this.tryGetErrorFromRevertedTx({ - args, - functionName, - gasLimit, - abi: RollupAbi, - address: this.rollupContract.address, - blockNumber: receipt.blockNumber, - }); - this.log.error(`Rollup process tx reverted. ${errorMsg}`, undefined, { - ...ctx, - txHash: receipt.transactionHash, - }); await this.sleepOrInterrupted(); return false; } - private async tryGetErrorFromRevertedTx(args: { - args: any[]; - functionName: string; - gasLimit: bigint; - abi: any; - address: Hex; - blockNumber: bigint | undefined; - }) { + private async tryGetErrorFromRevertedTx( + err: any, + args: { + args: any[]; + functionName: string; + abi: any; + address: Hex; + }, + ) { + // We keep the input err since the below is not able to catch blob errors try { - await this.publicClient.simulateContract({ ...args, account: this.walletClient.account }); - return undefined; - } catch (err: any) { - if (err.name === 'ContractFunctionExecutionError') { - const execErr = err as ContractFunctionExecutionError; - return compactArray([ - execErr.shortMessage, - ...(execErr.metaMessages ?? []).slice(0, 2).map(s => s.trim()), - ]).join(' '); + // NB: If this fn starts unexpectedly giving incorrect blob hash errors, it may be because the checkBlob + // bool is no longer at the slot below. To find the slot, run: forge inspect src/core/Rollup.sol:Rollup storage + const checkBlobSlot = 20n; + await this.publicClient.simulateContract({ + ...args, + account: this.walletClient.account, + stateOverride: [ + { + address: args.address, + stateDiff: [ + { + slot: toHex(checkBlobSlot, true), + value: toHex(0n, true), + }, + ], + }, + ], + }); + // If the above passes, then the original error was due to blobs, and we throw it here: + throw err; + } catch (simulationErr: any) { + const contractErr = + simulationErr.name === 'ContractFunctionExecutionError' + ? simulationErr + : getContractError(simulationErr as BaseError, { + ...args, + sender: this.account.address, + docsPath: '/docs/contract/simulateContract', + }); + if (contractErr.name === 'ContractFunctionExecutionError') { + const execErr = contractErr as ContractFunctionExecutionError; + return tryGetCustomErrorNameContractFunction(execErr); } - this.log.error(`Error getting error from simulation`, err); + this.log.error(`Error getting error from viem`, err); } } @@ -715,24 +748,17 @@ export class L1Publisher { } } - private async prepareProposeTx(encodedData: L1ProcessArgs, gasGuess: bigint) { + private prepareProposeTx(encodedData: L1ProcessArgs, gasGuess: bigint) { // We have to jump a few hoops because viem is not happy around estimating gas for view functions - const computeTxsEffectsHashGas = await this.publicClient.estimateGas({ - to: this.rollupContract.address, - data: encodeFunctionData({ - abi: this.rollupContract.abi, - functionName: 'computeTxsEffectsHash', - args: [`0x${encodedData.body.toString('hex')}`], - }), - }); + // NB: Viem does not allow state overrides or blobs in estimate gas calls, so any est gas call will fail + const proposeGas = 300000n; // @note We perform this guesstimate instead of the usual `gasEstimate` since // viem will use the current state to simulate against, which means that // we will fail estimation in the case where we are simulating for the // first ethereum block within our slot (as current time is not in the // slot yet). - const gasGuesstimate = computeTxsEffectsHashGas + gasGuess; - + const gasGuesstimate = proposeGas + gasGuess; const attestations = encodedData.attestations ? encodedData.attestations.map(attest => attest.toViemSignature()) : []; @@ -745,7 +771,9 @@ export class L1Publisher { txHashes, }, attestations, + // TODO(#9101): Extract blobs from beacon chain => calldata will only contain what's needed to verify blob and body input can be removed `0x${encodedData.body.toString('hex')}`, + Blob.getEthBlobEvaluationInputs(encodedData.blobs), ] as const; return { args, gasGuesstimate }; @@ -758,78 +786,112 @@ export class L1Publisher { proof: Proof; }) { return [ - BigInt(args.toBlock - args.fromBlock + 1), - [ - args.publicInputs.previousArchive.root.toString(), - args.publicInputs.endArchive.root.toString(), - args.publicInputs.previousBlockHash.toString(), - args.publicInputs.endBlockHash.toString(), - args.publicInputs.endTimestamp.toString(), - args.publicInputs.outHash.toString(), - args.publicInputs.proverId.toString(), - ], - makeTuple(AZTEC_MAX_EPOCH_DURATION * 2, i => - i % 2 === 0 - ? args.publicInputs.fees[i / 2].recipient.toField().toString() - : args.publicInputs.fees[(i - 1) / 2].value.toString(), - ), + { + epochSize: BigInt(args.toBlock - args.fromBlock + 1), + args: [ + args.publicInputs.previousArchive.root.toString(), + args.publicInputs.endArchive.root.toString(), + args.publicInputs.previousBlockHash.toString(), + args.publicInputs.endBlockHash.toString(), + args.publicInputs.endTimestamp.toString(), + args.publicInputs.outHash.toString(), + args.publicInputs.proverId.toString(), + ], + fees: makeTuple(AZTEC_MAX_EPOCH_DURATION * 2, i => + i % 2 === 0 + ? args.publicInputs.fees[i / 2].recipient.toField().toString() + : args.publicInputs.fees[(i - 1) / 2].value.toString(), + ), + blobPublicInputs: `0x${args.publicInputs.blobPublicInputs + .filter((_, i) => i < args.toBlock - args.fromBlock + 1) + .map(b => b.toString()) + .join(``)}`, + }, `0x${serializeToBuffer(args.proof.extractAggregationObject()).toString('hex')}`, ] as const; } private async sendProposeTx( encodedData: L1ProcessArgs, - ): Promise<{ hash: string; args: any; functionName: string; gasLimit: bigint } | undefined> { + ): Promise<{ hash: string; args: any; functionName: string; err: any | undefined } | undefined> { if (this.interrupted) { return undefined; } + const { args } = this.prepareProposeTx(encodedData, L1Publisher.PROPOSE_GAS_GUESS); try { - const { args, gasGuesstimate } = await this.prepareProposeTx(encodedData, L1Publisher.PROPOSE_GAS_GUESS); + const data = encodeFunctionData({ + abi: this.rollupContract.abi, + functionName: 'propose', + args, + }); + + const kzg = Blob.getViemKzgInstance(); + // Viem does not allow sending a blob via contract.write() return { - hash: await this.rollupContract.write.propose(args, { + hash: await this.walletClient.sendTransaction({ + data, account: this.account, - gas: gasGuesstimate, + to: this.rollupContract.address, + blobs: encodedData.blobs.map(b => b.data), + kzg, + maxFeePerBlobGas: 10000000000n, //This is 10 gwei, taken from DEFAULT_MAX_FEE_PER_GAS }), args, functionName: 'propose', - gasLimit: gasGuesstimate, + err: undefined, + }; + } catch (err: any) { + return { + hash: `0x00`, + args, + functionName: 'propose', + err, }; - } catch (err) { - prettyLogViemError(err, this.log); - this.log.error(`Rollup publish failed`, err); - return undefined; } } private async sendProposeAndClaimTx( encodedData: L1ProcessArgs, quote: EpochProofQuote, - ): Promise<{ hash: string; args: any; functionName: string; gasLimit: bigint } | undefined> { + ): Promise<{ hash: string; args: any; functionName: string; err: any | undefined } | undefined> { if (this.interrupted) { return undefined; } + const { args } = this.prepareProposeTx(encodedData, L1Publisher.PROPOSE_AND_CLAIM_GAS_GUESS); try { - const { args, gasGuesstimate } = await this.prepareProposeTx( - encodedData, - L1Publisher.PROPOSE_AND_CLAIM_GAS_GUESS, - ); this.log.info(`ProposeAndClaim`); this.log.info(inspect(quote.payload)); + const data = encodeFunctionData({ + abi: this.rollupContract.abi, + functionName: 'proposeAndClaim', + args: [...args, quote.toViemArgs()], + }); + + const kzg = Blob.getViemKzgInstance(); + + // Viem does not allow sending a blob via contract.write() return { - hash: await this.rollupContract.write.proposeAndClaim([...args, quote.toViemArgs()], { + hash: await this.walletClient.sendTransaction({ + data, account: this.account, - gas: gasGuesstimate, + to: this.rollupContract.address, + blobs: encodedData.blobs.map(b => b.data), + kzg, + maxFeePerBlobGas: 10000000000n, //This is 10 gwei, taken from DEFAULT_MAX_FEE_PER_GAS }), + args: [...args, quote.toViemArgs()], functionName: 'proposeAndClaim', - args, - gasLimit: gasGuesstimate, + err: undefined, }; } catch (err) { - prettyLogViemError(err, this.log); - this.log.error(`Rollup publish failed`, err); - return undefined; + return { + hash: `0x00`, + args, + functionName: 'proposeAndClaim', + err, + }; } } @@ -883,6 +945,10 @@ function getCalldataGasUsage(data: Uint8Array) { return data.filter(byte => byte === 0).length * 4 + data.filter(byte => byte !== 0).length * 16; } +function tryGetCustomErrorNameContractFunction(err: ContractFunctionExecutionError) { + return compactArray([err.shortMessage, ...(err.metaMessages ?? []).slice(0, 2).map(s => s.trim())]).join(' '); +} + function tryGetCustomErrorName(err: any) { try { // See https://viem.sh/docs/contract/simulateContract#handling-custom-errors diff --git a/yarn-project/sequencer-client/src/sequencer/sequencer.test.ts b/yarn-project/sequencer-client/src/sequencer/sequencer.test.ts index e1b3f8bb71a..36072d9080c 100644 --- a/yarn-project/sequencer-client/src/sequencer/sequencer.test.ts +++ b/yarn-project/sequencer-client/src/sequencer/sequencer.test.ts @@ -217,7 +217,6 @@ describe('sequencer', () => { await sequencer.doRealWork(); expect(blockBuilder.startNewBlock).toHaveBeenCalledWith( - 2, mockedGlobalVariables, Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(new Fr(0n)), ); @@ -290,7 +289,6 @@ describe('sequencer', () => { await sequencer.doRealWork(); expect(blockBuilder.startNewBlock).toHaveBeenCalledWith( - 2, mockedGlobalVariables, Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(new Fr(0n)), ); @@ -324,7 +322,6 @@ describe('sequencer', () => { await sequencer.doRealWork(); expect(blockBuilder.startNewBlock).toHaveBeenCalledWith( - 2, mockedGlobalVariables, Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(new Fr(0n)), ); @@ -353,7 +350,6 @@ describe('sequencer', () => { await sequencer.doRealWork(); expect(blockBuilder.startNewBlock).toHaveBeenCalledWith( - 2, mockedGlobalVariables, Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(new Fr(0n)), ); @@ -384,7 +380,6 @@ describe('sequencer', () => { await sequencer.doRealWork(); expect(blockBuilder.startNewBlock).toHaveBeenCalledWith( - 2, mockedGlobalVariables, Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(new Fr(0n)), ); @@ -424,7 +419,6 @@ describe('sequencer', () => { await sequencer.doRealWork(); expect(blockBuilder.startNewBlock).toHaveBeenCalledWith( - 4, mockedGlobalVariables, Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(new Fr(0n)), ); @@ -465,10 +459,10 @@ describe('sequencer', () => { await sequencer.doRealWork(); expect(blockBuilder.startNewBlock).toHaveBeenCalledTimes(1); expect(blockBuilder.startNewBlock).toHaveBeenCalledWith( - 2, mockedGlobalVariables, Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(new Fr(0n)), ); + expect(blockBuilder.addTxs).toHaveBeenCalledWith([]); expect(publisher.proposeL2Block).toHaveBeenCalledTimes(1); expect(publisher.proposeL2Block).toHaveBeenCalledWith(block, getSignatures(), [], undefined); }); @@ -508,7 +502,6 @@ describe('sequencer', () => { await sequencer.doRealWork(); expect(blockBuilder.startNewBlock).toHaveBeenCalledTimes(1); expect(blockBuilder.startNewBlock).toHaveBeenCalledWith( - 3, mockedGlobalVariables, Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(new Fr(0n)), ); diff --git a/yarn-project/sequencer-client/src/sequencer/sequencer.ts b/yarn-project/sequencer-client/src/sequencer/sequencer.ts index 0ccd5c4ca23..b9177cd37d2 100644 --- a/yarn-project/sequencer-client/src/sequencer/sequencer.ts +++ b/yarn-project/sequencer-client/src/sequencer/sequencer.ts @@ -513,21 +513,17 @@ export class Sequencer { const processor = this.publicProcessorFactory.create(publicProcessorFork, historicalHeader, newGlobalVariables); const blockBuildingTimer = new Timer(); const blockBuilder = this.blockBuilderFactory.create(orchestratorFork); - await blockBuilder.startNewBlock(blockSize, newGlobalVariables, l1ToL2Messages); + await blockBuilder.startNewBlock(newGlobalVariables, l1ToL2Messages); const [publicProcessorDuration, [processedTxs, failedTxs]] = await elapsed(() => - processor.process( - validTxs, - blockSize, - blockBuilder, - this.txValidatorFactory.validatorForProcessedTxs(publicProcessorFork), - ), + processor.process(validTxs, blockSize, this.txValidatorFactory.validatorForProcessedTxs(publicProcessorFork)), ); if (failedTxs.length > 0) { const failedTxData = failedTxs.map(fail => fail.tx); this.log.debug(`Dropping failed txs ${Tx.getHashes(failedTxData).join(', ')}`); await this.p2pClient.deleteTxs(Tx.getHashes(failedTxData)); } + await blockBuilder.addTxs(processedTxs); await interrupt?.(processedTxs); @@ -612,19 +608,14 @@ export class Sequencer { await this.publisher.validateBlockForSubmission(block.header); const workDuration = workTimer.ms(); - this.log.info( - `Assembled block ${block.number} (txEffectsHash: ${block.header.contentCommitment.txsEffectsHash.toString( - 'hex', - )})`, - { - eventName: 'l2-block-built', - creator: this.publisher.getSenderAddress().toString(), - duration: workDuration, - publicProcessDuration: publicProcessorDuration, - rollupCircuitsDuration: blockBuildingTimer.ms(), - ...block.getStats(), - } satisfies L2BlockBuiltStats, - ); + this.log.info(`Assembled block ${block.number} (with hash: ${block.header.hash().toString()})`, { + eventName: 'l2-block-built', + creator: this.publisher.getSenderAddress().toString(), + duration: workDuration, + publicProcessDuration: publicProcessorDuration, + rollupCircuitsDuration: blockBuildingTimer.ms(), + ...block.getStats(), + } satisfies L2BlockBuiltStats); if (this.isFlushing) { this.log.info(`Flushing completed`); diff --git a/yarn-project/simulator/src/public/public_processor.test.ts b/yarn-project/simulator/src/public/public_processor.test.ts index 7db6b283dc8..ecff4354e92 100644 --- a/yarn-project/simulator/src/public/public_processor.test.ts +++ b/yarn-project/simulator/src/public/public_processor.test.ts @@ -1,7 +1,6 @@ import { type MerkleTreeWriteOperations, type ProcessedTx, - type ProcessedTxHandler, ProvingRequestType, SimulationError, type TreeInfo, @@ -35,7 +34,6 @@ describe('public_processor', () => { let db: MockProxy; let worldStateDB: MockProxy; let publicTxProcessor: MockProxy; - let handler: MockProxy; let root: Buffer; let mockedEnqueuedCallsResult: PublicTxResult; @@ -56,7 +54,6 @@ describe('public_processor', () => { db = mock(); worldStateDB = mock(); publicTxProcessor = mock(); - handler = mock(); root = Buffer.alloc(32, 5); @@ -97,20 +94,18 @@ describe('public_processor', () => { it('process private-only txs', async function () { const tx = mockPrivateOnlyTx(); - const [processed, failed] = await processor.process([tx], 1, handler); + const [processed, failed] = await processor.process([tx], 1); expect(processed.length).toBe(1); expect(processed[0].hash).toEqual(tx.getTxHash()); expect(processed[0].data).toEqual(tx.data); expect(failed).toEqual([]); - - expect(handler.addNewTx).toHaveBeenCalledWith(processed[0]); }); it('runs a tx with enqueued public calls', async function () { const tx = mockTxWithPublicCalls(); - const [processed, failed] = await processor.process([tx], 1, handler); + const [processed, failed] = await processor.process([tx], 1); expect(processed.length).toBe(1); expect(processed[0].hash).toEqual(tx.getTxHash()); @@ -126,7 +121,7 @@ describe('public_processor', () => { mockedEnqueuedCallsResult.revertCode = RevertCode.APP_LOGIC_REVERTED; mockedEnqueuedCallsResult.revertReason = new SimulationError(`Failed`, []); - const [processed, failed] = await processor.process([tx], 1, handler); + const [processed, failed] = await processor.process([tx], 1); expect(processed.length).toBe(1); expect(processed[0].hash).toEqual(tx.getTxHash()); @@ -139,7 +134,7 @@ describe('public_processor', () => { publicTxProcessor.simulate.mockRejectedValue(new SimulationError(`Failed`, [])); const tx = mockTxWithPublicCalls(); - const [processed, failed] = await processor.process([tx], 1, handler); + const [processed, failed] = await processor.process([tx], 1); expect(processed).toEqual([]); expect(failed.length).toBe(1); @@ -147,14 +142,13 @@ describe('public_processor', () => { expect(failed[0].error).toEqual(new SimulationError(`Failed`, [])); expect(worldStateDB.commit).toHaveBeenCalledTimes(0); - expect(handler.addNewTx).toHaveBeenCalledTimes(0); }); it('does not attempt to overfill a block', async function () { const txs = Array.from([1, 2, 3], seed => mockPrivateOnlyTx({ seed })); // We are passing 3 txs but only 2 can fit in the block - const [processed, failed] = await processor.process(txs, 2, handler); + const [processed, failed] = await processor.process(txs, 2); expect(processed.length).toBe(2); expect(processed[0].hash).toEqual(txs[0].getTxHash()); @@ -162,9 +156,6 @@ describe('public_processor', () => { expect(failed).toEqual([]); expect(worldStateDB.commit).toHaveBeenCalledTimes(2); - - expect(handler.addNewTx).toHaveBeenCalledWith(processed[0]); - expect(handler.addNewTx).toHaveBeenCalledWith(processed[1]); }); it('does not send a transaction to the prover if validation fails', async function () { @@ -173,13 +164,11 @@ describe('public_processor', () => { const txValidator: MockProxy> = mock(); txValidator.validateTxs.mockRejectedValue([[], [tx]]); - const [processed, failed] = await processor.process([tx], 1, handler, txValidator); + const [processed, failed] = await processor.process([tx], 1, txValidator); expect(processed).toEqual([]); expect(failed.length).toBe(1); expect(failed[0].tx).toEqual(tx); - - expect(handler.addNewTx).toHaveBeenCalledTimes(0); }); }); @@ -205,7 +194,7 @@ describe('public_processor', () => { const txFee = privateGasUsed.computeFee(globalVariables.gasFees); - const [processed, failed] = await processor.process([tx], 1, handler); + const [processed, failed] = await processor.process([tx], 1); expect(processed).toHaveLength(1); expect(processed[0].data.feePayer).toEqual(feePayer); @@ -216,8 +205,6 @@ describe('public_processor', () => { expect(worldStateDB.commit).toHaveBeenCalledTimes(1); expect(worldStateDB.storageWrite).toHaveBeenCalledTimes(1); - - expect(handler.addNewTx).toHaveBeenCalledWith(processed[0]); }); it('injects balance update with public enqueued call', async function () { @@ -228,7 +215,7 @@ describe('public_processor', () => { feePayer, }); - const [processed, failed] = await processor.process([tx], 1, handler); + const [processed, failed] = await processor.process([tx], 1); expect(processed).toHaveLength(1); expect(processed[0].hash).toEqual(tx.getTxHash()); @@ -241,8 +228,6 @@ describe('public_processor', () => { expect(worldStateDB.commit).toHaveBeenCalledTimes(1); expect(worldStateDB.storageWrite).toHaveBeenCalledTimes(1); - - expect(handler.addNewTx).toHaveBeenCalledWith(processed[0]); }); it('tweaks existing balance update from claim', async function () { @@ -262,7 +247,7 @@ describe('public_processor', () => { feePayer, }); - const [processed, failed] = await processor.process([tx], 1, handler); + const [processed, failed] = await processor.process([tx], 1); expect(processed).toHaveLength(1); expect(processed[0].hash).toEqual(tx.getTxHash()); @@ -277,8 +262,6 @@ describe('public_processor', () => { expect(worldStateDB.commit).toHaveBeenCalledTimes(1); expect(worldStateDB.storageWrite).toHaveBeenCalledTimes(1); - - expect(handler.addNewTx).toHaveBeenCalledWith(processed[0]); }); it('rejects tx if fee payer has not enough balance', async function () { @@ -289,7 +272,7 @@ describe('public_processor', () => { feePayer, }); - const [processed, failed] = await processor.process([tx], 1, handler); + const [processed, failed] = await processor.process([tx], 1); expect(processed).toEqual([]); expect(failed).toHaveLength(1); diff --git a/yarn-project/simulator/src/public/public_processor.ts b/yarn-project/simulator/src/public/public_processor.ts index 7e1e35b8710..f077af80b1c 100644 --- a/yarn-project/simulator/src/public/public_processor.ts +++ b/yarn-project/simulator/src/public/public_processor.ts @@ -4,7 +4,6 @@ import { type MerkleTreeWriteOperations, NestedProcessReturnValues, type ProcessedTx, - type ProcessedTxHandler, Tx, TxExecutionPhase, type TxValidator, @@ -98,7 +97,6 @@ export class PublicProcessor { public async process( txs: Tx[], maxTransactions = txs.length, - processedTxHandler?: ProcessedTxHandler, txValidator?: TxValidator, ): Promise<[ProcessedTx[], FailedTx[], NestedProcessReturnValues[]]> { // The processor modifies the tx objects in place, so we need to clone them. @@ -137,10 +135,6 @@ export class PublicProcessor { throw new Error(`Transaction ${invalid[0].hash} invalid after processing public functions`); } } - // if we were given a handler then send the transaction to it for block building or proving - if (processedTxHandler) { - await processedTxHandler.addNewTx(processedTx); - } // Update the state so that the next tx in the loop has the correct .startState // NB: before this change, all .startStates were actually incorrect, but the issue was never caught because we either: // a) had only 1 tx with public calls per block, so this loop had len 1 diff --git a/yarn-project/telemetry-client/src/attributes.ts b/yarn-project/telemetry-client/src/attributes.ts index 32ce263917a..06bbc1a66b7 100644 --- a/yarn-project/telemetry-client/src/attributes.ts +++ b/yarn-project/telemetry-client/src/attributes.ts @@ -50,7 +50,7 @@ export const BLOCK_PARENT = 'aztec.block.parent'; export const BLOCK_CANDIDATE_TXS_COUNT = 'aztec.block.candidate_txs_count'; /** How many actual txs were included in this block */ export const BLOCK_TXS_COUNT = 'aztec.block.txs_count'; -/** The block size (power of 2) */ +/** The block size */ export const BLOCK_SIZE = 'aztec.block.size'; /** How many blocks are included in this epoch */ export const EPOCH_SIZE = 'aztec.epoch.size'; diff --git a/yarn-project/yarn.lock b/yarn-project/yarn.lock index 57c3aa91fda..829f443df22 100644 --- a/yarn-project/yarn.lock +++ b/yarn-project/yarn.lock @@ -667,6 +667,7 @@ __metadata: "@typescript-eslint/eslint-plugin": ^6.2.1 "@typescript-eslint/parser": ^6.2.1 bn.js: ^5.2.1 + c-kzg: 4.0.0-alpha.1 comlink: ^4.4.1 debug: ^4.3.4 detect-node: ^2.1.0 @@ -4029,24 +4030,6 @@ __metadata: languageName: node linkType: hard -"@puppeteer/browsers@npm:2.2.3": - version: 2.2.3 - resolution: "@puppeteer/browsers@npm:2.2.3" - dependencies: - debug: 4.3.4 - extract-zip: 2.0.1 - progress: 2.0.3 - proxy-agent: 6.4.0 - semver: 7.6.0 - tar-fs: 3.0.5 - unbzip2-stream: 1.4.3 - yargs: 17.7.2 - bin: - browsers: lib/cjs/main-cli.js - checksum: 44d496e2c4d717e472b40473fd916b1aa3b1a6024b9e4f571ca1521172ae38d090b5f331ccc6694593f41eb0b667865d72e4c9bc29d6a705a369ade53dacbd5c - languageName: node - linkType: hard - "@puppeteer/browsers@npm:2.3.0": version: 2.3.0 resolution: "@puppeteer/browsers@npm:2.3.0" @@ -6939,6 +6922,17 @@ __metadata: languageName: node linkType: hard +"c-kzg@npm:4.0.0-alpha.1": + version: 4.0.0-alpha.1 + resolution: "c-kzg@npm:4.0.0-alpha.1" + dependencies: + bindings: ^1.5.0 + node-addon-api: ^5.0.0 + node-gyp: latest + checksum: abb07eb3e253ea10aef4ce3a04090f9940de4f3ffa8ef19de9bff8cae1d6bc0aa80d716d998b72d46365f6565445d89592e303fd0951f8ebe8a4d233912dd66f + languageName: node + linkType: hard + "cacache@npm:^18.0.0": version: 18.0.3 resolution: "cacache@npm:18.0.3" @@ -7180,19 +7174,6 @@ __metadata: languageName: node linkType: hard -"chromium-bidi@npm:0.5.19": - version: 0.5.19 - resolution: "chromium-bidi@npm:0.5.19" - dependencies: - mitt: 3.0.1 - urlpattern-polyfill: 10.0.0 - zod: 3.22.4 - peerDependencies: - devtools-protocol: "*" - checksum: aec876416dc856150c2fe4af1eb0328497c6859af8f9e5be0e0275435d7c0996654bfff68ea1fcd6125bf605957f16ad431c1961f47897542f0cb927ceb93e31 - languageName: node - linkType: hard - "chromium-bidi@npm:0.6.3": version: 0.6.3 resolution: "chromium-bidi@npm:0.6.3" @@ -7802,7 +7783,7 @@ __metadata: languageName: node linkType: hard -"cosmiconfig@npm:9.0.0, cosmiconfig@npm:^9.0.0": +"cosmiconfig@npm:^9.0.0": version: 9.0.0 resolution: "cosmiconfig@npm:9.0.0" dependencies: @@ -8190,7 +8171,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:4.3.4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": +"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": version: 4.3.4 resolution: "debug@npm:4.3.4" dependencies: @@ -8670,13 +8651,6 @@ __metadata: languageName: node linkType: hard -"devtools-protocol@npm:0.0.1273771": - version: 0.0.1273771 - resolution: "devtools-protocol@npm:0.0.1273771" - checksum: 2a88694ec0f2f167f826cea8c3d6030ede911c2db79d2a62d76d1be450bcb395e8283ca03f225fa308710ab06182dced47eed8cece56b377d1946403a321b64f - languageName: node - linkType: hard - "devtools-protocol@npm:0.0.1312386": version: 0.0.1312386 resolution: "devtools-protocol@npm:0.0.1312386" @@ -9749,7 +9723,7 @@ __metadata: languageName: node linkType: hard -"extract-zip@npm:2.0.1, extract-zip@npm:^2.0.1": +"extract-zip@npm:^2.0.1": version: 2.0.1 resolution: "extract-zip@npm:2.0.1" dependencies: @@ -13156,15 +13130,6 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^6.0.0": - version: 6.0.0 - resolution: "lru-cache@npm:6.0.0" - dependencies: - yallist: ^4.0.0 - checksum: f97f499f898f23e4585742138a22f22526254fdba6d75d41a1c2526b3b6cc5747ef59c5612ba7375f42aca4f8461950e925ba08c991ead0651b4918b7c978297 - languageName: node - linkType: hard - "lru-cache@npm:^7.14.1": version: 7.18.3 resolution: "lru-cache@npm:7.18.3" @@ -14025,6 +13990,15 @@ __metadata: languageName: node linkType: hard +"node-addon-api@npm:^5.0.0": + version: 5.1.0 + resolution: "node-addon-api@npm:5.1.0" + dependencies: + node-gyp: latest + checksum: 2508bd2d2981945406243a7bd31362fc7af8b70b8b4d65f869c61731800058fb818cc2fd36c8eac714ddd0e568cc85becf5e165cebbdf7b5024d5151bbc75ea1 + languageName: node + linkType: hard + "node-addon-api@npm:^6.1.0": version: 6.1.0 resolution: "node-addon-api@npm:6.1.0" @@ -15049,7 +15023,7 @@ __metadata: languageName: node linkType: hard -"progress@npm:2.0.3, progress@npm:^2.0.3": +"progress@npm:^2.0.3": version: 2.0.3 resolution: "progress@npm:2.0.3" checksum: f67403fe7b34912148d9252cb7481266a354bd99ce82c835f79070643bb3c6583d10dbcfda4d41e04bbc1d8437e9af0fb1e1f2135727878f5308682a579429b7 @@ -15127,7 +15101,7 @@ __metadata: languageName: node linkType: hard -"proxy-agent@npm:6.4.0, proxy-agent@npm:^6.4.0": +"proxy-agent@npm:^6.4.0": version: 6.4.0 resolution: "proxy-agent@npm:6.4.0" dependencies: @@ -15223,34 +15197,7 @@ __metadata: languageName: node linkType: hard -"puppeteer-core@npm:22.8.0": - version: 22.8.0 - resolution: "puppeteer-core@npm:22.8.0" - dependencies: - "@puppeteer/browsers": 2.2.3 - chromium-bidi: 0.5.19 - debug: 4.3.4 - devtools-protocol: 0.0.1273771 - ws: 8.17.0 - checksum: f4250c87c09eb9c73d737ccf08e548babd57e749c9bfc241a7251f2e5e5f3ef2bf3dcb99b7b606763db3a914c866c97cc6714961900566280414b0fad5a330a8 - languageName: node - linkType: hard - -"puppeteer@npm:^22.2": - version: 22.8.0 - resolution: "puppeteer@npm:22.8.0" - dependencies: - "@puppeteer/browsers": 2.2.3 - cosmiconfig: 9.0.0 - devtools-protocol: 0.0.1273771 - puppeteer-core: 22.8.0 - bin: - puppeteer: lib/esm/puppeteer/node/cli.js - checksum: da4855a71b6355e96196b9838fc255fa39f6bdd09cb0b9a6d3cfc377ba839eecef01e40ad7bbff48ef17a5784266bfac5dbf94e1b298f447ce8983f72ff90185 - languageName: node - linkType: hard - -"puppeteer@npm:^22.4.1": +"puppeteer@npm:^22.2, puppeteer@npm:^22.4.1": version: 22.15.0 resolution: "puppeteer@npm:22.15.0" dependencies: @@ -15981,17 +15928,6 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.6.0": - version: 7.6.0 - resolution: "semver@npm:7.6.0" - dependencies: - lru-cache: ^6.0.0 - bin: - semver: bin/semver.js - checksum: 7427f05b70786c696640edc29fdd4bc33b2acf3bbe1740b955029044f80575fc664e1a512e4113c3af21e767154a94b4aa214bf6cd6e42a1f6dba5914e0b208c - languageName: node - linkType: hard - "semver@npm:^6.0.0, semver@npm:^6.3.0, semver@npm:^6.3.1": version: 6.3.1 resolution: "semver@npm:6.3.1" @@ -16995,23 +16931,6 @@ __metadata: languageName: node linkType: hard -"tar-fs@npm:3.0.5": - version: 3.0.5 - resolution: "tar-fs@npm:3.0.5" - dependencies: - bare-fs: ^2.1.1 - bare-path: ^2.1.0 - pump: ^3.0.0 - tar-stream: ^3.1.5 - dependenciesMeta: - bare-fs: - optional: true - bare-path: - optional: true - checksum: e31c7e3e525fec0afecdec1cac58071809e396187725f2eba442f08a4c5649c8cd6b7ce25982f9a91bb0f055628df47c08177dd2ea4f5dafd3c22f42f8da8f00 - languageName: node - linkType: hard - "tar-fs@npm:^3.0.6": version: 3.0.6 resolution: "tar-fs@npm:3.0.6" @@ -17792,7 +17711,7 @@ __metadata: languageName: node linkType: hard -"unbzip2-stream@npm:1.4.3, unbzip2-stream@npm:^1.4.3": +"unbzip2-stream@npm:^1.4.3": version: 1.4.3 resolution: "unbzip2-stream@npm:1.4.3" dependencies: @@ -18604,7 +18523,7 @@ __metadata: languageName: node linkType: hard -"ws@npm:8.17.0, ws@npm:^8.13.0": +"ws@npm:^8.13.0": version: 8.17.0 resolution: "ws@npm:8.17.0" peerDependencies: @@ -18688,7 +18607,7 @@ __metadata: languageName: node linkType: hard -"yargs@npm:17.7.2, yargs@npm:^17.3.1, yargs@npm:^17.7.2": +"yargs@npm:^17.3.1, yargs@npm:^17.7.2": version: 17.7.2 resolution: "yargs@npm:17.7.2" dependencies: @@ -18741,13 +18660,6 @@ __metadata: languageName: node linkType: hard -"zod@npm:3.22.4": - version: 3.22.4 - resolution: "zod@npm:3.22.4" - checksum: 80bfd7f8039b24fddeb0718a2ec7c02aa9856e4838d6aa4864335a047b6b37a3273b191ef335bf0b2002e5c514ef261ffcda5a589fb084a48c336ffc4cdbab7f - languageName: node - linkType: hard - "zod@npm:3.23.8, zod@npm:^3.23.8": version: 3.23.8 resolution: "zod@npm:3.23.8" From de14c3217a280630a307103b4eca6abc94722723 Mon Sep 17 00:00:00 2001 From: MirandaWood Date: Wed, 27 Nov 2024 18:50:28 +0000 Subject: [PATCH 02/39] chore: comments/renaming in Rollup.sol --- l1-contracts/src/core/Rollup.sol | 42 ++++++++++++++++---------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/l1-contracts/src/core/Rollup.sol b/l1-contracts/src/core/Rollup.sol index c965c6749e7..df6dfff87c2 100644 --- a/l1-contracts/src/core/Rollup.sol +++ b/l1-contracts/src/core/Rollup.sol @@ -238,11 +238,11 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { * @dev We provide the `_archive` and `_blockHash` even if it could be read from storage itself because it allow for * better error messages. Without passing it, we would just have a proof verification failure. * - * @param _submitArgs - Struct for constructing PIs which has: + * @param _submitArgs - Struct for constructing public inputs which has: * epochSize - The size of the epoch (to be promoted to a constant) * args - Array of public inputs to the proof (previousArchive, endArchive, previousBlockHash, endBlockHash, endTimestamp, outHash, proverId) * fees - Array of recipient-value pairs with fees to be distributed for the epoch - * blobPublicInputs- The blob PIs for the proof + * blobPublicInputs- The blob public inputs for the proof * @param _aggregationObject - The aggregation object for the proof * @param _proof - The proof to verify */ @@ -396,7 +396,7 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { * @param _signatures - The signatures to validate * @param _digest - The digest to validate * @param _currentTime - The current time - * @param _blobsHash - The EVM blob hash for this block + * @param _blobsHash - The blobs hash for this block * @param _flags - The flags to validate */ function validateHeader( @@ -559,11 +559,11 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { * own public inputs used for generating the proof vs the ones assembled * by this contract when verifying it. * - * @param _submitArgs - Struct for constructing PIs which has: + * @param _submitArgs - Struct for constructing public inputs which has: * epochSize - The size of the epoch (to be promoted to a constant) * args - Array of public inputs to the proof (previousArchive, endArchive, previousBlockHash, endBlockHash, endTimestamp, outHash, proverId) * fees - Array of recipient-value pairs with fees to be distributed for the epoch - * blobPublicInputs- The blob PIs for the proof + * blobPublicInputs- The blob public inputs for the proof * @param _aggregationObject - The aggregation object for the proof */ function getEpochProofPublicInputs( @@ -572,7 +572,6 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { ) public view override(IRollup) returns (bytes32[] memory) { uint256 previousBlockNumber = tips.provenBlockNumber; uint256 endBlockNumber = previousBlockNumber + _submitArgs.epochSize; - bytes32[7] memory args = _submitArgs.args; // Args are defined as an array because Solidity complains with "stack too deep" otherwise // 0 bytes32 _previousArchive, // 1 bytes32 _endArchive, @@ -588,26 +587,27 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { // We do it this way to provide better error messages than passing along the storage values bytes32 expectedPreviousArchive = blocks[previousBlockNumber].archive; require( - expectedPreviousArchive == args[0], - Errors.Rollup__InvalidPreviousArchive(expectedPreviousArchive, args[0]) + expectedPreviousArchive == _submitArgs.args[0], + Errors.Rollup__InvalidPreviousArchive(expectedPreviousArchive, _submitArgs.args[0]) ); bytes32 expectedEndArchive = blocks[endBlockNumber].archive; require( - expectedEndArchive == args[1], Errors.Rollup__InvalidArchive(expectedEndArchive, args[1]) + expectedEndArchive == _submitArgs.args[1], + Errors.Rollup__InvalidArchive(expectedEndArchive, _submitArgs.args[1]) ); bytes32 expectedPreviousBlockHash = blocks[previousBlockNumber].blockHash; // TODO: Remove 0 check once we inject the proper genesis block hash require( - expectedPreviousBlockHash == 0 || expectedPreviousBlockHash == args[2], - Errors.Rollup__InvalidPreviousBlockHash(expectedPreviousBlockHash, args[2]) + expectedPreviousBlockHash == 0 || expectedPreviousBlockHash == _submitArgs.args[2], + Errors.Rollup__InvalidPreviousBlockHash(expectedPreviousBlockHash, _submitArgs.args[2]) ); bytes32 expectedEndBlockHash = blocks[endBlockNumber].blockHash; require( - expectedEndBlockHash == args[3], - Errors.Rollup__InvalidBlockHash(expectedEndBlockHash, args[3]) + expectedEndBlockHash == _submitArgs.args[3], + Errors.Rollup__InvalidBlockHash(expectedEndBlockHash, _submitArgs.args[3]) ); } @@ -633,7 +633,7 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { // } // previous_archive.root: the previous archive tree root - publicInputs[0] = args[0]; + publicInputs[0] = _submitArgs.args[0]; // previous_archive.next_available_leaf_index: the previous archive next available index // normally this should be equal to the block number (since leaves are 0-indexed and blocks 1-indexed) @@ -641,25 +641,25 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { publicInputs[1] = bytes32(previousBlockNumber + 1); // end_archive.root: the new archive tree root - publicInputs[2] = args[1]; + publicInputs[2] = _submitArgs.args[1]; // end_archive.next_available_leaf_index: the new archive next available index publicInputs[3] = bytes32(endBlockNumber + 1); // previous_block_hash: the block hash just preceding this epoch - publicInputs[4] = args[2]; + publicInputs[4] = _submitArgs.args[2]; // end_block_hash: the last block hash in the epoch - publicInputs[5] = args[3]; + publicInputs[5] = _submitArgs.args[3]; // end_timestamp: the timestamp of the last block in the epoch - publicInputs[6] = args[4]; + publicInputs[6] = _submitArgs.args[4]; // end_block_number: last block number in the epoch publicInputs[7] = bytes32(endBlockNumber); // out_hash: root of this epoch's l2 to l1 message tree - publicInputs[8] = args[5]; + publicInputs[8] = _submitArgs.args[5]; uint256 feesLength = Constants.AZTEC_MAX_EPOCH_DURATION * 2; // fees[9 to (9+feesLength-1)]: array of recipient-value pairs @@ -677,7 +677,7 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { offset += 1; // prover_id: id of current epoch's prover - publicInputs[offset] = args[6]; + publicInputs[offset] = _submitArgs.args[6]; offset += 1; // blob_public_inputs @@ -900,7 +900,7 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { * @param _signatures - The signatures for the attestations * @param _digest - The digest that signatures signed * @param _currentTime - The time of execution - * @param _blobsHash - The EVM blob hash for this block + * @param _blobsHash - The blobs hash for this block * @dev - This value is provided to allow for simple simulation of future * @param _flags - Flags specific to the execution, whether certain checks should be skipped */ From b75a6f73da9ada063e9e425b104e08542d5ee89d Mon Sep 17 00:00:00 2001 From: MirandaWood Date: Wed, 27 Nov 2024 22:10:02 +0000 Subject: [PATCH 03/39] feat: give up and make blob oracle for simulation --- .../Nargo.template.toml | 1 + .../crates/blob/src/lib.nr | 1 + .../crates/blob/src/mock_blob_oracle.nr | 23 +++++++ .../rollup-block-root-simulated/Nargo.toml | 9 +++ .../rollup-block-root-simulated/src/main.nr | 5 ++ .../block_root/block_root_rollup_inputs.nr | 21 ++++-- .../crates/rollup-lib/src/block_root/mod.nr | 4 +- .../bb-prover/src/test/test_circuit_prover.ts | 34 +++------- .../src/structs/sponge_blob.test.ts | 11 ++- .../circuits.js/src/structs/sponge_blob.ts | 45 ++++++++++++- .../end-to-end/src/e2e_epochs.test.ts | 8 +-- .../src/artifacts.ts | 3 +- .../noir-protocol-circuits-types/src/index.ts | 67 +++++++++++++++++++ .../src/block_builder/light.test.ts | 40 +---------- .../simulator/src/providers/acvm_wasm.ts | 2 +- 15 files changed, 190 insertions(+), 84 deletions(-) create mode 100644 noir-projects/noir-protocol-circuits/crates/blob/src/mock_blob_oracle.nr create mode 100644 noir-projects/noir-protocol-circuits/crates/rollup-block-root-simulated/Nargo.toml create mode 100644 noir-projects/noir-protocol-circuits/crates/rollup-block-root-simulated/src/main.nr diff --git a/noir-projects/noir-protocol-circuits/Nargo.template.toml b/noir-projects/noir-protocol-circuits/Nargo.template.toml index 553b27289cf..e482f16c150 100644 --- a/noir-projects/noir-protocol-circuits/Nargo.template.toml +++ b/noir-projects/noir-protocol-circuits/Nargo.template.toml @@ -29,6 +29,7 @@ members = [ "crates/rollup-base-public-simulated", "crates/rollup-block-merge", "crates/rollup-block-root", + "crates/rollup-block-root-simulated", "crates/rollup-block-root-empty", "crates/rollup-root", ] diff --git a/noir-projects/noir-protocol-circuits/crates/blob/src/lib.nr b/noir-projects/noir-protocol-circuits/crates/blob/src/lib.nr index 648f97948a9..1f83b3bb669 100644 --- a/noir-projects/noir-protocol-circuits/crates/blob/src/lib.nr +++ b/noir-projects/noir-protocol-circuits/crates/blob/src/lib.nr @@ -1,4 +1,5 @@ mod blob_public_inputs; mod blob; +mod mock_blob_oracle; mod unconstrained_config; // TODO(#9982): Replace unconstrained_config with config and import ROOTS - calculating ROOTS in unconstrained is insecure. diff --git a/noir-projects/noir-protocol-circuits/crates/blob/src/mock_blob_oracle.nr b/noir-projects/noir-protocol-circuits/crates/blob/src/mock_blob_oracle.nr new file mode 100644 index 00000000000..9af68fd2d12 --- /dev/null +++ b/noir-projects/noir-protocol-circuits/crates/blob/src/mock_blob_oracle.nr @@ -0,0 +1,23 @@ +use crate::blob_public_inputs::{BlobCommitment, BlockBlobPublicInputs}; +use types::{ + abis::sponge_blob::SpongeBlob, + constants::{BLOB_PUBLIC_INPUTS, BLOBS_PER_BLOCK, FIELDS_PER_BLOB}, +}; +// TODO(BLOB_ORACLE): this was added to save simulation time (~1min in ACVM, ~3mins in wasm -> 500ms). +// The use of bignum adds a lot of unconstrained code which overloads limits when simulating. +// If/when simulation times of unconstrained are improved, remove this. +pub unconstrained fn evaluate_blobs( + blobs_as_fields: [Field; FIELDS_PER_BLOB * BLOBS_PER_BLOCK], + kzg_commitments: [BlobCommitment; BLOBS_PER_BLOCK], + mut sponge_blob: SpongeBlob, +) -> BlockBlobPublicInputs { + let fields = evaluate_blobs_oracle(blobs_as_fields, kzg_commitments, sponge_blob); + BlockBlobPublicInputs::deserialize(fields) +} + +#[oracle(evaluateBlobs)] +unconstrained fn evaluate_blobs_oracle( + blobs_as_fields: [Field; FIELDS_PER_BLOB * BLOBS_PER_BLOCK], + kzg_commitments: [BlobCommitment; BLOBS_PER_BLOCK], + mut sponge_blob: SpongeBlob, +) -> [Field; BLOB_PUBLIC_INPUTS * BLOBS_PER_BLOCK] {} diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-block-root-simulated/Nargo.toml b/noir-projects/noir-protocol-circuits/crates/rollup-block-root-simulated/Nargo.toml new file mode 100644 index 00000000000..7a6a625957f --- /dev/null +++ b/noir-projects/noir-protocol-circuits/crates/rollup-block-root-simulated/Nargo.toml @@ -0,0 +1,9 @@ +[package] +name = "rollup_block_root_simulated" +type = "bin" +authors = [""] +compiler_version = ">=0.18.0" + +[dependencies] +rollup_lib = { path = "../rollup-lib" } +types = { path = "../types" } diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-block-root-simulated/src/main.nr b/noir-projects/noir-protocol-circuits/crates/rollup-block-root-simulated/src/main.nr new file mode 100644 index 00000000000..c4d1e1889a9 --- /dev/null +++ b/noir-projects/noir-protocol-circuits/crates/rollup-block-root-simulated/src/main.nr @@ -0,0 +1,5 @@ +use dep::rollup_lib::block_root::{BlockRootOrBlockMergePublicInputs, BlockRootRollupInputs}; + +unconstrained fn main(inputs: BlockRootRollupInputs) -> pub BlockRootOrBlockMergePublicInputs { + inputs.block_root_rollup_circuit() +} diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_rollup_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_rollup_inputs.nr index 73da5991875..884c171ff0c 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_rollup_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_rollup_inputs.nr @@ -131,11 +131,22 @@ impl BlockRootRollupInputs { FeeRecipient { recipient: left.constants.global_variables.coinbase, value: total_fees }; let mut blob_public_inputs = [BlockBlobPublicInputs::empty(); AZTEC_MAX_EPOCH_DURATION]; - blob_public_inputs[0] = evaluate_blobs( - self.blobs_fields, - self.blob_commitments, - right.end_sponge_blob, - ); + if !dep::std::runtime::is_unconstrained() { + blob_public_inputs[0] = evaluate_blobs( + self.blobs_fields, + self.blob_commitments, + right.end_sponge_blob, + ); + } else { + // TODO(BLOB_ORACLE): this was added to save simulation time, if/when simulation times of unconstrained are improved, remove this. + blob_public_inputs[0] = unsafe { + blob::mock_blob_oracle::evaluate_blobs( + self.blobs_fields, + self.blob_commitments, + right.end_sponge_blob, + ) + }; + } BlockRootOrBlockMergePublicInputs { previous_archive: left.constants.last_archive, // archive before this block was added diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/mod.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/mod.nr index f9c527cf425..09e429413b1 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/mod.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/mod.nr @@ -42,7 +42,9 @@ mod tests { } #[test] - unconstrained fn check_blob() { + fn check_blob() { + // Note: this test will not run in unconstrained, because it reaches the foreign call + // TODO(BLOB_ORACLE): remove the oracle and switch this test to unconstrained let inputs = default_block_root_rollup_inputs(); let outputs = inputs.block_root_rollup_circuit(); diff --git a/yarn-project/bb-prover/src/test/test_circuit_prover.ts b/yarn-project/bb-prover/src/test/test_circuit_prover.ts index 6441ca1ac60..2cac5fdf3c7 100644 --- a/yarn-project/bb-prover/src/test/test_circuit_prover.ts +++ b/yarn-project/bb-prover/src/test/test_circuit_prover.ts @@ -38,7 +38,6 @@ import { import { createDebugLogger } from '@aztec/foundation/log'; import { sleep } from '@aztec/foundation/sleep'; import { Timer } from '@aztec/foundation/timer'; -import { fileURLToPath } from '@aztec/foundation/url'; import { ProtocolCircuitVks, type ServerProtocolArtifact, @@ -47,8 +46,6 @@ import { convertBaseParityOutputsFromWitnessMap, convertBlockMergeRollupInputsToWitnessMap, convertBlockMergeRollupOutputsFromWitnessMap, - convertBlockRootRollupInputsToWitnessMap, - convertBlockRootRollupOutputsFromWitnessMap, convertEmptyBlockRootRollupInputsToWitnessMap, convertEmptyBlockRootRollupOutputsFromWitnessMap, convertMergeRollupInputsToWitnessMap, @@ -58,22 +55,18 @@ import { convertRootParityOutputsFromWitnessMap, convertRootRollupInputsToWitnessMap, convertRootRollupOutputsFromWitnessMap, + convertSimulatedBlockRootRollupInputsToWitnessMap, + convertSimulatedBlockRootRollupOutputsFromWitnessMap, convertSimulatedPrivateBaseRollupInputsToWitnessMap, convertSimulatedPrivateBaseRollupOutputsFromWitnessMap, convertSimulatedPrivateKernelEmptyOutputsFromWitnessMap, convertSimulatedPublicBaseRollupInputsToWitnessMap, convertSimulatedPublicBaseRollupOutputsFromWitnessMap, } from '@aztec/noir-protocol-circuits-types'; -import { - NativeACVMSimulator, - type SimulationProvider, - WASMSimulator, - emitCircuitSimulationStats, -} from '@aztec/simulator'; +import { type SimulationProvider, WASMSimulator, emitCircuitSimulationStats } from '@aztec/simulator'; import { type TelemetryClient, trackSpan } from '@aztec/telemetry-client'; import { type WitnessMap } from '@noir-lang/types'; -import path from 'path'; import { ProverInstrumentation } from '../instrumentation.js'; import { mapProtocolArtifactNameToCircuitName } from '../stats.js'; @@ -222,8 +215,8 @@ export class TestCircuitProver implements ServerCircuitProver { input, 'BlockRootRollupArtifact', NESTED_RECURSIVE_PROOF_LENGTH, - convertBlockRootRollupInputsToWitnessMap, - convertBlockRootRollupOutputsFromWitnessMap, + convertSimulatedBlockRootRollupInputsToWitnessMap, + convertSimulatedBlockRootRollupOutputsFromWitnessMap, ); } @@ -321,19 +314,10 @@ export class TestCircuitProver implements ServerCircuitProver { const circuitName = mapProtocolArtifactNameToCircuitName(artifactName); let simulationProvider = this.simulationProvider ?? this.wasmSimulator; - // With the blob circuit, we require a long array of constants and lots of unconstrained. - // Unfortunately, this overflows wasm limits, so cannot be simulated via wasm. - // The below forces use of the native simulator just for this circuit: - if (artifactName == 'BlockRootRollupArtifact' && !(simulationProvider instanceof NativeACVMSimulator)) { - simulationProvider = new NativeACVMSimulator( - process.env.TEMP_DIR || `/tmp`, - process.env.ACVM_BINARY_PATH || - `${path.resolve( - path.dirname(fileURLToPath(import.meta.url)), - '../../../../noir/', - process.env.NOIR_RELEASE_DIRECTORY || 'noir-repo/target/release', - )}/acvm`, - ); + if (artifactName == 'BlockRootRollupArtifact') { + // TODO(BLOB_ORACLE): temporarily force block root to use wasm while we simulate + // the blob operations with an oracle. Appears to be no way to provide nativeACVM with a foreign call hander. + simulationProvider = this.wasmSimulator; } const witness = await simulationProvider.simulateCircuit(witnessMap, SimulatedServerCircuitArtifacts[artifactName]); diff --git a/yarn-project/circuits.js/src/structs/sponge_blob.test.ts b/yarn-project/circuits.js/src/structs/sponge_blob.test.ts index b5f7d195b67..574eb15f69c 100644 --- a/yarn-project/circuits.js/src/structs/sponge_blob.test.ts +++ b/yarn-project/circuits.js/src/structs/sponge_blob.test.ts @@ -18,12 +18,11 @@ describe('SpongeBlob', () => { expect(res).toEqual(spongeBlob); }); - // TODO(Miranda): reinstate if we need to/from fields - // it('serializes to field array and deserializes it back', () => { - // const fieldArray = spongeBlob.toFields(); - // const res = SpongeBlob.fromFields(fieldArray); - // expect(res).toEqual(spongeBlob); - // }); + it('serializes to field array and deserializes it back', () => { + const fieldArray = spongeBlob.toFields(); + const res = SpongeBlob.fromFields(fieldArray); + expect(res).toEqual(spongeBlob); + }); it('number of fields matches constant', () => { const fields = spongeBlob.sponge.cache.concat([ diff --git a/yarn-project/circuits.js/src/structs/sponge_blob.ts b/yarn-project/circuits.js/src/structs/sponge_blob.ts index 5189909b956..c17bdee3915 100644 --- a/yarn-project/circuits.js/src/structs/sponge_blob.ts +++ b/yarn-project/circuits.js/src/structs/sponge_blob.ts @@ -1,7 +1,13 @@ -import { makeTuple } from '@aztec/foundation/array'; +import { type FieldsOf, makeTuple } from '@aztec/foundation/array'; import { poseidon2Permutation } from '@aztec/foundation/crypto'; import { Fr } from '@aztec/foundation/fields'; -import { BufferReader, type Tuple, serializeToBuffer } from '@aztec/foundation/serialize'; +import { + BufferReader, + FieldReader, + type Tuple, + serializeToBuffer, + serializeToFields, +} from '@aztec/foundation/serialize'; /** * A Poseidon2 sponge used to accumulate data that will be added to a blob. @@ -26,6 +32,23 @@ export class SpongeBlob { return serializeToBuffer(this.sponge, this.fields, this.expectedFields); } + static getFields(fields: FieldsOf) { + return [fields.sponge, fields.fields, fields.expectedFields]; + } + + toFields(): Fr[] { + return serializeToFields(...SpongeBlob.getFields(this)); + } + + static fromFields(fields: Fr[] | FieldReader): SpongeBlob { + const reader = FieldReader.asReader(fields); + return new SpongeBlob( + reader.readObject(Poseidon2Sponge), + reader.readField().toNumber(), + reader.readField().toNumber(), + ); + } + clone() { return SpongeBlob.fromBuffer(this.toBuffer()); } @@ -81,6 +104,24 @@ export class Poseidon2Sponge { return serializeToBuffer(this.cache, this.state, this.cacheSize, this.squeezeMode); } + static getFields(fields: FieldsOf) { + return [fields.cache, fields.state, fields.cacheSize, fields.squeezeMode]; + } + + toFields(): Fr[] { + return serializeToFields(...Poseidon2Sponge.getFields(this)); + } + + static fromFields(fields: Fr[] | FieldReader): Poseidon2Sponge { + const reader = FieldReader.asReader(fields); + return new Poseidon2Sponge( + reader.readFieldArray(3), + reader.readFieldArray(4), + reader.readField().toNumber(), + reader.readBoolean(), + ); + } + static empty(): Poseidon2Sponge { return new Poseidon2Sponge( makeTuple(3, () => Fr.ZERO), diff --git a/yarn-project/end-to-end/src/e2e_epochs.test.ts b/yarn-project/end-to-end/src/e2e_epochs.test.ts index ea5a38bbbcb..d7e5a38c154 100644 --- a/yarn-project/end-to-end/src/e2e_epochs.test.ts +++ b/yarn-project/end-to-end/src/e2e_epochs.test.ts @@ -25,7 +25,7 @@ describe('e2e_epochs', () => { let handle: NodeJS.Timeout; const EPOCH_DURATION = 4; - const L1_BLOCK_TIME = 25; + const L1_BLOCK_TIME = 5; const L2_SLOT_DURATION_IN_L1_BLOCKS = 2; beforeAll(async () => { @@ -112,7 +112,7 @@ describe('e2e_epochs', () => { /** Waits until the given L2 block number is mined. */ const waitUntilL2BlockNumber = async (target: number) => { - await retryUntil(() => Promise.resolve(target === l2BlockNumber), `Wait until L2 block ${target}`, 200, 0.1); + await retryUntil(() => Promise.resolve(target === l2BlockNumber), `Wait until L2 block ${target}`, 60, 0.1); }; it('does not allow submitting proof after epoch end', async () => { @@ -130,8 +130,6 @@ describe('e2e_epochs', () => { sequencerDelayer.pauseNextTxUntilTimestamp(epoch2Start + BigInt(L1_BLOCK_TIME)); // Next sequencer to publish a block should trigger a rollback to block 1 - // The below is a bit of a hack - to avoid the waitUntilL1Timestamp timing out, I wait until the reorg back to block 1 is complete - await waitUntilL2BlockNumber(1); await waitUntilL1Timestamp(l1Client, epoch2Start + BigInt(L1_BLOCK_TIME)); expect(await rollup.getBlockNumber()).toEqual(1n); expect(await rollup.getSlotNumber()).toEqual(8n); @@ -145,5 +143,5 @@ describe('e2e_epochs', () => { const lastL2BlockTxReceipt = await l1Client.getTransactionReceipt({ hash: lastL2BlockTxHash! }); expect(lastL2BlockTxReceipt.status).toEqual('success'); expect(lastL2BlockTxReceipt.blockNumber).toBeGreaterThan(lastProverTxReceipt!.blockNumber); - }, 400_000); + }); }); diff --git a/yarn-project/noir-protocol-circuits-types/src/artifacts.ts b/yarn-project/noir-protocol-circuits-types/src/artifacts.ts index d0339d17050..f4a12718405 100644 --- a/yarn-project/noir-protocol-circuits-types/src/artifacts.ts +++ b/yarn-project/noir-protocol-circuits-types/src/artifacts.ts @@ -21,6 +21,7 @@ import PublicBaseRollupSimulatedJson from '../artifacts/rollup_base_public_simul import BlockMergeRollupJson from '../artifacts/rollup_block_merge.json' assert { type: 'json' }; import BlockRootRollupJson from '../artifacts/rollup_block_root.json' assert { type: 'json' }; import EmptyBlockRootRollupJson from '../artifacts/rollup_block_root_empty.json' assert { type: 'json' }; +import BlockRootRollupSimulatedJson from '../artifacts/rollup_block_root_simulated.json' assert { type: 'json' }; import MergeRollupJson from '../artifacts/rollup_merge.json' assert { type: 'json' }; import RootRollupJson from '../artifacts/rollup_root.json' assert { type: 'json' }; import { @@ -74,7 +75,7 @@ export const SimulatedServerCircuitArtifacts: Record { // ForeignCallInput is actually a string[], so the args are string[][]. const log = createDebugLogger('aztec:noir-protocol-circuits:oracle'); @@ -738,6 +775,36 @@ export function foreignCallHandler(name: string, args: ForeignCallInput[]): Prom const msg: string = msgRaw.map(acvmField => String.fromCharCode(fromACVMField(acvmField).toNumber())).join(''); const fieldsFr: Fr[] = fields.map((field: string) => fromACVMField(field)); log.verbose('debug_log ' + applyStringFormatting(msg, fieldsFr)); + } else if (name === 'evaluateBlobs') { + // TODO(BLOB_ORACLE): this was added to save simulation time (~1min in ACVM, ~3mins in wasm -> 500ms). + // The use of bignum adds a lot of unconstrained code which overloads limits when simulating. + // If/when simulation times of unconstrained are improved, remove this. + // Create and evaulate our blobs: + const blobsAsFr: Fr[] = args[0].map((field: string) => fromACVMField(field)).filter(field => !field.isZero()); + const blobs = Blob.getBlobs(blobsAsFr); + const blobPublicInputs = BlockBlobPublicInputs.fromBlobs(blobs); + // Checks on injected values: + const kzgCommitments = args[1].map((field: string) => fromACVMField(field)); + const spongeBlob = SpongeBlob.fromFields( + args + .slice(2) + .flat() + .map((field: string) => fromACVMField(field)), + ); + blobs.forEach((blob, i) => { + const injected = kzgCommitments.slice(2 * i, 2 * i + 2); + const calculated = blob.commitmentToFields(); + if (!calculated[0].equals(injected[0]) || !calculated[1].equals(injected[1])) { + throw new Error(`Blob commitment mismatch. Real: ${calculated}, Injected: ${injected}`); + } + const hash = spongeBlob.squeeze(); + if (!hash.equals(blob.fieldsHash)) { + throw new Error( + `Injected blob fields do not match rolled up fields. Real hash: ${hash}, Injected hash: ${blob.fieldsHash}`, + ); + } + }); + return Promise.resolve([blobPublicInputs.toFields().map(toACVMField)]); } else { throw Error(`unexpected oracle during execution: ${name}`); } diff --git a/yarn-project/sequencer-client/src/block_builder/light.test.ts b/yarn-project/sequencer-client/src/block_builder/light.test.ts index 299a8bd77e1..fc91ae74f3d 100644 --- a/yarn-project/sequencer-client/src/block_builder/light.test.ts +++ b/yarn-project/sequencer-client/src/block_builder/light.test.ts @@ -366,44 +366,8 @@ describe('LightBlockBuilder', () => { blobsHash, }); - // TODO(Miranda): the wasm simulator can't run block root due to the bignum-based blob lib (stack too deep). - // For this test only I'm building outputs in ts. For other tests, I force the simulator to use native ACVM (not wasm). - // const result = await simulator.getBlockRootRollupProof(inputs); - - const newArchiveSnapshot = await getTreeSnapshot(MerkleTreeId.ARCHIVE, fork); - const newBlockHash = await fork.getLeafValue( - MerkleTreeId.ARCHIVE, - BigInt(newArchiveSnapshot.nextAvailableLeafIndex - 1), - ); - const fees = [ - new FeeRecipient( - rollupLeft.baseOrMergeRollupPublicInputs.constants.globalVariables.coinbase, - rollupLeft.baseOrMergeRollupPublicInputs.accumulatedFees.add( - rollupRight.baseOrMergeRollupPublicInputs.accumulatedFees, - ), - ), - ]; - - const blobPublicInputs = [BlockBlobPublicInputs.fromBlobs(blobs)]; - const outputs = new BlockRootOrBlockMergePublicInputs( - inputs.startArchiveSnapshot, - newArchiveSnapshot, - previousBlockHash, - newBlockHash!, - rollupLeft.baseOrMergeRollupPublicInputs.constants.globalVariables, - rollupLeft.baseOrMergeRollupPublicInputs.constants.globalVariables, - sha256ToField([ - rollupLeft.baseOrMergeRollupPublicInputs.outHash, - rollupRight.baseOrMergeRollupPublicInputs.outHash, - ]), - padArrayEnd(fees, new FeeRecipient(EthAddress.ZERO, Fr.ZERO), AZTEC_MAX_EPOCH_DURATION), - rollupLeft.baseOrMergeRollupPublicInputs.constants.vkTreeRoot, - rollupLeft.baseOrMergeRollupPublicInputs.constants.protocolContractTreeRoot, - inputs.proverId, - padArrayEnd(blobPublicInputs, BlockBlobPublicInputs.empty(), AZTEC_MAX_EPOCH_DURATION), - ); - - return outputs; + const result = await simulator.getBlockRootRollupProof(inputs); + return result.inputs; }; function getVkMembershipWitness(vk: VerificationKeyAsFields) { diff --git a/yarn-project/simulator/src/providers/acvm_wasm.ts b/yarn-project/simulator/src/providers/acvm_wasm.ts index 102da71a40a..ffbfed5fc58 100644 --- a/yarn-project/simulator/src/providers/acvm_wasm.ts +++ b/yarn-project/simulator/src/providers/acvm_wasm.ts @@ -17,7 +17,7 @@ export class WASMSimulator implements SimulationProvider { const _witnessMap = await executeCircuit( decodedBytecode, input, - foreignCallHandler, // handle calls to debug_log + foreignCallHandler, // handle calls to debug_log and evaluate_blobs mock ); return _witnessMap; From 624c36d6153f71fa5982faa72ce568e7ae4be862 Mon Sep 17 00:00:00 2001 From: MirandaWood Date: Thu, 28 Nov 2024 03:13:32 +0000 Subject: [PATCH 04/39] fix: post merge fixes, fmt, fixtures --- l1-contracts/src/core/Rollup.sol | 175 +++++------------- l1-contracts/src/core/interfaces/IRollup.sol | 5 +- l1-contracts/src/core/libraries/BlobLib.sol | 95 ++++++++++ .../src/core/libraries/ConstantsGen.sol | 7 +- .../src/core/libraries/DataStructures.sol | 14 -- l1-contracts/test/Rollup.t.sol | 80 +++++--- l1-contracts/test/fees/FeeRollup.t.sol | 39 +++- l1-contracts/test/fixtures/empty_block_1.json | 17 +- l1-contracts/test/fixtures/empty_block_2.json | 19 +- l1-contracts/test/fixtures/mixed_block_1.json | 17 +- l1-contracts/test/fixtures/mixed_block_2.json | 23 ++- l1-contracts/test/sparta/Sparta.t.sol | 3 +- .../crates/blob/src/blob.nr | 2 +- .../crates/types/src/header.nr | 2 +- .../archiver/src/archiver/archiver.test.ts | 7 +- yarn-project/circuit-types/src/tx_effect.ts | 6 +- yarn-project/circuits.js/src/constants.gen.ts | 7 +- .../composed/integration_l1_publisher.test.ts | 2 +- .../ethereum/src/deploy_l1_contracts.ts | 1 + yarn-project/ethereum/src/test/start_anvil.ts | 1 + .../src/orchestrator/orchestrator.ts | 2 +- .../src/block_builder/light.test.ts | 5 - .../src/publisher/l1-publisher.ts | 45 +++-- 23 files changed, 329 insertions(+), 245 deletions(-) create mode 100644 l1-contracts/src/core/libraries/BlobLib.sol diff --git a/l1-contracts/src/core/Rollup.sol b/l1-contracts/src/core/Rollup.sol index f2401d1aa1b..8ded88661d3 100644 --- a/l1-contracts/src/core/Rollup.sol +++ b/l1-contracts/src/core/Rollup.sol @@ -17,8 +17,8 @@ import {IVerifier} from "@aztec/core/interfaces/IVerifier.sol"; import {IInbox} from "@aztec/core/interfaces/messagebridge/IInbox.sol"; import {IOutbox} from "@aztec/core/interfaces/messagebridge/IOutbox.sol"; import {Leonidas} from "@aztec/core/Leonidas.sol"; +import {BlobLib} from "@aztec/core/libraries/BlobLib.sol"; import {Constants} from "@aztec/core/libraries/ConstantsGen.sol"; -import {Hash} from "@aztec/core/libraries/crypto/Hash.sol"; import {MerkleLib} from "@aztec/core/libraries/crypto/MerkleLib.sol"; import {SignatureLib} from "@aztec/core/libraries/crypto/SignatureLib.sol"; import {DataStructures} from "@aztec/core/libraries/DataStructures.sol"; @@ -315,8 +315,9 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { Errors.Rollup__InvalidEpoch(interimValues.startEpoch, interimValues.epochToProve) ); - bytes32[] memory publicInputs = - getEpochProofPublicInputs(_args.epochSize, _args.args, _args.fees, _args.aggregationObject); + bytes32[] memory publicInputs = getEpochProofPublicInputs( + _args.epochSize, _args.args, _args.fees, _args.blobPublicInputs, _args.aggregationObject + ); require(epochProofVerifier.verify(_args.proof, publicInputs), Errors.Rollup__InvalidProof()); @@ -548,7 +549,7 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { // Since an invalid blob hash here would fail the consensus checks of // the header, the `blobInput` is implicitly accepted by consensus as well. - (bytes32 blobsHash, bytes32 blobPublicInputsHash) = _validateBlobs(_blobInput); + (bytes32 blobsHash, bytes32 blobPublicInputsHash) = BlobLib.validateBlobs(_blobInput, checkBlob); // Decode and validate header HeaderLib.Header memory header = HeaderLib.decode(_args.header); @@ -569,27 +570,7 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { uint256 blockNumber = ++tips.pendingBlockNumber; { - FeeHeader memory parentFeeHeader = blocks[blockNumber - 1].feeHeader; - uint256 excessMana = (parentFeeHeader.excessMana + parentFeeHeader.manaUsed).clampedAdd( - -int256(FeeMath.MANA_TARGET) - ); - - blocks[blockNumber] = BlockLog({ - archive: _args.archive, - blockHash: _args.blockHash, - slotNumber: Slot.wrap(header.globalVariables.slotNumber), - feeHeader: FeeHeader({ - excessMana: excessMana, - feeAssetPriceNumerator: parentFeeHeader.feeAssetPriceNumerator.clampedAdd( - _args.oracleInput.feeAssetPriceModifier - ), - manaUsed: header.totalManaUsed, - provingCostPerManaNumerator: parentFeeHeader.provingCostPerManaNumerator.clampedAdd( - _args.oracleInput.provingCostModifier - ), - congestionCost: components.congestionCost - }) - }); + blocks[blockNumber] = _toBlockLog(_args, blockNumber, components.congestionCost); } blobPublicInputsHashes[blockNumber] = blobPublicInputsHash; @@ -709,12 +690,14 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { -int256(FeeMath.MANA_TARGET) ); - L1FeeData memory fees = getCurrentL1Fees(); - uint256 dataCost = - Math.mulDiv(3 * BLOB_GAS_PER_BLOB, fees.blobFee, FeeMath.MANA_TARGET, Math.Rounding.Ceil); + // L1FeeData memory fees = ; + uint256 dataCost = Math.mulDiv( + 3 * BLOB_GAS_PER_BLOB, getCurrentL1Fees().blobFee, FeeMath.MANA_TARGET, Math.Rounding.Ceil + ); uint256 gasUsed = FeeMath.L1_GAS_PER_BLOCK_PROPOSED + 3 * GAS_PER_BLOB_POINT_EVALUATION + FeeMath.L1_GAS_PER_EPOCH_VERIFIED / EPOCH_DURATION; - uint256 gasCost = Math.mulDiv(gasUsed, fees.baseFee, FeeMath.MANA_TARGET, Math.Rounding.Ceil); + uint256 gasCost = + Math.mulDiv(gasUsed, getCurrentL1Fees().baseFee, FeeMath.MANA_TARGET, Math.Rounding.Ceil); uint256 provingCost = FeeMath.provingCostPerMana( blocks[tips.pendingBlockNumber].feeHeader.provingCostPerManaNumerator ); @@ -790,8 +773,7 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { bytes32 expectedEndArchive = blocks[endBlockNumber].archive; require( - expectedEndArchive == _args[1], - Errors.Rollup__InvalidArchive(expectedEndArchive, _args[1]) + expectedEndArchive == _args[1], Errors.Rollup__InvalidArchive(expectedEndArchive, _args[1]) ); bytes32 expectedPreviousBlockHash = blocks[previousBlockNumber].blockHash; @@ -883,10 +865,9 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { uint8 blobsInBlock = uint8(_blobPublicInputs[blobOffset++]); // asserting here to avoid looping twice in one fn { - // Blob public inputs are 112 bytes long - see _validateBlobs() for explanation - bytes32 calcBlobPublicInputsHash = sha256( - abi.encodePacked(_blobPublicInputs[blobOffset:blobOffset + 112 * blobsInBlock]) - ); + // Blob public inputs are 112 bytes long - see validateBlobs() for explanation + bytes32 calcBlobPublicInputsHash = + sha256(abi.encodePacked(_blobPublicInputs[blobOffset:blobOffset + 112 * blobsInBlock])); require( calcBlobPublicInputsHash == blobPublicInputsHashes[previousBlockNumber + i + 1], Errors.Rollup__InvalidBlobPublicInputsHash( @@ -897,21 +878,18 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { for (uint256 j = 0; j < Constants.BLOBS_PER_BLOCK; j++) { if (j < blobsInBlock) { // z - publicInputs[offset++] = - bytes32(_blobPublicInputs[blobOffset:blobOffset += 32]); + publicInputs[offset++] = bytes32(_blobPublicInputs[blobOffset:blobOffset += 32]); // y (publicInputs[offset++], publicInputs[offset++], publicInputs[offset++]) = - _bytes32ToBigNum(bytes32(_blobPublicInputs[blobOffset:blobOffset += 32])); + BlobLib.bytes32ToBigNum(bytes32(_blobPublicInputs[blobOffset:blobOffset += 32])); // To fit into 2 fields, the commitment is split into 31 and 17 byte numbers // TODO: The below left pads, possibly inefficiently // c[0] - publicInputs[offset++] = bytes32( - uint256(uint248(bytes31(_blobPublicInputs[blobOffset:blobOffset += 31]))) - ); + publicInputs[offset++] = + bytes32(uint256(uint248(bytes31(_blobPublicInputs[blobOffset:blobOffset += 31])))); // c[1] - publicInputs[offset++] = bytes32( - uint256(uint136(bytes17(_blobPublicInputs[blobOffset:blobOffset += 17]))) - ); + publicInputs[offset++] = + bytes32(uint256(uint136(bytes17(_blobPublicInputs[blobOffset:blobOffset += 17])))); } else { offset += Constants.BLOB_PUBLIC_INPUTS; } @@ -1120,7 +1098,9 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { ) internal view { uint256 pendingBlockNumber = canPruneAtTime(_currentTime) ? tips.provenBlockNumber : tips.pendingBlockNumber; - _validateHeaderForSubmissionBase(_header, _currentTime, _manaBaseFee, _blobsHash, pendingBlockNumber, _flags); + _validateHeaderForSubmissionBase( + _header, _currentTime, _manaBaseFee, _blobsHash, pendingBlockNumber, _flags + ); _validateHeaderForSubmissionSequencerSelection( Slot.wrap(_header.globalVariables.slotNumber), _signatures, _digest, _currentTime, _flags ); @@ -1250,91 +1230,32 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { } } - /** - * @notice Validate a blob. - * Input bytes: - * input[:32] - versioned_hash - * input[32:64] - z - * input[64:96] - y - * input[96:144] - commitment C - * input[144:192] - proof (a commitment to the quotient polynomial q(X)) - * - This can be relaxed to happen at the time of `submitProof` instead - * @notice Apparently there is no guarantee that the blobs will be processed in the order sent - * so the use of blobhash(_blobNumber) may fail in production - * @param _blobInput - The above bytes to verify a blob - */ - function _validateBlob(bytes calldata _blobInput, uint256 _blobNumber) + // Helper to avoid stack too deep + function _toBlockLog(ProposeArgs calldata _args, uint256 _blockNumber, uint256 _congestionCost) internal view - returns (bytes32 blobHash) + returns (BlockLog memory) { - if (!checkBlob) { - return bytes32(_blobInput[0:32]); - } - assembly { - blobHash := blobhash(_blobNumber) - } - require(blobHash == bytes32(_blobInput[0:32]), Errors.Rollup__InvalidBlobHash(blobHash)); - - // Staticcall the point eval precompile https://eips.ethereum.org/EIPS/eip-4844#point-evaluation-precompile : - (bool success,) = address(0x0a).staticcall(_blobInput); - require(success, Errors.Rollup__InvalidBlobProof(blobHash)); - } - - /** - * @notice Validate an L2 block's blobs and return the hashed blobHashes and public inputs. - * Input bytes: - * input[:1] - num blobs in block - * input[1:] - 192 * num blobs of the above _blobInput - * @param _blobsInput - The above bytes to verify a blob - */ - function _validateBlobs(bytes calldata _blobsInput) - internal - view - returns (bytes32 blobsHash, bytes32 blobPublicInputsHash) - { - // We cannot input the incorrect number of blobs below, as the blobsHash - // and epoch proof verification will fail. - uint8 numBlobs = uint8(_blobsInput[0]); - bytes32[] memory blobHashes = new bytes32[](numBlobs); - bytes memory blobPublicInputs; - for (uint256 i = 0; i < numBlobs; i++) { - // Add 1 for the numBlobs prefix - uint256 blobInputStart = i * 192 + 1; - // Since an invalid blob hash here would fail the consensus checks of - // the header, the `blobInput` is implicitly accepted by consensus as well. - blobHashes[i] = _validateBlob(_blobsInput[blobInputStart:blobInputStart + 192], i); - // We want to extract the 112 bytes we use for public inputs: - // * input[32:64] - z - // * input[64:96] - y - // * input[96:144] - commitment C - // Out of 192 bytes per blob. - blobPublicInputs = - abi.encodePacked(blobPublicInputs, _blobsInput[blobInputStart + 32:blobInputStart + 144]); - } - // Return the hash of all z, y, and Cs, so we can use them in proof verification later - blobPublicInputsHash = sha256(blobPublicInputs); - // Hash the EVM blob hashes for the block header - blobsHash = Hash.sha256ToField(abi.encodePacked(blobHashes)); - } - - /** - * @notice Converts a BLS12 field element from bytes32 to a nr BigNum type - * The nr bignum type for BLS12 fields is encoded as 3 nr fields - see blob_public_inputs.ts: - * firstLimb = last 15 bytes; - * secondLimb = bytes 2 -> 17; - * thirdLimb = first 2 bytes; - * Used when verifying epoch proofs to gather public inputs. - * @param _input - The field in bytes32 - */ - function _bytes32ToBigNum(bytes32 _input) - internal - pure - returns (bytes32 firstLimb, bytes32 secondLimb, bytes32 thirdLimb) - { - firstLimb = bytes32(uint256(uint120(bytes15(_input << 136)))); - secondLimb = bytes32(uint256(uint120(bytes15(_input << 16)))); - thirdLimb = bytes32(uint256(uint16(bytes2(_input)))); + FeeHeader memory parentFeeHeader = blocks[_blockNumber - 1].feeHeader; + uint256 excessMana = (parentFeeHeader.excessMana + parentFeeHeader.manaUsed).clampedAdd( + -int256(FeeMath.MANA_TARGET) + ); + return BlockLog({ + archive: _args.archive, + blockHash: _args.blockHash, + slotNumber: Slot.wrap(uint256(bytes32(_args.header[0x0194:0x01b4]))), + feeHeader: FeeHeader({ + excessMana: excessMana, + feeAssetPriceNumerator: parentFeeHeader.feeAssetPriceNumerator.clampedAdd( + _args.oracleInput.feeAssetPriceModifier + ), + manaUsed: uint256(bytes32(_args.header[0x0268:0x0288])), + provingCostPerManaNumerator: parentFeeHeader.provingCostPerManaNumerator.clampedAdd( + _args.oracleInput.provingCostModifier + ), + congestionCost: _congestionCost + }) + }); } function _fakeBlockNumberAsProven(uint256 _blockNumber) private { diff --git a/l1-contracts/src/core/interfaces/IRollup.sol b/l1-contracts/src/core/interfaces/IRollup.sol index f02d8317539..e790eafb77c 100644 --- a/l1-contracts/src/core/interfaces/IRollup.sol +++ b/l1-contracts/src/core/interfaces/IRollup.sol @@ -140,7 +140,10 @@ interface IRollup { ) external view; function getEpochForBlock(uint256 _blockNumber) external view returns (Epoch); function getEpochProofPublicInputs( - DataStructures.SubmitProofArgs calldata _submitArgs, + uint256 _epochSize, + bytes32[7] calldata _args, + bytes32[] calldata _fees, + bytes calldata _blobPublicInputs, bytes calldata _aggregationObject ) external view returns (bytes32[] memory); } diff --git a/l1-contracts/src/core/libraries/BlobLib.sol b/l1-contracts/src/core/libraries/BlobLib.sol new file mode 100644 index 00000000000..7d6c27b543c --- /dev/null +++ b/l1-contracts/src/core/libraries/BlobLib.sol @@ -0,0 +1,95 @@ +// SPDX-License-Identifier: Apache-2.0 +// Copyright 2024 Aztec Labs. +pragma solidity >=0.8.27; + +import {Hash} from "@aztec/core/libraries/crypto/Hash.sol"; +import {Errors} from "@aztec/core/libraries/Errors.sol"; + +library BlobLib { + /** + * @notice Validate a blob. + * Input bytes: + * input[:32] - versioned_hash + * input[32:64] - z + * input[64:96] - y + * input[96:144] - commitment C + * input[144:192] - proof (a commitment to the quotient polynomial q(X)) + * - This can be relaxed to happen at the time of `submitProof` instead + * @notice Apparently there is no guarantee that the blobs will be processed in the order sent + * so the use of blobhash(_blobNumber) may fail in production + * @param _blobInput - The above bytes to verify a blob + */ + function validateBlob(bytes calldata _blobInput, uint256 _blobNumber, bool _checkBlob) + internal + view + returns (bytes32 blobHash) + { + if (!_checkBlob) { + return bytes32(_blobInput[0:32]); + } + assembly { + blobHash := blobhash(_blobNumber) + } + require(blobHash == bytes32(_blobInput[0:32]), Errors.Rollup__InvalidBlobHash(blobHash)); + + // Staticcall the point eval precompile https://eips.ethereum.org/EIPS/eip-4844#point-evaluation-precompile : + (bool success,) = address(0x0a).staticcall(_blobInput); + require(success, Errors.Rollup__InvalidBlobProof(blobHash)); + } + + /** + * @notice Validate an L2 block's blobs and return the hashed blobHashes and public inputs. + * Input bytes: + * input[:1] - num blobs in block + * input[1:] - 192 * num blobs of the above _blobInput + * @param _blobsInput - The above bytes to verify a blob + */ + function validateBlobs(bytes calldata _blobsInput, bool _checkBlob) + internal + view + returns (bytes32 blobsHash, bytes32 blobPublicInputsHash) + { + // We cannot input the incorrect number of blobs below, as the blobsHash + // and epoch proof verification will fail. + uint8 numBlobs = uint8(_blobsInput[0]); + bytes32[] memory blobHashes = new bytes32[](numBlobs); + bytes memory blobPublicInputs; + for (uint256 i = 0; i < numBlobs; i++) { + // Add 1 for the numBlobs prefix + uint256 blobInputStart = i * 192 + 1; + // Since an invalid blob hash here would fail the consensus checks of + // the header, the `blobInput` is implicitly accepted by consensus as well. + blobHashes[i] = validateBlob(_blobsInput[blobInputStart:blobInputStart + 192], i, _checkBlob); + // We want to extract the 112 bytes we use for public inputs: + // * input[32:64] - z + // * input[64:96] - y + // * input[96:144] - commitment C + // Out of 192 bytes per blob. + blobPublicInputs = + abi.encodePacked(blobPublicInputs, _blobsInput[blobInputStart + 32:blobInputStart + 144]); + } + // Return the hash of all z, y, and Cs, so we can use them in proof verification later + blobPublicInputsHash = sha256(blobPublicInputs); + // Hash the EVM blob hashes for the block header + blobsHash = Hash.sha256ToField(abi.encodePacked(blobHashes)); + } + + /** + * @notice Converts a BLS12 field element from bytes32 to a nr BigNum type + * The nr bignum type for BLS12 fields is encoded as 3 nr fields - see blob_public_inputs.ts: + * firstLimb = last 15 bytes; + * secondLimb = bytes 2 -> 17; + * thirdLimb = first 2 bytes; + * Used when verifying epoch proofs to gather public inputs. + * @param _input - The field in bytes32 + */ + function bytes32ToBigNum(bytes32 _input) + internal + pure + returns (bytes32 firstLimb, bytes32 secondLimb, bytes32 thirdLimb) + { + firstLimb = bytes32(uint256(uint120(bytes15(_input << 136)))); + secondLimb = bytes32(uint256(uint120(bytes15(_input << 16)))); + thirdLimb = bytes32(uint256(uint16(bytes2(_input)))); + } +} diff --git a/l1-contracts/src/core/libraries/ConstantsGen.sol b/l1-contracts/src/core/libraries/ConstantsGen.sol index 08612f1165d..13e1f35656f 100644 --- a/l1-contracts/src/core/libraries/ConstantsGen.sol +++ b/l1-contracts/src/core/libraries/ConstantsGen.sol @@ -207,6 +207,7 @@ library Constants { uint256 internal constant TOTAL_FEES_LENGTH = 1; uint256 internal constant TOTAL_MANA_USED_LENGTH = 1; uint256 internal constant HEADER_LENGTH = 25; + uint256 internal constant HEADER_LENGTH_BYTES = 648; uint256 internal constant PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 491; uint256 internal constant PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 867; uint256 internal constant PRIVATE_CONTEXT_INPUTS_LENGTH = 38; @@ -226,9 +227,9 @@ library Constants { uint256 internal constant PRIVATE_TO_PUBLIC_KERNEL_CIRCUIT_PUBLIC_INPUTS_LENGTH = 1141; uint256 internal constant KERNEL_CIRCUIT_PUBLIC_INPUTS_LENGTH = 606; uint256 internal constant CONSTANT_ROLLUP_DATA_LENGTH = 13; - uint256 internal constant BASE_OR_MERGE_PUBLIC_INPUTS_LENGTH = 31; - uint256 internal constant BLOCK_ROOT_OR_BLOCK_MERGE_PUBLIC_INPUTS_LENGTH = 90; - uint256 internal constant ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH = 76; + uint256 internal constant BASE_OR_MERGE_PUBLIC_INPUTS_LENGTH = 52; + uint256 internal constant BLOCK_ROOT_OR_BLOCK_MERGE_PUBLIC_INPUTS_LENGTH = 666; + uint256 internal constant ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH = 652; uint256 internal constant GET_NOTES_ORACLE_RETURN_LENGTH = 674; uint256 internal constant NOTE_HASHES_NUM_BYTES_PER_BASE_ROLLUP = 2048; uint256 internal constant NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP = 2048; diff --git a/l1-contracts/src/core/libraries/DataStructures.sol b/l1-contracts/src/core/libraries/DataStructures.sol index 61d9edff8ed..61accf40655 100644 --- a/l1-contracts/src/core/libraries/DataStructures.sol +++ b/l1-contracts/src/core/libraries/DataStructures.sol @@ -92,18 +92,4 @@ library DataStructures { address bondProvider; address proposerClaimant; } - - /** - * @notice Struct for submitting the Epoch Proof - * @param epochSize - The size of the epoch (to be promoted to a constant) - * @param args - Array of public inputs to the proof (previousArchive, endArchive, previousBlockHash, endBlockHash, endTimestamp, outHash, proverId) - * @param fees - Array of recipient-value pairs with fees to be distributed for the epoch - * @param blobPublicInputs- The blob PIs for the proof - */ - struct SubmitProofArgs { - uint256 epochSize; - bytes32[7] args; - bytes32[] fees; - bytes blobPublicInputs; - } } diff --git a/l1-contracts/test/Rollup.t.sol b/l1-contracts/test/Rollup.t.sol index f499379b168..5c15f590bf1 100644 --- a/l1-contracts/test/Rollup.t.sol +++ b/l1-contracts/test/Rollup.t.sol @@ -289,7 +289,7 @@ contract RollupTest is DecoderBase, TimeFns { archive: data.archive, blockHash: data.blockHash, oracleInput: OracleInput(0, 0), - txHashes: txHashes + txHashes: new bytes32[](0) }); rollup.propose(args, signatures, data.body, data.blobInputs); @@ -462,6 +462,8 @@ contract RollupTest is DecoderBase, TimeFns { // We jump to the time of the block. (unless it is in the past) vm.warp(max(block.timestamp, data.decodedHeader.globalVariables.timestamp)); + header = _updateHeaderBaseFee(header); + skipBlobCheck(address(rollup)); ProposeArgs memory args = ProposeArgs({ header: header, @@ -472,7 +474,7 @@ contract RollupTest is DecoderBase, TimeFns { }); rollup.propose(args, signatures, body, data.blobInputs); - BlockLog memory blockLog = rollup.blocks(0); + BlockLog memory blockLog = rollup.getBlock(0); _submitEpochProof( rollup, 1, @@ -522,6 +524,7 @@ contract RollupTest is DecoderBase, TimeFns { header: header, archive: data.archive, blockHash: data.blockHash, + oracleInput: OracleInput(0, 0), txHashes: new bytes32[](0) }); vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__InvalidBlobHash.selector, blobHashes[0])); @@ -549,6 +552,7 @@ contract RollupTest is DecoderBase, TimeFns { header: header, archive: data.archive, blockHash: data.blockHash, + oracleInput: OracleInput(0, 0), txHashes: new bytes32[](0) }); vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__InvalidBlobProof.selector, blobHashes[0])); @@ -860,6 +864,8 @@ contract RollupTest is DecoderBase, TimeFns { bytes memory aggregationObject = ""; bytes memory proof = ""; + bytes memory blobPublicInputs = this.getBlobPublicInputs(data.blobInputs); + vm.expectRevert( abi.encodeWithSelector(Errors.Rollup__InvalidEpoch.selector, Epoch.wrap(0), Epoch.wrap(1)) ); @@ -869,6 +875,7 @@ contract RollupTest is DecoderBase, TimeFns { epochSize: 2, args: args, fees: fees, + blobPublicInputs: blobPublicInputs, aggregationObject: aggregationObject, proof: proof }) @@ -974,8 +981,13 @@ contract RollupTest is DecoderBase, TimeFns { } skipBlobCheck(address(rollup)); vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__InvalidBlockNumber.selector, 1, 0x420)); - ProposeArgs memory args = - ProposeArgs({header: header, archive: archive, blockHash: data.blockHash, oracleInput: OracleInput(0, 0), txHashes: txHashes}); + ProposeArgs memory args = ProposeArgs({ + header: header, + archive: archive, + blockHash: data.blockHash, + oracleInput: OracleInput(0, 0), + txHashes: txHashes + }); rollup.propose(args, signatures, body, data.blobInputs); } @@ -991,8 +1003,13 @@ contract RollupTest is DecoderBase, TimeFns { } skipBlobCheck(address(rollup)); vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__InvalidChainId.selector, 31337, 0x420)); - ProposeArgs memory args = - ProposeArgs({header: header, archive: archive, blockHash: data.blockHash, oracleInput: OracleInput(0, 0), txHashes: txHashes}); + ProposeArgs memory args = ProposeArgs({ + header: header, + archive: archive, + blockHash: data.blockHash, + oracleInput: OracleInput(0, 0), + txHashes: txHashes + }); rollup.propose(args, signatures, body, data.blobInputs); } @@ -1008,8 +1025,13 @@ contract RollupTest is DecoderBase, TimeFns { } skipBlobCheck(address(rollup)); vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__InvalidVersion.selector, 1, 0x420)); - ProposeArgs memory args = - ProposeArgs({header: header, archive: archive, blockHash: data.blockHash, oracleInput: OracleInput(0, 0), txHashes: txHashes}); + ProposeArgs memory args = ProposeArgs({ + header: header, + archive: archive, + blockHash: data.blockHash, + oracleInput: OracleInput(0, 0), + txHashes: txHashes + }); rollup.propose(args, signatures, body, data.blobInputs); } @@ -1030,8 +1052,13 @@ contract RollupTest is DecoderBase, TimeFns { } skipBlobCheck(address(rollup)); vm.expectRevert(abi.encodeWithSelector(Errors.Rollup__InvalidTimestamp.selector, realTs, badTs)); - ProposeArgs memory args = - ProposeArgs({header: header, archive: archive, blockHash: data.blockHash, oracleInput: OracleInput(0, 0), txHashes: txHashes}); + ProposeArgs memory args = ProposeArgs({ + header: header, + archive: archive, + blockHash: data.blockHash, + oracleInput: OracleInput(0, 0), + txHashes: txHashes + }); rollup.propose(args, signatures, body, new bytes(144)); } @@ -1092,7 +1119,14 @@ contract RollupTest is DecoderBase, TimeFns { abi.encodeWithSelector(Errors.Rollup__InvalidArchive.selector, data.archive, 0xdeadbeef) ); _submitEpochProof( - rollup, 1, blockLog.archive, wrongArchive, blockLog.blockHash, data.blockHash, bytes32(0), new bytes(112) + rollup, + 1, + blockLog.archive, + wrongArchive, + blockLog.blockHash, + data.blockHash, + bytes32(0), + new bytes(112) ); } @@ -1109,7 +1143,14 @@ contract RollupTest is DecoderBase, TimeFns { ) ); _submitEpochProof( - rollup, 1, blockLog.archive, data.archive, blockLog.blockHash, wrongBlockHash, bytes32(0), new bytes(112) + rollup, + 1, + blockLog.archive, + data.archive, + blockLog.blockHash, + wrongBlockHash, + bytes32(0), + new bytes(112) ); } @@ -1121,7 +1162,7 @@ contract RollupTest is DecoderBase, TimeFns { // mess with the data blobPublicInputs[100] = 0x01; - (bytes32 preArchive, bytes32 preBlockHash,) = rollup.blocks(0); + BlockLog memory blockLog = rollup.getBlock(0); bytes32 actualBlobPublicInputsHash = rollup.blobPublicInputsHashes(data.decodedHeader.globalVariables.blockNumber); bytes32 wrongBlobPublicInputsHash = this.getBlobPublicInputsHash(blobPublicInputs); @@ -1135,9 +1176,9 @@ contract RollupTest is DecoderBase, TimeFns { _submitEpochProof( rollup, 1, - preArchive, + blockLog.archive, data.archive, - preBlockHash, + blockLog.blockHash, data.blockHash, bytes32(0), blobPublicInputs @@ -1319,17 +1360,14 @@ contract RollupTest is DecoderBase, TimeFns { fees[0] = bytes32(uint256(uint160(_feeRecipient))); fees[1] = bytes32(_feeAmount); - bytes memory aggregationObject = ""; - bytes memory proof = ""; - _rollup.submitEpochRootProof( SubmitEpochRootProofArgs({ epochSize: _epochSize, args: args, fees: fees, - blobPublicInputs: _blobPublicInputs, - aggregationObject: aggregationObject, - proof: proof + blobPublicInputs: _blobPublicInputs, + aggregationObject: "", + proof: "" }) ); } diff --git a/l1-contracts/test/fees/FeeRollup.t.sol b/l1-contracts/test/fees/FeeRollup.t.sol index 512d9fd2f8c..f311e9d19ff 100644 --- a/l1-contracts/test/fees/FeeRollup.t.sol +++ b/l1-contracts/test/fees/FeeRollup.t.sol @@ -32,7 +32,6 @@ import {MerkleTestUtil} from "../merkle/TestUtil.sol"; import {TestERC20} from "@aztec/mock/TestERC20.sol"; import {TestConstants} from "../harnesses/TestConstants.sol"; import {RewardDistributor} from "@aztec/governance/RewardDistributor.sol"; -import {TxsDecoderHelper} from "../decoders/helpers/TxsDecoderHelper.sol"; import {IERC20Errors} from "@oz/interfaces/draft-IERC6093.sol"; import {IFeeJuicePortal} from "@aztec/core/interfaces/IFeeJuicePortal.sol"; import {IRewardDistributor} from "@aztec/governance/interfaces/IRewardDistributor.sol"; @@ -88,6 +87,7 @@ contract FeeRollupTest is FeeModelTestPoints, DecoderBase { bytes32 blockHash; bytes header; bytes body; + bytes blobInputs; bytes32[] txHashes; SignatureLib.Signature[] signatures; } @@ -207,6 +207,7 @@ contract FeeRollupTest is FeeModelTestPoints, DecoderBase { blockHash: blockHash, header: header, body: body, + blobInputs: full.block.blobInputs, txHashes: txHashes, signatures: signatures }); @@ -235,6 +236,7 @@ contract FeeRollupTest is FeeModelTestPoints, DecoderBase { Block memory b = getBlock(); + skipBlobCheck(address(rollup)); rollup.propose( ProposeArgs({ header: b.header, @@ -247,7 +249,8 @@ contract FeeRollupTest is FeeModelTestPoints, DecoderBase { txHashes: b.txHashes }), b.signatures, - b.body + b.body, + b.blobInputs ); BlockLog memory blockLog = rollup.getBlock(nextSlot.unwrap()); @@ -332,11 +335,21 @@ contract FeeRollupTest is FeeModelTestPoints, DecoderBase { bytes32(0), bytes32(0) ]; + + bytes memory blobPublicInputs; + for (uint256 j = 0; j < epochSize; j++) { + // For each block in the epoch, add its blob public inputs + // Since we are reusing the same block, they are the same + blobPublicInputs = + abi.encodePacked(blobPublicInputs, this.getBlobPublicInputs(full.block.blobInputs)); + } + rollup.submitEpochRootProof( SubmitEpochRootProofArgs({ epochSize: epochSize, args: args, fees: fees, + blobPublicInputs: blobPublicInputs, aggregationObject: aggregationObject, proof: proof }) @@ -377,4 +390,26 @@ contract FeeRollupTest is FeeModelTestPoints, DecoderBase { }); assertEq(a, bModel); } + + // This is duplicated from Rollup.t.sol because we need to call it as this.getBlobPublicInputs + // so it accepts the input as calldata + function getBlobPublicInputs(bytes calldata _blobsInput) + public + pure + returns (bytes memory blobPublicInputs) + { + uint8 numBlobs = uint8(_blobsInput[0]); + blobPublicInputs = abi.encodePacked(numBlobs, blobPublicInputs); + for (uint256 i = 0; i < numBlobs; i++) { + // Add 1 for the numBlobs prefix + uint256 blobInputStart = i * 192 + 1; + // We want to extract the bytes we use for public inputs: + // * input[32:64] - z + // * input[64:96] - y + // * input[96:144] - commitment C + // Out of 192 bytes per blob. + blobPublicInputs = + abi.encodePacked(blobPublicInputs, _blobsInput[blobInputStart + 32:blobInputStart + 144]); + } + } } diff --git a/l1-contracts/test/fixtures/empty_block_1.json b/l1-contracts/test/fixtures/empty_block_1.json index efa66c509b5..bdb1e2ec474 100644 --- a/l1-contracts/test/fixtures/empty_block_1.json +++ b/l1-contracts/test/fixtures/empty_block_1.json @@ -8,8 +8,8 @@ "l2ToL1Messages": [] }, "block": { - "archive": "0x14cc4063ccae0d809992631edee86e43cd48aa4465598e54e05f4c91fc7cf9dc", - "blockHash": "0x02baa47f911948eb68e332e631af8c30d801187c66b6d48f1432c7cb98fd755c", + "archive": "0x03045313de9acdebd8022d977fb2adb7392647594a313779e85b5d4769f197dd", + "blockHash": "0x173c64317cbbac27e05d358b9fc86c19338cf4fbf48255265b0dc988f8e56e29", "body": "0x00000000", "decodedHeader": { "contentCommitment": { @@ -22,13 +22,13 @@ "blockNumber": 1, "slotNumber": "0x0000000000000000000000000000000000000000000000000000000000000012", "chainId": 31337, - "timestamp": 1732579818, + "timestamp": 1732759415, "version": 1, - "coinbase": "0xbebcbac2f24abc01241a668cca41d0659589499e", - "feeRecipient": "0x1fb24139a0110fb00ebdcf0b6667bdd95c82ede876a1d34fb8cef074eae1db2c", + "coinbase": "0x94eaefaa0efecae32a0511a2ed0fb15b84f4de3d", + "feeRecipient": "0x0a437721cc9f47cd1fad72dea39afdb76894539e33a1e1dce690ac676d81c2fa", "gasFees": { "feePerDaGas": 0, - "feePerL2Gas": 54153599320 + "feePerL2Gas": 54153598980 } }, "totalFees": "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -58,8 +58,9 @@ } } }, - "header": "0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae000000010000000000000000000000000000000000000000000000000000000000000002002dcd61493c9a7f3ce4605573ee657e6ced4a3dd10bfb216f44a796b3d585c900089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6000000101fd848aa69e1633722fe249a5b7f53b094f1c9cef9f5c694b073fd1cc5850dfb000000800c499b373a1f0fe1b510a63563546d2d39e206895056a5af0143c5f30d6390730000010023c08a6b1297210c5e24c76b9a936250a1ce2721576c26ea797c7ec35f9e46a9000000800000000000000000000000000000000000000000000000000000000000007a6900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000674511eabebcbac2f24abc01241a668cca41d0659589499e1fb24139a0110fb00ebdcf0b6667bdd95c82ede876a1d34fb8cef074eae1db2c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c9bce595800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "publicInputsHash": "0x00f5efb7d5e53918275f835f7103b62acc1d37c11bbf27e0482680f107fc01d4", + "header": "0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae000000010000000000000000000000000000000000000000000000000000000000000002001cedbd7ea5309ef9d1d159209835409bf41b6b1802597a52fa70cc82e934d900089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6000000101fd848aa69e1633722fe249a5b7f53b094f1c9cef9f5c694b073fd1cc5850dfb000000800c499b373a1f0fe1b510a63563546d2d39e206895056a5af0143c5f30d6390730000010023c08a6b1297210c5e24c76b9a936250a1ce2721576c26ea797c7ec35f9e46a9000000800000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000006747cf7794eaefaa0efecae32a0511a2ed0fb15b84f4de3d0a437721cc9f47cd1fad72dea39afdb76894539e33a1e1dce690ac676d81c2fa00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c9bce580400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "publicInputsHash": "0x008269e39b10daf0851f6ac81df8476f8d60b53fb8a0002de0182c7e11545e5b", + "blobInputs": "0x01010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c4440140ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb0000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "numTxs": 0 } } \ No newline at end of file diff --git a/l1-contracts/test/fixtures/empty_block_2.json b/l1-contracts/test/fixtures/empty_block_2.json index d113b0cb959..bad027f0d1b 100644 --- a/l1-contracts/test/fixtures/empty_block_2.json +++ b/l1-contracts/test/fixtures/empty_block_2.json @@ -8,8 +8,8 @@ "l2ToL1Messages": [] }, "block": { - "archive": "0x1ced42b04845f5bc2a98f47f54a9aac0e7cd55642cbba1da95401a8dd9b1e357", - "blockHash": "0x12caff598a6843ec10beac259597243dd5b069866f03bf67a8e4669e2a56335a", + "archive": "0x2454519574be7eba54e456596b3bb51d478360ad71813550e30c0e0f2d427052", + "blockHash": "0x04246a2ff3b6e6c2347af3e3846bcfaaad8486301b2a89dbbe8e1654bc066144", "body": "0x00000000", "decodedHeader": { "contentCommitment": { @@ -22,20 +22,20 @@ "blockNumber": 2, "slotNumber": "0x0000000000000000000000000000000000000000000000000000000000000013", "chainId": 31337, - "timestamp": 1732579842, + "timestamp": 1732759439, "version": 1, - "coinbase": "0xbebcbac2f24abc01241a668cca41d0659589499e", - "feeRecipient": "0x1fb24139a0110fb00ebdcf0b6667bdd95c82ede876a1d34fb8cef074eae1db2c", + "coinbase": "0x94eaefaa0efecae32a0511a2ed0fb15b84f4de3d", + "feeRecipient": "0x0a437721cc9f47cd1fad72dea39afdb76894539e33a1e1dce690ac676d81c2fa", "gasFees": { "feePerDaGas": 0, - "feePerL2Gas": 54153599320 + "feePerL2Gas": 54153598980 } }, "totalFees": "0x0000000000000000000000000000000000000000000000000000000000000000", "totalManaUsed": "0x0000000000000000000000000000000000000000000000000000000000000000", "lastArchive": { "nextAvailableLeafIndex": 2, - "root": "0x14cc4063ccae0d809992631edee86e43cd48aa4465598e54e05f4c91fc7cf9dc" + "root": "0x03045313de9acdebd8022d977fb2adb7392647594a313779e85b5d4769f197dd" }, "stateReference": { "l1ToL2MessageTree": { @@ -58,8 +58,9 @@ } } }, - "header": "0x14cc4063ccae0d809992631edee86e43cd48aa4465598e54e05f4c91fc7cf9dc000000020000000000000000000000000000000000000000000000000000000000000002002dcd61493c9a7f3ce4605573ee657e6ced4a3dd10bfb216f44a796b3d585c900089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6000000201fd848aa69e1633722fe249a5b7f53b094f1c9cef9f5c694b073fd1cc5850dfb000001000c499b373a1f0fe1b510a63563546d2d39e206895056a5af0143c5f30d6390730000018023c08a6b1297210c5e24c76b9a936250a1ce2721576c26ea797c7ec35f9e46a9000000800000000000000000000000000000000000000000000000000000000000007a690000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000130000000000000000000000000000000000000000000000000000000067451202bebcbac2f24abc01241a668cca41d0659589499e1fb24139a0110fb00ebdcf0b6667bdd95c82ede876a1d34fb8cef074eae1db2c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c9bce595800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "publicInputsHash": "0x004cab0bf8cace3c6a6b2506f12a17d5f1ccaf63db14d8f6e67b3fea6d34fc3d", + "header": "0x03045313de9acdebd8022d977fb2adb7392647594a313779e85b5d4769f197dd000000020000000000000000000000000000000000000000000000000000000000000002001cedbd7ea5309ef9d1d159209835409bf41b6b1802597a52fa70cc82e934d900089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6000000201fd848aa69e1633722fe249a5b7f53b094f1c9cef9f5c694b073fd1cc5850dfb000001000c499b373a1f0fe1b510a63563546d2d39e206895056a5af0143c5f30d6390730000018023c08a6b1297210c5e24c76b9a936250a1ce2721576c26ea797c7ec35f9e46a9000000800000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000013000000000000000000000000000000000000000000000000000000006747cf8f94eaefaa0efecae32a0511a2ed0fb15b84f4de3d0a437721cc9f47cd1fad72dea39afdb76894539e33a1e1dce690ac676d81c2fa00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c9bce580400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "publicInputsHash": "0x003095d5b1a2dba66ec9f4acc30b371bd7e0a10d4d7b6d47fde328df74650050", + "blobInputs": "0x01010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c4440140ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb0000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "numTxs": 0 } } \ No newline at end of file diff --git a/l1-contracts/test/fixtures/mixed_block_1.json b/l1-contracts/test/fixtures/mixed_block_1.json index 697ba51883a..6f50a91f606 100644 --- a/l1-contracts/test/fixtures/mixed_block_1.json +++ b/l1-contracts/test/fixtures/mixed_block_1.json @@ -58,8 +58,8 @@ ] }, "block": { - "archive": "0x0dd5f1f4c97e09c3d85323d27343341b245c49c5e7032c43c8b7c70d8b79629a", - "blockHash": "0x1b22c2fdad7b5b96c8f0d57c83a52cad8b6f03f012d53be9e4987b92f978b29d", + "archive": "0x2be14b8c75041b535481e613d5c4912e4cbea72a73ead54b45e797431fc50437", + "blockHash": "0x2de7f313f1a89fbcd8ac154a9db0274a477bc37a093c991e6cd6c43ea74675f7", "body": "0x00000004000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000041000000000000000000000000000000000000000000000000000000000000004100100000000000000000000000000000000000000000000000000000000000410020000000000000000000000000000000000000000000000000000000000041003000000000000000000000000000000000000000000000000000000000004100400000000000000000000000000000000000000000000000000000000000410050000000000000000000000000000000000000000000000000000000000041006000000000000000000000000000000000000000000000000000000000004100700000000000000000000000000000000000000000000000000000000000410080000000000000000000000000000000000000000000000000000000000041009000000000000000000000000000000000000000000000000000000000004100a000000000000000000000000000000000000000000000000000000000004100b000000000000000000000000000000000000000000000000000000000004100c000000000000000000000000000000000000000000000000000000000004100d000000000000000000000000000000000000000000000000000000000004100e000000000000000000000000000000000000000000000000000000000004100f0000000000000000000000000000000000000000000000000000000000041010000000000000000000000000000000000000000000000000000000000004101100000000000000000000000000000000000000000000000000000000000410120000000000000000000000000000000000000000000000000000000000041013000000000000000000000000000000000000000000000000000000000004101400000000000000000000000000000000000000000000000000000000000410150000000000000000000000000000000000000000000000000000000000041016000000000000000000000000000000000000000000000000000000000004101700000000000000000000000000000000000000000000000000000000000410180000000000000000000000000000000000000000000000000000000000041019000000000000000000000000000000000000000000000000000000000004101a000000000000000000000000000000000000000000000000000000000004101b000000000000000000000000000000000000000000000000000000000004101c000000000000000000000000000000000000000000000000000000000004101d000000000000000000000000000000000000000000000000000000000004101e000000000000000000000000000000000000000000000000000000000004101f0000000000000000000000000000000000000000000000000000000000041020000000000000000000000000000000000000000000000000000000000004102100000000000000000000000000000000000000000000000000000000000410220000000000000000000000000000000000000000000000000000000000041023000000000000000000000000000000000000000000000000000000000004102400000000000000000000000000000000000000000000000000000000000410250000000000000000000000000000000000000000000000000000000000041026000000000000000000000000000000000000000000000000000000000004102700000000000000000000000000000000000000000000000000000000000410280000000000000000000000000000000000000000000000000000000000041029000000000000000000000000000000000000000000000000000000000004102a000000000000000000000000000000000000000000000000000000000004102b000000000000000000000000000000000000000000000000000000000004102c000000000000000000000000000000000000000000000000000000000004102d000000000000000000000000000000000000000000000000000000000004102e000000000000000000000000000000000000000000000000000000000004102f0000000000000000000000000000000000000000000000000000000000041030000000000000000000000000000000000000000000000000000000000004103100000000000000000000000000000000000000000000000000000000000410320000000000000000000000000000000000000000000000000000000000041033000000000000000000000000000000000000000000000000000000000004103400000000000000000000000000000000000000000000000000000000000410350000000000000000000000000000000000000000000000000000000000041036000000000000000000000000000000000000000000000000000000000004103700000000000000000000000000000000000000000000000000000000000410380000000000000000000000000000000000000000000000000000000000041039000000000000000000000000000000000000000000000000000000000004103a000000000000000000000000000000000000000000000000000000000004103b000000000000000000000000000000000000000000000000000000000004103c000000000000000000000000000000000000000000000000000000000004103d000000000000000000000000000000000000000000000000000000000004103e000000000000000000000000000000000000000000000000000000000004103f3f0000000000000000000000000000000000000000000000000000000000041100000000000000000000000000000000000000000000000000000000000004110100000000000000000000000000000000000000000000000000000000000411020000000000000000000000000000000000000000000000000000000000041103000000000000000000000000000000000000000000000000000000000004110400000000000000000000000000000000000000000000000000000000000411050000000000000000000000000000000000000000000000000000000000041106000000000000000000000000000000000000000000000000000000000004110700000000000000000000000000000000000000000000000000000000000411080000000000000000000000000000000000000000000000000000000000041109000000000000000000000000000000000000000000000000000000000004110a000000000000000000000000000000000000000000000000000000000004110b000000000000000000000000000000000000000000000000000000000004110c000000000000000000000000000000000000000000000000000000000004110d000000000000000000000000000000000000000000000000000000000004110e000000000000000000000000000000000000000000000000000000000004110f0000000000000000000000000000000000000000000000000000000000041110000000000000000000000000000000000000000000000000000000000004111100000000000000000000000000000000000000000000000000000000000411120000000000000000000000000000000000000000000000000000000000041113000000000000000000000000000000000000000000000000000000000004111400000000000000000000000000000000000000000000000000000000000411150000000000000000000000000000000000000000000000000000000000041116000000000000000000000000000000000000000000000000000000000004111700000000000000000000000000000000000000000000000000000000000411180000000000000000000000000000000000000000000000000000000000041119000000000000000000000000000000000000000000000000000000000004111a000000000000000000000000000000000000000000000000000000000004111b000000000000000000000000000000000000000000000000000000000004111c000000000000000000000000000000000000000000000000000000000004111d000000000000000000000000000000000000000000000000000000000004111e000000000000000000000000000000000000000000000000000000000004111f0000000000000000000000000000000000000000000000000000000000041120000000000000000000000000000000000000000000000000000000000004112100000000000000000000000000000000000000000000000000000000000411220000000000000000000000000000000000000000000000000000000000041123000000000000000000000000000000000000000000000000000000000004112400000000000000000000000000000000000000000000000000000000000411250000000000000000000000000000000000000000000000000000000000041126000000000000000000000000000000000000000000000000000000000004112700000000000000000000000000000000000000000000000000000000000411280000000000000000000000000000000000000000000000000000000000041129000000000000000000000000000000000000000000000000000000000004112a000000000000000000000000000000000000000000000000000000000004112b000000000000000000000000000000000000000000000000000000000004112c000000000000000000000000000000000000000000000000000000000004112d000000000000000000000000000000000000000000000000000000000004112e000000000000000000000000000000000000000000000000000000000004112f0000000000000000000000000000000000000000000000000000000000041130000000000000000000000000000000000000000000000000000000000004113100000000000000000000000000000000000000000000000000000000000411320000000000000000000000000000000000000000000000000000000000041133000000000000000000000000000000000000000000000000000000000004113400000000000000000000000000000000000000000000000000000000000411350000000000000000000000000000000000000000000000000000000000041136000000000000000000000000000000000000000000000000000000000004113700000000000000000000000000000000000000000000000000000000000411380000000000000000000000000000000000000000000000000000000000041139000000000000000000000000000000000000000000000000000000000004113a000000000000000000000000000000000000000000000000000000000004113b000000000000000000000000000000000000000000000000000000000004113c000000000000000000000000000000000000000000000000000000000004113d000000000000000000000000000000000000000000000000000000000004113e080097a6ec570e9b8e257647c9c74c5ad3edc57ca5ef6ae44d80b3c30d1d99b9b300ce48ec41d1edde0066fab553a456ae2f380d14fa8f956af1fb0217513a598900619ff12eaf97f63aa2a2311de3b6571a7b880a5247cb33b6a74787bf3f9bd5007854a2fad4e1801c6404394bf3d37ab08c135ea38a1974242e39a21273685f000f55796e72957a819e68a22e8602d73c3ba3718a5a4bd92b80b0aa444b182a00788b6e9874fb040ee679a7fae257190099a605229b948334e54a57739535d4004f1658ee3c1a91627e5d72f5a731f0796299df82ab41e72c88eee0c82fa85e003ee802add96628c693ed71afa9908138ba5a6fbf0a5f29a9c74e4e42aba6713f0000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000000000000004200a0000000000000000000000000000000000000000000000000000000000042001000000000000000000000000000000000000000000000000000000000004200b0000000000000000000000000000000000000000000000000000000000042002000000000000000000000000000000000000000000000000000000000004200c0000000000000000000000000000000000000000000000000000000000042003000000000000000000000000000000000000000000000000000000000004200d0000000000000000000000000000000000000000000000000000000000042004000000000000000000000000000000000000000000000000000000000004200e0000000000000000000000000000000000000000000000000000000000042005000000000000000000000000000000000000000000000000000000000004200f00000000000000000000000000000000000000000000000000000000000420060000000000000000000000000000000000000000000000000000000000042010000000000000000000000000000000000000000000000000000000000004200700000000000000000000000000000000000000000000000000000000000420110000000000000000000000000000000000000000000000000000000000042008000000000000000000000000000000000000000000000000000000000004201200000000000000000000000000000000000000000000000000000000000420090000000000000000000000000000000000000000000000000000000000042013000000000000000000000000000000000000000000000000000000000004200a0000000000000000000000000000000000000000000000000000000000042014000000000000000000000000000000000000000000000000000000000004200b0000000000000000000000000000000000000000000000000000000000042015000000000000000000000000000000000000000000000000000000000004200c0000000000000000000000000000000000000000000000000000000000042016000000000000000000000000000000000000000000000000000000000004200d0000000000000000000000000000000000000000000000000000000000042017000000000000000000000000000000000000000000000000000000000004200e0000000000000000000000000000000000000000000000000000000000042018000000000000000000000000000000000000000000000000000000000004200f00000000000000000000000000000000000000000000000000000000000420190000000000000000000000000000000000000000000000000000000000042010000000000000000000000000000000000000000000000000000000000004201a0000000000000000000000000000000000000000000000000000000000042011000000000000000000000000000000000000000000000000000000000004201b0000000000000000000000000000000000000000000000000000000000042012000000000000000000000000000000000000000000000000000000000004201c0000000000000000000000000000000000000000000000000000000000042013000000000000000000000000000000000000000000000000000000000004201d0000000000000000000000000000000000000000000000000000000000042014000000000000000000000000000000000000000000000000000000000004201e0000000000000000000000000000000000000000000000000000000000042015000000000000000000000000000000000000000000000000000000000004201f00000000000000000000000000000000000000000000000000000000000420160000000000000000000000000000000000000000000000000000000000042020000000000000000000000000000000000000000000000000000000000004201700000000000000000000000000000000000000000000000000000000000420210000000000000000000000000000000000000000000000000000000000042018000000000000000000000000000000000000000000000000000000000004202200000000000000000000000000000000000000000000000000000000000420190000000000000000000000000000000000000000000000000000000000042023000000000000000000000000000000000000000000000000000000000004201a0000000000000000000000000000000000000000000000000000000000042024000000000000000000000000000000000000000000000000000000000004201b0000000000000000000000000000000000000000000000000000000000042025000000000000000000000000000000000000000000000000000000000004201c0000000000000000000000000000000000000000000000000000000000042026000000000000000000000000000000000000000000000000000000000004201d0000000000000000000000000000000000000000000000000000000000042027000000000000000000000000000000000000000000000000000000000004201e0000000000000000000000000000000000000000000000000000000000042028000000000000000000000000000000000000000000000000000000000004201f00000000000000000000000000000000000000000000000000000000000420290000000000000000000000000000000000000000000000000000000000042020000000000000000000000000000000000000000000000000000000000004202a0000000000000000000000000000000000000000000000000000000000042021000000000000000000000000000000000000000000000000000000000004202b0000000000000000000000000000000000000000000000000000000000042022000000000000000000000000000000000000000000000000000000000004202c0000000000000000000000000000000000000000000000000000000000042023000000000000000000000000000000000000000000000000000000000004202d0000000000000000000000000000000000000000000000000000000000042024000000000000000000000000000000000000000000000000000000000004202e0000000000000000000000000000000000000000000000000000000000042025000000000000000000000000000000000000000000000000000000000004202f00000000000000000000000000000000000000000000000000000000000420260000000000000000000000000000000000000000000000000000000000042030000000000000000000000000000000000000000000000000000000000004202700000000000000000000000000000000000000000000000000000000000420310000000000000000000000000000000000000000000000000000000000042028000000000000000000000000000000000000000000000000000000000004203200000000000000000000000000000000000000000000000000000000000420290000000000000000000000000000000000000000000000000000000000042033000000000000000000000000000000000000000000000000000000000004202a0000000000000000000000000000000000000000000000000000000000042034000000000000000000000000000000000000000000000000000000000004202b0000000000000000000000000000000000000000000000000000000000042035000000000000000000000000000000000000000000000000000000000004202c0000000000000000000000000000000000000000000000000000000000042036000000000000000000000000000000000000000000000000000000000004202d0000000000000000000000000000000000000000000000000000000000042037000000000000000000000000000000000000000000000000000000000004202e0000000000000000000000000000000000000000000000000000000000042038000000000000000000000000000000000000000000000000000000000004202f00000000000000000000000000000000000000000000000000000000000420390000000000000000000000000000000000000000000000000000000000042030000000000000000000000000000000000000000000000000000000000004203a0000000000000000000000000000000000000000000000000000000000042031000000000000000000000000000000000000000000000000000000000004203b0000000000000000000000000000000000000000000000000000000000042032000000000000000000000000000000000000000000000000000000000004203c0000000000000000000000000000000000000000000000000000000000042033000000000000000000000000000000000000000000000000000000000004203d0000000000000000000000000000000000000000000000000000000000042034000000000000000000000000000000000000000000000000000000000004203e0000000000000000000000000000000000000000000000000000000000042035000000000000000000000000000000000000000000000000000000000004203f00000000000000000000000000000000000000000000000000000000000420360000000000000000000000000000000000000000000000000000000000042040000000000000000000000000000000000000000000000000000000000004203700000000000000000000000000000000000000000000000000000000000420410000000000000000000000000000000000000000000000000000000000042038000000000000000000000000000000000000000000000000000000000004204200000000000000000000000000000000000000000000000000000000000420390000000000000000000000000000000000000000000000000000000000042043000000000000000000000000000000000000000000000000000000000004203a0000000000000000000000000000000000000000000000000000000000042044000000000000000000000000000000000000000000000000000000000004203b0000000000000000000000000000000000000000000000000000000000042045000000000000000000000000000000000000000000000000000000000004203c0000000000000000000000000000000000000000000000000000000000042046000000000000000000000000000000000000000000000000000000000004203d0000000000000000000000000000000000000000000000000000000000042047000000000000000000000000000000000000000000000000000000000004203e0000000000000000000000000000000000000000000000000000000000042048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000081000000000000000000000000000000000000000000000000000000000000008100100000000000000000000000000000000000000000000000000000000000810020000000000000000000000000000000000000000000000000000000000081003000000000000000000000000000000000000000000000000000000000008100400000000000000000000000000000000000000000000000000000000000810050000000000000000000000000000000000000000000000000000000000081006000000000000000000000000000000000000000000000000000000000008100700000000000000000000000000000000000000000000000000000000000810080000000000000000000000000000000000000000000000000000000000081009000000000000000000000000000000000000000000000000000000000008100a000000000000000000000000000000000000000000000000000000000008100b000000000000000000000000000000000000000000000000000000000008100c000000000000000000000000000000000000000000000000000000000008100d000000000000000000000000000000000000000000000000000000000008100e000000000000000000000000000000000000000000000000000000000008100f0000000000000000000000000000000000000000000000000000000000081010000000000000000000000000000000000000000000000000000000000008101100000000000000000000000000000000000000000000000000000000000810120000000000000000000000000000000000000000000000000000000000081013000000000000000000000000000000000000000000000000000000000008101400000000000000000000000000000000000000000000000000000000000810150000000000000000000000000000000000000000000000000000000000081016000000000000000000000000000000000000000000000000000000000008101700000000000000000000000000000000000000000000000000000000000810180000000000000000000000000000000000000000000000000000000000081019000000000000000000000000000000000000000000000000000000000008101a000000000000000000000000000000000000000000000000000000000008101b000000000000000000000000000000000000000000000000000000000008101c000000000000000000000000000000000000000000000000000000000008101d000000000000000000000000000000000000000000000000000000000008101e000000000000000000000000000000000000000000000000000000000008101f0000000000000000000000000000000000000000000000000000000000081020000000000000000000000000000000000000000000000000000000000008102100000000000000000000000000000000000000000000000000000000000810220000000000000000000000000000000000000000000000000000000000081023000000000000000000000000000000000000000000000000000000000008102400000000000000000000000000000000000000000000000000000000000810250000000000000000000000000000000000000000000000000000000000081026000000000000000000000000000000000000000000000000000000000008102700000000000000000000000000000000000000000000000000000000000810280000000000000000000000000000000000000000000000000000000000081029000000000000000000000000000000000000000000000000000000000008102a000000000000000000000000000000000000000000000000000000000008102b000000000000000000000000000000000000000000000000000000000008102c000000000000000000000000000000000000000000000000000000000008102d000000000000000000000000000000000000000000000000000000000008102e000000000000000000000000000000000000000000000000000000000008102f0000000000000000000000000000000000000000000000000000000000081030000000000000000000000000000000000000000000000000000000000008103100000000000000000000000000000000000000000000000000000000000810320000000000000000000000000000000000000000000000000000000000081033000000000000000000000000000000000000000000000000000000000008103400000000000000000000000000000000000000000000000000000000000810350000000000000000000000000000000000000000000000000000000000081036000000000000000000000000000000000000000000000000000000000008103700000000000000000000000000000000000000000000000000000000000810380000000000000000000000000000000000000000000000000000000000081039000000000000000000000000000000000000000000000000000000000008103a000000000000000000000000000000000000000000000000000000000008103b000000000000000000000000000000000000000000000000000000000008103c000000000000000000000000000000000000000000000000000000000008103d000000000000000000000000000000000000000000000000000000000008103e000000000000000000000000000000000000000000000000000000000008103f3f0000000000000000000000000000000000000000000000000000000000081100000000000000000000000000000000000000000000000000000000000008110100000000000000000000000000000000000000000000000000000000000811020000000000000000000000000000000000000000000000000000000000081103000000000000000000000000000000000000000000000000000000000008110400000000000000000000000000000000000000000000000000000000000811050000000000000000000000000000000000000000000000000000000000081106000000000000000000000000000000000000000000000000000000000008110700000000000000000000000000000000000000000000000000000000000811080000000000000000000000000000000000000000000000000000000000081109000000000000000000000000000000000000000000000000000000000008110a000000000000000000000000000000000000000000000000000000000008110b000000000000000000000000000000000000000000000000000000000008110c000000000000000000000000000000000000000000000000000000000008110d000000000000000000000000000000000000000000000000000000000008110e000000000000000000000000000000000000000000000000000000000008110f0000000000000000000000000000000000000000000000000000000000081110000000000000000000000000000000000000000000000000000000000008111100000000000000000000000000000000000000000000000000000000000811120000000000000000000000000000000000000000000000000000000000081113000000000000000000000000000000000000000000000000000000000008111400000000000000000000000000000000000000000000000000000000000811150000000000000000000000000000000000000000000000000000000000081116000000000000000000000000000000000000000000000000000000000008111700000000000000000000000000000000000000000000000000000000000811180000000000000000000000000000000000000000000000000000000000081119000000000000000000000000000000000000000000000000000000000008111a000000000000000000000000000000000000000000000000000000000008111b000000000000000000000000000000000000000000000000000000000008111c000000000000000000000000000000000000000000000000000000000008111d000000000000000000000000000000000000000000000000000000000008111e000000000000000000000000000000000000000000000000000000000008111f0000000000000000000000000000000000000000000000000000000000081120000000000000000000000000000000000000000000000000000000000008112100000000000000000000000000000000000000000000000000000000000811220000000000000000000000000000000000000000000000000000000000081123000000000000000000000000000000000000000000000000000000000008112400000000000000000000000000000000000000000000000000000000000811250000000000000000000000000000000000000000000000000000000000081126000000000000000000000000000000000000000000000000000000000008112700000000000000000000000000000000000000000000000000000000000811280000000000000000000000000000000000000000000000000000000000081129000000000000000000000000000000000000000000000000000000000008112a000000000000000000000000000000000000000000000000000000000008112b000000000000000000000000000000000000000000000000000000000008112c000000000000000000000000000000000000000000000000000000000008112d000000000000000000000000000000000000000000000000000000000008112e000000000000000000000000000000000000000000000000000000000008112f0000000000000000000000000000000000000000000000000000000000081130000000000000000000000000000000000000000000000000000000000008113100000000000000000000000000000000000000000000000000000000000811320000000000000000000000000000000000000000000000000000000000081133000000000000000000000000000000000000000000000000000000000008113400000000000000000000000000000000000000000000000000000000000811350000000000000000000000000000000000000000000000000000000000081136000000000000000000000000000000000000000000000000000000000008113700000000000000000000000000000000000000000000000000000000000811380000000000000000000000000000000000000000000000000000000000081139000000000000000000000000000000000000000000000000000000000008113a000000000000000000000000000000000000000000000000000000000008113b000000000000000000000000000000000000000000000000000000000008113c000000000000000000000000000000000000000000000000000000000008113d000000000000000000000000000000000000000000000000000000000008113e08003c0472260790b0bdfb8ae4dc4d437e7686b73643f2198970d84e1059a5f13500bfd46275a318e438726ff2765ae154b63ab8a0daebcbed668a5f58a0e63dc1007906b9418dc758c6b4f8454c69baa48b7889b6b511d707abe8e2cb8f7c397300aeb60c4d65a44f122e58bf9565dfe2024b3ae654d5cf2e47ecb035d53c927000bf82e8cda20345f37bbb1de3932172324b57f0b98be483392697b168e3bba8000fb4bbad884ef30edf68e45a6cf2733fcf50310c69d7c1432b29af2c0aa8040023e1622d27fee3b4a40ab975ae0eb2e31619ef3dc76eb858f7fddb6a056131004689cd7007daf98dd3218b839b8e6a29f957154347b391fdb376bd0b344be23f0000000000000000000000000000000000000000000000000000000000082000000000000000000000000000000000000000000000000000000000000008200a0000000000000000000000000000000000000000000000000000000000082001000000000000000000000000000000000000000000000000000000000008200b0000000000000000000000000000000000000000000000000000000000082002000000000000000000000000000000000000000000000000000000000008200c0000000000000000000000000000000000000000000000000000000000082003000000000000000000000000000000000000000000000000000000000008200d0000000000000000000000000000000000000000000000000000000000082004000000000000000000000000000000000000000000000000000000000008200e0000000000000000000000000000000000000000000000000000000000082005000000000000000000000000000000000000000000000000000000000008200f00000000000000000000000000000000000000000000000000000000000820060000000000000000000000000000000000000000000000000000000000082010000000000000000000000000000000000000000000000000000000000008200700000000000000000000000000000000000000000000000000000000000820110000000000000000000000000000000000000000000000000000000000082008000000000000000000000000000000000000000000000000000000000008201200000000000000000000000000000000000000000000000000000000000820090000000000000000000000000000000000000000000000000000000000082013000000000000000000000000000000000000000000000000000000000008200a0000000000000000000000000000000000000000000000000000000000082014000000000000000000000000000000000000000000000000000000000008200b0000000000000000000000000000000000000000000000000000000000082015000000000000000000000000000000000000000000000000000000000008200c0000000000000000000000000000000000000000000000000000000000082016000000000000000000000000000000000000000000000000000000000008200d0000000000000000000000000000000000000000000000000000000000082017000000000000000000000000000000000000000000000000000000000008200e0000000000000000000000000000000000000000000000000000000000082018000000000000000000000000000000000000000000000000000000000008200f00000000000000000000000000000000000000000000000000000000000820190000000000000000000000000000000000000000000000000000000000082010000000000000000000000000000000000000000000000000000000000008201a0000000000000000000000000000000000000000000000000000000000082011000000000000000000000000000000000000000000000000000000000008201b0000000000000000000000000000000000000000000000000000000000082012000000000000000000000000000000000000000000000000000000000008201c0000000000000000000000000000000000000000000000000000000000082013000000000000000000000000000000000000000000000000000000000008201d0000000000000000000000000000000000000000000000000000000000082014000000000000000000000000000000000000000000000000000000000008201e0000000000000000000000000000000000000000000000000000000000082015000000000000000000000000000000000000000000000000000000000008201f00000000000000000000000000000000000000000000000000000000000820160000000000000000000000000000000000000000000000000000000000082020000000000000000000000000000000000000000000000000000000000008201700000000000000000000000000000000000000000000000000000000000820210000000000000000000000000000000000000000000000000000000000082018000000000000000000000000000000000000000000000000000000000008202200000000000000000000000000000000000000000000000000000000000820190000000000000000000000000000000000000000000000000000000000082023000000000000000000000000000000000000000000000000000000000008201a0000000000000000000000000000000000000000000000000000000000082024000000000000000000000000000000000000000000000000000000000008201b0000000000000000000000000000000000000000000000000000000000082025000000000000000000000000000000000000000000000000000000000008201c0000000000000000000000000000000000000000000000000000000000082026000000000000000000000000000000000000000000000000000000000008201d0000000000000000000000000000000000000000000000000000000000082027000000000000000000000000000000000000000000000000000000000008201e0000000000000000000000000000000000000000000000000000000000082028000000000000000000000000000000000000000000000000000000000008201f00000000000000000000000000000000000000000000000000000000000820290000000000000000000000000000000000000000000000000000000000082020000000000000000000000000000000000000000000000000000000000008202a0000000000000000000000000000000000000000000000000000000000082021000000000000000000000000000000000000000000000000000000000008202b0000000000000000000000000000000000000000000000000000000000082022000000000000000000000000000000000000000000000000000000000008202c0000000000000000000000000000000000000000000000000000000000082023000000000000000000000000000000000000000000000000000000000008202d0000000000000000000000000000000000000000000000000000000000082024000000000000000000000000000000000000000000000000000000000008202e0000000000000000000000000000000000000000000000000000000000082025000000000000000000000000000000000000000000000000000000000008202f00000000000000000000000000000000000000000000000000000000000820260000000000000000000000000000000000000000000000000000000000082030000000000000000000000000000000000000000000000000000000000008202700000000000000000000000000000000000000000000000000000000000820310000000000000000000000000000000000000000000000000000000000082028000000000000000000000000000000000000000000000000000000000008203200000000000000000000000000000000000000000000000000000000000820290000000000000000000000000000000000000000000000000000000000082033000000000000000000000000000000000000000000000000000000000008202a0000000000000000000000000000000000000000000000000000000000082034000000000000000000000000000000000000000000000000000000000008202b0000000000000000000000000000000000000000000000000000000000082035000000000000000000000000000000000000000000000000000000000008202c0000000000000000000000000000000000000000000000000000000000082036000000000000000000000000000000000000000000000000000000000008202d0000000000000000000000000000000000000000000000000000000000082037000000000000000000000000000000000000000000000000000000000008202e0000000000000000000000000000000000000000000000000000000000082038000000000000000000000000000000000000000000000000000000000008202f00000000000000000000000000000000000000000000000000000000000820390000000000000000000000000000000000000000000000000000000000082030000000000000000000000000000000000000000000000000000000000008203a0000000000000000000000000000000000000000000000000000000000082031000000000000000000000000000000000000000000000000000000000008203b0000000000000000000000000000000000000000000000000000000000082032000000000000000000000000000000000000000000000000000000000008203c0000000000000000000000000000000000000000000000000000000000082033000000000000000000000000000000000000000000000000000000000008203d0000000000000000000000000000000000000000000000000000000000082034000000000000000000000000000000000000000000000000000000000008203e0000000000000000000000000000000000000000000000000000000000082035000000000000000000000000000000000000000000000000000000000008203f00000000000000000000000000000000000000000000000000000000000820360000000000000000000000000000000000000000000000000000000000082040000000000000000000000000000000000000000000000000000000000008203700000000000000000000000000000000000000000000000000000000000820410000000000000000000000000000000000000000000000000000000000082038000000000000000000000000000000000000000000000000000000000008204200000000000000000000000000000000000000000000000000000000000820390000000000000000000000000000000000000000000000000000000000082043000000000000000000000000000000000000000000000000000000000008203a0000000000000000000000000000000000000000000000000000000000082044000000000000000000000000000000000000000000000000000000000008203b0000000000000000000000000000000000000000000000000000000000082045000000000000000000000000000000000000000000000000000000000008203c0000000000000000000000000000000000000000000000000000000000082046000000000000000000000000000000000000000000000000000000000008203d0000000000000000000000000000000000000000000000000000000000082047000000000000000000000000000000000000000000000000000000000008203e00000000000000000000000000000000000000000000000000000000000820480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000c100000000000000000000000000000000000000000000000000000000000000c100100000000000000000000000000000000000000000000000000000000000c100200000000000000000000000000000000000000000000000000000000000c100300000000000000000000000000000000000000000000000000000000000c100400000000000000000000000000000000000000000000000000000000000c100500000000000000000000000000000000000000000000000000000000000c100600000000000000000000000000000000000000000000000000000000000c100700000000000000000000000000000000000000000000000000000000000c100800000000000000000000000000000000000000000000000000000000000c100900000000000000000000000000000000000000000000000000000000000c100a00000000000000000000000000000000000000000000000000000000000c100b00000000000000000000000000000000000000000000000000000000000c100c00000000000000000000000000000000000000000000000000000000000c100d00000000000000000000000000000000000000000000000000000000000c100e00000000000000000000000000000000000000000000000000000000000c100f00000000000000000000000000000000000000000000000000000000000c101000000000000000000000000000000000000000000000000000000000000c101100000000000000000000000000000000000000000000000000000000000c101200000000000000000000000000000000000000000000000000000000000c101300000000000000000000000000000000000000000000000000000000000c101400000000000000000000000000000000000000000000000000000000000c101500000000000000000000000000000000000000000000000000000000000c101600000000000000000000000000000000000000000000000000000000000c101700000000000000000000000000000000000000000000000000000000000c101800000000000000000000000000000000000000000000000000000000000c101900000000000000000000000000000000000000000000000000000000000c101a00000000000000000000000000000000000000000000000000000000000c101b00000000000000000000000000000000000000000000000000000000000c101c00000000000000000000000000000000000000000000000000000000000c101d00000000000000000000000000000000000000000000000000000000000c101e00000000000000000000000000000000000000000000000000000000000c101f00000000000000000000000000000000000000000000000000000000000c102000000000000000000000000000000000000000000000000000000000000c102100000000000000000000000000000000000000000000000000000000000c102200000000000000000000000000000000000000000000000000000000000c102300000000000000000000000000000000000000000000000000000000000c102400000000000000000000000000000000000000000000000000000000000c102500000000000000000000000000000000000000000000000000000000000c102600000000000000000000000000000000000000000000000000000000000c102700000000000000000000000000000000000000000000000000000000000c102800000000000000000000000000000000000000000000000000000000000c102900000000000000000000000000000000000000000000000000000000000c102a00000000000000000000000000000000000000000000000000000000000c102b00000000000000000000000000000000000000000000000000000000000c102c00000000000000000000000000000000000000000000000000000000000c102d00000000000000000000000000000000000000000000000000000000000c102e00000000000000000000000000000000000000000000000000000000000c102f00000000000000000000000000000000000000000000000000000000000c103000000000000000000000000000000000000000000000000000000000000c103100000000000000000000000000000000000000000000000000000000000c103200000000000000000000000000000000000000000000000000000000000c103300000000000000000000000000000000000000000000000000000000000c103400000000000000000000000000000000000000000000000000000000000c103500000000000000000000000000000000000000000000000000000000000c103600000000000000000000000000000000000000000000000000000000000c103700000000000000000000000000000000000000000000000000000000000c103800000000000000000000000000000000000000000000000000000000000c103900000000000000000000000000000000000000000000000000000000000c103a00000000000000000000000000000000000000000000000000000000000c103b00000000000000000000000000000000000000000000000000000000000c103c00000000000000000000000000000000000000000000000000000000000c103d00000000000000000000000000000000000000000000000000000000000c103e00000000000000000000000000000000000000000000000000000000000c103f3f00000000000000000000000000000000000000000000000000000000000c110000000000000000000000000000000000000000000000000000000000000c110100000000000000000000000000000000000000000000000000000000000c110200000000000000000000000000000000000000000000000000000000000c110300000000000000000000000000000000000000000000000000000000000c110400000000000000000000000000000000000000000000000000000000000c110500000000000000000000000000000000000000000000000000000000000c110600000000000000000000000000000000000000000000000000000000000c110700000000000000000000000000000000000000000000000000000000000c110800000000000000000000000000000000000000000000000000000000000c110900000000000000000000000000000000000000000000000000000000000c110a00000000000000000000000000000000000000000000000000000000000c110b00000000000000000000000000000000000000000000000000000000000c110c00000000000000000000000000000000000000000000000000000000000c110d00000000000000000000000000000000000000000000000000000000000c110e00000000000000000000000000000000000000000000000000000000000c110f00000000000000000000000000000000000000000000000000000000000c111000000000000000000000000000000000000000000000000000000000000c111100000000000000000000000000000000000000000000000000000000000c111200000000000000000000000000000000000000000000000000000000000c111300000000000000000000000000000000000000000000000000000000000c111400000000000000000000000000000000000000000000000000000000000c111500000000000000000000000000000000000000000000000000000000000c111600000000000000000000000000000000000000000000000000000000000c111700000000000000000000000000000000000000000000000000000000000c111800000000000000000000000000000000000000000000000000000000000c111900000000000000000000000000000000000000000000000000000000000c111a00000000000000000000000000000000000000000000000000000000000c111b00000000000000000000000000000000000000000000000000000000000c111c00000000000000000000000000000000000000000000000000000000000c111d00000000000000000000000000000000000000000000000000000000000c111e00000000000000000000000000000000000000000000000000000000000c111f00000000000000000000000000000000000000000000000000000000000c112000000000000000000000000000000000000000000000000000000000000c112100000000000000000000000000000000000000000000000000000000000c112200000000000000000000000000000000000000000000000000000000000c112300000000000000000000000000000000000000000000000000000000000c112400000000000000000000000000000000000000000000000000000000000c112500000000000000000000000000000000000000000000000000000000000c112600000000000000000000000000000000000000000000000000000000000c112700000000000000000000000000000000000000000000000000000000000c112800000000000000000000000000000000000000000000000000000000000c112900000000000000000000000000000000000000000000000000000000000c112a00000000000000000000000000000000000000000000000000000000000c112b00000000000000000000000000000000000000000000000000000000000c112c00000000000000000000000000000000000000000000000000000000000c112d00000000000000000000000000000000000000000000000000000000000c112e00000000000000000000000000000000000000000000000000000000000c112f00000000000000000000000000000000000000000000000000000000000c113000000000000000000000000000000000000000000000000000000000000c113100000000000000000000000000000000000000000000000000000000000c113200000000000000000000000000000000000000000000000000000000000c113300000000000000000000000000000000000000000000000000000000000c113400000000000000000000000000000000000000000000000000000000000c113500000000000000000000000000000000000000000000000000000000000c113600000000000000000000000000000000000000000000000000000000000c113700000000000000000000000000000000000000000000000000000000000c113800000000000000000000000000000000000000000000000000000000000c113900000000000000000000000000000000000000000000000000000000000c113a00000000000000000000000000000000000000000000000000000000000c113b00000000000000000000000000000000000000000000000000000000000c113c00000000000000000000000000000000000000000000000000000000000c113d00000000000000000000000000000000000000000000000000000000000c113e0800f8029be42ec3f25204907ca981fb71e5b357093eb5db10fc01ca98a4e4154c0030e13d351a5bf1d5a040e82a163ca57017f39162693f85c571e441e36d702d00a550ae0f39f977d9473d6de1be3232fc68ed0c4a601d53542148695102cfc9005580bc65e4bff9c8fffa64db02c0fa6af14d9d26fd962f4c5904cbd3ddec2500758c4a0d43dfec788b2f580877c4f473adec8f168ea24424f2600e4eb4916f00342602bf90d10f8ca8e582a894dcc4c02bb89fe458532e0c632b53bae54b4d00ca43ab78ab834337e9964d84a0674c9adabdca140539c5a6bc96e0ba9a51f6004ffbfd91be292a7c6a0e255e50caa156ac2d628b40ad2128c4ab63a92d8a1c3f00000000000000000000000000000000000000000000000000000000000c200000000000000000000000000000000000000000000000000000000000000c200a00000000000000000000000000000000000000000000000000000000000c200100000000000000000000000000000000000000000000000000000000000c200b00000000000000000000000000000000000000000000000000000000000c200200000000000000000000000000000000000000000000000000000000000c200c00000000000000000000000000000000000000000000000000000000000c200300000000000000000000000000000000000000000000000000000000000c200d00000000000000000000000000000000000000000000000000000000000c200400000000000000000000000000000000000000000000000000000000000c200e00000000000000000000000000000000000000000000000000000000000c200500000000000000000000000000000000000000000000000000000000000c200f00000000000000000000000000000000000000000000000000000000000c200600000000000000000000000000000000000000000000000000000000000c201000000000000000000000000000000000000000000000000000000000000c200700000000000000000000000000000000000000000000000000000000000c201100000000000000000000000000000000000000000000000000000000000c200800000000000000000000000000000000000000000000000000000000000c201200000000000000000000000000000000000000000000000000000000000c200900000000000000000000000000000000000000000000000000000000000c201300000000000000000000000000000000000000000000000000000000000c200a00000000000000000000000000000000000000000000000000000000000c201400000000000000000000000000000000000000000000000000000000000c200b00000000000000000000000000000000000000000000000000000000000c201500000000000000000000000000000000000000000000000000000000000c200c00000000000000000000000000000000000000000000000000000000000c201600000000000000000000000000000000000000000000000000000000000c200d00000000000000000000000000000000000000000000000000000000000c201700000000000000000000000000000000000000000000000000000000000c200e00000000000000000000000000000000000000000000000000000000000c201800000000000000000000000000000000000000000000000000000000000c200f00000000000000000000000000000000000000000000000000000000000c201900000000000000000000000000000000000000000000000000000000000c201000000000000000000000000000000000000000000000000000000000000c201a00000000000000000000000000000000000000000000000000000000000c201100000000000000000000000000000000000000000000000000000000000c201b00000000000000000000000000000000000000000000000000000000000c201200000000000000000000000000000000000000000000000000000000000c201c00000000000000000000000000000000000000000000000000000000000c201300000000000000000000000000000000000000000000000000000000000c201d00000000000000000000000000000000000000000000000000000000000c201400000000000000000000000000000000000000000000000000000000000c201e00000000000000000000000000000000000000000000000000000000000c201500000000000000000000000000000000000000000000000000000000000c201f00000000000000000000000000000000000000000000000000000000000c201600000000000000000000000000000000000000000000000000000000000c202000000000000000000000000000000000000000000000000000000000000c201700000000000000000000000000000000000000000000000000000000000c202100000000000000000000000000000000000000000000000000000000000c201800000000000000000000000000000000000000000000000000000000000c202200000000000000000000000000000000000000000000000000000000000c201900000000000000000000000000000000000000000000000000000000000c202300000000000000000000000000000000000000000000000000000000000c201a00000000000000000000000000000000000000000000000000000000000c202400000000000000000000000000000000000000000000000000000000000c201b00000000000000000000000000000000000000000000000000000000000c202500000000000000000000000000000000000000000000000000000000000c201c00000000000000000000000000000000000000000000000000000000000c202600000000000000000000000000000000000000000000000000000000000c201d00000000000000000000000000000000000000000000000000000000000c202700000000000000000000000000000000000000000000000000000000000c201e00000000000000000000000000000000000000000000000000000000000c202800000000000000000000000000000000000000000000000000000000000c201f00000000000000000000000000000000000000000000000000000000000c202900000000000000000000000000000000000000000000000000000000000c202000000000000000000000000000000000000000000000000000000000000c202a00000000000000000000000000000000000000000000000000000000000c202100000000000000000000000000000000000000000000000000000000000c202b00000000000000000000000000000000000000000000000000000000000c202200000000000000000000000000000000000000000000000000000000000c202c00000000000000000000000000000000000000000000000000000000000c202300000000000000000000000000000000000000000000000000000000000c202d00000000000000000000000000000000000000000000000000000000000c202400000000000000000000000000000000000000000000000000000000000c202e00000000000000000000000000000000000000000000000000000000000c202500000000000000000000000000000000000000000000000000000000000c202f00000000000000000000000000000000000000000000000000000000000c202600000000000000000000000000000000000000000000000000000000000c203000000000000000000000000000000000000000000000000000000000000c202700000000000000000000000000000000000000000000000000000000000c203100000000000000000000000000000000000000000000000000000000000c202800000000000000000000000000000000000000000000000000000000000c203200000000000000000000000000000000000000000000000000000000000c202900000000000000000000000000000000000000000000000000000000000c203300000000000000000000000000000000000000000000000000000000000c202a00000000000000000000000000000000000000000000000000000000000c203400000000000000000000000000000000000000000000000000000000000c202b00000000000000000000000000000000000000000000000000000000000c203500000000000000000000000000000000000000000000000000000000000c202c00000000000000000000000000000000000000000000000000000000000c203600000000000000000000000000000000000000000000000000000000000c202d00000000000000000000000000000000000000000000000000000000000c203700000000000000000000000000000000000000000000000000000000000c202e00000000000000000000000000000000000000000000000000000000000c203800000000000000000000000000000000000000000000000000000000000c202f00000000000000000000000000000000000000000000000000000000000c203900000000000000000000000000000000000000000000000000000000000c203000000000000000000000000000000000000000000000000000000000000c203a00000000000000000000000000000000000000000000000000000000000c203100000000000000000000000000000000000000000000000000000000000c203b00000000000000000000000000000000000000000000000000000000000c203200000000000000000000000000000000000000000000000000000000000c203c00000000000000000000000000000000000000000000000000000000000c203300000000000000000000000000000000000000000000000000000000000c203d00000000000000000000000000000000000000000000000000000000000c203400000000000000000000000000000000000000000000000000000000000c203e00000000000000000000000000000000000000000000000000000000000c203500000000000000000000000000000000000000000000000000000000000c203f00000000000000000000000000000000000000000000000000000000000c203600000000000000000000000000000000000000000000000000000000000c204000000000000000000000000000000000000000000000000000000000000c203700000000000000000000000000000000000000000000000000000000000c204100000000000000000000000000000000000000000000000000000000000c203800000000000000000000000000000000000000000000000000000000000c204200000000000000000000000000000000000000000000000000000000000c203900000000000000000000000000000000000000000000000000000000000c204300000000000000000000000000000000000000000000000000000000000c203a00000000000000000000000000000000000000000000000000000000000c204400000000000000000000000000000000000000000000000000000000000c203b00000000000000000000000000000000000000000000000000000000000c204500000000000000000000000000000000000000000000000000000000000c203c00000000000000000000000000000000000000000000000000000000000c204600000000000000000000000000000000000000000000000000000000000c203d00000000000000000000000000000000000000000000000000000000000c204700000000000000000000000000000000000000000000000000000000000c203e00000000000000000000000000000000000000000000000000000000000c2048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000101000000000000000000000000000000000000000000000000000000000000010100100000000000000000000000000000000000000000000000000000000001010020000000000000000000000000000000000000000000000000000000000101003000000000000000000000000000000000000000000000000000000000010100400000000000000000000000000000000000000000000000000000000001010050000000000000000000000000000000000000000000000000000000000101006000000000000000000000000000000000000000000000000000000000010100700000000000000000000000000000000000000000000000000000000001010080000000000000000000000000000000000000000000000000000000000101009000000000000000000000000000000000000000000000000000000000010100a000000000000000000000000000000000000000000000000000000000010100b000000000000000000000000000000000000000000000000000000000010100c000000000000000000000000000000000000000000000000000000000010100d000000000000000000000000000000000000000000000000000000000010100e000000000000000000000000000000000000000000000000000000000010100f0000000000000000000000000000000000000000000000000000000000101010000000000000000000000000000000000000000000000000000000000010101100000000000000000000000000000000000000000000000000000000001010120000000000000000000000000000000000000000000000000000000000101013000000000000000000000000000000000000000000000000000000000010101400000000000000000000000000000000000000000000000000000000001010150000000000000000000000000000000000000000000000000000000000101016000000000000000000000000000000000000000000000000000000000010101700000000000000000000000000000000000000000000000000000000001010180000000000000000000000000000000000000000000000000000000000101019000000000000000000000000000000000000000000000000000000000010101a000000000000000000000000000000000000000000000000000000000010101b000000000000000000000000000000000000000000000000000000000010101c000000000000000000000000000000000000000000000000000000000010101d000000000000000000000000000000000000000000000000000000000010101e000000000000000000000000000000000000000000000000000000000010101f0000000000000000000000000000000000000000000000000000000000101020000000000000000000000000000000000000000000000000000000000010102100000000000000000000000000000000000000000000000000000000001010220000000000000000000000000000000000000000000000000000000000101023000000000000000000000000000000000000000000000000000000000010102400000000000000000000000000000000000000000000000000000000001010250000000000000000000000000000000000000000000000000000000000101026000000000000000000000000000000000000000000000000000000000010102700000000000000000000000000000000000000000000000000000000001010280000000000000000000000000000000000000000000000000000000000101029000000000000000000000000000000000000000000000000000000000010102a000000000000000000000000000000000000000000000000000000000010102b000000000000000000000000000000000000000000000000000000000010102c000000000000000000000000000000000000000000000000000000000010102d000000000000000000000000000000000000000000000000000000000010102e000000000000000000000000000000000000000000000000000000000010102f0000000000000000000000000000000000000000000000000000000000101030000000000000000000000000000000000000000000000000000000000010103100000000000000000000000000000000000000000000000000000000001010320000000000000000000000000000000000000000000000000000000000101033000000000000000000000000000000000000000000000000000000000010103400000000000000000000000000000000000000000000000000000000001010350000000000000000000000000000000000000000000000000000000000101036000000000000000000000000000000000000000000000000000000000010103700000000000000000000000000000000000000000000000000000000001010380000000000000000000000000000000000000000000000000000000000101039000000000000000000000000000000000000000000000000000000000010103a000000000000000000000000000000000000000000000000000000000010103b000000000000000000000000000000000000000000000000000000000010103c000000000000000000000000000000000000000000000000000000000010103d000000000000000000000000000000000000000000000000000000000010103e000000000000000000000000000000000000000000000000000000000010103f3f0000000000000000000000000000000000000000000000000000000000101100000000000000000000000000000000000000000000000000000000000010110100000000000000000000000000000000000000000000000000000000001011020000000000000000000000000000000000000000000000000000000000101103000000000000000000000000000000000000000000000000000000000010110400000000000000000000000000000000000000000000000000000000001011050000000000000000000000000000000000000000000000000000000000101106000000000000000000000000000000000000000000000000000000000010110700000000000000000000000000000000000000000000000000000000001011080000000000000000000000000000000000000000000000000000000000101109000000000000000000000000000000000000000000000000000000000010110a000000000000000000000000000000000000000000000000000000000010110b000000000000000000000000000000000000000000000000000000000010110c000000000000000000000000000000000000000000000000000000000010110d000000000000000000000000000000000000000000000000000000000010110e000000000000000000000000000000000000000000000000000000000010110f0000000000000000000000000000000000000000000000000000000000101110000000000000000000000000000000000000000000000000000000000010111100000000000000000000000000000000000000000000000000000000001011120000000000000000000000000000000000000000000000000000000000101113000000000000000000000000000000000000000000000000000000000010111400000000000000000000000000000000000000000000000000000000001011150000000000000000000000000000000000000000000000000000000000101116000000000000000000000000000000000000000000000000000000000010111700000000000000000000000000000000000000000000000000000000001011180000000000000000000000000000000000000000000000000000000000101119000000000000000000000000000000000000000000000000000000000010111a000000000000000000000000000000000000000000000000000000000010111b000000000000000000000000000000000000000000000000000000000010111c000000000000000000000000000000000000000000000000000000000010111d000000000000000000000000000000000000000000000000000000000010111e000000000000000000000000000000000000000000000000000000000010111f0000000000000000000000000000000000000000000000000000000000101120000000000000000000000000000000000000000000000000000000000010112100000000000000000000000000000000000000000000000000000000001011220000000000000000000000000000000000000000000000000000000000101123000000000000000000000000000000000000000000000000000000000010112400000000000000000000000000000000000000000000000000000000001011250000000000000000000000000000000000000000000000000000000000101126000000000000000000000000000000000000000000000000000000000010112700000000000000000000000000000000000000000000000000000000001011280000000000000000000000000000000000000000000000000000000000101129000000000000000000000000000000000000000000000000000000000010112a000000000000000000000000000000000000000000000000000000000010112b000000000000000000000000000000000000000000000000000000000010112c000000000000000000000000000000000000000000000000000000000010112d000000000000000000000000000000000000000000000000000000000010112e000000000000000000000000000000000000000000000000000000000010112f0000000000000000000000000000000000000000000000000000000000101130000000000000000000000000000000000000000000000000000000000010113100000000000000000000000000000000000000000000000000000000001011320000000000000000000000000000000000000000000000000000000000101133000000000000000000000000000000000000000000000000000000000010113400000000000000000000000000000000000000000000000000000000001011350000000000000000000000000000000000000000000000000000000000101136000000000000000000000000000000000000000000000000000000000010113700000000000000000000000000000000000000000000000000000000001011380000000000000000000000000000000000000000000000000000000000101139000000000000000000000000000000000000000000000000000000000010113a000000000000000000000000000000000000000000000000000000000010113b000000000000000000000000000000000000000000000000000000000010113c000000000000000000000000000000000000000000000000000000000010113d000000000000000000000000000000000000000000000000000000000010113e080099145b6c0d32753835121f8b271186d01236948a4622ce78a98347fcfc98390085277a27c6acbd5ffc4c19cd65fc30056999e9bec36998f753132db0ff8e2300f3cf77a7261759ebd5f4149f6ad56746f4499cfcd4adf27a1d373f77da64d5009bc6e0e994a23cde8c95b90c1acc1b4a480c6599d1df2c3f9f6e76f3d1aff200d7a1c4a2700dacaaf07f1f0ff33837bdbabcf0b9ace17efabe0761708c4bb900dbeb8e96d14f21e57d5786b6d6ae7e5ddb1bb35935c0fb246d4bdbca62e02c00fbf12b5e0df6223b801088798e4e04d2a92ffe9a11639b7f0ce314e3412a8000d796e0724de03b796ba77069fcd6cf921e566f3aed15eb3e77258add74e9ff3f0000000000000000000000000000000000000000000000000000000000102000000000000000000000000000000000000000000000000000000000000010200a0000000000000000000000000000000000000000000000000000000000102001000000000000000000000000000000000000000000000000000000000010200b0000000000000000000000000000000000000000000000000000000000102002000000000000000000000000000000000000000000000000000000000010200c0000000000000000000000000000000000000000000000000000000000102003000000000000000000000000000000000000000000000000000000000010200d0000000000000000000000000000000000000000000000000000000000102004000000000000000000000000000000000000000000000000000000000010200e0000000000000000000000000000000000000000000000000000000000102005000000000000000000000000000000000000000000000000000000000010200f00000000000000000000000000000000000000000000000000000000001020060000000000000000000000000000000000000000000000000000000000102010000000000000000000000000000000000000000000000000000000000010200700000000000000000000000000000000000000000000000000000000001020110000000000000000000000000000000000000000000000000000000000102008000000000000000000000000000000000000000000000000000000000010201200000000000000000000000000000000000000000000000000000000001020090000000000000000000000000000000000000000000000000000000000102013000000000000000000000000000000000000000000000000000000000010200a0000000000000000000000000000000000000000000000000000000000102014000000000000000000000000000000000000000000000000000000000010200b0000000000000000000000000000000000000000000000000000000000102015000000000000000000000000000000000000000000000000000000000010200c0000000000000000000000000000000000000000000000000000000000102016000000000000000000000000000000000000000000000000000000000010200d0000000000000000000000000000000000000000000000000000000000102017000000000000000000000000000000000000000000000000000000000010200e0000000000000000000000000000000000000000000000000000000000102018000000000000000000000000000000000000000000000000000000000010200f00000000000000000000000000000000000000000000000000000000001020190000000000000000000000000000000000000000000000000000000000102010000000000000000000000000000000000000000000000000000000000010201a0000000000000000000000000000000000000000000000000000000000102011000000000000000000000000000000000000000000000000000000000010201b0000000000000000000000000000000000000000000000000000000000102012000000000000000000000000000000000000000000000000000000000010201c0000000000000000000000000000000000000000000000000000000000102013000000000000000000000000000000000000000000000000000000000010201d0000000000000000000000000000000000000000000000000000000000102014000000000000000000000000000000000000000000000000000000000010201e0000000000000000000000000000000000000000000000000000000000102015000000000000000000000000000000000000000000000000000000000010201f00000000000000000000000000000000000000000000000000000000001020160000000000000000000000000000000000000000000000000000000000102020000000000000000000000000000000000000000000000000000000000010201700000000000000000000000000000000000000000000000000000000001020210000000000000000000000000000000000000000000000000000000000102018000000000000000000000000000000000000000000000000000000000010202200000000000000000000000000000000000000000000000000000000001020190000000000000000000000000000000000000000000000000000000000102023000000000000000000000000000000000000000000000000000000000010201a0000000000000000000000000000000000000000000000000000000000102024000000000000000000000000000000000000000000000000000000000010201b0000000000000000000000000000000000000000000000000000000000102025000000000000000000000000000000000000000000000000000000000010201c0000000000000000000000000000000000000000000000000000000000102026000000000000000000000000000000000000000000000000000000000010201d0000000000000000000000000000000000000000000000000000000000102027000000000000000000000000000000000000000000000000000000000010201e0000000000000000000000000000000000000000000000000000000000102028000000000000000000000000000000000000000000000000000000000010201f00000000000000000000000000000000000000000000000000000000001020290000000000000000000000000000000000000000000000000000000000102020000000000000000000000000000000000000000000000000000000000010202a0000000000000000000000000000000000000000000000000000000000102021000000000000000000000000000000000000000000000000000000000010202b0000000000000000000000000000000000000000000000000000000000102022000000000000000000000000000000000000000000000000000000000010202c0000000000000000000000000000000000000000000000000000000000102023000000000000000000000000000000000000000000000000000000000010202d0000000000000000000000000000000000000000000000000000000000102024000000000000000000000000000000000000000000000000000000000010202e0000000000000000000000000000000000000000000000000000000000102025000000000000000000000000000000000000000000000000000000000010202f00000000000000000000000000000000000000000000000000000000001020260000000000000000000000000000000000000000000000000000000000102030000000000000000000000000000000000000000000000000000000000010202700000000000000000000000000000000000000000000000000000000001020310000000000000000000000000000000000000000000000000000000000102028000000000000000000000000000000000000000000000000000000000010203200000000000000000000000000000000000000000000000000000000001020290000000000000000000000000000000000000000000000000000000000102033000000000000000000000000000000000000000000000000000000000010202a0000000000000000000000000000000000000000000000000000000000102034000000000000000000000000000000000000000000000000000000000010202b0000000000000000000000000000000000000000000000000000000000102035000000000000000000000000000000000000000000000000000000000010202c0000000000000000000000000000000000000000000000000000000000102036000000000000000000000000000000000000000000000000000000000010202d0000000000000000000000000000000000000000000000000000000000102037000000000000000000000000000000000000000000000000000000000010202e0000000000000000000000000000000000000000000000000000000000102038000000000000000000000000000000000000000000000000000000000010202f00000000000000000000000000000000000000000000000000000000001020390000000000000000000000000000000000000000000000000000000000102030000000000000000000000000000000000000000000000000000000000010203a0000000000000000000000000000000000000000000000000000000000102031000000000000000000000000000000000000000000000000000000000010203b0000000000000000000000000000000000000000000000000000000000102032000000000000000000000000000000000000000000000000000000000010203c0000000000000000000000000000000000000000000000000000000000102033000000000000000000000000000000000000000000000000000000000010203d0000000000000000000000000000000000000000000000000000000000102034000000000000000000000000000000000000000000000000000000000010203e0000000000000000000000000000000000000000000000000000000000102035000000000000000000000000000000000000000000000000000000000010203f00000000000000000000000000000000000000000000000000000000001020360000000000000000000000000000000000000000000000000000000000102040000000000000000000000000000000000000000000000000000000000010203700000000000000000000000000000000000000000000000000000000001020410000000000000000000000000000000000000000000000000000000000102038000000000000000000000000000000000000000000000000000000000010204200000000000000000000000000000000000000000000000000000000001020390000000000000000000000000000000000000000000000000000000000102043000000000000000000000000000000000000000000000000000000000010203a0000000000000000000000000000000000000000000000000000000000102044000000000000000000000000000000000000000000000000000000000010203b0000000000000000000000000000000000000000000000000000000000102045000000000000000000000000000000000000000000000000000000000010203c0000000000000000000000000000000000000000000000000000000000102046000000000000000000000000000000000000000000000000000000000010203d0000000000000000000000000000000000000000000000000000000000102047000000000000000000000000000000000000000000000000000000000010203e0000000000000000000000000000000000000000000000000000000000102048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "decodedHeader": { "contentCommitment": { @@ -72,13 +72,13 @@ "blockNumber": 1, "slotNumber": "0x000000000000000000000000000000000000000000000000000000000000001a", "chainId": 31337, - "timestamp": 1732579038, + "timestamp": 1732758635, "version": 1, - "coinbase": "0x7bf63a9118e60cc630c4faa654223f715d4bd20e", - "feeRecipient": "0x2f2bacf41d88061f8a9e9234dfb8f6cdf5287e15eeeb4a6af5b0691d846bad5d", + "coinbase": "0x965a60c81ca829bc7cae5dc7c6b11b0af4c80008", + "feeRecipient": "0x0fb90e658e203227a651f1d683f812a8b34a7b6e546d1a3458c8bfbe1048fa1a", "gasFees": { "feePerDaGas": 0, - "feePerL2Gas": 54166854910 + "feePerL2Gas": 54166739060 } }, "totalFees": "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -108,8 +108,9 @@ } } }, - "header": "0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae00000001000000000000000000000000000000000000000000000000000000000000000400db66b36b24ebccb7543a74620018056cad2f0b08eaf251ad00362551f0a2d000089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c000ca4a4610ad22c97c9161cedcf01faa3619f1b85457f1627d09627b71903a62e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d60000001000553ea03210e12bf95ed15f0105108f39db784d318cfe9b52cba413618711ce000001001d52eeaaacb445d9193d29e0df8f0ad4bf69bc457fe955b8e05b48ae3fdc3b3f0000018020a27b2839a892ce7ac7c3a76b625388d4efdd4d736f29f86d41bb32d4bc73cf0000017c0000000000000000000000000000000000000000000000000000000000007a6900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000067450ede7bf63a9118e60cc630c4faa654223f715d4bd20e2f2bacf41d88061f8a9e9234dfb8f6cdf5287e15eeeb4a6af5b0691d846bad5d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c9c989cfe00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "publicInputsHash": "0x00f895b5ad3a835f2abbcc0793d4799b7316a18e690c18b45c96e6a12d2a3231", + "header": "0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae00000001000000000000000000000000000000000000000000000000000000000000000400476e8bde67f5103417638177f69bafaab0a230f87b856043fe8fc0c8643f5f00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c000ca4a4610ad22c97c9161cedcf01faa3619f1b85457f1627d09627b71903a62e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d60000001000553ea03210e12bf95ed15f0105108f39db784d318cfe9b52cba413618711ce000001001d52eeaaacb445d9193d29e0df8f0ad4bf69bc457fe955b8e05b48ae3fdc3b3f0000018020a27b2839a892ce7ac7c3a76b625388d4efdd4d736f29f86d41bb32d4bc73cf0000017c0000000000000000000000000000000000000000000000000000000000007a6900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000006747cc6b965a60c81ca829bc7cae5dc7c6b11b0af4c800080fb90e658e203227a651f1d683f812a8b34a7b6e546d1a3458c8bfbe1048fa1a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c9c96d87400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "publicInputsHash": "0x007c1bede18d1bf57ebc9122757b7c120ad05ab2b30c5a5527ae3d2bb9524436", + "blobInputs": "0x0101cb2643c794ffd2835b698dffc25f63cfff60717970cd3e7f7c0fb91f8303b80e8146e9a02fbb7bd2ff2df8550f8f2bf1c36eda19989d2153fd161a3bf214b35de7f666c8edd3cf3471753892f8f732973d009e684843388c18516476687d91b4f3cb75876a86c8edde736e313975c9cf1486d38d2c4ff8dad0667a878b196d41db63ab7d6d1893f0f432f6ea73c736b6393353efca34a3dcdc7db71ae0fd0a4443ef02bf48f1bf68b38a370de4886ec6a846a3ba62ff186072d2b25992bcd1", "numTxs": 4 } } \ No newline at end of file diff --git a/l1-contracts/test/fixtures/mixed_block_2.json b/l1-contracts/test/fixtures/mixed_block_2.json index 6af996c2314..49635a87e10 100644 --- a/l1-contracts/test/fixtures/mixed_block_2.json +++ b/l1-contracts/test/fixtures/mixed_block_2.json @@ -58,36 +58,34 @@ ] }, "block": { - "archive": "0x1a67606f67cc90d680873608c953ab58de942279a740dd8f4221cbd39327449a", - "blockHash": "0x0a3664a7aa5b6e62973e4b7be7807869ada474cc3aacd49dacc82e55dd1ccd26", + "archive": "0x25e2dbd3d2c46401d9d79479b990ca3097e7b2cb80cddc4c1034349ce544eb85", + "blockHash": "0x212a549f61965631d3548eb2f194be3afc17ab340c0e651693f3620256fed414", "body": "0x00000004000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000141000000000000000000000000000000000000000000000000000000000000014100100000000000000000000000000000000000000000000000000000000001410020000000000000000000000000000000000000000000000000000000000141003000000000000000000000000000000000000000000000000000000000014100400000000000000000000000000000000000000000000000000000000001410050000000000000000000000000000000000000000000000000000000000141006000000000000000000000000000000000000000000000000000000000014100700000000000000000000000000000000000000000000000000000000001410080000000000000000000000000000000000000000000000000000000000141009000000000000000000000000000000000000000000000000000000000014100a000000000000000000000000000000000000000000000000000000000014100b000000000000000000000000000000000000000000000000000000000014100c000000000000000000000000000000000000000000000000000000000014100d000000000000000000000000000000000000000000000000000000000014100e000000000000000000000000000000000000000000000000000000000014100f0000000000000000000000000000000000000000000000000000000000141010000000000000000000000000000000000000000000000000000000000014101100000000000000000000000000000000000000000000000000000000001410120000000000000000000000000000000000000000000000000000000000141013000000000000000000000000000000000000000000000000000000000014101400000000000000000000000000000000000000000000000000000000001410150000000000000000000000000000000000000000000000000000000000141016000000000000000000000000000000000000000000000000000000000014101700000000000000000000000000000000000000000000000000000000001410180000000000000000000000000000000000000000000000000000000000141019000000000000000000000000000000000000000000000000000000000014101a000000000000000000000000000000000000000000000000000000000014101b000000000000000000000000000000000000000000000000000000000014101c000000000000000000000000000000000000000000000000000000000014101d000000000000000000000000000000000000000000000000000000000014101e000000000000000000000000000000000000000000000000000000000014101f0000000000000000000000000000000000000000000000000000000000141020000000000000000000000000000000000000000000000000000000000014102100000000000000000000000000000000000000000000000000000000001410220000000000000000000000000000000000000000000000000000000000141023000000000000000000000000000000000000000000000000000000000014102400000000000000000000000000000000000000000000000000000000001410250000000000000000000000000000000000000000000000000000000000141026000000000000000000000000000000000000000000000000000000000014102700000000000000000000000000000000000000000000000000000000001410280000000000000000000000000000000000000000000000000000000000141029000000000000000000000000000000000000000000000000000000000014102a000000000000000000000000000000000000000000000000000000000014102b000000000000000000000000000000000000000000000000000000000014102c000000000000000000000000000000000000000000000000000000000014102d000000000000000000000000000000000000000000000000000000000014102e000000000000000000000000000000000000000000000000000000000014102f0000000000000000000000000000000000000000000000000000000000141030000000000000000000000000000000000000000000000000000000000014103100000000000000000000000000000000000000000000000000000000001410320000000000000000000000000000000000000000000000000000000000141033000000000000000000000000000000000000000000000000000000000014103400000000000000000000000000000000000000000000000000000000001410350000000000000000000000000000000000000000000000000000000000141036000000000000000000000000000000000000000000000000000000000014103700000000000000000000000000000000000000000000000000000000001410380000000000000000000000000000000000000000000000000000000000141039000000000000000000000000000000000000000000000000000000000014103a000000000000000000000000000000000000000000000000000000000014103b000000000000000000000000000000000000000000000000000000000014103c000000000000000000000000000000000000000000000000000000000014103d000000000000000000000000000000000000000000000000000000000014103e000000000000000000000000000000000000000000000000000000000014103f3f0000000000000000000000000000000000000000000000000000000000141100000000000000000000000000000000000000000000000000000000000014110100000000000000000000000000000000000000000000000000000000001411020000000000000000000000000000000000000000000000000000000000141103000000000000000000000000000000000000000000000000000000000014110400000000000000000000000000000000000000000000000000000000001411050000000000000000000000000000000000000000000000000000000000141106000000000000000000000000000000000000000000000000000000000014110700000000000000000000000000000000000000000000000000000000001411080000000000000000000000000000000000000000000000000000000000141109000000000000000000000000000000000000000000000000000000000014110a000000000000000000000000000000000000000000000000000000000014110b000000000000000000000000000000000000000000000000000000000014110c000000000000000000000000000000000000000000000000000000000014110d000000000000000000000000000000000000000000000000000000000014110e000000000000000000000000000000000000000000000000000000000014110f0000000000000000000000000000000000000000000000000000000000141110000000000000000000000000000000000000000000000000000000000014111100000000000000000000000000000000000000000000000000000000001411120000000000000000000000000000000000000000000000000000000000141113000000000000000000000000000000000000000000000000000000000014111400000000000000000000000000000000000000000000000000000000001411150000000000000000000000000000000000000000000000000000000000141116000000000000000000000000000000000000000000000000000000000014111700000000000000000000000000000000000000000000000000000000001411180000000000000000000000000000000000000000000000000000000000141119000000000000000000000000000000000000000000000000000000000014111a000000000000000000000000000000000000000000000000000000000014111b000000000000000000000000000000000000000000000000000000000014111c000000000000000000000000000000000000000000000000000000000014111d000000000000000000000000000000000000000000000000000000000014111e000000000000000000000000000000000000000000000000000000000014111f0000000000000000000000000000000000000000000000000000000000141120000000000000000000000000000000000000000000000000000000000014112100000000000000000000000000000000000000000000000000000000001411220000000000000000000000000000000000000000000000000000000000141123000000000000000000000000000000000000000000000000000000000014112400000000000000000000000000000000000000000000000000000000001411250000000000000000000000000000000000000000000000000000000000141126000000000000000000000000000000000000000000000000000000000014112700000000000000000000000000000000000000000000000000000000001411280000000000000000000000000000000000000000000000000000000000141129000000000000000000000000000000000000000000000000000000000014112a000000000000000000000000000000000000000000000000000000000014112b000000000000000000000000000000000000000000000000000000000014112c000000000000000000000000000000000000000000000000000000000014112d000000000000000000000000000000000000000000000000000000000014112e000000000000000000000000000000000000000000000000000000000014112f0000000000000000000000000000000000000000000000000000000000141130000000000000000000000000000000000000000000000000000000000014113100000000000000000000000000000000000000000000000000000000001411320000000000000000000000000000000000000000000000000000000000141133000000000000000000000000000000000000000000000000000000000014113400000000000000000000000000000000000000000000000000000000001411350000000000000000000000000000000000000000000000000000000000141136000000000000000000000000000000000000000000000000000000000014113700000000000000000000000000000000000000000000000000000000001411380000000000000000000000000000000000000000000000000000000000141139000000000000000000000000000000000000000000000000000000000014113a000000000000000000000000000000000000000000000000000000000014113b000000000000000000000000000000000000000000000000000000000014113c000000000000000000000000000000000000000000000000000000000014113d000000000000000000000000000000000000000000000000000000000014113e08005c015113cb57d67dd6c0febd596819ac0298b6a23fc80aba17d445d540059a00f20b7d1308051fe7b68031a7c336b0b4b56738928b6510133aff1b818d5a9a0063eec1883a4f95f4933f9275e850d84b3d035f5061ed986c437a07331fd30e00d3a32d6bbc4fd843686fd0c5e118a73b847529977dca5b9e0e81f6604f22ca00c2f4f5133d9194d41e853e5e951e16690babce8461f25342c0bad20f2aa1e3000a6bf4739e7eb387913d955dc2e8f14f8cce27696b9d2e128b6acefafb80ee005763f7e0648f958b559677622a648f318fc79ebc0cb539170d49c26456e69200302e2b8a92cda941e9af8761b89899a58a587656d9710594e1d865b16522993f0000000000000000000000000000000000000000000000000000000000142000000000000000000000000000000000000000000000000000000000000014200a0000000000000000000000000000000000000000000000000000000000142001000000000000000000000000000000000000000000000000000000000014200b0000000000000000000000000000000000000000000000000000000000142002000000000000000000000000000000000000000000000000000000000014200c0000000000000000000000000000000000000000000000000000000000142003000000000000000000000000000000000000000000000000000000000014200d0000000000000000000000000000000000000000000000000000000000142004000000000000000000000000000000000000000000000000000000000014200e0000000000000000000000000000000000000000000000000000000000142005000000000000000000000000000000000000000000000000000000000014200f00000000000000000000000000000000000000000000000000000000001420060000000000000000000000000000000000000000000000000000000000142010000000000000000000000000000000000000000000000000000000000014200700000000000000000000000000000000000000000000000000000000001420110000000000000000000000000000000000000000000000000000000000142008000000000000000000000000000000000000000000000000000000000014201200000000000000000000000000000000000000000000000000000000001420090000000000000000000000000000000000000000000000000000000000142013000000000000000000000000000000000000000000000000000000000014200a0000000000000000000000000000000000000000000000000000000000142014000000000000000000000000000000000000000000000000000000000014200b0000000000000000000000000000000000000000000000000000000000142015000000000000000000000000000000000000000000000000000000000014200c0000000000000000000000000000000000000000000000000000000000142016000000000000000000000000000000000000000000000000000000000014200d0000000000000000000000000000000000000000000000000000000000142017000000000000000000000000000000000000000000000000000000000014200e0000000000000000000000000000000000000000000000000000000000142018000000000000000000000000000000000000000000000000000000000014200f00000000000000000000000000000000000000000000000000000000001420190000000000000000000000000000000000000000000000000000000000142010000000000000000000000000000000000000000000000000000000000014201a0000000000000000000000000000000000000000000000000000000000142011000000000000000000000000000000000000000000000000000000000014201b0000000000000000000000000000000000000000000000000000000000142012000000000000000000000000000000000000000000000000000000000014201c0000000000000000000000000000000000000000000000000000000000142013000000000000000000000000000000000000000000000000000000000014201d0000000000000000000000000000000000000000000000000000000000142014000000000000000000000000000000000000000000000000000000000014201e0000000000000000000000000000000000000000000000000000000000142015000000000000000000000000000000000000000000000000000000000014201f00000000000000000000000000000000000000000000000000000000001420160000000000000000000000000000000000000000000000000000000000142020000000000000000000000000000000000000000000000000000000000014201700000000000000000000000000000000000000000000000000000000001420210000000000000000000000000000000000000000000000000000000000142018000000000000000000000000000000000000000000000000000000000014202200000000000000000000000000000000000000000000000000000000001420190000000000000000000000000000000000000000000000000000000000142023000000000000000000000000000000000000000000000000000000000014201a0000000000000000000000000000000000000000000000000000000000142024000000000000000000000000000000000000000000000000000000000014201b0000000000000000000000000000000000000000000000000000000000142025000000000000000000000000000000000000000000000000000000000014201c0000000000000000000000000000000000000000000000000000000000142026000000000000000000000000000000000000000000000000000000000014201d0000000000000000000000000000000000000000000000000000000000142027000000000000000000000000000000000000000000000000000000000014201e0000000000000000000000000000000000000000000000000000000000142028000000000000000000000000000000000000000000000000000000000014201f00000000000000000000000000000000000000000000000000000000001420290000000000000000000000000000000000000000000000000000000000142020000000000000000000000000000000000000000000000000000000000014202a0000000000000000000000000000000000000000000000000000000000142021000000000000000000000000000000000000000000000000000000000014202b0000000000000000000000000000000000000000000000000000000000142022000000000000000000000000000000000000000000000000000000000014202c0000000000000000000000000000000000000000000000000000000000142023000000000000000000000000000000000000000000000000000000000014202d0000000000000000000000000000000000000000000000000000000000142024000000000000000000000000000000000000000000000000000000000014202e0000000000000000000000000000000000000000000000000000000000142025000000000000000000000000000000000000000000000000000000000014202f00000000000000000000000000000000000000000000000000000000001420260000000000000000000000000000000000000000000000000000000000142030000000000000000000000000000000000000000000000000000000000014202700000000000000000000000000000000000000000000000000000000001420310000000000000000000000000000000000000000000000000000000000142028000000000000000000000000000000000000000000000000000000000014203200000000000000000000000000000000000000000000000000000000001420290000000000000000000000000000000000000000000000000000000000142033000000000000000000000000000000000000000000000000000000000014202a0000000000000000000000000000000000000000000000000000000000142034000000000000000000000000000000000000000000000000000000000014202b0000000000000000000000000000000000000000000000000000000000142035000000000000000000000000000000000000000000000000000000000014202c0000000000000000000000000000000000000000000000000000000000142036000000000000000000000000000000000000000000000000000000000014202d0000000000000000000000000000000000000000000000000000000000142037000000000000000000000000000000000000000000000000000000000014202e0000000000000000000000000000000000000000000000000000000000142038000000000000000000000000000000000000000000000000000000000014202f00000000000000000000000000000000000000000000000000000000001420390000000000000000000000000000000000000000000000000000000000142030000000000000000000000000000000000000000000000000000000000014203a0000000000000000000000000000000000000000000000000000000000142031000000000000000000000000000000000000000000000000000000000014203b0000000000000000000000000000000000000000000000000000000000142032000000000000000000000000000000000000000000000000000000000014203c0000000000000000000000000000000000000000000000000000000000142033000000000000000000000000000000000000000000000000000000000014203d0000000000000000000000000000000000000000000000000000000000142034000000000000000000000000000000000000000000000000000000000014203e0000000000000000000000000000000000000000000000000000000000142035000000000000000000000000000000000000000000000000000000000014203f00000000000000000000000000000000000000000000000000000000001420360000000000000000000000000000000000000000000000000000000000142040000000000000000000000000000000000000000000000000000000000014203700000000000000000000000000000000000000000000000000000000001420410000000000000000000000000000000000000000000000000000000000142038000000000000000000000000000000000000000000000000000000000014204200000000000000000000000000000000000000000000000000000000001420390000000000000000000000000000000000000000000000000000000000142043000000000000000000000000000000000000000000000000000000000014203a0000000000000000000000000000000000000000000000000000000000142044000000000000000000000000000000000000000000000000000000000014203b0000000000000000000000000000000000000000000000000000000000142045000000000000000000000000000000000000000000000000000000000014203c0000000000000000000000000000000000000000000000000000000000142046000000000000000000000000000000000000000000000000000000000014203d0000000000000000000000000000000000000000000000000000000000142047000000000000000000000000000000000000000000000000000000000014203e0000000000000000000000000000000000000000000000000000000000142048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000181000000000000000000000000000000000000000000000000000000000000018100100000000000000000000000000000000000000000000000000000000001810020000000000000000000000000000000000000000000000000000000000181003000000000000000000000000000000000000000000000000000000000018100400000000000000000000000000000000000000000000000000000000001810050000000000000000000000000000000000000000000000000000000000181006000000000000000000000000000000000000000000000000000000000018100700000000000000000000000000000000000000000000000000000000001810080000000000000000000000000000000000000000000000000000000000181009000000000000000000000000000000000000000000000000000000000018100a000000000000000000000000000000000000000000000000000000000018100b000000000000000000000000000000000000000000000000000000000018100c000000000000000000000000000000000000000000000000000000000018100d000000000000000000000000000000000000000000000000000000000018100e000000000000000000000000000000000000000000000000000000000018100f0000000000000000000000000000000000000000000000000000000000181010000000000000000000000000000000000000000000000000000000000018101100000000000000000000000000000000000000000000000000000000001810120000000000000000000000000000000000000000000000000000000000181013000000000000000000000000000000000000000000000000000000000018101400000000000000000000000000000000000000000000000000000000001810150000000000000000000000000000000000000000000000000000000000181016000000000000000000000000000000000000000000000000000000000018101700000000000000000000000000000000000000000000000000000000001810180000000000000000000000000000000000000000000000000000000000181019000000000000000000000000000000000000000000000000000000000018101a000000000000000000000000000000000000000000000000000000000018101b000000000000000000000000000000000000000000000000000000000018101c000000000000000000000000000000000000000000000000000000000018101d000000000000000000000000000000000000000000000000000000000018101e000000000000000000000000000000000000000000000000000000000018101f0000000000000000000000000000000000000000000000000000000000181020000000000000000000000000000000000000000000000000000000000018102100000000000000000000000000000000000000000000000000000000001810220000000000000000000000000000000000000000000000000000000000181023000000000000000000000000000000000000000000000000000000000018102400000000000000000000000000000000000000000000000000000000001810250000000000000000000000000000000000000000000000000000000000181026000000000000000000000000000000000000000000000000000000000018102700000000000000000000000000000000000000000000000000000000001810280000000000000000000000000000000000000000000000000000000000181029000000000000000000000000000000000000000000000000000000000018102a000000000000000000000000000000000000000000000000000000000018102b000000000000000000000000000000000000000000000000000000000018102c000000000000000000000000000000000000000000000000000000000018102d000000000000000000000000000000000000000000000000000000000018102e000000000000000000000000000000000000000000000000000000000018102f0000000000000000000000000000000000000000000000000000000000181030000000000000000000000000000000000000000000000000000000000018103100000000000000000000000000000000000000000000000000000000001810320000000000000000000000000000000000000000000000000000000000181033000000000000000000000000000000000000000000000000000000000018103400000000000000000000000000000000000000000000000000000000001810350000000000000000000000000000000000000000000000000000000000181036000000000000000000000000000000000000000000000000000000000018103700000000000000000000000000000000000000000000000000000000001810380000000000000000000000000000000000000000000000000000000000181039000000000000000000000000000000000000000000000000000000000018103a000000000000000000000000000000000000000000000000000000000018103b000000000000000000000000000000000000000000000000000000000018103c000000000000000000000000000000000000000000000000000000000018103d000000000000000000000000000000000000000000000000000000000018103e000000000000000000000000000000000000000000000000000000000018103f3f0000000000000000000000000000000000000000000000000000000000181100000000000000000000000000000000000000000000000000000000000018110100000000000000000000000000000000000000000000000000000000001811020000000000000000000000000000000000000000000000000000000000181103000000000000000000000000000000000000000000000000000000000018110400000000000000000000000000000000000000000000000000000000001811050000000000000000000000000000000000000000000000000000000000181106000000000000000000000000000000000000000000000000000000000018110700000000000000000000000000000000000000000000000000000000001811080000000000000000000000000000000000000000000000000000000000181109000000000000000000000000000000000000000000000000000000000018110a000000000000000000000000000000000000000000000000000000000018110b000000000000000000000000000000000000000000000000000000000018110c000000000000000000000000000000000000000000000000000000000018110d000000000000000000000000000000000000000000000000000000000018110e000000000000000000000000000000000000000000000000000000000018110f0000000000000000000000000000000000000000000000000000000000181110000000000000000000000000000000000000000000000000000000000018111100000000000000000000000000000000000000000000000000000000001811120000000000000000000000000000000000000000000000000000000000181113000000000000000000000000000000000000000000000000000000000018111400000000000000000000000000000000000000000000000000000000001811150000000000000000000000000000000000000000000000000000000000181116000000000000000000000000000000000000000000000000000000000018111700000000000000000000000000000000000000000000000000000000001811180000000000000000000000000000000000000000000000000000000000181119000000000000000000000000000000000000000000000000000000000018111a000000000000000000000000000000000000000000000000000000000018111b000000000000000000000000000000000000000000000000000000000018111c000000000000000000000000000000000000000000000000000000000018111d000000000000000000000000000000000000000000000000000000000018111e000000000000000000000000000000000000000000000000000000000018111f0000000000000000000000000000000000000000000000000000000000181120000000000000000000000000000000000000000000000000000000000018112100000000000000000000000000000000000000000000000000000000001811220000000000000000000000000000000000000000000000000000000000181123000000000000000000000000000000000000000000000000000000000018112400000000000000000000000000000000000000000000000000000000001811250000000000000000000000000000000000000000000000000000000000181126000000000000000000000000000000000000000000000000000000000018112700000000000000000000000000000000000000000000000000000000001811280000000000000000000000000000000000000000000000000000000000181129000000000000000000000000000000000000000000000000000000000018112a000000000000000000000000000000000000000000000000000000000018112b000000000000000000000000000000000000000000000000000000000018112c000000000000000000000000000000000000000000000000000000000018112d000000000000000000000000000000000000000000000000000000000018112e000000000000000000000000000000000000000000000000000000000018112f0000000000000000000000000000000000000000000000000000000000181130000000000000000000000000000000000000000000000000000000000018113100000000000000000000000000000000000000000000000000000000001811320000000000000000000000000000000000000000000000000000000000181133000000000000000000000000000000000000000000000000000000000018113400000000000000000000000000000000000000000000000000000000001811350000000000000000000000000000000000000000000000000000000000181136000000000000000000000000000000000000000000000000000000000018113700000000000000000000000000000000000000000000000000000000001811380000000000000000000000000000000000000000000000000000000000181139000000000000000000000000000000000000000000000000000000000018113a000000000000000000000000000000000000000000000000000000000018113b000000000000000000000000000000000000000000000000000000000018113c000000000000000000000000000000000000000000000000000000000018113d000000000000000000000000000000000000000000000000000000000018113e0800f872eb9653f03af10f331da1361fa1524d3cd958cb72dacea1d424f19df3af00ffc548a17cd6ba1f2d228f30e4ddb19ecc46ad3b609977d52bb0f49e1206410032f8058bd779c520eabae2743b02ec4f71670428506fcceb2d4b69f26fb11800c0283e15fbf74ffa4eafb984030394f3c2ea6733cc0eacb0431a9475eff28f00b7f55314bfd9d441c1c624e241908228fe4da3d3a0a7fbd56814e1c8cd5d3e00f430f33a786675271736fd728c7bf7428b8c24ac948d7faf76ddb8783a496c0048fc235ead8d4b9d44929662a6384074fc4e5076bec5b7deb34f612393684300fd9b61cb1ad9b4b28f58399906e73933e3cccee8fc98a393f0eedb95b13ee63f0000000000000000000000000000000000000000000000000000000000182000000000000000000000000000000000000000000000000000000000000018200a0000000000000000000000000000000000000000000000000000000000182001000000000000000000000000000000000000000000000000000000000018200b0000000000000000000000000000000000000000000000000000000000182002000000000000000000000000000000000000000000000000000000000018200c0000000000000000000000000000000000000000000000000000000000182003000000000000000000000000000000000000000000000000000000000018200d0000000000000000000000000000000000000000000000000000000000182004000000000000000000000000000000000000000000000000000000000018200e0000000000000000000000000000000000000000000000000000000000182005000000000000000000000000000000000000000000000000000000000018200f00000000000000000000000000000000000000000000000000000000001820060000000000000000000000000000000000000000000000000000000000182010000000000000000000000000000000000000000000000000000000000018200700000000000000000000000000000000000000000000000000000000001820110000000000000000000000000000000000000000000000000000000000182008000000000000000000000000000000000000000000000000000000000018201200000000000000000000000000000000000000000000000000000000001820090000000000000000000000000000000000000000000000000000000000182013000000000000000000000000000000000000000000000000000000000018200a0000000000000000000000000000000000000000000000000000000000182014000000000000000000000000000000000000000000000000000000000018200b0000000000000000000000000000000000000000000000000000000000182015000000000000000000000000000000000000000000000000000000000018200c0000000000000000000000000000000000000000000000000000000000182016000000000000000000000000000000000000000000000000000000000018200d0000000000000000000000000000000000000000000000000000000000182017000000000000000000000000000000000000000000000000000000000018200e0000000000000000000000000000000000000000000000000000000000182018000000000000000000000000000000000000000000000000000000000018200f00000000000000000000000000000000000000000000000000000000001820190000000000000000000000000000000000000000000000000000000000182010000000000000000000000000000000000000000000000000000000000018201a0000000000000000000000000000000000000000000000000000000000182011000000000000000000000000000000000000000000000000000000000018201b0000000000000000000000000000000000000000000000000000000000182012000000000000000000000000000000000000000000000000000000000018201c0000000000000000000000000000000000000000000000000000000000182013000000000000000000000000000000000000000000000000000000000018201d0000000000000000000000000000000000000000000000000000000000182014000000000000000000000000000000000000000000000000000000000018201e0000000000000000000000000000000000000000000000000000000000182015000000000000000000000000000000000000000000000000000000000018201f00000000000000000000000000000000000000000000000000000000001820160000000000000000000000000000000000000000000000000000000000182020000000000000000000000000000000000000000000000000000000000018201700000000000000000000000000000000000000000000000000000000001820210000000000000000000000000000000000000000000000000000000000182018000000000000000000000000000000000000000000000000000000000018202200000000000000000000000000000000000000000000000000000000001820190000000000000000000000000000000000000000000000000000000000182023000000000000000000000000000000000000000000000000000000000018201a0000000000000000000000000000000000000000000000000000000000182024000000000000000000000000000000000000000000000000000000000018201b0000000000000000000000000000000000000000000000000000000000182025000000000000000000000000000000000000000000000000000000000018201c0000000000000000000000000000000000000000000000000000000000182026000000000000000000000000000000000000000000000000000000000018201d0000000000000000000000000000000000000000000000000000000000182027000000000000000000000000000000000000000000000000000000000018201e0000000000000000000000000000000000000000000000000000000000182028000000000000000000000000000000000000000000000000000000000018201f00000000000000000000000000000000000000000000000000000000001820290000000000000000000000000000000000000000000000000000000000182020000000000000000000000000000000000000000000000000000000000018202a0000000000000000000000000000000000000000000000000000000000182021000000000000000000000000000000000000000000000000000000000018202b0000000000000000000000000000000000000000000000000000000000182022000000000000000000000000000000000000000000000000000000000018202c0000000000000000000000000000000000000000000000000000000000182023000000000000000000000000000000000000000000000000000000000018202d0000000000000000000000000000000000000000000000000000000000182024000000000000000000000000000000000000000000000000000000000018202e0000000000000000000000000000000000000000000000000000000000182025000000000000000000000000000000000000000000000000000000000018202f00000000000000000000000000000000000000000000000000000000001820260000000000000000000000000000000000000000000000000000000000182030000000000000000000000000000000000000000000000000000000000018202700000000000000000000000000000000000000000000000000000000001820310000000000000000000000000000000000000000000000000000000000182028000000000000000000000000000000000000000000000000000000000018203200000000000000000000000000000000000000000000000000000000001820290000000000000000000000000000000000000000000000000000000000182033000000000000000000000000000000000000000000000000000000000018202a0000000000000000000000000000000000000000000000000000000000182034000000000000000000000000000000000000000000000000000000000018202b0000000000000000000000000000000000000000000000000000000000182035000000000000000000000000000000000000000000000000000000000018202c0000000000000000000000000000000000000000000000000000000000182036000000000000000000000000000000000000000000000000000000000018202d0000000000000000000000000000000000000000000000000000000000182037000000000000000000000000000000000000000000000000000000000018202e0000000000000000000000000000000000000000000000000000000000182038000000000000000000000000000000000000000000000000000000000018202f00000000000000000000000000000000000000000000000000000000001820390000000000000000000000000000000000000000000000000000000000182030000000000000000000000000000000000000000000000000000000000018203a0000000000000000000000000000000000000000000000000000000000182031000000000000000000000000000000000000000000000000000000000018203b0000000000000000000000000000000000000000000000000000000000182032000000000000000000000000000000000000000000000000000000000018203c0000000000000000000000000000000000000000000000000000000000182033000000000000000000000000000000000000000000000000000000000018203d0000000000000000000000000000000000000000000000000000000000182034000000000000000000000000000000000000000000000000000000000018203e0000000000000000000000000000000000000000000000000000000000182035000000000000000000000000000000000000000000000000000000000018203f00000000000000000000000000000000000000000000000000000000001820360000000000000000000000000000000000000000000000000000000000182040000000000000000000000000000000000000000000000000000000000018203700000000000000000000000000000000000000000000000000000000001820410000000000000000000000000000000000000000000000000000000000182038000000000000000000000000000000000000000000000000000000000018204200000000000000000000000000000000000000000000000000000000001820390000000000000000000000000000000000000000000000000000000000182043000000000000000000000000000000000000000000000000000000000018203a0000000000000000000000000000000000000000000000000000000000182044000000000000000000000000000000000000000000000000000000000018203b0000000000000000000000000000000000000000000000000000000000182045000000000000000000000000000000000000000000000000000000000018203c0000000000000000000000000000000000000000000000000000000000182046000000000000000000000000000000000000000000000000000000000018203d0000000000000000000000000000000000000000000000000000000000182047000000000000000000000000000000000000000000000000000000000018203e00000000000000000000000000000000000000000000000000000000001820480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000001c100000000000000000000000000000000000000000000000000000000000001c100100000000000000000000000000000000000000000000000000000000001c100200000000000000000000000000000000000000000000000000000000001c100300000000000000000000000000000000000000000000000000000000001c100400000000000000000000000000000000000000000000000000000000001c100500000000000000000000000000000000000000000000000000000000001c100600000000000000000000000000000000000000000000000000000000001c100700000000000000000000000000000000000000000000000000000000001c100800000000000000000000000000000000000000000000000000000000001c100900000000000000000000000000000000000000000000000000000000001c100a00000000000000000000000000000000000000000000000000000000001c100b00000000000000000000000000000000000000000000000000000000001c100c00000000000000000000000000000000000000000000000000000000001c100d00000000000000000000000000000000000000000000000000000000001c100e00000000000000000000000000000000000000000000000000000000001c100f00000000000000000000000000000000000000000000000000000000001c101000000000000000000000000000000000000000000000000000000000001c101100000000000000000000000000000000000000000000000000000000001c101200000000000000000000000000000000000000000000000000000000001c101300000000000000000000000000000000000000000000000000000000001c101400000000000000000000000000000000000000000000000000000000001c101500000000000000000000000000000000000000000000000000000000001c101600000000000000000000000000000000000000000000000000000000001c101700000000000000000000000000000000000000000000000000000000001c101800000000000000000000000000000000000000000000000000000000001c101900000000000000000000000000000000000000000000000000000000001c101a00000000000000000000000000000000000000000000000000000000001c101b00000000000000000000000000000000000000000000000000000000001c101c00000000000000000000000000000000000000000000000000000000001c101d00000000000000000000000000000000000000000000000000000000001c101e00000000000000000000000000000000000000000000000000000000001c101f00000000000000000000000000000000000000000000000000000000001c102000000000000000000000000000000000000000000000000000000000001c102100000000000000000000000000000000000000000000000000000000001c102200000000000000000000000000000000000000000000000000000000001c102300000000000000000000000000000000000000000000000000000000001c102400000000000000000000000000000000000000000000000000000000001c102500000000000000000000000000000000000000000000000000000000001c102600000000000000000000000000000000000000000000000000000000001c102700000000000000000000000000000000000000000000000000000000001c102800000000000000000000000000000000000000000000000000000000001c102900000000000000000000000000000000000000000000000000000000001c102a00000000000000000000000000000000000000000000000000000000001c102b00000000000000000000000000000000000000000000000000000000001c102c00000000000000000000000000000000000000000000000000000000001c102d00000000000000000000000000000000000000000000000000000000001c102e00000000000000000000000000000000000000000000000000000000001c102f00000000000000000000000000000000000000000000000000000000001c103000000000000000000000000000000000000000000000000000000000001c103100000000000000000000000000000000000000000000000000000000001c103200000000000000000000000000000000000000000000000000000000001c103300000000000000000000000000000000000000000000000000000000001c103400000000000000000000000000000000000000000000000000000000001c103500000000000000000000000000000000000000000000000000000000001c103600000000000000000000000000000000000000000000000000000000001c103700000000000000000000000000000000000000000000000000000000001c103800000000000000000000000000000000000000000000000000000000001c103900000000000000000000000000000000000000000000000000000000001c103a00000000000000000000000000000000000000000000000000000000001c103b00000000000000000000000000000000000000000000000000000000001c103c00000000000000000000000000000000000000000000000000000000001c103d00000000000000000000000000000000000000000000000000000000001c103e00000000000000000000000000000000000000000000000000000000001c103f3f00000000000000000000000000000000000000000000000000000000001c110000000000000000000000000000000000000000000000000000000000001c110100000000000000000000000000000000000000000000000000000000001c110200000000000000000000000000000000000000000000000000000000001c110300000000000000000000000000000000000000000000000000000000001c110400000000000000000000000000000000000000000000000000000000001c110500000000000000000000000000000000000000000000000000000000001c110600000000000000000000000000000000000000000000000000000000001c110700000000000000000000000000000000000000000000000000000000001c110800000000000000000000000000000000000000000000000000000000001c110900000000000000000000000000000000000000000000000000000000001c110a00000000000000000000000000000000000000000000000000000000001c110b00000000000000000000000000000000000000000000000000000000001c110c00000000000000000000000000000000000000000000000000000000001c110d00000000000000000000000000000000000000000000000000000000001c110e00000000000000000000000000000000000000000000000000000000001c110f00000000000000000000000000000000000000000000000000000000001c111000000000000000000000000000000000000000000000000000000000001c111100000000000000000000000000000000000000000000000000000000001c111200000000000000000000000000000000000000000000000000000000001c111300000000000000000000000000000000000000000000000000000000001c111400000000000000000000000000000000000000000000000000000000001c111500000000000000000000000000000000000000000000000000000000001c111600000000000000000000000000000000000000000000000000000000001c111700000000000000000000000000000000000000000000000000000000001c111800000000000000000000000000000000000000000000000000000000001c111900000000000000000000000000000000000000000000000000000000001c111a00000000000000000000000000000000000000000000000000000000001c111b00000000000000000000000000000000000000000000000000000000001c111c00000000000000000000000000000000000000000000000000000000001c111d00000000000000000000000000000000000000000000000000000000001c111e00000000000000000000000000000000000000000000000000000000001c111f00000000000000000000000000000000000000000000000000000000001c112000000000000000000000000000000000000000000000000000000000001c112100000000000000000000000000000000000000000000000000000000001c112200000000000000000000000000000000000000000000000000000000001c112300000000000000000000000000000000000000000000000000000000001c112400000000000000000000000000000000000000000000000000000000001c112500000000000000000000000000000000000000000000000000000000001c112600000000000000000000000000000000000000000000000000000000001c112700000000000000000000000000000000000000000000000000000000001c112800000000000000000000000000000000000000000000000000000000001c112900000000000000000000000000000000000000000000000000000000001c112a00000000000000000000000000000000000000000000000000000000001c112b00000000000000000000000000000000000000000000000000000000001c112c00000000000000000000000000000000000000000000000000000000001c112d00000000000000000000000000000000000000000000000000000000001c112e00000000000000000000000000000000000000000000000000000000001c112f00000000000000000000000000000000000000000000000000000000001c113000000000000000000000000000000000000000000000000000000000001c113100000000000000000000000000000000000000000000000000000000001c113200000000000000000000000000000000000000000000000000000000001c113300000000000000000000000000000000000000000000000000000000001c113400000000000000000000000000000000000000000000000000000000001c113500000000000000000000000000000000000000000000000000000000001c113600000000000000000000000000000000000000000000000000000000001c113700000000000000000000000000000000000000000000000000000000001c113800000000000000000000000000000000000000000000000000000000001c113900000000000000000000000000000000000000000000000000000000001c113a00000000000000000000000000000000000000000000000000000000001c113b00000000000000000000000000000000000000000000000000000000001c113c00000000000000000000000000000000000000000000000000000000001c113d00000000000000000000000000000000000000000000000000000000001c113e08006838aa99533bea0d4204cad17cb3c147e99c2f9089e54a4289d54733eeada2002ab314bd11ace2494a3fb0970d276da39f0fe7da19c9a2438b9c7c334d32470071703d79d8425a7eca52006df6a8f9728508a83639e3e1c2ebae2b853a087c00c9501ac04a78ac5413c9131b08708064ed2c2515b8893f12c2d1cda15a44f100a0955f93e109778d26f9e5b0d46e45c539e59b0941517bfa888eb2d7d2d8a6005adc3be9406cc5f102c6adb44746e8529a256e2396353a8659344cc3e914c4007a5fe572cf6af804f472dabf095c5eb6b30efc5fd627ad3245a8ef0f3f578c003dcaa91dfc9fdad7ba8da68a48fc662dfc0a995cbb0c1bc62099c8257d240d3f00000000000000000000000000000000000000000000000000000000001c200000000000000000000000000000000000000000000000000000000000001c200a00000000000000000000000000000000000000000000000000000000001c200100000000000000000000000000000000000000000000000000000000001c200b00000000000000000000000000000000000000000000000000000000001c200200000000000000000000000000000000000000000000000000000000001c200c00000000000000000000000000000000000000000000000000000000001c200300000000000000000000000000000000000000000000000000000000001c200d00000000000000000000000000000000000000000000000000000000001c200400000000000000000000000000000000000000000000000000000000001c200e00000000000000000000000000000000000000000000000000000000001c200500000000000000000000000000000000000000000000000000000000001c200f00000000000000000000000000000000000000000000000000000000001c200600000000000000000000000000000000000000000000000000000000001c201000000000000000000000000000000000000000000000000000000000001c200700000000000000000000000000000000000000000000000000000000001c201100000000000000000000000000000000000000000000000000000000001c200800000000000000000000000000000000000000000000000000000000001c201200000000000000000000000000000000000000000000000000000000001c200900000000000000000000000000000000000000000000000000000000001c201300000000000000000000000000000000000000000000000000000000001c200a00000000000000000000000000000000000000000000000000000000001c201400000000000000000000000000000000000000000000000000000000001c200b00000000000000000000000000000000000000000000000000000000001c201500000000000000000000000000000000000000000000000000000000001c200c00000000000000000000000000000000000000000000000000000000001c201600000000000000000000000000000000000000000000000000000000001c200d00000000000000000000000000000000000000000000000000000000001c201700000000000000000000000000000000000000000000000000000000001c200e00000000000000000000000000000000000000000000000000000000001c201800000000000000000000000000000000000000000000000000000000001c200f00000000000000000000000000000000000000000000000000000000001c201900000000000000000000000000000000000000000000000000000000001c201000000000000000000000000000000000000000000000000000000000001c201a00000000000000000000000000000000000000000000000000000000001c201100000000000000000000000000000000000000000000000000000000001c201b00000000000000000000000000000000000000000000000000000000001c201200000000000000000000000000000000000000000000000000000000001c201c00000000000000000000000000000000000000000000000000000000001c201300000000000000000000000000000000000000000000000000000000001c201d00000000000000000000000000000000000000000000000000000000001c201400000000000000000000000000000000000000000000000000000000001c201e00000000000000000000000000000000000000000000000000000000001c201500000000000000000000000000000000000000000000000000000000001c201f00000000000000000000000000000000000000000000000000000000001c201600000000000000000000000000000000000000000000000000000000001c202000000000000000000000000000000000000000000000000000000000001c201700000000000000000000000000000000000000000000000000000000001c202100000000000000000000000000000000000000000000000000000000001c201800000000000000000000000000000000000000000000000000000000001c202200000000000000000000000000000000000000000000000000000000001c201900000000000000000000000000000000000000000000000000000000001c202300000000000000000000000000000000000000000000000000000000001c201a00000000000000000000000000000000000000000000000000000000001c202400000000000000000000000000000000000000000000000000000000001c201b00000000000000000000000000000000000000000000000000000000001c202500000000000000000000000000000000000000000000000000000000001c201c00000000000000000000000000000000000000000000000000000000001c202600000000000000000000000000000000000000000000000000000000001c201d00000000000000000000000000000000000000000000000000000000001c202700000000000000000000000000000000000000000000000000000000001c201e00000000000000000000000000000000000000000000000000000000001c202800000000000000000000000000000000000000000000000000000000001c201f00000000000000000000000000000000000000000000000000000000001c202900000000000000000000000000000000000000000000000000000000001c202000000000000000000000000000000000000000000000000000000000001c202a00000000000000000000000000000000000000000000000000000000001c202100000000000000000000000000000000000000000000000000000000001c202b00000000000000000000000000000000000000000000000000000000001c202200000000000000000000000000000000000000000000000000000000001c202c00000000000000000000000000000000000000000000000000000000001c202300000000000000000000000000000000000000000000000000000000001c202d00000000000000000000000000000000000000000000000000000000001c202400000000000000000000000000000000000000000000000000000000001c202e00000000000000000000000000000000000000000000000000000000001c202500000000000000000000000000000000000000000000000000000000001c202f00000000000000000000000000000000000000000000000000000000001c202600000000000000000000000000000000000000000000000000000000001c203000000000000000000000000000000000000000000000000000000000001c202700000000000000000000000000000000000000000000000000000000001c203100000000000000000000000000000000000000000000000000000000001c202800000000000000000000000000000000000000000000000000000000001c203200000000000000000000000000000000000000000000000000000000001c202900000000000000000000000000000000000000000000000000000000001c203300000000000000000000000000000000000000000000000000000000001c202a00000000000000000000000000000000000000000000000000000000001c203400000000000000000000000000000000000000000000000000000000001c202b00000000000000000000000000000000000000000000000000000000001c203500000000000000000000000000000000000000000000000000000000001c202c00000000000000000000000000000000000000000000000000000000001c203600000000000000000000000000000000000000000000000000000000001c202d00000000000000000000000000000000000000000000000000000000001c203700000000000000000000000000000000000000000000000000000000001c202e00000000000000000000000000000000000000000000000000000000001c203800000000000000000000000000000000000000000000000000000000001c202f00000000000000000000000000000000000000000000000000000000001c203900000000000000000000000000000000000000000000000000000000001c203000000000000000000000000000000000000000000000000000000000001c203a00000000000000000000000000000000000000000000000000000000001c203100000000000000000000000000000000000000000000000000000000001c203b00000000000000000000000000000000000000000000000000000000001c203200000000000000000000000000000000000000000000000000000000001c203c00000000000000000000000000000000000000000000000000000000001c203300000000000000000000000000000000000000000000000000000000001c203d00000000000000000000000000000000000000000000000000000000001c203400000000000000000000000000000000000000000000000000000000001c203e00000000000000000000000000000000000000000000000000000000001c203500000000000000000000000000000000000000000000000000000000001c203f00000000000000000000000000000000000000000000000000000000001c203600000000000000000000000000000000000000000000000000000000001c204000000000000000000000000000000000000000000000000000000000001c203700000000000000000000000000000000000000000000000000000000001c204100000000000000000000000000000000000000000000000000000000001c203800000000000000000000000000000000000000000000000000000000001c204200000000000000000000000000000000000000000000000000000000001c203900000000000000000000000000000000000000000000000000000000001c204300000000000000000000000000000000000000000000000000000000001c203a00000000000000000000000000000000000000000000000000000000001c204400000000000000000000000000000000000000000000000000000000001c203b00000000000000000000000000000000000000000000000000000000001c204500000000000000000000000000000000000000000000000000000000001c203c00000000000000000000000000000000000000000000000000000000001c204600000000000000000000000000000000000000000000000000000000001c203d00000000000000000000000000000000000000000000000000000000001c204700000000000000000000000000000000000000000000000000000000001c203e00000000000000000000000000000000000000000000000000000000001c2048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000201000000000000000000000000000000000000000000000000000000000000020100100000000000000000000000000000000000000000000000000000000002010020000000000000000000000000000000000000000000000000000000000201003000000000000000000000000000000000000000000000000000000000020100400000000000000000000000000000000000000000000000000000000002010050000000000000000000000000000000000000000000000000000000000201006000000000000000000000000000000000000000000000000000000000020100700000000000000000000000000000000000000000000000000000000002010080000000000000000000000000000000000000000000000000000000000201009000000000000000000000000000000000000000000000000000000000020100a000000000000000000000000000000000000000000000000000000000020100b000000000000000000000000000000000000000000000000000000000020100c000000000000000000000000000000000000000000000000000000000020100d000000000000000000000000000000000000000000000000000000000020100e000000000000000000000000000000000000000000000000000000000020100f0000000000000000000000000000000000000000000000000000000000201010000000000000000000000000000000000000000000000000000000000020101100000000000000000000000000000000000000000000000000000000002010120000000000000000000000000000000000000000000000000000000000201013000000000000000000000000000000000000000000000000000000000020101400000000000000000000000000000000000000000000000000000000002010150000000000000000000000000000000000000000000000000000000000201016000000000000000000000000000000000000000000000000000000000020101700000000000000000000000000000000000000000000000000000000002010180000000000000000000000000000000000000000000000000000000000201019000000000000000000000000000000000000000000000000000000000020101a000000000000000000000000000000000000000000000000000000000020101b000000000000000000000000000000000000000000000000000000000020101c000000000000000000000000000000000000000000000000000000000020101d000000000000000000000000000000000000000000000000000000000020101e000000000000000000000000000000000000000000000000000000000020101f0000000000000000000000000000000000000000000000000000000000201020000000000000000000000000000000000000000000000000000000000020102100000000000000000000000000000000000000000000000000000000002010220000000000000000000000000000000000000000000000000000000000201023000000000000000000000000000000000000000000000000000000000020102400000000000000000000000000000000000000000000000000000000002010250000000000000000000000000000000000000000000000000000000000201026000000000000000000000000000000000000000000000000000000000020102700000000000000000000000000000000000000000000000000000000002010280000000000000000000000000000000000000000000000000000000000201029000000000000000000000000000000000000000000000000000000000020102a000000000000000000000000000000000000000000000000000000000020102b000000000000000000000000000000000000000000000000000000000020102c000000000000000000000000000000000000000000000000000000000020102d000000000000000000000000000000000000000000000000000000000020102e000000000000000000000000000000000000000000000000000000000020102f0000000000000000000000000000000000000000000000000000000000201030000000000000000000000000000000000000000000000000000000000020103100000000000000000000000000000000000000000000000000000000002010320000000000000000000000000000000000000000000000000000000000201033000000000000000000000000000000000000000000000000000000000020103400000000000000000000000000000000000000000000000000000000002010350000000000000000000000000000000000000000000000000000000000201036000000000000000000000000000000000000000000000000000000000020103700000000000000000000000000000000000000000000000000000000002010380000000000000000000000000000000000000000000000000000000000201039000000000000000000000000000000000000000000000000000000000020103a000000000000000000000000000000000000000000000000000000000020103b000000000000000000000000000000000000000000000000000000000020103c000000000000000000000000000000000000000000000000000000000020103d000000000000000000000000000000000000000000000000000000000020103e000000000000000000000000000000000000000000000000000000000020103f3f0000000000000000000000000000000000000000000000000000000000201100000000000000000000000000000000000000000000000000000000000020110100000000000000000000000000000000000000000000000000000000002011020000000000000000000000000000000000000000000000000000000000201103000000000000000000000000000000000000000000000000000000000020110400000000000000000000000000000000000000000000000000000000002011050000000000000000000000000000000000000000000000000000000000201106000000000000000000000000000000000000000000000000000000000020110700000000000000000000000000000000000000000000000000000000002011080000000000000000000000000000000000000000000000000000000000201109000000000000000000000000000000000000000000000000000000000020110a000000000000000000000000000000000000000000000000000000000020110b000000000000000000000000000000000000000000000000000000000020110c000000000000000000000000000000000000000000000000000000000020110d000000000000000000000000000000000000000000000000000000000020110e000000000000000000000000000000000000000000000000000000000020110f0000000000000000000000000000000000000000000000000000000000201110000000000000000000000000000000000000000000000000000000000020111100000000000000000000000000000000000000000000000000000000002011120000000000000000000000000000000000000000000000000000000000201113000000000000000000000000000000000000000000000000000000000020111400000000000000000000000000000000000000000000000000000000002011150000000000000000000000000000000000000000000000000000000000201116000000000000000000000000000000000000000000000000000000000020111700000000000000000000000000000000000000000000000000000000002011180000000000000000000000000000000000000000000000000000000000201119000000000000000000000000000000000000000000000000000000000020111a000000000000000000000000000000000000000000000000000000000020111b000000000000000000000000000000000000000000000000000000000020111c000000000000000000000000000000000000000000000000000000000020111d000000000000000000000000000000000000000000000000000000000020111e000000000000000000000000000000000000000000000000000000000020111f0000000000000000000000000000000000000000000000000000000000201120000000000000000000000000000000000000000000000000000000000020112100000000000000000000000000000000000000000000000000000000002011220000000000000000000000000000000000000000000000000000000000201123000000000000000000000000000000000000000000000000000000000020112400000000000000000000000000000000000000000000000000000000002011250000000000000000000000000000000000000000000000000000000000201126000000000000000000000000000000000000000000000000000000000020112700000000000000000000000000000000000000000000000000000000002011280000000000000000000000000000000000000000000000000000000000201129000000000000000000000000000000000000000000000000000000000020112a000000000000000000000000000000000000000000000000000000000020112b000000000000000000000000000000000000000000000000000000000020112c000000000000000000000000000000000000000000000000000000000020112d000000000000000000000000000000000000000000000000000000000020112e000000000000000000000000000000000000000000000000000000000020112f0000000000000000000000000000000000000000000000000000000000201130000000000000000000000000000000000000000000000000000000000020113100000000000000000000000000000000000000000000000000000000002011320000000000000000000000000000000000000000000000000000000000201133000000000000000000000000000000000000000000000000000000000020113400000000000000000000000000000000000000000000000000000000002011350000000000000000000000000000000000000000000000000000000000201136000000000000000000000000000000000000000000000000000000000020113700000000000000000000000000000000000000000000000000000000002011380000000000000000000000000000000000000000000000000000000000201139000000000000000000000000000000000000000000000000000000000020113a000000000000000000000000000000000000000000000000000000000020113b000000000000000000000000000000000000000000000000000000000020113c000000000000000000000000000000000000000000000000000000000020113d000000000000000000000000000000000000000000000000000000000020113e0800e9805e8a4faa87fc419af08a6d956f18976c46ea694bbd4cf6946e6d02033200e0925a6b172b4b01bb76eb1d3f7dd2ced118bca70d223a6d61afa1b75915ae00383590492d2f99a0283d1de57015b4b6b0759a8023af2c68fb4929dee2f303007ed57100dd77e2b6405f780503ef61b7b53e13f344b6e6a6eff3e3c13de0d0001ab1b0c348c46184dbc86ff79f248e7da1b09d3f9c6a986e98fe45389f060d0023d134bc68d7efa25e255001069827dc0bee766c08c988d6300071ed27fe6c0031cbb780b07f632cbaf767dc80608cc0a8e1d1df3ecd6f5d8bc0ca6703e4f4002c7dc9e731fc5f6456b2a70b4e636ac17d5e0cd36d3a591116a9e124f735863f0000000000000000000000000000000000000000000000000000000000202000000000000000000000000000000000000000000000000000000000000020200a0000000000000000000000000000000000000000000000000000000000202001000000000000000000000000000000000000000000000000000000000020200b0000000000000000000000000000000000000000000000000000000000202002000000000000000000000000000000000000000000000000000000000020200c0000000000000000000000000000000000000000000000000000000000202003000000000000000000000000000000000000000000000000000000000020200d0000000000000000000000000000000000000000000000000000000000202004000000000000000000000000000000000000000000000000000000000020200e0000000000000000000000000000000000000000000000000000000000202005000000000000000000000000000000000000000000000000000000000020200f00000000000000000000000000000000000000000000000000000000002020060000000000000000000000000000000000000000000000000000000000202010000000000000000000000000000000000000000000000000000000000020200700000000000000000000000000000000000000000000000000000000002020110000000000000000000000000000000000000000000000000000000000202008000000000000000000000000000000000000000000000000000000000020201200000000000000000000000000000000000000000000000000000000002020090000000000000000000000000000000000000000000000000000000000202013000000000000000000000000000000000000000000000000000000000020200a0000000000000000000000000000000000000000000000000000000000202014000000000000000000000000000000000000000000000000000000000020200b0000000000000000000000000000000000000000000000000000000000202015000000000000000000000000000000000000000000000000000000000020200c0000000000000000000000000000000000000000000000000000000000202016000000000000000000000000000000000000000000000000000000000020200d0000000000000000000000000000000000000000000000000000000000202017000000000000000000000000000000000000000000000000000000000020200e0000000000000000000000000000000000000000000000000000000000202018000000000000000000000000000000000000000000000000000000000020200f00000000000000000000000000000000000000000000000000000000002020190000000000000000000000000000000000000000000000000000000000202010000000000000000000000000000000000000000000000000000000000020201a0000000000000000000000000000000000000000000000000000000000202011000000000000000000000000000000000000000000000000000000000020201b0000000000000000000000000000000000000000000000000000000000202012000000000000000000000000000000000000000000000000000000000020201c0000000000000000000000000000000000000000000000000000000000202013000000000000000000000000000000000000000000000000000000000020201d0000000000000000000000000000000000000000000000000000000000202014000000000000000000000000000000000000000000000000000000000020201e0000000000000000000000000000000000000000000000000000000000202015000000000000000000000000000000000000000000000000000000000020201f00000000000000000000000000000000000000000000000000000000002020160000000000000000000000000000000000000000000000000000000000202020000000000000000000000000000000000000000000000000000000000020201700000000000000000000000000000000000000000000000000000000002020210000000000000000000000000000000000000000000000000000000000202018000000000000000000000000000000000000000000000000000000000020202200000000000000000000000000000000000000000000000000000000002020190000000000000000000000000000000000000000000000000000000000202023000000000000000000000000000000000000000000000000000000000020201a0000000000000000000000000000000000000000000000000000000000202024000000000000000000000000000000000000000000000000000000000020201b0000000000000000000000000000000000000000000000000000000000202025000000000000000000000000000000000000000000000000000000000020201c0000000000000000000000000000000000000000000000000000000000202026000000000000000000000000000000000000000000000000000000000020201d0000000000000000000000000000000000000000000000000000000000202027000000000000000000000000000000000000000000000000000000000020201e0000000000000000000000000000000000000000000000000000000000202028000000000000000000000000000000000000000000000000000000000020201f00000000000000000000000000000000000000000000000000000000002020290000000000000000000000000000000000000000000000000000000000202020000000000000000000000000000000000000000000000000000000000020202a0000000000000000000000000000000000000000000000000000000000202021000000000000000000000000000000000000000000000000000000000020202b0000000000000000000000000000000000000000000000000000000000202022000000000000000000000000000000000000000000000000000000000020202c0000000000000000000000000000000000000000000000000000000000202023000000000000000000000000000000000000000000000000000000000020202d0000000000000000000000000000000000000000000000000000000000202024000000000000000000000000000000000000000000000000000000000020202e0000000000000000000000000000000000000000000000000000000000202025000000000000000000000000000000000000000000000000000000000020202f00000000000000000000000000000000000000000000000000000000002020260000000000000000000000000000000000000000000000000000000000202030000000000000000000000000000000000000000000000000000000000020202700000000000000000000000000000000000000000000000000000000002020310000000000000000000000000000000000000000000000000000000000202028000000000000000000000000000000000000000000000000000000000020203200000000000000000000000000000000000000000000000000000000002020290000000000000000000000000000000000000000000000000000000000202033000000000000000000000000000000000000000000000000000000000020202a0000000000000000000000000000000000000000000000000000000000202034000000000000000000000000000000000000000000000000000000000020202b0000000000000000000000000000000000000000000000000000000000202035000000000000000000000000000000000000000000000000000000000020202c0000000000000000000000000000000000000000000000000000000000202036000000000000000000000000000000000000000000000000000000000020202d0000000000000000000000000000000000000000000000000000000000202037000000000000000000000000000000000000000000000000000000000020202e0000000000000000000000000000000000000000000000000000000000202038000000000000000000000000000000000000000000000000000000000020202f00000000000000000000000000000000000000000000000000000000002020390000000000000000000000000000000000000000000000000000000000202030000000000000000000000000000000000000000000000000000000000020203a0000000000000000000000000000000000000000000000000000000000202031000000000000000000000000000000000000000000000000000000000020203b0000000000000000000000000000000000000000000000000000000000202032000000000000000000000000000000000000000000000000000000000020203c0000000000000000000000000000000000000000000000000000000000202033000000000000000000000000000000000000000000000000000000000020203d0000000000000000000000000000000000000000000000000000000000202034000000000000000000000000000000000000000000000000000000000020203e0000000000000000000000000000000000000000000000000000000000202035000000000000000000000000000000000000000000000000000000000020203f00000000000000000000000000000000000000000000000000000000002020360000000000000000000000000000000000000000000000000000000000202040000000000000000000000000000000000000000000000000000000000020203700000000000000000000000000000000000000000000000000000000002020410000000000000000000000000000000000000000000000000000000000202038000000000000000000000000000000000000000000000000000000000020204200000000000000000000000000000000000000000000000000000000002020390000000000000000000000000000000000000000000000000000000000202043000000000000000000000000000000000000000000000000000000000020203a0000000000000000000000000000000000000000000000000000000000202044000000000000000000000000000000000000000000000000000000000020203b0000000000000000000000000000000000000000000000000000000000202045000000000000000000000000000000000000000000000000000000000020203c0000000000000000000000000000000000000000000000000000000000202046000000000000000000000000000000000000000000000000000000000020203d0000000000000000000000000000000000000000000000000000000000202047000000000000000000000000000000000000000000000000000000000020203e0000000000000000000000000000000000000000000000000000000000202048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "txsEffectsHash": "0x00e0afd1e2cddfe35e364bde6047d93fec56b54e7b925edc28b31546b645822d", "decodedHeader": { "contentCommitment": { "blobsHash": "0x00a249a9f834ecee6d0bd91c841e5a02a0629a89754c2844593b74bb50002697", "inHash": "0x00e1371045bd7d2c3e1f19cba5f536f0e82042ba4bc257d4ba19c146215e8242", "outHash": "0x00a5c37986316b1f5f2df53fa9ddf4965f539e872f5e1374f28d225540faca26", - "numTxs": 4, - "txsEffectsHash": "0x00e0afd1e2cddfe35e364bde6047d93fec56b54e7b925edc28b31546b645822d" + "numTxs": 4 }, "globalVariables": { "blockNumber": 2, "slotNumber": "0x0000000000000000000000000000000000000000000000000000000000000023", "chainId": 31337, - "timestamp": 1732579254, + "timestamp": 1732758851, "version": 1, - "coinbase": "0x7bf63a9118e60cc630c4faa654223f715d4bd20e", - "feeRecipient": "0x2f2bacf41d88061f8a9e9234dfb8f6cdf5287e15eeeb4a6af5b0691d846bad5d", + "coinbase": "0x965a60c81ca829bc7cae5dc7c6b11b0af4c80008", + "feeRecipient": "0x0fb90e658e203227a651f1d683f812a8b34a7b6e546d1a3458c8bfbe1048fa1a", "gasFees": { "feePerDaGas": 0, - "feePerL2Gas": 54154341830 + "feePerL2Gas": 54154337420 } }, "totalFees": "0x0000000000000000000000000000000000000000000000000000000000000000", "totalManaUsed": "0x0000000000000000000000000000000000000000000000000000000000000000", "lastArchive": { "nextAvailableLeafIndex": 2, - "root": "0x0dd5f1f4c97e09c3d85323d27343341b245c49c5e7032c43c8b7c70d8b79629a" + "root": "0x2be14b8c75041b535481e613d5c4912e4cbea72a73ead54b45e797431fc50437" }, "stateReference": { "l1ToL2MessageTree": { @@ -110,8 +108,9 @@ } } }, - "header": "0x0dd5f1f4c97e09c3d85323d27343341b245c49c5e7032c43c8b7c70d8b79629a00000002000000000000000000000000000000000000000000000000000000000000000400e0afd1e2cddfe35e364bde6047d93fec56b54e7b925edc28b31546b645822d00e1371045bd7d2c3e1f19cba5f536f0e82042ba4bc257d4ba19c146215e824200a5c37986316b1f5f2df53fa9ddf4965f539e872f5e1374f28d225540faca26026efb6c2a517de2448119d0f1255757265dbec7cdd2952df929ede666e10944000000202494d2575971bca59a28ddc774d19136f4a294951ab67258c7e9c2d8f9805924000002002ed5c359f01d6a1cacfa324bc48b7fcc6fe75a95ad66bdb1a6e32d6907550957000002800c5783f9fe3a18bb5abd12daca67d280f6b5dfef250b7433dc059ce0d868b319000002780000000000000000000000000000000000000000000000000000000000007a690000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000230000000000000000000000000000000000000000000000000000000067450fb67bf63a9118e60cc630c4faa654223f715d4bd20e2f2bacf41d88061f8a9e9234dfb8f6cdf5287e15eeeb4a6af5b0691d846bad5d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c9bd9adc600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "publicInputsHash": "0x00b2ae527c16d61b9ab56a964e90e6cf16142b95d0fc73dd966e5748c296c197", + "header": "0x2be14b8c75041b535481e613d5c4912e4cbea72a73ead54b45e797431fc5043700000002000000000000000000000000000000000000000000000000000000000000000400a249a9f834ecee6d0bd91c841e5a02a0629a89754c2844593b74bb5000269700e1371045bd7d2c3e1f19cba5f536f0e82042ba4bc257d4ba19c146215e824200a5c37986316b1f5f2df53fa9ddf4965f539e872f5e1374f28d225540faca26026efb6c2a517de2448119d0f1255757265dbec7cdd2952df929ede666e10944000000202494d2575971bca59a28ddc774d19136f4a294951ab67258c7e9c2d8f9805924000002002ed5c359f01d6a1cacfa324bc48b7fcc6fe75a95ad66bdb1a6e32d6907550957000002800c5783f9fe3a18bb5abd12daca67d280f6b5dfef250b7433dc059ce0d868b319000002780000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000023000000000000000000000000000000000000000000000000000000006747cd43965a60c81ca829bc7cae5dc7c6b11b0af4c800080fb90e658e203227a651f1d683f812a8b34a7b6e546d1a3458c8bfbe1048fa1a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c9bd99c8c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "publicInputsHash": "0x00473e2d7995508204c374bb620abeffaa66e6d1dac792d4716ac33b3a8d3446", + "blobInputs": "0x01019459274d8bf8edc690446032c9e349e4bed693db5fbc7e05d0d38e780445042b05f8c7ed84b2d229b760cecee7a7eec6cff16285f647eeadd63601b9fa240110881755773868744fbb3cd4a392b3ec27e859107d782b2e039791d03e16ce44a1e7643408f2a24771eb694ee4d50298d6122a3459cd4a5257829a3c4cc13b13247b7dd371eae4c94e7d9aff21f04137971b54bb0a05a7cc8338c36bec0149c0f9afaffba3f7836abe8e2ac6cab4955c20ef2e8d2e002384bcfdeade0fe3f915", "numTxs": 4 } } \ No newline at end of file diff --git a/l1-contracts/test/sparta/Sparta.t.sol b/l1-contracts/test/sparta/Sparta.t.sol index 679dffcdb66..cff45216c71 100644 --- a/l1-contracts/test/sparta/Sparta.t.sol +++ b/l1-contracts/test/sparta/Sparta.t.sol @@ -163,6 +163,7 @@ contract SpartaTest is DecoderBase { bool _invalidProposer ) internal { DecoderBase.Full memory full = load(_name); + bytes memory header = full.block.header; StructToAvoidDeepStacks memory ree; @@ -184,7 +185,7 @@ contract SpartaTest is DecoderBase { } ProposeArgs memory args = ProposeArgs({ - header: full.block.header, + header: header, archive: full.block.archive, blockHash: bytes32(0), oracleInput: OracleInput(0, 0), diff --git a/noir-projects/noir-protocol-circuits/crates/blob/src/blob.nr b/noir-projects/noir-protocol-circuits/crates/blob/src/blob.nr index d7e85025df4..3591145f8af 100644 --- a/noir-projects/noir-protocol-circuits/crates/blob/src/blob.nr +++ b/noir-projects/noir-protocol-circuits/crates/blob/src/blob.nr @@ -18,7 +18,7 @@ use types::{ utils::arrays::array_splice, }; -global LIMB_MAX = 0x1000000000000000000000000000000; // 2^120 +global LIMB_MAX: Field = 0x1000000000000000000000000000000; // 2^120 global TWO_POW_56: u64 = 0x100000000000000; // u64 to aid integer only modulo in __field_to_bignum_limbs global TWO_POW_64: Field = 0x10000000000000000; diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/header.nr b/noir-projects/noir-protocol-circuits/crates/types/src/header.nr index 3bd2befdd75..36586abe9a3 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/header.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/header.nr @@ -124,6 +124,6 @@ fn empty_hash_is_zero() { let hash = header.hash(); // Value from header.test.ts "computes empty hash" test - let test_data_empty_hash = 0x1c97ed6fbc35f8b400d31bd38ce5cc938921e0cf2e20159d316f8c7011f9f42c; + let test_data_empty_hash = 0x28e48e620bc00817609b5fc765bc74864561f25a3c941b33e5ee05266b752839; assert_eq(hash, test_data_empty_hash); } diff --git a/yarn-project/archiver/src/archiver/archiver.test.ts b/yarn-project/archiver/src/archiver/archiver.test.ts index 972e41ea09c..5a0e220881b 100644 --- a/yarn-project/archiver/src/archiver/archiver.test.ts +++ b/yarn-project/archiver/src/archiver/archiver.test.ts @@ -458,7 +458,12 @@ function makeRollupTx(l2Block: L2Block) { const input = encodeFunctionData({ abi: RollupAbi, functionName: 'propose', - args: [{ header, archive, blockHash, oracleInput: { provingCostModifier: 0n, feeAssetPriceModifier: 0n }, txHashes: [] }, [], body, blobInput], + args: [ + { header, archive, blockHash, oracleInput: { provingCostModifier: 0n, feeAssetPriceModifier: 0n }, txHashes: [] }, + [], + body, + blobInput, + ], }); return { input } as Transaction; } diff --git a/yarn-project/circuit-types/src/tx_effect.ts b/yarn-project/circuit-types/src/tx_effect.ts index ea0afe9a408..c80edc9a3ee 100644 --- a/yarn-project/circuit-types/src/tx_effect.ts +++ b/yarn-project/circuit-types/src/tx_effect.ts @@ -18,18 +18,18 @@ import { TX_START_PREFIX, UNENCRYPTED_LOGS_PREFIX, } from '@aztec/circuits.js'; +import { type FieldsOf, makeTuple } from '@aztec/foundation/array'; import { toBufferBE } from '@aztec/foundation/bigint-buffer'; import { padArrayEnd } from '@aztec/foundation/collection'; import { sha256Trunc } from '@aztec/foundation/crypto'; +import { jsonStringify } from '@aztec/foundation/json-rpc'; +import { schemas } from '@aztec/foundation/schemas'; import { BufferReader, FieldReader, serializeArrayOfBufferableToVector, serializeToBuffer, } from '@aztec/foundation/serialize'; -import { type FieldsOf, makeTuple } from '@aztec/foundation/array'; -import { jsonStringify } from '@aztec/foundation/json-rpc'; -import { schemas } from '@aztec/foundation/schemas'; import { bufferToHex, hexToBuffer } from '@aztec/foundation/string'; import { inspect } from 'util'; diff --git a/yarn-project/circuits.js/src/constants.gen.ts b/yarn-project/circuits.js/src/constants.gen.ts index bb020f29237..acc2be2e62a 100644 --- a/yarn-project/circuits.js/src/constants.gen.ts +++ b/yarn-project/circuits.js/src/constants.gen.ts @@ -185,6 +185,7 @@ export const TX_REQUEST_LENGTH = 12; export const TOTAL_FEES_LENGTH = 1; export const TOTAL_MANA_USED_LENGTH = 1; export const HEADER_LENGTH = 25; +export const HEADER_LENGTH_BYTES = 648; export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 491; export const PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 867; export const PRIVATE_CONTEXT_INPUTS_LENGTH = 38; @@ -206,9 +207,9 @@ export const PRIVATE_TO_PUBLIC_KERNEL_CIRCUIT_PUBLIC_INPUTS_LENGTH = 1141; export const KERNEL_CIRCUIT_PUBLIC_INPUTS_LENGTH = 606; export const AVM_CIRCUIT_PUBLIC_INPUTS_LENGTH = 1006; export const CONSTANT_ROLLUP_DATA_LENGTH = 13; -export const BASE_OR_MERGE_PUBLIC_INPUTS_LENGTH = 31; -export const BLOCK_ROOT_OR_BLOCK_MERGE_PUBLIC_INPUTS_LENGTH = 90; -export const ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH = 76; +export const BASE_OR_MERGE_PUBLIC_INPUTS_LENGTH = 52; +export const BLOCK_ROOT_OR_BLOCK_MERGE_PUBLIC_INPUTS_LENGTH = 666; +export const ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH = 652; export const GET_NOTES_ORACLE_RETURN_LENGTH = 674; export const NOTE_HASHES_NUM_BYTES_PER_BASE_ROLLUP = 2048; export const NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP = 2048; diff --git a/yarn-project/end-to-end/src/composed/integration_l1_publisher.test.ts b/yarn-project/end-to-end/src/composed/integration_l1_publisher.test.ts index 93837d2d5bb..4ca1b2dcf1d 100644 --- a/yarn-project/end-to-end/src/composed/integration_l1_publisher.test.ts +++ b/yarn-project/end-to-end/src/composed/integration_l1_publisher.test.ts @@ -331,7 +331,7 @@ describe('L1Publisher integration', () => { const tempFork = await worldStateSynchronizer.fork(); const tempBuilder = new LightweightBlockBuilder(tempFork, new NoopTelemetryClient()); await tempBuilder.startNewBlock(globalVariables, l1ToL2Messages); - await tempBuilder.addTxs(tx); + await tempBuilder.addTxs(txs); const block = await tempBuilder.setBlockCompleted(); await tempFork.close(); return block; diff --git a/yarn-project/ethereum/src/deploy_l1_contracts.ts b/yarn-project/ethereum/src/deploy_l1_contracts.ts index 0fa1ce1e3e3..70d0aef363c 100644 --- a/yarn-project/ethereum/src/deploy_l1_contracts.ts +++ b/yarn-project/ethereum/src/deploy_l1_contracts.ts @@ -21,6 +21,7 @@ import { RewardDistributorBytecode, RollupAbi, RollupBytecode, + RollupLinkReferences, SampleLibAbi, SampleLibBytecode, TestERC20Abi, diff --git a/yarn-project/ethereum/src/test/start_anvil.ts b/yarn-project/ethereum/src/test/start_anvil.ts index b8c287681b3..8ffb723fc03 100644 --- a/yarn-project/ethereum/src/test/start_anvil.ts +++ b/yarn-project/ethereum/src/test/start_anvil.ts @@ -22,6 +22,7 @@ export async function startAnvil(l1BlockTime?: number): Promise<{ anvil: Anvil; anvilBinary, port: ethereumHostPort, blockTime: l1BlockTime, + codeSizeLimit: 0x7000, }); await anvil.start(); return anvil; diff --git a/yarn-project/prover-client/src/orchestrator/orchestrator.ts b/yarn-project/prover-client/src/orchestrator/orchestrator.ts index 2b371739d75..5385d9e0e86 100644 --- a/yarn-project/prover-client/src/orchestrator/orchestrator.ts +++ b/yarn-project/prover-client/src/orchestrator/orchestrator.ts @@ -554,7 +554,7 @@ export class ProvingOrchestrator implements EpochProver { if (!provingState.finalRootParityInput?.publicInputs.shaRoot) { throw new Error(`Invalid proving state, a block must be ready to be proven before its effects can be extracted.`); } - const nonEmptyTxEffects: TxEffect[] = provingState.allTxs + const nonEmptyTxEffects = provingState.allTxs .map(txProvingState => txProvingState.processedTx.txEffect) .filter(txEffect => !txEffect.isEmpty()); diff --git a/yarn-project/sequencer-client/src/block_builder/light.test.ts b/yarn-project/sequencer-client/src/block_builder/light.test.ts index 50544c8fa98..c36761581fc 100644 --- a/yarn-project/sequencer-client/src/block_builder/light.test.ts +++ b/yarn-project/sequencer-client/src/block_builder/light.test.ts @@ -9,17 +9,12 @@ import { } from '@aztec/circuit-types'; import { makeBloatedProcessedTx } from '@aztec/circuit-types/test'; import { - AZTEC_MAX_EPOCH_DURATION, type AppendOnlyTreeSnapshot, BLOBS_PER_BLOCK, type BaseOrMergeRollupPublicInputs, BaseParityInputs, - BlockBlobPublicInputs, - BlockRootOrBlockMergePublicInputs, BlockRootRollupInputs, - EthAddress, FIELDS_PER_BLOB, - FeeRecipient, Fr, type GlobalVariables, L1_TO_L2_MSG_SUBTREE_HEIGHT, diff --git a/yarn-project/sequencer-client/src/publisher/l1-publisher.ts b/yarn-project/sequencer-client/src/publisher/l1-publisher.ts index efa42323c62..d218d3e1761 100644 --- a/yarn-project/sequencer-client/src/publisher/l1-publisher.ts +++ b/yarn-project/sequencer-client/src/publisher/l1-publisher.ts @@ -747,7 +747,8 @@ export class L1Publisher { epochSize: argsArray[0], args: argsArray[1], fees: argsArray[2], - aggregationObject: argsArray[3], + blobPublicInputs: argsArray[3], + aggregationObject: argsArray[4], proof: proofHex, }, ] as const; @@ -804,27 +805,25 @@ export class L1Publisher { proof: Proof; }) { return [ - { - epochSize: BigInt(args.toBlock - args.fromBlock + 1), - args: [ - args.publicInputs.previousArchive.root.toString(), - args.publicInputs.endArchive.root.toString(), - args.publicInputs.previousBlockHash.toString(), - args.publicInputs.endBlockHash.toString(), - args.publicInputs.endTimestamp.toString(), - args.publicInputs.outHash.toString(), - args.publicInputs.proverId.toString(), - ], - fees: makeTuple(AZTEC_MAX_EPOCH_DURATION * 2, i => - i % 2 === 0 - ? args.publicInputs.fees[i / 2].recipient.toField().toString() - : args.publicInputs.fees[(i - 1) / 2].value.toString(), - ), - blobPublicInputs: `0x${args.publicInputs.blobPublicInputs - .filter((_, i) => i < args.toBlock - args.fromBlock + 1) - .map(b => b.toString()) - .join(``)}`, - }, + BigInt(args.toBlock - args.fromBlock + 1), + [ + args.publicInputs.previousArchive.root.toString(), + args.publicInputs.endArchive.root.toString(), + args.publicInputs.previousBlockHash.toString(), + args.publicInputs.endBlockHash.toString(), + args.publicInputs.endTimestamp.toString(), + args.publicInputs.outHash.toString(), + args.publicInputs.proverId.toString(), + ], + makeTuple(AZTEC_MAX_EPOCH_DURATION * 2, i => + i % 2 === 0 + ? args.publicInputs.fees[i / 2].recipient.toField().toString() + : args.publicInputs.fees[(i - 1) / 2].value.toString(), + ), + `0x${args.publicInputs.blobPublicInputs + .filter((_, i) => i < args.toBlock - args.fromBlock + 1) + .map(b => b.toString()) + .join(``)}`, `0x${serializeToBuffer(args.proof.extractAggregationObject()).toString('hex')}`, ] as const; } @@ -906,7 +905,7 @@ export class L1Publisher { } catch (err) { return { hash: `0x00`, - args, + args: [...args, quote.toViemArgs()], functionName: 'proposeAndClaim', err, }; From ccb82b26758aea1c38adbc4c989052b03292cd59 Mon Sep 17 00:00:00 2001 From: MirandaWood Date: Thu, 28 Nov 2024 03:33:05 +0000 Subject: [PATCH 05/39] chore: dummy change to fix ci runner --- barretenberg/cpp/src/barretenberg/world_state/world_state.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/barretenberg/cpp/src/barretenberg/world_state/world_state.cpp b/barretenberg/cpp/src/barretenberg/world_state/world_state.cpp index 3d81fbb58b5..e077317f9d1 100644 --- a/barretenberg/cpp/src/barretenberg/world_state/world_state.cpp +++ b/barretenberg/cpp/src/barretenberg/world_state/world_state.cpp @@ -807,7 +807,7 @@ bb::fr WorldState::compute_initial_archive(const StateReference& initial_state_r // last archive - which, at genesis, is all 0s 0, 0, - // content commitment - all 0s + // content commitment - at genesis all 0s 0, 0, 0, From 64586d8b8760157d2821045557af5a2111ed9552 Mon Sep 17 00:00:00 2001 From: MirandaWood Date: Thu, 28 Nov 2024 13:54:00 +0000 Subject: [PATCH 06/39] fix: do horrible things to reduce contract size --- .../barretenberg/world_state/world_state.cpp | 2 +- l1-contracts/src/core/Rollup.sol | 65 +++++++--------- l1-contracts/src/core/libraries/BlobLib.sol | 73 +++++++++++------- l1-contracts/src/core/libraries/HeaderLib.sol | 3 +- .../src/core/libraries/crypto/MerkleLib.sol | 77 ++++++++++--------- l1-contracts/test/fees/FeeRollup.t.sol | 5 +- yarn-project/ethereum/src/test/start_anvil.ts | 1 - 7 files changed, 117 insertions(+), 109 deletions(-) diff --git a/barretenberg/cpp/src/barretenberg/world_state/world_state.cpp b/barretenberg/cpp/src/barretenberg/world_state/world_state.cpp index e077317f9d1..3d81fbb58b5 100644 --- a/barretenberg/cpp/src/barretenberg/world_state/world_state.cpp +++ b/barretenberg/cpp/src/barretenberg/world_state/world_state.cpp @@ -807,7 +807,7 @@ bb::fr WorldState::compute_initial_archive(const StateReference& initial_state_r // last archive - which, at genesis, is all 0s 0, 0, - // content commitment - at genesis all 0s + // content commitment - all 0s 0, 0, 0, diff --git a/l1-contracts/src/core/Rollup.sol b/l1-contracts/src/core/Rollup.sol index 213777c3062..3242b671fa6 100644 --- a/l1-contracts/src/core/Rollup.sol +++ b/l1-contracts/src/core/Rollup.sol @@ -38,7 +38,6 @@ import {SafeERC20} from "@oz/token/ERC20/utils/SafeERC20.sol"; import {EIP712} from "@oz/utils/cryptography/EIP712.sol"; import {Math} from "@oz/utils/math/Math.sol"; import {SafeCast} from "@oz/utils/math/SafeCast.sol"; -import {Vm} from "forge-std/Vm.sol"; struct ChainTips { uint256 pendingBlockNumber; @@ -64,6 +63,7 @@ struct SubmitEpochRootProofInterimValues { * @author Aztec Labs * @notice Rollup contract that is concerned about readability and velocity of development * not giving a damn about gas costs. + * @dev WARNING: This contract is VERY close to the size limit (500B at time of writing). */ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { using SafeCast for uint256; @@ -181,7 +181,7 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { }); l1GasOracleValues = L1GasOracleValues({ pre: L1FeeData({baseFee: 1 gwei, blobFee: 1}), - post: L1FeeData({baseFee: block.basefee, blobFee: _getBlobBaseFee()}), + post: L1FeeData({baseFee: block.basefee, blobFee: BlobLib.getBlobBaseFee(VM_ADDRESS)}), slotOfChange: LIFETIME }); for (uint256 i = 0; i < _validators.length; i++) { @@ -474,9 +474,15 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { bytes32 _blobsHash, DataStructures.ExecutionFlags memory _flags ) external view override(IRollup) { - uint256 manaBaseFee = getManaBaseFeeAt(_currentTime, true); - HeaderLib.Header memory header = HeaderLib.decode(_header); - _validateHeader(header, _signatures, _digest, _currentTime, manaBaseFee, _blobsHash, _flags); + _validateHeader( + HeaderLib.decode(_header), + _signatures, + _digest, + _currentTime, + getManaBaseFeeAt(_currentTime, true), + _blobsHash, + _flags + ); } /** @@ -588,8 +594,7 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { // TODO(#7218): Revert to fixed height tree for outbox, currently just providing min as interim // Min size = smallest path of the rollup tree + 1 (uint256 min,) = MerkleLib.computeMinMaxPathLength(header.contentCommitment.numTxs); - uint256 l2ToL1TreeMinHeight = min + 1; - OUTBOX.insert(blockNumber, header.contentCommitment.outHash, l2ToL1TreeMinHeight); + OUTBOX.insert(blockNumber, header.contentCommitment.outHash, min + 1); emit L2BlockProposed(blockNumber, _args.archive); @@ -628,7 +633,8 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { } l1GasOracleValues.pre = l1GasOracleValues.post; - l1GasOracleValues.post = L1FeeData({baseFee: block.basefee, blobFee: _getBlobBaseFee()}); + l1GasOracleValues.post = + L1FeeData({baseFee: block.basefee, blobFee: BlobLib.getBlobBaseFee(VM_ADDRESS)}); l1GasOracleValues.slotOfChange = slot + LAG; } @@ -649,11 +655,9 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { override(IRollup) returns (L1FeeData memory) { - Slot slot = getSlotAt(_timestamp); - if (slot < l1GasOracleValues.slotOfChange) { - return l1GasOracleValues.pre; - } - return l1GasOracleValues.post; + return getSlotAt(_timestamp) < l1GasOracleValues.slotOfChange + ? l1GasOracleValues.pre + : l1GasOracleValues.post; } /** @@ -699,8 +703,12 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { -int256(FeeMath.MANA_TARGET) ); - uint256 dataCost = - Math.mulDiv(3 * BLOB_GAS_PER_BLOB, getL1FeesAt(_timestamp).blobFee, FeeMath.MANA_TARGET, Math.Rounding.Ceil); + uint256 dataCost = Math.mulDiv( + 3 * BLOB_GAS_PER_BLOB, + getL1FeesAt(_timestamp).blobFee, + FeeMath.MANA_TARGET, + Math.Rounding.Ceil + ); uint256 gasUsed = FeeMath.L1_GAS_PER_BLOCK_PROPOSED + 3 * GAS_PER_BLOB_POINT_EVALUATION + FeeMath.L1_GAS_PER_EPOCH_VERIFIED / EPOCH_DURATION; uint256 gasCost = @@ -1029,10 +1037,7 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { * @return bytes32 - The archive root of the block */ function archiveAt(uint256 _blockNumber) public view override(IRollup) returns (bytes32) { - if (_blockNumber <= tips.pendingBlockNumber) { - return blocks[_blockNumber].archive; - } - return bytes32(0); + return _blockNumber <= tips.pendingBlockNumber ? blocks[_blockNumber].archive : bytes32(0); } function canPrune() public view override(IRollup) returns (bool) { @@ -1244,15 +1249,14 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { returns (BlockLog memory) { FeeHeader memory parentFeeHeader = blocks[_blockNumber - 1].feeHeader; - uint256 excessMana = (parentFeeHeader.excessMana + parentFeeHeader.manaUsed).clampedAdd( - -int256(FeeMath.MANA_TARGET) - ); return BlockLog({ archive: _args.archive, blockHash: _args.blockHash, slotNumber: Slot.wrap(uint256(bytes32(_args.header[0x0194:0x01b4]))), feeHeader: FeeHeader({ - excessMana: excessMana, + excessMana: (parentFeeHeader.excessMana + parentFeeHeader.manaUsed).clampedAdd( + -int256(FeeMath.MANA_TARGET) + ), feeAssetPriceNumerator: parentFeeHeader.feeAssetPriceNumerator.clampedAdd( _args.oracleInput.feeAssetPriceModifier ), @@ -1283,19 +1287,4 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { } } } - - /** - * @notice Get the blob base fee - * - * @dev If we are in a foundry test, we use the cheatcode to get the blob base fee. - * Otherwise, we use the `block.blobbasefee` - * - * @return uint256 - The blob base fee - */ - function _getBlobBaseFee() private view returns (uint256) { - if (IS_FOUNDRY_TEST) { - return Vm(VM_ADDRESS).getBlobBaseFee(); - } - return block.blobbasefee; - } } diff --git a/l1-contracts/src/core/libraries/BlobLib.sol b/l1-contracts/src/core/libraries/BlobLib.sol index 7d6c27b543c..bee1cf89b3c 100644 --- a/l1-contracts/src/core/libraries/BlobLib.sol +++ b/l1-contracts/src/core/libraries/BlobLib.sol @@ -4,37 +4,22 @@ pragma solidity >=0.8.27; import {Hash} from "@aztec/core/libraries/crypto/Hash.sol"; import {Errors} from "@aztec/core/libraries/Errors.sol"; +import {Vm} from "forge-std/Vm.sol"; library BlobLib { /** - * @notice Validate a blob. - * Input bytes: - * input[:32] - versioned_hash - * input[32:64] - z - * input[64:96] - y - * input[96:144] - commitment C - * input[144:192] - proof (a commitment to the quotient polynomial q(X)) - * - This can be relaxed to happen at the time of `submitProof` instead - * @notice Apparently there is no guarantee that the blobs will be processed in the order sent - * so the use of blobhash(_blobNumber) may fail in production - * @param _blobInput - The above bytes to verify a blob + * @notice Get the blob base fee + * + * @dev If we are in a foundry test, we use the cheatcode to get the blob base fee. + * Otherwise, we use the `block.blobbasefee` + * + * @return uint256 - The blob base fee */ - function validateBlob(bytes calldata _blobInput, uint256 _blobNumber, bool _checkBlob) - internal - view - returns (bytes32 blobHash) - { - if (!_checkBlob) { - return bytes32(_blobInput[0:32]); + function getBlobBaseFee(address _vmAddress) public view returns (uint256) { + if (_vmAddress.code.length > 0) { + return Vm(_vmAddress).getBlobBaseFee(); } - assembly { - blobHash := blobhash(_blobNumber) - } - require(blobHash == bytes32(_blobInput[0:32]), Errors.Rollup__InvalidBlobHash(blobHash)); - - // Staticcall the point eval precompile https://eips.ethereum.org/EIPS/eip-4844#point-evaluation-precompile : - (bool success,) = address(0x0a).staticcall(_blobInput); - require(success, Errors.Rollup__InvalidBlobProof(blobHash)); + return block.blobbasefee; } /** @@ -42,10 +27,11 @@ library BlobLib { * Input bytes: * input[:1] - num blobs in block * input[1:] - 192 * num blobs of the above _blobInput + * @dev Marked as public to reduce Rollup.sol contract size * @param _blobsInput - The above bytes to verify a blob */ function validateBlobs(bytes calldata _blobsInput, bool _checkBlob) - internal + public view returns (bytes32 blobsHash, bytes32 blobPublicInputsHash) { @@ -74,13 +60,44 @@ library BlobLib { blobsHash = Hash.sha256ToField(abi.encodePacked(blobHashes)); } + /** + * @notice Validate a blob. + * Input bytes: + * input[:32] - versioned_hash + * input[32:64] - z + * input[64:96] - y + * input[96:144] - commitment C + * input[144:192] - proof (a commitment to the quotient polynomial q(X)) + * - This can be relaxed to happen at the time of `submitProof` instead + * @notice Apparently there is no guarantee that the blobs will be processed in the order sent + * so the use of blobhash(_blobNumber) may fail in production + * @param _blobInput - The above bytes to verify a blob + */ + function validateBlob(bytes calldata _blobInput, uint256 _blobNumber, bool _checkBlob) + internal + view + returns (bytes32 blobHash) + { + if (!_checkBlob) { + return bytes32(_blobInput[0:32]); + } + assembly { + blobHash := blobhash(_blobNumber) + } + require(blobHash == bytes32(_blobInput[0:32]), Errors.Rollup__InvalidBlobHash(blobHash)); + + // Staticcall the point eval precompile https://eips.ethereum.org/EIPS/eip-4844#point-evaluation-precompile : + (bool success,) = address(0x0a).staticcall(_blobInput); + require(success, Errors.Rollup__InvalidBlobProof(blobHash)); + } + /** * @notice Converts a BLS12 field element from bytes32 to a nr BigNum type * The nr bignum type for BLS12 fields is encoded as 3 nr fields - see blob_public_inputs.ts: * firstLimb = last 15 bytes; * secondLimb = bytes 2 -> 17; * thirdLimb = first 2 bytes; - * Used when verifying epoch proofs to gather public inputs. + * Used when verifying epoch proofs to gather blob specific public inputs. * @param _input - The field in bytes32 */ function bytes32ToBigNum(bytes32 _input) diff --git a/l1-contracts/src/core/libraries/HeaderLib.sol b/l1-contracts/src/core/libraries/HeaderLib.sol index 8a94a1c624e..1339fcef0b7 100644 --- a/l1-contracts/src/core/libraries/HeaderLib.sol +++ b/l1-contracts/src/core/libraries/HeaderLib.sol @@ -110,10 +110,11 @@ library HeaderLib { /** * @notice Decodes the header + * @dev Marked as public to reduce Rollup.sol contract size * @param _header - The header calldata * @return The decoded header */ - function decode(bytes calldata _header) internal pure returns (Header memory) { + function decode(bytes calldata _header) public pure returns (Header memory) { require( _header.length == HEADER_LENGTH, Errors.HeaderLib__InvalidHeaderSize(HEADER_LENGTH, _header.length) diff --git a/l1-contracts/src/core/libraries/crypto/MerkleLib.sol b/l1-contracts/src/core/libraries/crypto/MerkleLib.sol index b363338e17c..79a20f89f04 100644 --- a/l1-contracts/src/core/libraries/crypto/MerkleLib.sol +++ b/l1-contracts/src/core/libraries/crypto/MerkleLib.sol @@ -11,6 +11,45 @@ import {Errors} from "@aztec/core/libraries/Errors.sol"; * @notice Library that contains functions useful when interacting with Merkle Trees */ library MerkleLib { + /** + * @notice Computes the minimum and maximum path size of an unbalanced tree. + * @dev Follows structure of rollup circuits by greedy filling subtrees. + * @dev Marked as public to reduce Rollup.sol contract size + * @param _numTxs - The number of txs to form into subtrees. + * @return (min, max) - The min and max path sizes. + */ + function computeMinMaxPathLength(uint256 _numTxs) public pure returns (uint256, uint256) { + uint256 numTxs = _numTxs < 2 ? 2 : _numTxs; + uint256 numSubtrees = 0; + uint256 currentSubtreeSize = 1; + uint256 currentSubtreeHeight = 0; + uint256 firstSubtreeHeight; + uint256 finalSubtreeHeight; + while (numTxs != 0) { + // If size & txs == 0, the subtree doesn't exist for this number of txs + if (currentSubtreeSize & numTxs == 0) { + currentSubtreeSize <<= 1; + currentSubtreeHeight++; + continue; + } + // Assign the smallest rightmost subtree height + if (numSubtrees == 0) finalSubtreeHeight = currentSubtreeHeight; + // Assign the largest leftmost subtree height + if (numTxs - currentSubtreeSize == 0) firstSubtreeHeight = currentSubtreeHeight; + numTxs -= currentSubtreeSize; + currentSubtreeSize <<= 1; + currentSubtreeHeight++; + numSubtrees++; + } + if (numSubtrees == 1) { + // We have a balanced tree + return (firstSubtreeHeight, firstSubtreeHeight); + } + uint256 min = finalSubtreeHeight + numSubtrees - 1; + uint256 max = firstSubtreeHeight + 1; + return (min, max); + } + /** * @notice Verifies the membership of a leaf and path against an expected root. * @dev In the case of a mismatched root, and subsequent inability to verify membership, this function throws. @@ -53,44 +92,6 @@ library MerkleLib { ); } - /** - * @notice Computes the minimum and maximum path size of an unbalanced tree. - * @dev Follows structure of rollup circuits by greedy filling subtrees. - * @param _numTxs - The number of txs to form into subtrees. - * @return (min, max) - The min and max path sizes. - */ - function computeMinMaxPathLength(uint256 _numTxs) internal pure returns (uint256, uint256) { - uint256 numTxs = _numTxs < 2 ? 2 : _numTxs; - uint256 numSubtrees = 0; - uint256 currentSubtreeSize = 1; - uint256 currentSubtreeHeight = 0; - uint256 firstSubtreeHeight; - uint256 finalSubtreeHeight; - while (numTxs != 0) { - // If size & txs == 0, the subtree doesn't exist for this number of txs - if (currentSubtreeSize & numTxs == 0) { - currentSubtreeSize <<= 1; - currentSubtreeHeight++; - continue; - } - // Assign the smallest rightmost subtree height - if (numSubtrees == 0) finalSubtreeHeight = currentSubtreeHeight; - // Assign the largest leftmost subtree height - if (numTxs - currentSubtreeSize == 0) firstSubtreeHeight = currentSubtreeHeight; - numTxs -= currentSubtreeSize; - currentSubtreeSize <<= 1; - currentSubtreeHeight++; - numSubtrees++; - } - if (numSubtrees == 1) { - // We have a balanced tree - return (firstSubtreeHeight, firstSubtreeHeight); - } - uint256 min = finalSubtreeHeight + numSubtrees - 1; - uint256 max = firstSubtreeHeight + 1; - return (min, max); - } - /** * @notice Calculates a tree height from the amount of elements in the tree * @dev - This mirrors the function in TestUtil, but assumes _size is an exact power of 2 or = 1 diff --git a/l1-contracts/test/fees/FeeRollup.t.sol b/l1-contracts/test/fees/FeeRollup.t.sol index d455b4f061e..23cd4b1b7d4 100644 --- a/l1-contracts/test/fees/FeeRollup.t.sol +++ b/l1-contracts/test/fees/FeeRollup.t.sol @@ -230,7 +230,7 @@ contract FeeRollupTest is FeeModelTestPoints, DecoderBase { if (rollup.getCurrentSlot() == nextSlot) { TestPoint memory point = points[nextSlot.unwrap() - 1]; Block memory b = getBlock(); - + skipBlobCheck(address(rollup)); rollup.propose( ProposeArgs({ header: b.header, @@ -243,7 +243,8 @@ contract FeeRollupTest is FeeModelTestPoints, DecoderBase { txHashes: b.txHashes }), b.signatures, - b.body + b.body, + b.blobInputs ); nextSlot = nextSlot + Slot.wrap(1); } diff --git a/yarn-project/ethereum/src/test/start_anvil.ts b/yarn-project/ethereum/src/test/start_anvil.ts index 8ffb723fc03..b8c287681b3 100644 --- a/yarn-project/ethereum/src/test/start_anvil.ts +++ b/yarn-project/ethereum/src/test/start_anvil.ts @@ -22,7 +22,6 @@ export async function startAnvil(l1BlockTime?: number): Promise<{ anvil: Anvil; anvilBinary, port: ethereumHostPort, blockTime: l1BlockTime, - codeSizeLimit: 0x7000, }); await anvil.start(); return anvil; From 24f2f0eb54ad0f3dc94ce5be8453ed4bb59a9c0c Mon Sep 17 00:00:00 2001 From: MirandaWood Date: Thu, 28 Nov 2024 21:43:03 +0000 Subject: [PATCH 07/39] chore: post merge fixes, add libs to gen contracts, comments --- yarn-project/circuit-types/src/tx_effect.ts | 7 ++----- .../src/structs/content_commitment.ts | 4 ++-- .../ethereum/src/deploy_l1_contracts.ts | 18 ++++++++++++++++++ .../l1-artifacts/scripts/generate-artifacts.sh | 3 +++ 4 files changed, 25 insertions(+), 7 deletions(-) diff --git a/yarn-project/circuit-types/src/tx_effect.ts b/yarn-project/circuit-types/src/tx_effect.ts index c80edc9a3ee..9d948842f23 100644 --- a/yarn-project/circuit-types/src/tx_effect.ts +++ b/yarn-project/circuit-types/src/tx_effect.ts @@ -47,11 +47,12 @@ import { } from './logs/index.js'; import { TxHash } from './tx/tx_hash.js'; +export { RevertCodeEnum } from '@aztec/circuits.js'; + // These are helper constants to decode tx effects from blob encoded fields const TX_START_PREFIX_BYTES_LENGTH = TX_START_PREFIX.toString(16).length / 2; // 7 bytes for: | 0 | txlen[0] | txlen[1] | 0 | REVERT_CODE_PREFIX | 0 | revertCode | const TX_EFFECT_PREFIX_BYTE_LENGTH = TX_START_PREFIX_BYTES_LENGTH + 7; -export { RevertCodeEnum } from '@aztec/circuits.js'; export class TxEffect { constructor( @@ -529,10 +530,6 @@ export class TxEffect { }); } - toJSON() { - return this.toString(); - } - static from(fields: Omit, 'txHash'>) { return new TxEffect( fields.revertCode, diff --git a/yarn-project/circuits.js/src/structs/content_commitment.ts b/yarn-project/circuits.js/src/structs/content_commitment.ts index 76a654200cc..8f9f91e27f4 100644 --- a/yarn-project/circuits.js/src/structs/content_commitment.ts +++ b/yarn-project/circuits.js/src/structs/content_commitment.ts @@ -13,10 +13,10 @@ export class ContentCommitment { constructor(public numTxs: Fr, public blobsHash: Buffer, public inHash: Buffer, public outHash: Buffer) { // NB: we do not calculate blobHash in the circuit, but we still truncate it so it fits in a field if (blobsHash.length !== NUM_BYTES_PER_SHA256) { - throw new Error(`blobHash buffer must be ${NUM_BYTES_PER_SHA256} bytes`); + throw new Error(`blobsHash buffer must be ${NUM_BYTES_PER_SHA256} bytes`); } if (blobsHash[0] !== 0) { - throw new Error(`blobHash buffer should be truncated and left padded`); + throw new Error(`blobsHash buffer should be truncated and left padded`); } if (inHash.length !== NUM_BYTES_PER_SHA256) { throw new Error(`inHash buffer must be ${NUM_BYTES_PER_SHA256} bytes`); diff --git a/yarn-project/ethereum/src/deploy_l1_contracts.ts b/yarn-project/ethereum/src/deploy_l1_contracts.ts index 4329d39edde..38839320de5 100644 --- a/yarn-project/ethereum/src/deploy_l1_contracts.ts +++ b/yarn-project/ethereum/src/deploy_l1_contracts.ts @@ -3,6 +3,8 @@ import { EthAddress } from '@aztec/foundation/eth-address'; import { type Fr } from '@aztec/foundation/fields'; import { type DebugLogger } from '@aztec/foundation/log'; import { + BlobLibAbi, + BlobLibBytecode, CoinIssuerAbi, CoinIssuerBytecode, FeeJuicePortalAbi, @@ -11,8 +13,12 @@ import { GovernanceBytecode, GovernanceProposerAbi, GovernanceProposerBytecode, + HeaderLibAbi, + HeaderLibBytecode, InboxAbi, InboxBytecode, + MerkleLibAbi, + MerkleLibBytecode, OutboxAbi, OutboxBytecode, RegistryAbi, @@ -173,6 +179,18 @@ export const l1Artifacts: L1ContractArtifactsForDeployment = { contractAbi: SampleLibAbi, contractBytecode: SampleLibBytecode, }, + BlobLib: { + contractAbi: BlobLibAbi, + contractBytecode: BlobLibBytecode, + }, + HeaderLib: { + contractAbi: HeaderLibAbi, + contractBytecode: HeaderLibBytecode, + }, + MerkleLib: { + contractAbi: MerkleLibAbi, + contractBytecode: MerkleLibBytecode, + }, }, }, }, diff --git a/yarn-project/l1-artifacts/scripts/generate-artifacts.sh b/yarn-project/l1-artifacts/scripts/generate-artifacts.sh index c07d79b7c0c..a6710a0cfe7 100755 --- a/yarn-project/l1-artifacts/scripts/generate-artifacts.sh +++ b/yarn-project/l1-artifacts/scripts/generate-artifacts.sh @@ -29,6 +29,9 @@ CONTRACTS=( "l1-contracts:Governance" "l1-contracts:NewGovernanceProposerPayload" "l1-contracts:SampleLib" + "l1-contracts:BlobLib" + "l1-contracts:HeaderLib" + "l1-contracts:MerkleLib" ) From fc03321fafcdc16317c3e875c44048d33abf93d0 Mon Sep 17 00:00:00 2001 From: MirandaWood Date: Sat, 30 Nov 2024 15:17:10 +0000 Subject: [PATCH 08/39] feat: integrate private logs, add blob oracle issue num, regen fixtures, constants --- .../src/core/libraries/ConstantsGen.sol | 9 +- l1-contracts/test/fixtures/empty_block_1.json | 16 +-- l1-contracts/test/fixtures/empty_block_2.json | 18 +-- l1-contracts/test/fixtures/mixed_block_1.json | 22 ++-- l1-contracts/test/fixtures/mixed_block_2.json | 24 ++-- .../crates/blob/src/mock_blob_oracle.nr | 2 +- .../src/base/private_base_rollup.nr | 98 ++++++++------- .../rollup-lib/src/base/public_base_rollup.nr | 92 ++++++++------ .../block_root/block_root_rollup_inputs.nr | 2 +- .../crates/rollup-lib/src/block_root/mod.nr | 2 +- .../crates/rollup-lib/src/components.nr | 115 +++++++----------- .../crates/types/src/constants.nr | 7 +- .../archiver/src/archiver/data_retrieval.ts | 8 +- .../bb-prover/src/test/test_circuit_prover.ts | 2 +- yarn-project/circuit-types/src/body.test.ts | 10 +- yarn-project/circuit-types/src/body.ts | 24 +--- .../circuit-types/src/tx_effect.test.ts | 38 ++---- yarn-project/circuit-types/src/tx_effect.ts | 73 ++++------- yarn-project/circuits.js/src/constants.gen.ts | 9 +- .../noir-protocol-circuits-types/src/index.ts | 17 ++- 20 files changed, 252 insertions(+), 336 deletions(-) diff --git a/l1-contracts/src/core/libraries/ConstantsGen.sol b/l1-contracts/src/core/libraries/ConstantsGen.sol index 748f51a9e79..6201ed1165c 100644 --- a/l1-contracts/src/core/libraries/ConstantsGen.sol +++ b/l1-contracts/src/core/libraries/ConstantsGen.sol @@ -205,7 +205,7 @@ library Constants { uint256 internal constant TOTAL_MANA_USED_LENGTH = 1; uint256 internal constant HEADER_LENGTH = 25; uint256 internal constant HEADER_LENGTH_BYTES = 648; - uint256 internal constant PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 491; + uint256 internal constant PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 731; uint256 internal constant PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 867; uint256 internal constant PRIVATE_CONTEXT_INPUTS_LENGTH = 38; uint256 internal constant FEE_RECIPIENT_LENGTH = 2; @@ -283,10 +283,9 @@ library Constants { uint256 internal constant NULLIFIERS_PREFIX = 4; uint256 internal constant L2_L1_MSGS_PREFIX = 5; uint256 internal constant PUBLIC_DATA_UPDATE_REQUESTS_PREFIX = 6; - uint256 internal constant NOTE_ENCRYPTED_LOGS_PREFIX = 7; - uint256 internal constant ENCRYPTED_LOGS_PREFIX = 8; - uint256 internal constant UNENCRYPTED_LOGS_PREFIX = 9; - uint256 internal constant CONTRACT_CLASS_LOGS_PREFIX = 10; + uint256 internal constant PRIVATE_LOGS_PREFIX = 7; + uint256 internal constant UNENCRYPTED_LOGS_PREFIX = 8; + uint256 internal constant CONTRACT_CLASS_LOGS_PREFIX = 9; uint256 internal constant PROOF_TYPE_PLONK = 0; uint256 internal constant PROOF_TYPE_HONK = 1; uint256 internal constant PROOF_TYPE_OINK = 2; diff --git a/l1-contracts/test/fixtures/empty_block_1.json b/l1-contracts/test/fixtures/empty_block_1.json index bdb1e2ec474..b98cd861f0f 100644 --- a/l1-contracts/test/fixtures/empty_block_1.json +++ b/l1-contracts/test/fixtures/empty_block_1.json @@ -8,8 +8,8 @@ "l2ToL1Messages": [] }, "block": { - "archive": "0x03045313de9acdebd8022d977fb2adb7392647594a313779e85b5d4769f197dd", - "blockHash": "0x173c64317cbbac27e05d358b9fc86c19338cf4fbf48255265b0dc988f8e56e29", + "archive": "0x2e558c94bd1a3d8512eaf74c297f8a5b28ca14c79636a9f81e0538804b21ff6c", + "blockHash": "0x20e7264407d9dad46301cd1ac2720619fa899e0dc07e2aeaaf1f58a9fe0d9b42", "body": "0x00000000", "decodedHeader": { "contentCommitment": { @@ -22,13 +22,13 @@ "blockNumber": 1, "slotNumber": "0x0000000000000000000000000000000000000000000000000000000000000012", "chainId": 31337, - "timestamp": 1732759415, + "timestamp": 1732961424, "version": 1, - "coinbase": "0x94eaefaa0efecae32a0511a2ed0fb15b84f4de3d", - "feeRecipient": "0x0a437721cc9f47cd1fad72dea39afdb76894539e33a1e1dce690ac676d81c2fa", + "coinbase": "0x2cf4a1c62581a88edae4234f887da6b9551ab171", + "feeRecipient": "0x0339e43debc9c5093c6862f6dea7ff66fcd7f45c01f87dfa61f802d30530ea4e", "gasFees": { "feePerDaGas": 0, - "feePerL2Gas": 54153598980 + "feePerL2Gas": 54153588500 } }, "totalFees": "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -58,8 +58,8 @@ } } }, - "header": "0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae000000010000000000000000000000000000000000000000000000000000000000000002001cedbd7ea5309ef9d1d159209835409bf41b6b1802597a52fa70cc82e934d900089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6000000101fd848aa69e1633722fe249a5b7f53b094f1c9cef9f5c694b073fd1cc5850dfb000000800c499b373a1f0fe1b510a63563546d2d39e206895056a5af0143c5f30d6390730000010023c08a6b1297210c5e24c76b9a936250a1ce2721576c26ea797c7ec35f9e46a9000000800000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000006747cf7794eaefaa0efecae32a0511a2ed0fb15b84f4de3d0a437721cc9f47cd1fad72dea39afdb76894539e33a1e1dce690ac676d81c2fa00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c9bce580400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "publicInputsHash": "0x008269e39b10daf0851f6ac81df8476f8d60b53fb8a0002de0182c7e11545e5b", + "header": "0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae000000010000000000000000000000000000000000000000000000000000000000000002001cedbd7ea5309ef9d1d159209835409bf41b6b1802597a52fa70cc82e934d900089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6000000101fd848aa69e1633722fe249a5b7f53b094f1c9cef9f5c694b073fd1cc5850dfb000000800c499b373a1f0fe1b510a63563546d2d39e206895056a5af0143c5f30d6390730000010023c08a6b1297210c5e24c76b9a936250a1ce2721576c26ea797c7ec35f9e46a9000000800000000000000000000000000000000000000000000000000000000000007a6900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000674ae4902cf4a1c62581a88edae4234f887da6b9551ab1710339e43debc9c5093c6862f6dea7ff66fcd7f45c01f87dfa61f802d30530ea4e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c9bce2f1400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "publicInputsHash": "0x005838c184fb9da5be8d12382acd314219bbf72275c7242738bcb5c334f509ef", "blobInputs": "0x01010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c4440140ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb0000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "numTxs": 0 } diff --git a/l1-contracts/test/fixtures/empty_block_2.json b/l1-contracts/test/fixtures/empty_block_2.json index bad027f0d1b..7b99e1d9b7c 100644 --- a/l1-contracts/test/fixtures/empty_block_2.json +++ b/l1-contracts/test/fixtures/empty_block_2.json @@ -8,8 +8,8 @@ "l2ToL1Messages": [] }, "block": { - "archive": "0x2454519574be7eba54e456596b3bb51d478360ad71813550e30c0e0f2d427052", - "blockHash": "0x04246a2ff3b6e6c2347af3e3846bcfaaad8486301b2a89dbbe8e1654bc066144", + "archive": "0x02d998d1be2b2024b668f2581679e28a526abf15d7375aa2e7b969766f6b4150", + "blockHash": "0x29787560359b663bf91fd4877518fa25dbb2423dd20290dd15577c1ea8598d6f", "body": "0x00000000", "decodedHeader": { "contentCommitment": { @@ -22,20 +22,20 @@ "blockNumber": 2, "slotNumber": "0x0000000000000000000000000000000000000000000000000000000000000013", "chainId": 31337, - "timestamp": 1732759439, + "timestamp": 1732961448, "version": 1, - "coinbase": "0x94eaefaa0efecae32a0511a2ed0fb15b84f4de3d", - "feeRecipient": "0x0a437721cc9f47cd1fad72dea39afdb76894539e33a1e1dce690ac676d81c2fa", + "coinbase": "0x2cf4a1c62581a88edae4234f887da6b9551ab171", + "feeRecipient": "0x0339e43debc9c5093c6862f6dea7ff66fcd7f45c01f87dfa61f802d30530ea4e", "gasFees": { "feePerDaGas": 0, - "feePerL2Gas": 54153598980 + "feePerL2Gas": 54153588500 } }, "totalFees": "0x0000000000000000000000000000000000000000000000000000000000000000", "totalManaUsed": "0x0000000000000000000000000000000000000000000000000000000000000000", "lastArchive": { "nextAvailableLeafIndex": 2, - "root": "0x03045313de9acdebd8022d977fb2adb7392647594a313779e85b5d4769f197dd" + "root": "0x2e558c94bd1a3d8512eaf74c297f8a5b28ca14c79636a9f81e0538804b21ff6c" }, "stateReference": { "l1ToL2MessageTree": { @@ -58,8 +58,8 @@ } } }, - "header": "0x03045313de9acdebd8022d977fb2adb7392647594a313779e85b5d4769f197dd000000020000000000000000000000000000000000000000000000000000000000000002001cedbd7ea5309ef9d1d159209835409bf41b6b1802597a52fa70cc82e934d900089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6000000201fd848aa69e1633722fe249a5b7f53b094f1c9cef9f5c694b073fd1cc5850dfb000001000c499b373a1f0fe1b510a63563546d2d39e206895056a5af0143c5f30d6390730000018023c08a6b1297210c5e24c76b9a936250a1ce2721576c26ea797c7ec35f9e46a9000000800000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000013000000000000000000000000000000000000000000000000000000006747cf8f94eaefaa0efecae32a0511a2ed0fb15b84f4de3d0a437721cc9f47cd1fad72dea39afdb76894539e33a1e1dce690ac676d81c2fa00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c9bce580400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "publicInputsHash": "0x003095d5b1a2dba66ec9f4acc30b371bd7e0a10d4d7b6d47fde328df74650050", + "header": "0x2e558c94bd1a3d8512eaf74c297f8a5b28ca14c79636a9f81e0538804b21ff6c000000020000000000000000000000000000000000000000000000000000000000000002001cedbd7ea5309ef9d1d159209835409bf41b6b1802597a52fa70cc82e934d900089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6000000201fd848aa69e1633722fe249a5b7f53b094f1c9cef9f5c694b073fd1cc5850dfb000001000c499b373a1f0fe1b510a63563546d2d39e206895056a5af0143c5f30d6390730000018023c08a6b1297210c5e24c76b9a936250a1ce2721576c26ea797c7ec35f9e46a9000000800000000000000000000000000000000000000000000000000000000000007a6900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001300000000000000000000000000000000000000000000000000000000674ae4a82cf4a1c62581a88edae4234f887da6b9551ab1710339e43debc9c5093c6862f6dea7ff66fcd7f45c01f87dfa61f802d30530ea4e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c9bce2f1400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "publicInputsHash": "0x001a7690dc1e32dee9ec361537f5cf2034e9c79310bffe596a6d67e4784134bb", "blobInputs": "0x01010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c4440140ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb0000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "numTxs": 0 } diff --git a/l1-contracts/test/fixtures/mixed_block_1.json b/l1-contracts/test/fixtures/mixed_block_1.json index 4c7c69a0e94..491663b4ee0 100644 --- a/l1-contracts/test/fixtures/mixed_block_1.json +++ b/l1-contracts/test/fixtures/mixed_block_1.json @@ -58,12 +58,12 @@ ] }, "block": { - "archive": "0x2be14b8c75041b535481e613d5c4912e4cbea72a73ead54b45e797431fc50437", - "blockHash": "0x2de7f313f1a89fbcd8ac154a9db0274a477bc37a093c991e6cd6c43ea74675f7", - "body": "0x00000004000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000041000000000000000000000000000000000000000000000000000000000000004100100000000000000000000000000000000000000000000000000000000000410020000000000000000000000000000000000000000000000000000000000041003000000000000000000000000000000000000000000000000000000000004100400000000000000000000000000000000000000000000000000000000000410050000000000000000000000000000000000000000000000000000000000041006000000000000000000000000000000000000000000000000000000000004100700000000000000000000000000000000000000000000000000000000000410080000000000000000000000000000000000000000000000000000000000041009000000000000000000000000000000000000000000000000000000000004100a000000000000000000000000000000000000000000000000000000000004100b000000000000000000000000000000000000000000000000000000000004100c000000000000000000000000000000000000000000000000000000000004100d000000000000000000000000000000000000000000000000000000000004100e000000000000000000000000000000000000000000000000000000000004100f0000000000000000000000000000000000000000000000000000000000041010000000000000000000000000000000000000000000000000000000000004101100000000000000000000000000000000000000000000000000000000000410120000000000000000000000000000000000000000000000000000000000041013000000000000000000000000000000000000000000000000000000000004101400000000000000000000000000000000000000000000000000000000000410150000000000000000000000000000000000000000000000000000000000041016000000000000000000000000000000000000000000000000000000000004101700000000000000000000000000000000000000000000000000000000000410180000000000000000000000000000000000000000000000000000000000041019000000000000000000000000000000000000000000000000000000000004101a000000000000000000000000000000000000000000000000000000000004101b000000000000000000000000000000000000000000000000000000000004101c000000000000000000000000000000000000000000000000000000000004101d000000000000000000000000000000000000000000000000000000000004101e000000000000000000000000000000000000000000000000000000000004101f0000000000000000000000000000000000000000000000000000000000041020000000000000000000000000000000000000000000000000000000000004102100000000000000000000000000000000000000000000000000000000000410220000000000000000000000000000000000000000000000000000000000041023000000000000000000000000000000000000000000000000000000000004102400000000000000000000000000000000000000000000000000000000000410250000000000000000000000000000000000000000000000000000000000041026000000000000000000000000000000000000000000000000000000000004102700000000000000000000000000000000000000000000000000000000000410280000000000000000000000000000000000000000000000000000000000041029000000000000000000000000000000000000000000000000000000000004102a000000000000000000000000000000000000000000000000000000000004102b000000000000000000000000000000000000000000000000000000000004102c000000000000000000000000000000000000000000000000000000000004102d000000000000000000000000000000000000000000000000000000000004102e000000000000000000000000000000000000000000000000000000000004102f0000000000000000000000000000000000000000000000000000000000041030000000000000000000000000000000000000000000000000000000000004103100000000000000000000000000000000000000000000000000000000000410320000000000000000000000000000000000000000000000000000000000041033000000000000000000000000000000000000000000000000000000000004103400000000000000000000000000000000000000000000000000000000000410350000000000000000000000000000000000000000000000000000000000041036000000000000000000000000000000000000000000000000000000000004103700000000000000000000000000000000000000000000000000000000000410380000000000000000000000000000000000000000000000000000000000041039000000000000000000000000000000000000000000000000000000000004103a000000000000000000000000000000000000000000000000000000000004103b000000000000000000000000000000000000000000000000000000000004103c000000000000000000000000000000000000000000000000000000000004103d000000000000000000000000000000000000000000000000000000000004103e000000000000000000000000000000000000000000000000000000000004103f3f0000000000000000000000000000000000000000000000000000000000041100000000000000000000000000000000000000000000000000000000000004110100000000000000000000000000000000000000000000000000000000000411020000000000000000000000000000000000000000000000000000000000041103000000000000000000000000000000000000000000000000000000000004110400000000000000000000000000000000000000000000000000000000000411050000000000000000000000000000000000000000000000000000000000041106000000000000000000000000000000000000000000000000000000000004110700000000000000000000000000000000000000000000000000000000000411080000000000000000000000000000000000000000000000000000000000041109000000000000000000000000000000000000000000000000000000000004110a000000000000000000000000000000000000000000000000000000000004110b000000000000000000000000000000000000000000000000000000000004110c000000000000000000000000000000000000000000000000000000000004110d000000000000000000000000000000000000000000000000000000000004110e000000000000000000000000000000000000000000000000000000000004110f0000000000000000000000000000000000000000000000000000000000041110000000000000000000000000000000000000000000000000000000000004111100000000000000000000000000000000000000000000000000000000000411120000000000000000000000000000000000000000000000000000000000041113000000000000000000000000000000000000000000000000000000000004111400000000000000000000000000000000000000000000000000000000000411150000000000000000000000000000000000000000000000000000000000041116000000000000000000000000000000000000000000000000000000000004111700000000000000000000000000000000000000000000000000000000000411180000000000000000000000000000000000000000000000000000000000041119000000000000000000000000000000000000000000000000000000000004111a000000000000000000000000000000000000000000000000000000000004111b000000000000000000000000000000000000000000000000000000000004111c000000000000000000000000000000000000000000000000000000000004111d000000000000000000000000000000000000000000000000000000000004111e000000000000000000000000000000000000000000000000000000000004111f0000000000000000000000000000000000000000000000000000000000041120000000000000000000000000000000000000000000000000000000000004112100000000000000000000000000000000000000000000000000000000000411220000000000000000000000000000000000000000000000000000000000041123000000000000000000000000000000000000000000000000000000000004112400000000000000000000000000000000000000000000000000000000000411250000000000000000000000000000000000000000000000000000000000041126000000000000000000000000000000000000000000000000000000000004112700000000000000000000000000000000000000000000000000000000000411280000000000000000000000000000000000000000000000000000000000041129000000000000000000000000000000000000000000000000000000000004112a000000000000000000000000000000000000000000000000000000000004112b000000000000000000000000000000000000000000000000000000000004112c000000000000000000000000000000000000000000000000000000000004112d000000000000000000000000000000000000000000000000000000000004112e000000000000000000000000000000000000000000000000000000000004112f0000000000000000000000000000000000000000000000000000000000041130000000000000000000000000000000000000000000000000000000000004113100000000000000000000000000000000000000000000000000000000000411320000000000000000000000000000000000000000000000000000000000041133000000000000000000000000000000000000000000000000000000000004113400000000000000000000000000000000000000000000000000000000000411350000000000000000000000000000000000000000000000000000000000041136000000000000000000000000000000000000000000000000000000000004113700000000000000000000000000000000000000000000000000000000000411380000000000000000000000000000000000000000000000000000000000041139000000000000000000000000000000000000000000000000000000000004113a000000000000000000000000000000000000000000000000000000000004113b000000000000000000000000000000000000000000000000000000000004113c000000000000000000000000000000000000000000000000000000000004113d000000000000000000000000000000000000000000000000000000000004113e080097a6ec570e9b8e257647c9c74c5ad3edc57ca5ef6ae44d80b3c30d1d99b9b300ce48ec41d1edde0066fab553a456ae2f380d14fa8f956af1fb0217513a598900619ff12eaf97f63aa2a2311de3b6571a7b880a5247cb33b6a74787bf3f9bd5007854a2fad4e1801c6404394bf3d37ab08c135ea38a1974242e39a21273685f000f55796e72957a819e68a22e8602d73c3ba3718a5a4bd92b80b0aa444b182a00788b6e9874fb040ee679a7fae257190099a605229b948334e54a57739535d4004f1658ee3c1a91627e5d72f5a731f0796299df82ab41e72c88eee0c82fa85e003ee802add96628c693ed71afa9908138ba5a6fbf0a5f29a9c74e4e42aba6713f0000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000000000000004200a0000000000000000000000000000000000000000000000000000000000042001000000000000000000000000000000000000000000000000000000000004200b0000000000000000000000000000000000000000000000000000000000042002000000000000000000000000000000000000000000000000000000000004200c0000000000000000000000000000000000000000000000000000000000042003000000000000000000000000000000000000000000000000000000000004200d0000000000000000000000000000000000000000000000000000000000042004000000000000000000000000000000000000000000000000000000000004200e0000000000000000000000000000000000000000000000000000000000042005000000000000000000000000000000000000000000000000000000000004200f00000000000000000000000000000000000000000000000000000000000420060000000000000000000000000000000000000000000000000000000000042010000000000000000000000000000000000000000000000000000000000004200700000000000000000000000000000000000000000000000000000000000420110000000000000000000000000000000000000000000000000000000000042008000000000000000000000000000000000000000000000000000000000004201200000000000000000000000000000000000000000000000000000000000420090000000000000000000000000000000000000000000000000000000000042013000000000000000000000000000000000000000000000000000000000004200a0000000000000000000000000000000000000000000000000000000000042014000000000000000000000000000000000000000000000000000000000004200b0000000000000000000000000000000000000000000000000000000000042015000000000000000000000000000000000000000000000000000000000004200c0000000000000000000000000000000000000000000000000000000000042016000000000000000000000000000000000000000000000000000000000004200d0000000000000000000000000000000000000000000000000000000000042017000000000000000000000000000000000000000000000000000000000004200e0000000000000000000000000000000000000000000000000000000000042018000000000000000000000000000000000000000000000000000000000004200f00000000000000000000000000000000000000000000000000000000000420190000000000000000000000000000000000000000000000000000000000042010000000000000000000000000000000000000000000000000000000000004201a0000000000000000000000000000000000000000000000000000000000042011000000000000000000000000000000000000000000000000000000000004201b0000000000000000000000000000000000000000000000000000000000042012000000000000000000000000000000000000000000000000000000000004201c0000000000000000000000000000000000000000000000000000000000042013000000000000000000000000000000000000000000000000000000000004201d0000000000000000000000000000000000000000000000000000000000042014000000000000000000000000000000000000000000000000000000000004201e0000000000000000000000000000000000000000000000000000000000042015000000000000000000000000000000000000000000000000000000000004201f00000000000000000000000000000000000000000000000000000000000420160000000000000000000000000000000000000000000000000000000000042020000000000000000000000000000000000000000000000000000000000004201700000000000000000000000000000000000000000000000000000000000420210000000000000000000000000000000000000000000000000000000000042018000000000000000000000000000000000000000000000000000000000004202200000000000000000000000000000000000000000000000000000000000420190000000000000000000000000000000000000000000000000000000000042023000000000000000000000000000000000000000000000000000000000004201a0000000000000000000000000000000000000000000000000000000000042024000000000000000000000000000000000000000000000000000000000004201b0000000000000000000000000000000000000000000000000000000000042025000000000000000000000000000000000000000000000000000000000004201c0000000000000000000000000000000000000000000000000000000000042026000000000000000000000000000000000000000000000000000000000004201d0000000000000000000000000000000000000000000000000000000000042027000000000000000000000000000000000000000000000000000000000004201e0000000000000000000000000000000000000000000000000000000000042028000000000000000000000000000000000000000000000000000000000004201f00000000000000000000000000000000000000000000000000000000000420290000000000000000000000000000000000000000000000000000000000042020000000000000000000000000000000000000000000000000000000000004202a0000000000000000000000000000000000000000000000000000000000042021000000000000000000000000000000000000000000000000000000000004202b0000000000000000000000000000000000000000000000000000000000042022000000000000000000000000000000000000000000000000000000000004202c0000000000000000000000000000000000000000000000000000000000042023000000000000000000000000000000000000000000000000000000000004202d0000000000000000000000000000000000000000000000000000000000042024000000000000000000000000000000000000000000000000000000000004202e0000000000000000000000000000000000000000000000000000000000042025000000000000000000000000000000000000000000000000000000000004202f00000000000000000000000000000000000000000000000000000000000420260000000000000000000000000000000000000000000000000000000000042030000000000000000000000000000000000000000000000000000000000004202700000000000000000000000000000000000000000000000000000000000420310000000000000000000000000000000000000000000000000000000000042028000000000000000000000000000000000000000000000000000000000004203200000000000000000000000000000000000000000000000000000000000420290000000000000000000000000000000000000000000000000000000000042033000000000000000000000000000000000000000000000000000000000004202a0000000000000000000000000000000000000000000000000000000000042034000000000000000000000000000000000000000000000000000000000004202b0000000000000000000000000000000000000000000000000000000000042035000000000000000000000000000000000000000000000000000000000004202c0000000000000000000000000000000000000000000000000000000000042036000000000000000000000000000000000000000000000000000000000004202d0000000000000000000000000000000000000000000000000000000000042037000000000000000000000000000000000000000000000000000000000004202e0000000000000000000000000000000000000000000000000000000000042038000000000000000000000000000000000000000000000000000000000004202f00000000000000000000000000000000000000000000000000000000000420390000000000000000000000000000000000000000000000000000000000042030000000000000000000000000000000000000000000000000000000000004203a0000000000000000000000000000000000000000000000000000000000042031000000000000000000000000000000000000000000000000000000000004203b0000000000000000000000000000000000000000000000000000000000042032000000000000000000000000000000000000000000000000000000000004203c0000000000000000000000000000000000000000000000000000000000042033000000000000000000000000000000000000000000000000000000000004203d0000000000000000000000000000000000000000000000000000000000042034000000000000000000000000000000000000000000000000000000000004203e0000000000000000000000000000000000000000000000000000000000042035000000000000000000000000000000000000000000000000000000000004203f00000000000000000000000000000000000000000000000000000000000420360000000000000000000000000000000000000000000000000000000000042040000000000000000000000000000000000000000000000000000000000004203700000000000000000000000000000000000000000000000000000000000420410000000000000000000000000000000000000000000000000000000000042038000000000000000000000000000000000000000000000000000000000004204200000000000000000000000000000000000000000000000000000000000420390000000000000000000000000000000000000000000000000000000000042043000000000000000000000000000000000000000000000000000000000004203a0000000000000000000000000000000000000000000000000000000000042044000000000000000000000000000000000000000000000000000000000004203b0000000000000000000000000000000000000000000000000000000000042045000000000000000000000000000000000000000000000000000000000004203c0000000000000000000000000000000000000000000000000000000000042046000000000000000000000000000000000000000000000000000000000004203d0000000000000000000000000000000000000000000000000000000000042047000000000000000000000000000000000000000000000000000000000004203e0000000000000000000000000000000000000000000000000000000000042048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000081000000000000000000000000000000000000000000000000000000000000008100100000000000000000000000000000000000000000000000000000000000810020000000000000000000000000000000000000000000000000000000000081003000000000000000000000000000000000000000000000000000000000008100400000000000000000000000000000000000000000000000000000000000810050000000000000000000000000000000000000000000000000000000000081006000000000000000000000000000000000000000000000000000000000008100700000000000000000000000000000000000000000000000000000000000810080000000000000000000000000000000000000000000000000000000000081009000000000000000000000000000000000000000000000000000000000008100a000000000000000000000000000000000000000000000000000000000008100b000000000000000000000000000000000000000000000000000000000008100c000000000000000000000000000000000000000000000000000000000008100d000000000000000000000000000000000000000000000000000000000008100e000000000000000000000000000000000000000000000000000000000008100f0000000000000000000000000000000000000000000000000000000000081010000000000000000000000000000000000000000000000000000000000008101100000000000000000000000000000000000000000000000000000000000810120000000000000000000000000000000000000000000000000000000000081013000000000000000000000000000000000000000000000000000000000008101400000000000000000000000000000000000000000000000000000000000810150000000000000000000000000000000000000000000000000000000000081016000000000000000000000000000000000000000000000000000000000008101700000000000000000000000000000000000000000000000000000000000810180000000000000000000000000000000000000000000000000000000000081019000000000000000000000000000000000000000000000000000000000008101a000000000000000000000000000000000000000000000000000000000008101b000000000000000000000000000000000000000000000000000000000008101c000000000000000000000000000000000000000000000000000000000008101d000000000000000000000000000000000000000000000000000000000008101e000000000000000000000000000000000000000000000000000000000008101f0000000000000000000000000000000000000000000000000000000000081020000000000000000000000000000000000000000000000000000000000008102100000000000000000000000000000000000000000000000000000000000810220000000000000000000000000000000000000000000000000000000000081023000000000000000000000000000000000000000000000000000000000008102400000000000000000000000000000000000000000000000000000000000810250000000000000000000000000000000000000000000000000000000000081026000000000000000000000000000000000000000000000000000000000008102700000000000000000000000000000000000000000000000000000000000810280000000000000000000000000000000000000000000000000000000000081029000000000000000000000000000000000000000000000000000000000008102a000000000000000000000000000000000000000000000000000000000008102b000000000000000000000000000000000000000000000000000000000008102c000000000000000000000000000000000000000000000000000000000008102d000000000000000000000000000000000000000000000000000000000008102e000000000000000000000000000000000000000000000000000000000008102f0000000000000000000000000000000000000000000000000000000000081030000000000000000000000000000000000000000000000000000000000008103100000000000000000000000000000000000000000000000000000000000810320000000000000000000000000000000000000000000000000000000000081033000000000000000000000000000000000000000000000000000000000008103400000000000000000000000000000000000000000000000000000000000810350000000000000000000000000000000000000000000000000000000000081036000000000000000000000000000000000000000000000000000000000008103700000000000000000000000000000000000000000000000000000000000810380000000000000000000000000000000000000000000000000000000000081039000000000000000000000000000000000000000000000000000000000008103a000000000000000000000000000000000000000000000000000000000008103b000000000000000000000000000000000000000000000000000000000008103c000000000000000000000000000000000000000000000000000000000008103d000000000000000000000000000000000000000000000000000000000008103e000000000000000000000000000000000000000000000000000000000008103f3f0000000000000000000000000000000000000000000000000000000000081100000000000000000000000000000000000000000000000000000000000008110100000000000000000000000000000000000000000000000000000000000811020000000000000000000000000000000000000000000000000000000000081103000000000000000000000000000000000000000000000000000000000008110400000000000000000000000000000000000000000000000000000000000811050000000000000000000000000000000000000000000000000000000000081106000000000000000000000000000000000000000000000000000000000008110700000000000000000000000000000000000000000000000000000000000811080000000000000000000000000000000000000000000000000000000000081109000000000000000000000000000000000000000000000000000000000008110a000000000000000000000000000000000000000000000000000000000008110b000000000000000000000000000000000000000000000000000000000008110c000000000000000000000000000000000000000000000000000000000008110d000000000000000000000000000000000000000000000000000000000008110e000000000000000000000000000000000000000000000000000000000008110f0000000000000000000000000000000000000000000000000000000000081110000000000000000000000000000000000000000000000000000000000008111100000000000000000000000000000000000000000000000000000000000811120000000000000000000000000000000000000000000000000000000000081113000000000000000000000000000000000000000000000000000000000008111400000000000000000000000000000000000000000000000000000000000811150000000000000000000000000000000000000000000000000000000000081116000000000000000000000000000000000000000000000000000000000008111700000000000000000000000000000000000000000000000000000000000811180000000000000000000000000000000000000000000000000000000000081119000000000000000000000000000000000000000000000000000000000008111a000000000000000000000000000000000000000000000000000000000008111b000000000000000000000000000000000000000000000000000000000008111c000000000000000000000000000000000000000000000000000000000008111d000000000000000000000000000000000000000000000000000000000008111e000000000000000000000000000000000000000000000000000000000008111f0000000000000000000000000000000000000000000000000000000000081120000000000000000000000000000000000000000000000000000000000008112100000000000000000000000000000000000000000000000000000000000811220000000000000000000000000000000000000000000000000000000000081123000000000000000000000000000000000000000000000000000000000008112400000000000000000000000000000000000000000000000000000000000811250000000000000000000000000000000000000000000000000000000000081126000000000000000000000000000000000000000000000000000000000008112700000000000000000000000000000000000000000000000000000000000811280000000000000000000000000000000000000000000000000000000000081129000000000000000000000000000000000000000000000000000000000008112a000000000000000000000000000000000000000000000000000000000008112b000000000000000000000000000000000000000000000000000000000008112c000000000000000000000000000000000000000000000000000000000008112d000000000000000000000000000000000000000000000000000000000008112e000000000000000000000000000000000000000000000000000000000008112f0000000000000000000000000000000000000000000000000000000000081130000000000000000000000000000000000000000000000000000000000008113100000000000000000000000000000000000000000000000000000000000811320000000000000000000000000000000000000000000000000000000000081133000000000000000000000000000000000000000000000000000000000008113400000000000000000000000000000000000000000000000000000000000811350000000000000000000000000000000000000000000000000000000000081136000000000000000000000000000000000000000000000000000000000008113700000000000000000000000000000000000000000000000000000000000811380000000000000000000000000000000000000000000000000000000000081139000000000000000000000000000000000000000000000000000000000008113a000000000000000000000000000000000000000000000000000000000008113b000000000000000000000000000000000000000000000000000000000008113c000000000000000000000000000000000000000000000000000000000008113d000000000000000000000000000000000000000000000000000000000008113e08003c0472260790b0bdfb8ae4dc4d437e7686b73643f2198970d84e1059a5f13500bfd46275a318e438726ff2765ae154b63ab8a0daebcbed668a5f58a0e63dc1007906b9418dc758c6b4f8454c69baa48b7889b6b511d707abe8e2cb8f7c397300aeb60c4d65a44f122e58bf9565dfe2024b3ae654d5cf2e47ecb035d53c927000bf82e8cda20345f37bbb1de3932172324b57f0b98be483392697b168e3bba8000fb4bbad884ef30edf68e45a6cf2733fcf50310c69d7c1432b29af2c0aa8040023e1622d27fee3b4a40ab975ae0eb2e31619ef3dc76eb858f7fddb6a056131004689cd7007daf98dd3218b839b8e6a29f957154347b391fdb376bd0b344be23f0000000000000000000000000000000000000000000000000000000000082000000000000000000000000000000000000000000000000000000000000008200a0000000000000000000000000000000000000000000000000000000000082001000000000000000000000000000000000000000000000000000000000008200b0000000000000000000000000000000000000000000000000000000000082002000000000000000000000000000000000000000000000000000000000008200c0000000000000000000000000000000000000000000000000000000000082003000000000000000000000000000000000000000000000000000000000008200d0000000000000000000000000000000000000000000000000000000000082004000000000000000000000000000000000000000000000000000000000008200e0000000000000000000000000000000000000000000000000000000000082005000000000000000000000000000000000000000000000000000000000008200f00000000000000000000000000000000000000000000000000000000000820060000000000000000000000000000000000000000000000000000000000082010000000000000000000000000000000000000000000000000000000000008200700000000000000000000000000000000000000000000000000000000000820110000000000000000000000000000000000000000000000000000000000082008000000000000000000000000000000000000000000000000000000000008201200000000000000000000000000000000000000000000000000000000000820090000000000000000000000000000000000000000000000000000000000082013000000000000000000000000000000000000000000000000000000000008200a0000000000000000000000000000000000000000000000000000000000082014000000000000000000000000000000000000000000000000000000000008200b0000000000000000000000000000000000000000000000000000000000082015000000000000000000000000000000000000000000000000000000000008200c0000000000000000000000000000000000000000000000000000000000082016000000000000000000000000000000000000000000000000000000000008200d0000000000000000000000000000000000000000000000000000000000082017000000000000000000000000000000000000000000000000000000000008200e0000000000000000000000000000000000000000000000000000000000082018000000000000000000000000000000000000000000000000000000000008200f00000000000000000000000000000000000000000000000000000000000820190000000000000000000000000000000000000000000000000000000000082010000000000000000000000000000000000000000000000000000000000008201a0000000000000000000000000000000000000000000000000000000000082011000000000000000000000000000000000000000000000000000000000008201b0000000000000000000000000000000000000000000000000000000000082012000000000000000000000000000000000000000000000000000000000008201c0000000000000000000000000000000000000000000000000000000000082013000000000000000000000000000000000000000000000000000000000008201d0000000000000000000000000000000000000000000000000000000000082014000000000000000000000000000000000000000000000000000000000008201e0000000000000000000000000000000000000000000000000000000000082015000000000000000000000000000000000000000000000000000000000008201f00000000000000000000000000000000000000000000000000000000000820160000000000000000000000000000000000000000000000000000000000082020000000000000000000000000000000000000000000000000000000000008201700000000000000000000000000000000000000000000000000000000000820210000000000000000000000000000000000000000000000000000000000082018000000000000000000000000000000000000000000000000000000000008202200000000000000000000000000000000000000000000000000000000000820190000000000000000000000000000000000000000000000000000000000082023000000000000000000000000000000000000000000000000000000000008201a0000000000000000000000000000000000000000000000000000000000082024000000000000000000000000000000000000000000000000000000000008201b0000000000000000000000000000000000000000000000000000000000082025000000000000000000000000000000000000000000000000000000000008201c0000000000000000000000000000000000000000000000000000000000082026000000000000000000000000000000000000000000000000000000000008201d0000000000000000000000000000000000000000000000000000000000082027000000000000000000000000000000000000000000000000000000000008201e0000000000000000000000000000000000000000000000000000000000082028000000000000000000000000000000000000000000000000000000000008201f00000000000000000000000000000000000000000000000000000000000820290000000000000000000000000000000000000000000000000000000000082020000000000000000000000000000000000000000000000000000000000008202a0000000000000000000000000000000000000000000000000000000000082021000000000000000000000000000000000000000000000000000000000008202b0000000000000000000000000000000000000000000000000000000000082022000000000000000000000000000000000000000000000000000000000008202c0000000000000000000000000000000000000000000000000000000000082023000000000000000000000000000000000000000000000000000000000008202d0000000000000000000000000000000000000000000000000000000000082024000000000000000000000000000000000000000000000000000000000008202e0000000000000000000000000000000000000000000000000000000000082025000000000000000000000000000000000000000000000000000000000008202f00000000000000000000000000000000000000000000000000000000000820260000000000000000000000000000000000000000000000000000000000082030000000000000000000000000000000000000000000000000000000000008202700000000000000000000000000000000000000000000000000000000000820310000000000000000000000000000000000000000000000000000000000082028000000000000000000000000000000000000000000000000000000000008203200000000000000000000000000000000000000000000000000000000000820290000000000000000000000000000000000000000000000000000000000082033000000000000000000000000000000000000000000000000000000000008202a0000000000000000000000000000000000000000000000000000000000082034000000000000000000000000000000000000000000000000000000000008202b0000000000000000000000000000000000000000000000000000000000082035000000000000000000000000000000000000000000000000000000000008202c0000000000000000000000000000000000000000000000000000000000082036000000000000000000000000000000000000000000000000000000000008202d0000000000000000000000000000000000000000000000000000000000082037000000000000000000000000000000000000000000000000000000000008202e0000000000000000000000000000000000000000000000000000000000082038000000000000000000000000000000000000000000000000000000000008202f00000000000000000000000000000000000000000000000000000000000820390000000000000000000000000000000000000000000000000000000000082030000000000000000000000000000000000000000000000000000000000008203a0000000000000000000000000000000000000000000000000000000000082031000000000000000000000000000000000000000000000000000000000008203b0000000000000000000000000000000000000000000000000000000000082032000000000000000000000000000000000000000000000000000000000008203c0000000000000000000000000000000000000000000000000000000000082033000000000000000000000000000000000000000000000000000000000008203d0000000000000000000000000000000000000000000000000000000000082034000000000000000000000000000000000000000000000000000000000008203e0000000000000000000000000000000000000000000000000000000000082035000000000000000000000000000000000000000000000000000000000008203f00000000000000000000000000000000000000000000000000000000000820360000000000000000000000000000000000000000000000000000000000082040000000000000000000000000000000000000000000000000000000000008203700000000000000000000000000000000000000000000000000000000000820410000000000000000000000000000000000000000000000000000000000082038000000000000000000000000000000000000000000000000000000000008204200000000000000000000000000000000000000000000000000000000000820390000000000000000000000000000000000000000000000000000000000082043000000000000000000000000000000000000000000000000000000000008203a0000000000000000000000000000000000000000000000000000000000082044000000000000000000000000000000000000000000000000000000000008203b0000000000000000000000000000000000000000000000000000000000082045000000000000000000000000000000000000000000000000000000000008203c0000000000000000000000000000000000000000000000000000000000082046000000000000000000000000000000000000000000000000000000000008203d0000000000000000000000000000000000000000000000000000000000082047000000000000000000000000000000000000000000000000000000000008203e00000000000000000000000000000000000000000000000000000000000820480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000c100000000000000000000000000000000000000000000000000000000000000c100100000000000000000000000000000000000000000000000000000000000c100200000000000000000000000000000000000000000000000000000000000c100300000000000000000000000000000000000000000000000000000000000c100400000000000000000000000000000000000000000000000000000000000c100500000000000000000000000000000000000000000000000000000000000c100600000000000000000000000000000000000000000000000000000000000c100700000000000000000000000000000000000000000000000000000000000c100800000000000000000000000000000000000000000000000000000000000c100900000000000000000000000000000000000000000000000000000000000c100a00000000000000000000000000000000000000000000000000000000000c100b00000000000000000000000000000000000000000000000000000000000c100c00000000000000000000000000000000000000000000000000000000000c100d00000000000000000000000000000000000000000000000000000000000c100e00000000000000000000000000000000000000000000000000000000000c100f00000000000000000000000000000000000000000000000000000000000c101000000000000000000000000000000000000000000000000000000000000c101100000000000000000000000000000000000000000000000000000000000c101200000000000000000000000000000000000000000000000000000000000c101300000000000000000000000000000000000000000000000000000000000c101400000000000000000000000000000000000000000000000000000000000c101500000000000000000000000000000000000000000000000000000000000c101600000000000000000000000000000000000000000000000000000000000c101700000000000000000000000000000000000000000000000000000000000c101800000000000000000000000000000000000000000000000000000000000c101900000000000000000000000000000000000000000000000000000000000c101a00000000000000000000000000000000000000000000000000000000000c101b00000000000000000000000000000000000000000000000000000000000c101c00000000000000000000000000000000000000000000000000000000000c101d00000000000000000000000000000000000000000000000000000000000c101e00000000000000000000000000000000000000000000000000000000000c101f00000000000000000000000000000000000000000000000000000000000c102000000000000000000000000000000000000000000000000000000000000c102100000000000000000000000000000000000000000000000000000000000c102200000000000000000000000000000000000000000000000000000000000c102300000000000000000000000000000000000000000000000000000000000c102400000000000000000000000000000000000000000000000000000000000c102500000000000000000000000000000000000000000000000000000000000c102600000000000000000000000000000000000000000000000000000000000c102700000000000000000000000000000000000000000000000000000000000c102800000000000000000000000000000000000000000000000000000000000c102900000000000000000000000000000000000000000000000000000000000c102a00000000000000000000000000000000000000000000000000000000000c102b00000000000000000000000000000000000000000000000000000000000c102c00000000000000000000000000000000000000000000000000000000000c102d00000000000000000000000000000000000000000000000000000000000c102e00000000000000000000000000000000000000000000000000000000000c102f00000000000000000000000000000000000000000000000000000000000c103000000000000000000000000000000000000000000000000000000000000c103100000000000000000000000000000000000000000000000000000000000c103200000000000000000000000000000000000000000000000000000000000c103300000000000000000000000000000000000000000000000000000000000c103400000000000000000000000000000000000000000000000000000000000c103500000000000000000000000000000000000000000000000000000000000c103600000000000000000000000000000000000000000000000000000000000c103700000000000000000000000000000000000000000000000000000000000c103800000000000000000000000000000000000000000000000000000000000c103900000000000000000000000000000000000000000000000000000000000c103a00000000000000000000000000000000000000000000000000000000000c103b00000000000000000000000000000000000000000000000000000000000c103c00000000000000000000000000000000000000000000000000000000000c103d00000000000000000000000000000000000000000000000000000000000c103e00000000000000000000000000000000000000000000000000000000000c103f3f00000000000000000000000000000000000000000000000000000000000c110000000000000000000000000000000000000000000000000000000000000c110100000000000000000000000000000000000000000000000000000000000c110200000000000000000000000000000000000000000000000000000000000c110300000000000000000000000000000000000000000000000000000000000c110400000000000000000000000000000000000000000000000000000000000c110500000000000000000000000000000000000000000000000000000000000c110600000000000000000000000000000000000000000000000000000000000c110700000000000000000000000000000000000000000000000000000000000c110800000000000000000000000000000000000000000000000000000000000c110900000000000000000000000000000000000000000000000000000000000c110a00000000000000000000000000000000000000000000000000000000000c110b00000000000000000000000000000000000000000000000000000000000c110c00000000000000000000000000000000000000000000000000000000000c110d00000000000000000000000000000000000000000000000000000000000c110e00000000000000000000000000000000000000000000000000000000000c110f00000000000000000000000000000000000000000000000000000000000c111000000000000000000000000000000000000000000000000000000000000c111100000000000000000000000000000000000000000000000000000000000c111200000000000000000000000000000000000000000000000000000000000c111300000000000000000000000000000000000000000000000000000000000c111400000000000000000000000000000000000000000000000000000000000c111500000000000000000000000000000000000000000000000000000000000c111600000000000000000000000000000000000000000000000000000000000c111700000000000000000000000000000000000000000000000000000000000c111800000000000000000000000000000000000000000000000000000000000c111900000000000000000000000000000000000000000000000000000000000c111a00000000000000000000000000000000000000000000000000000000000c111b00000000000000000000000000000000000000000000000000000000000c111c00000000000000000000000000000000000000000000000000000000000c111d00000000000000000000000000000000000000000000000000000000000c111e00000000000000000000000000000000000000000000000000000000000c111f00000000000000000000000000000000000000000000000000000000000c112000000000000000000000000000000000000000000000000000000000000c112100000000000000000000000000000000000000000000000000000000000c112200000000000000000000000000000000000000000000000000000000000c112300000000000000000000000000000000000000000000000000000000000c112400000000000000000000000000000000000000000000000000000000000c112500000000000000000000000000000000000000000000000000000000000c112600000000000000000000000000000000000000000000000000000000000c112700000000000000000000000000000000000000000000000000000000000c112800000000000000000000000000000000000000000000000000000000000c112900000000000000000000000000000000000000000000000000000000000c112a00000000000000000000000000000000000000000000000000000000000c112b00000000000000000000000000000000000000000000000000000000000c112c00000000000000000000000000000000000000000000000000000000000c112d00000000000000000000000000000000000000000000000000000000000c112e00000000000000000000000000000000000000000000000000000000000c112f00000000000000000000000000000000000000000000000000000000000c113000000000000000000000000000000000000000000000000000000000000c113100000000000000000000000000000000000000000000000000000000000c113200000000000000000000000000000000000000000000000000000000000c113300000000000000000000000000000000000000000000000000000000000c113400000000000000000000000000000000000000000000000000000000000c113500000000000000000000000000000000000000000000000000000000000c113600000000000000000000000000000000000000000000000000000000000c113700000000000000000000000000000000000000000000000000000000000c113800000000000000000000000000000000000000000000000000000000000c113900000000000000000000000000000000000000000000000000000000000c113a00000000000000000000000000000000000000000000000000000000000c113b00000000000000000000000000000000000000000000000000000000000c113c00000000000000000000000000000000000000000000000000000000000c113d00000000000000000000000000000000000000000000000000000000000c113e0800f8029be42ec3f25204907ca981fb71e5b357093eb5db10fc01ca98a4e4154c0030e13d351a5bf1d5a040e82a163ca57017f39162693f85c571e441e36d702d00a550ae0f39f977d9473d6de1be3232fc68ed0c4a601d53542148695102cfc9005580bc65e4bff9c8fffa64db02c0fa6af14d9d26fd962f4c5904cbd3ddec2500758c4a0d43dfec788b2f580877c4f473adec8f168ea24424f2600e4eb4916f00342602bf90d10f8ca8e582a894dcc4c02bb89fe458532e0c632b53bae54b4d00ca43ab78ab834337e9964d84a0674c9adabdca140539c5a6bc96e0ba9a51f6004ffbfd91be292a7c6a0e255e50caa156ac2d628b40ad2128c4ab63a92d8a1c3f00000000000000000000000000000000000000000000000000000000000c200000000000000000000000000000000000000000000000000000000000000c200a00000000000000000000000000000000000000000000000000000000000c200100000000000000000000000000000000000000000000000000000000000c200b00000000000000000000000000000000000000000000000000000000000c200200000000000000000000000000000000000000000000000000000000000c200c00000000000000000000000000000000000000000000000000000000000c200300000000000000000000000000000000000000000000000000000000000c200d00000000000000000000000000000000000000000000000000000000000c200400000000000000000000000000000000000000000000000000000000000c200e00000000000000000000000000000000000000000000000000000000000c200500000000000000000000000000000000000000000000000000000000000c200f00000000000000000000000000000000000000000000000000000000000c200600000000000000000000000000000000000000000000000000000000000c201000000000000000000000000000000000000000000000000000000000000c200700000000000000000000000000000000000000000000000000000000000c201100000000000000000000000000000000000000000000000000000000000c200800000000000000000000000000000000000000000000000000000000000c201200000000000000000000000000000000000000000000000000000000000c200900000000000000000000000000000000000000000000000000000000000c201300000000000000000000000000000000000000000000000000000000000c200a00000000000000000000000000000000000000000000000000000000000c201400000000000000000000000000000000000000000000000000000000000c200b00000000000000000000000000000000000000000000000000000000000c201500000000000000000000000000000000000000000000000000000000000c200c00000000000000000000000000000000000000000000000000000000000c201600000000000000000000000000000000000000000000000000000000000c200d00000000000000000000000000000000000000000000000000000000000c201700000000000000000000000000000000000000000000000000000000000c200e00000000000000000000000000000000000000000000000000000000000c201800000000000000000000000000000000000000000000000000000000000c200f00000000000000000000000000000000000000000000000000000000000c201900000000000000000000000000000000000000000000000000000000000c201000000000000000000000000000000000000000000000000000000000000c201a00000000000000000000000000000000000000000000000000000000000c201100000000000000000000000000000000000000000000000000000000000c201b00000000000000000000000000000000000000000000000000000000000c201200000000000000000000000000000000000000000000000000000000000c201c00000000000000000000000000000000000000000000000000000000000c201300000000000000000000000000000000000000000000000000000000000c201d00000000000000000000000000000000000000000000000000000000000c201400000000000000000000000000000000000000000000000000000000000c201e00000000000000000000000000000000000000000000000000000000000c201500000000000000000000000000000000000000000000000000000000000c201f00000000000000000000000000000000000000000000000000000000000c201600000000000000000000000000000000000000000000000000000000000c202000000000000000000000000000000000000000000000000000000000000c201700000000000000000000000000000000000000000000000000000000000c202100000000000000000000000000000000000000000000000000000000000c201800000000000000000000000000000000000000000000000000000000000c202200000000000000000000000000000000000000000000000000000000000c201900000000000000000000000000000000000000000000000000000000000c202300000000000000000000000000000000000000000000000000000000000c201a00000000000000000000000000000000000000000000000000000000000c202400000000000000000000000000000000000000000000000000000000000c201b00000000000000000000000000000000000000000000000000000000000c202500000000000000000000000000000000000000000000000000000000000c201c00000000000000000000000000000000000000000000000000000000000c202600000000000000000000000000000000000000000000000000000000000c201d00000000000000000000000000000000000000000000000000000000000c202700000000000000000000000000000000000000000000000000000000000c201e00000000000000000000000000000000000000000000000000000000000c202800000000000000000000000000000000000000000000000000000000000c201f00000000000000000000000000000000000000000000000000000000000c202900000000000000000000000000000000000000000000000000000000000c202000000000000000000000000000000000000000000000000000000000000c202a00000000000000000000000000000000000000000000000000000000000c202100000000000000000000000000000000000000000000000000000000000c202b00000000000000000000000000000000000000000000000000000000000c202200000000000000000000000000000000000000000000000000000000000c202c00000000000000000000000000000000000000000000000000000000000c202300000000000000000000000000000000000000000000000000000000000c202d00000000000000000000000000000000000000000000000000000000000c202400000000000000000000000000000000000000000000000000000000000c202e00000000000000000000000000000000000000000000000000000000000c202500000000000000000000000000000000000000000000000000000000000c202f00000000000000000000000000000000000000000000000000000000000c202600000000000000000000000000000000000000000000000000000000000c203000000000000000000000000000000000000000000000000000000000000c202700000000000000000000000000000000000000000000000000000000000c203100000000000000000000000000000000000000000000000000000000000c202800000000000000000000000000000000000000000000000000000000000c203200000000000000000000000000000000000000000000000000000000000c202900000000000000000000000000000000000000000000000000000000000c203300000000000000000000000000000000000000000000000000000000000c202a00000000000000000000000000000000000000000000000000000000000c203400000000000000000000000000000000000000000000000000000000000c202b00000000000000000000000000000000000000000000000000000000000c203500000000000000000000000000000000000000000000000000000000000c202c00000000000000000000000000000000000000000000000000000000000c203600000000000000000000000000000000000000000000000000000000000c202d00000000000000000000000000000000000000000000000000000000000c203700000000000000000000000000000000000000000000000000000000000c202e00000000000000000000000000000000000000000000000000000000000c203800000000000000000000000000000000000000000000000000000000000c202f00000000000000000000000000000000000000000000000000000000000c203900000000000000000000000000000000000000000000000000000000000c203000000000000000000000000000000000000000000000000000000000000c203a00000000000000000000000000000000000000000000000000000000000c203100000000000000000000000000000000000000000000000000000000000c203b00000000000000000000000000000000000000000000000000000000000c203200000000000000000000000000000000000000000000000000000000000c203c00000000000000000000000000000000000000000000000000000000000c203300000000000000000000000000000000000000000000000000000000000c203d00000000000000000000000000000000000000000000000000000000000c203400000000000000000000000000000000000000000000000000000000000c203e00000000000000000000000000000000000000000000000000000000000c203500000000000000000000000000000000000000000000000000000000000c203f00000000000000000000000000000000000000000000000000000000000c203600000000000000000000000000000000000000000000000000000000000c204000000000000000000000000000000000000000000000000000000000000c203700000000000000000000000000000000000000000000000000000000000c204100000000000000000000000000000000000000000000000000000000000c203800000000000000000000000000000000000000000000000000000000000c204200000000000000000000000000000000000000000000000000000000000c203900000000000000000000000000000000000000000000000000000000000c204300000000000000000000000000000000000000000000000000000000000c203a00000000000000000000000000000000000000000000000000000000000c204400000000000000000000000000000000000000000000000000000000000c203b00000000000000000000000000000000000000000000000000000000000c204500000000000000000000000000000000000000000000000000000000000c203c00000000000000000000000000000000000000000000000000000000000c204600000000000000000000000000000000000000000000000000000000000c203d00000000000000000000000000000000000000000000000000000000000c204700000000000000000000000000000000000000000000000000000000000c203e00000000000000000000000000000000000000000000000000000000000c2048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000101000000000000000000000000000000000000000000000000000000000000010100100000000000000000000000000000000000000000000000000000000001010020000000000000000000000000000000000000000000000000000000000101003000000000000000000000000000000000000000000000000000000000010100400000000000000000000000000000000000000000000000000000000001010050000000000000000000000000000000000000000000000000000000000101006000000000000000000000000000000000000000000000000000000000010100700000000000000000000000000000000000000000000000000000000001010080000000000000000000000000000000000000000000000000000000000101009000000000000000000000000000000000000000000000000000000000010100a000000000000000000000000000000000000000000000000000000000010100b000000000000000000000000000000000000000000000000000000000010100c000000000000000000000000000000000000000000000000000000000010100d000000000000000000000000000000000000000000000000000000000010100e000000000000000000000000000000000000000000000000000000000010100f0000000000000000000000000000000000000000000000000000000000101010000000000000000000000000000000000000000000000000000000000010101100000000000000000000000000000000000000000000000000000000001010120000000000000000000000000000000000000000000000000000000000101013000000000000000000000000000000000000000000000000000000000010101400000000000000000000000000000000000000000000000000000000001010150000000000000000000000000000000000000000000000000000000000101016000000000000000000000000000000000000000000000000000000000010101700000000000000000000000000000000000000000000000000000000001010180000000000000000000000000000000000000000000000000000000000101019000000000000000000000000000000000000000000000000000000000010101a000000000000000000000000000000000000000000000000000000000010101b000000000000000000000000000000000000000000000000000000000010101c000000000000000000000000000000000000000000000000000000000010101d000000000000000000000000000000000000000000000000000000000010101e000000000000000000000000000000000000000000000000000000000010101f0000000000000000000000000000000000000000000000000000000000101020000000000000000000000000000000000000000000000000000000000010102100000000000000000000000000000000000000000000000000000000001010220000000000000000000000000000000000000000000000000000000000101023000000000000000000000000000000000000000000000000000000000010102400000000000000000000000000000000000000000000000000000000001010250000000000000000000000000000000000000000000000000000000000101026000000000000000000000000000000000000000000000000000000000010102700000000000000000000000000000000000000000000000000000000001010280000000000000000000000000000000000000000000000000000000000101029000000000000000000000000000000000000000000000000000000000010102a000000000000000000000000000000000000000000000000000000000010102b000000000000000000000000000000000000000000000000000000000010102c000000000000000000000000000000000000000000000000000000000010102d000000000000000000000000000000000000000000000000000000000010102e000000000000000000000000000000000000000000000000000000000010102f0000000000000000000000000000000000000000000000000000000000101030000000000000000000000000000000000000000000000000000000000010103100000000000000000000000000000000000000000000000000000000001010320000000000000000000000000000000000000000000000000000000000101033000000000000000000000000000000000000000000000000000000000010103400000000000000000000000000000000000000000000000000000000001010350000000000000000000000000000000000000000000000000000000000101036000000000000000000000000000000000000000000000000000000000010103700000000000000000000000000000000000000000000000000000000001010380000000000000000000000000000000000000000000000000000000000101039000000000000000000000000000000000000000000000000000000000010103a000000000000000000000000000000000000000000000000000000000010103b000000000000000000000000000000000000000000000000000000000010103c000000000000000000000000000000000000000000000000000000000010103d000000000000000000000000000000000000000000000000000000000010103e000000000000000000000000000000000000000000000000000000000010103f3f0000000000000000000000000000000000000000000000000000000000101100000000000000000000000000000000000000000000000000000000000010110100000000000000000000000000000000000000000000000000000000001011020000000000000000000000000000000000000000000000000000000000101103000000000000000000000000000000000000000000000000000000000010110400000000000000000000000000000000000000000000000000000000001011050000000000000000000000000000000000000000000000000000000000101106000000000000000000000000000000000000000000000000000000000010110700000000000000000000000000000000000000000000000000000000001011080000000000000000000000000000000000000000000000000000000000101109000000000000000000000000000000000000000000000000000000000010110a000000000000000000000000000000000000000000000000000000000010110b000000000000000000000000000000000000000000000000000000000010110c000000000000000000000000000000000000000000000000000000000010110d000000000000000000000000000000000000000000000000000000000010110e000000000000000000000000000000000000000000000000000000000010110f0000000000000000000000000000000000000000000000000000000000101110000000000000000000000000000000000000000000000000000000000010111100000000000000000000000000000000000000000000000000000000001011120000000000000000000000000000000000000000000000000000000000101113000000000000000000000000000000000000000000000000000000000010111400000000000000000000000000000000000000000000000000000000001011150000000000000000000000000000000000000000000000000000000000101116000000000000000000000000000000000000000000000000000000000010111700000000000000000000000000000000000000000000000000000000001011180000000000000000000000000000000000000000000000000000000000101119000000000000000000000000000000000000000000000000000000000010111a000000000000000000000000000000000000000000000000000000000010111b000000000000000000000000000000000000000000000000000000000010111c000000000000000000000000000000000000000000000000000000000010111d000000000000000000000000000000000000000000000000000000000010111e000000000000000000000000000000000000000000000000000000000010111f0000000000000000000000000000000000000000000000000000000000101120000000000000000000000000000000000000000000000000000000000010112100000000000000000000000000000000000000000000000000000000001011220000000000000000000000000000000000000000000000000000000000101123000000000000000000000000000000000000000000000000000000000010112400000000000000000000000000000000000000000000000000000000001011250000000000000000000000000000000000000000000000000000000000101126000000000000000000000000000000000000000000000000000000000010112700000000000000000000000000000000000000000000000000000000001011280000000000000000000000000000000000000000000000000000000000101129000000000000000000000000000000000000000000000000000000000010112a000000000000000000000000000000000000000000000000000000000010112b000000000000000000000000000000000000000000000000000000000010112c000000000000000000000000000000000000000000000000000000000010112d000000000000000000000000000000000000000000000000000000000010112e000000000000000000000000000000000000000000000000000000000010112f0000000000000000000000000000000000000000000000000000000000101130000000000000000000000000000000000000000000000000000000000010113100000000000000000000000000000000000000000000000000000000001011320000000000000000000000000000000000000000000000000000000000101133000000000000000000000000000000000000000000000000000000000010113400000000000000000000000000000000000000000000000000000000001011350000000000000000000000000000000000000000000000000000000000101136000000000000000000000000000000000000000000000000000000000010113700000000000000000000000000000000000000000000000000000000001011380000000000000000000000000000000000000000000000000000000000101139000000000000000000000000000000000000000000000000000000000010113a000000000000000000000000000000000000000000000000000000000010113b000000000000000000000000000000000000000000000000000000000010113c000000000000000000000000000000000000000000000000000000000010113d000000000000000000000000000000000000000000000000000000000010113e080099145b6c0d32753835121f8b271186d01236948a4622ce78a98347fcfc98390085277a27c6acbd5ffc4c19cd65fc30056999e9bec36998f753132db0ff8e2300f3cf77a7261759ebd5f4149f6ad56746f4499cfcd4adf27a1d373f77da64d5009bc6e0e994a23cde8c95b90c1acc1b4a480c6599d1df2c3f9f6e76f3d1aff200d7a1c4a2700dacaaf07f1f0ff33837bdbabcf0b9ace17efabe0761708c4bb900dbeb8e96d14f21e57d5786b6d6ae7e5ddb1bb35935c0fb246d4bdbca62e02c00fbf12b5e0df6223b801088798e4e04d2a92ffe9a11639b7f0ce314e3412a8000d796e0724de03b796ba77069fcd6cf921e566f3aed15eb3e77258add74e9ff3f0000000000000000000000000000000000000000000000000000000000102000000000000000000000000000000000000000000000000000000000000010200a0000000000000000000000000000000000000000000000000000000000102001000000000000000000000000000000000000000000000000000000000010200b0000000000000000000000000000000000000000000000000000000000102002000000000000000000000000000000000000000000000000000000000010200c0000000000000000000000000000000000000000000000000000000000102003000000000000000000000000000000000000000000000000000000000010200d0000000000000000000000000000000000000000000000000000000000102004000000000000000000000000000000000000000000000000000000000010200e0000000000000000000000000000000000000000000000000000000000102005000000000000000000000000000000000000000000000000000000000010200f00000000000000000000000000000000000000000000000000000000001020060000000000000000000000000000000000000000000000000000000000102010000000000000000000000000000000000000000000000000000000000010200700000000000000000000000000000000000000000000000000000000001020110000000000000000000000000000000000000000000000000000000000102008000000000000000000000000000000000000000000000000000000000010201200000000000000000000000000000000000000000000000000000000001020090000000000000000000000000000000000000000000000000000000000102013000000000000000000000000000000000000000000000000000000000010200a0000000000000000000000000000000000000000000000000000000000102014000000000000000000000000000000000000000000000000000000000010200b0000000000000000000000000000000000000000000000000000000000102015000000000000000000000000000000000000000000000000000000000010200c0000000000000000000000000000000000000000000000000000000000102016000000000000000000000000000000000000000000000000000000000010200d0000000000000000000000000000000000000000000000000000000000102017000000000000000000000000000000000000000000000000000000000010200e0000000000000000000000000000000000000000000000000000000000102018000000000000000000000000000000000000000000000000000000000010200f00000000000000000000000000000000000000000000000000000000001020190000000000000000000000000000000000000000000000000000000000102010000000000000000000000000000000000000000000000000000000000010201a0000000000000000000000000000000000000000000000000000000000102011000000000000000000000000000000000000000000000000000000000010201b0000000000000000000000000000000000000000000000000000000000102012000000000000000000000000000000000000000000000000000000000010201c0000000000000000000000000000000000000000000000000000000000102013000000000000000000000000000000000000000000000000000000000010201d0000000000000000000000000000000000000000000000000000000000102014000000000000000000000000000000000000000000000000000000000010201e0000000000000000000000000000000000000000000000000000000000102015000000000000000000000000000000000000000000000000000000000010201f00000000000000000000000000000000000000000000000000000000001020160000000000000000000000000000000000000000000000000000000000102020000000000000000000000000000000000000000000000000000000000010201700000000000000000000000000000000000000000000000000000000001020210000000000000000000000000000000000000000000000000000000000102018000000000000000000000000000000000000000000000000000000000010202200000000000000000000000000000000000000000000000000000000001020190000000000000000000000000000000000000000000000000000000000102023000000000000000000000000000000000000000000000000000000000010201a0000000000000000000000000000000000000000000000000000000000102024000000000000000000000000000000000000000000000000000000000010201b0000000000000000000000000000000000000000000000000000000000102025000000000000000000000000000000000000000000000000000000000010201c0000000000000000000000000000000000000000000000000000000000102026000000000000000000000000000000000000000000000000000000000010201d0000000000000000000000000000000000000000000000000000000000102027000000000000000000000000000000000000000000000000000000000010201e0000000000000000000000000000000000000000000000000000000000102028000000000000000000000000000000000000000000000000000000000010201f00000000000000000000000000000000000000000000000000000000001020290000000000000000000000000000000000000000000000000000000000102020000000000000000000000000000000000000000000000000000000000010202a0000000000000000000000000000000000000000000000000000000000102021000000000000000000000000000000000000000000000000000000000010202b0000000000000000000000000000000000000000000000000000000000102022000000000000000000000000000000000000000000000000000000000010202c0000000000000000000000000000000000000000000000000000000000102023000000000000000000000000000000000000000000000000000000000010202d0000000000000000000000000000000000000000000000000000000000102024000000000000000000000000000000000000000000000000000000000010202e0000000000000000000000000000000000000000000000000000000000102025000000000000000000000000000000000000000000000000000000000010202f00000000000000000000000000000000000000000000000000000000001020260000000000000000000000000000000000000000000000000000000000102030000000000000000000000000000000000000000000000000000000000010202700000000000000000000000000000000000000000000000000000000001020310000000000000000000000000000000000000000000000000000000000102028000000000000000000000000000000000000000000000000000000000010203200000000000000000000000000000000000000000000000000000000001020290000000000000000000000000000000000000000000000000000000000102033000000000000000000000000000000000000000000000000000000000010202a0000000000000000000000000000000000000000000000000000000000102034000000000000000000000000000000000000000000000000000000000010202b0000000000000000000000000000000000000000000000000000000000102035000000000000000000000000000000000000000000000000000000000010202c0000000000000000000000000000000000000000000000000000000000102036000000000000000000000000000000000000000000000000000000000010202d0000000000000000000000000000000000000000000000000000000000102037000000000000000000000000000000000000000000000000000000000010202e0000000000000000000000000000000000000000000000000000000000102038000000000000000000000000000000000000000000000000000000000010202f00000000000000000000000000000000000000000000000000000000001020390000000000000000000000000000000000000000000000000000000000102030000000000000000000000000000000000000000000000000000000000010203a0000000000000000000000000000000000000000000000000000000000102031000000000000000000000000000000000000000000000000000000000010203b0000000000000000000000000000000000000000000000000000000000102032000000000000000000000000000000000000000000000000000000000010203c0000000000000000000000000000000000000000000000000000000000102033000000000000000000000000000000000000000000000000000000000010203d0000000000000000000000000000000000000000000000000000000000102034000000000000000000000000000000000000000000000000000000000010203e0000000000000000000000000000000000000000000000000000000000102035000000000000000000000000000000000000000000000000000000000010203f00000000000000000000000000000000000000000000000000000000001020360000000000000000000000000000000000000000000000000000000000102040000000000000000000000000000000000000000000000000000000000010203700000000000000000000000000000000000000000000000000000000001020410000000000000000000000000000000000000000000000000000000000102038000000000000000000000000000000000000000000000000000000000010204200000000000000000000000000000000000000000000000000000000001020390000000000000000000000000000000000000000000000000000000000102043000000000000000000000000000000000000000000000000000000000010203a0000000000000000000000000000000000000000000000000000000000102044000000000000000000000000000000000000000000000000000000000010203b0000000000000000000000000000000000000000000000000000000000102045000000000000000000000000000000000000000000000000000000000010203c0000000000000000000000000000000000000000000000000000000000102046000000000000000000000000000000000000000000000000000000000010203d0000000000000000000000000000000000000000000000000000000000102047000000000000000000000000000000000000000000000000000000000010203e0000000000000000000000000000000000000000000000000000000000102048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "archive": "0x22666f92ace792cc12f915398edb14583d408832420c18e58fc2b0ffe60a3a1d", + "blockHash": "0x04475bf1d89e4a58f7e06d3b4d01ae0a7ed8e26be1eec9cf83824974f4aa91de", + "body": "0x00000004000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000041000000000000000000000000000000000000000000000000000000000000004100100000000000000000000000000000000000000000000000000000000000410020000000000000000000000000000000000000000000000000000000000041003000000000000000000000000000000000000000000000000000000000004100400000000000000000000000000000000000000000000000000000000000410050000000000000000000000000000000000000000000000000000000000041006000000000000000000000000000000000000000000000000000000000004100700000000000000000000000000000000000000000000000000000000000410080000000000000000000000000000000000000000000000000000000000041009000000000000000000000000000000000000000000000000000000000004100a000000000000000000000000000000000000000000000000000000000004100b000000000000000000000000000000000000000000000000000000000004100c000000000000000000000000000000000000000000000000000000000004100d000000000000000000000000000000000000000000000000000000000004100e000000000000000000000000000000000000000000000000000000000004100f0000000000000000000000000000000000000000000000000000000000041010000000000000000000000000000000000000000000000000000000000004101100000000000000000000000000000000000000000000000000000000000410120000000000000000000000000000000000000000000000000000000000041013000000000000000000000000000000000000000000000000000000000004101400000000000000000000000000000000000000000000000000000000000410150000000000000000000000000000000000000000000000000000000000041016000000000000000000000000000000000000000000000000000000000004101700000000000000000000000000000000000000000000000000000000000410180000000000000000000000000000000000000000000000000000000000041019000000000000000000000000000000000000000000000000000000000004101a000000000000000000000000000000000000000000000000000000000004101b000000000000000000000000000000000000000000000000000000000004101c000000000000000000000000000000000000000000000000000000000004101d000000000000000000000000000000000000000000000000000000000004101e000000000000000000000000000000000000000000000000000000000004101f0000000000000000000000000000000000000000000000000000000000041020000000000000000000000000000000000000000000000000000000000004102100000000000000000000000000000000000000000000000000000000000410220000000000000000000000000000000000000000000000000000000000041023000000000000000000000000000000000000000000000000000000000004102400000000000000000000000000000000000000000000000000000000000410250000000000000000000000000000000000000000000000000000000000041026000000000000000000000000000000000000000000000000000000000004102700000000000000000000000000000000000000000000000000000000000410280000000000000000000000000000000000000000000000000000000000041029000000000000000000000000000000000000000000000000000000000004102a000000000000000000000000000000000000000000000000000000000004102b000000000000000000000000000000000000000000000000000000000004102c000000000000000000000000000000000000000000000000000000000004102d000000000000000000000000000000000000000000000000000000000004102e000000000000000000000000000000000000000000000000000000000004102f0000000000000000000000000000000000000000000000000000000000041030000000000000000000000000000000000000000000000000000000000004103100000000000000000000000000000000000000000000000000000000000410320000000000000000000000000000000000000000000000000000000000041033000000000000000000000000000000000000000000000000000000000004103400000000000000000000000000000000000000000000000000000000000410350000000000000000000000000000000000000000000000000000000000041036000000000000000000000000000000000000000000000000000000000004103700000000000000000000000000000000000000000000000000000000000410380000000000000000000000000000000000000000000000000000000000041039000000000000000000000000000000000000000000000000000000000004103a000000000000000000000000000000000000000000000000000000000004103b000000000000000000000000000000000000000000000000000000000004103c000000000000000000000000000000000000000000000000000000000004103d000000000000000000000000000000000000000000000000000000000004103e000000000000000000000000000000000000000000000000000000000004103f4000000000000000000000000000000000000000000000000000000000000400010000000000000000000000000000000000000000000000000000000000041100000000000000000000000000000000000000000000000000000000000004110100000000000000000000000000000000000000000000000000000000000411020000000000000000000000000000000000000000000000000000000000041103000000000000000000000000000000000000000000000000000000000004110400000000000000000000000000000000000000000000000000000000000411050000000000000000000000000000000000000000000000000000000000041106000000000000000000000000000000000000000000000000000000000004110700000000000000000000000000000000000000000000000000000000000411080000000000000000000000000000000000000000000000000000000000041109000000000000000000000000000000000000000000000000000000000004110a000000000000000000000000000000000000000000000000000000000004110b000000000000000000000000000000000000000000000000000000000004110c000000000000000000000000000000000000000000000000000000000004110d000000000000000000000000000000000000000000000000000000000004110e000000000000000000000000000000000000000000000000000000000004110f0000000000000000000000000000000000000000000000000000000000041110000000000000000000000000000000000000000000000000000000000004111100000000000000000000000000000000000000000000000000000000000411120000000000000000000000000000000000000000000000000000000000041113000000000000000000000000000000000000000000000000000000000004111400000000000000000000000000000000000000000000000000000000000411150000000000000000000000000000000000000000000000000000000000041116000000000000000000000000000000000000000000000000000000000004111700000000000000000000000000000000000000000000000000000000000411180000000000000000000000000000000000000000000000000000000000041119000000000000000000000000000000000000000000000000000000000004111a000000000000000000000000000000000000000000000000000000000004111b000000000000000000000000000000000000000000000000000000000004111c000000000000000000000000000000000000000000000000000000000004111d000000000000000000000000000000000000000000000000000000000004111e000000000000000000000000000000000000000000000000000000000004111f0000000000000000000000000000000000000000000000000000000000041120000000000000000000000000000000000000000000000000000000000004112100000000000000000000000000000000000000000000000000000000000411220000000000000000000000000000000000000000000000000000000000041123000000000000000000000000000000000000000000000000000000000004112400000000000000000000000000000000000000000000000000000000000411250000000000000000000000000000000000000000000000000000000000041126000000000000000000000000000000000000000000000000000000000004112700000000000000000000000000000000000000000000000000000000000411280000000000000000000000000000000000000000000000000000000000041129000000000000000000000000000000000000000000000000000000000004112a000000000000000000000000000000000000000000000000000000000004112b000000000000000000000000000000000000000000000000000000000004112c000000000000000000000000000000000000000000000000000000000004112d000000000000000000000000000000000000000000000000000000000004112e000000000000000000000000000000000000000000000000000000000004112f0000000000000000000000000000000000000000000000000000000000041130000000000000000000000000000000000000000000000000000000000004113100000000000000000000000000000000000000000000000000000000000411320000000000000000000000000000000000000000000000000000000000041133000000000000000000000000000000000000000000000000000000000004113400000000000000000000000000000000000000000000000000000000000411350000000000000000000000000000000000000000000000000000000000041136000000000000000000000000000000000000000000000000000000000004113700000000000000000000000000000000000000000000000000000000000411380000000000000000000000000000000000000000000000000000000000041139000000000000000000000000000000000000000000000000000000000004113a000000000000000000000000000000000000000000000000000000000004113b000000000000000000000000000000000000000000000000000000000004113c000000000000000000000000000000000000000000000000000000000004113d000000000000000000000000000000000000000000000000000000000004113e080097a6ec570e9b8e257647c9c74c5ad3edc57ca5ef6ae44d80b3c30d1d99b9b300ce48ec41d1edde0066fab553a456ae2f380d14fa8f956af1fb0217513a598900619ff12eaf97f63aa2a2311de3b6571a7b880a5247cb33b6a74787bf3f9bd5007854a2fad4e1801c6404394bf3d37ab08c135ea38a1974242e39a21273685f000f55796e72957a819e68a22e8602d73c3ba3718a5a4bd92b80b0aa444b182a00788b6e9874fb040ee679a7fae257190099a605229b948334e54a57739535d4004f1658ee3c1a91627e5d72f5a731f0796299df82ab41e72c88eee0c82fa85e003ee802add96628c693ed71afa9908138ba5a6fbf0a5f29a9c74e4e42aba6713f0000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000000000000004200a0000000000000000000000000000000000000000000000000000000000042001000000000000000000000000000000000000000000000000000000000004200b0000000000000000000000000000000000000000000000000000000000042002000000000000000000000000000000000000000000000000000000000004200c0000000000000000000000000000000000000000000000000000000000042003000000000000000000000000000000000000000000000000000000000004200d0000000000000000000000000000000000000000000000000000000000042004000000000000000000000000000000000000000000000000000000000004200e0000000000000000000000000000000000000000000000000000000000042005000000000000000000000000000000000000000000000000000000000004200f00000000000000000000000000000000000000000000000000000000000420060000000000000000000000000000000000000000000000000000000000042010000000000000000000000000000000000000000000000000000000000004200700000000000000000000000000000000000000000000000000000000000420110000000000000000000000000000000000000000000000000000000000042008000000000000000000000000000000000000000000000000000000000004201200000000000000000000000000000000000000000000000000000000000420090000000000000000000000000000000000000000000000000000000000042013000000000000000000000000000000000000000000000000000000000004200a0000000000000000000000000000000000000000000000000000000000042014000000000000000000000000000000000000000000000000000000000004200b0000000000000000000000000000000000000000000000000000000000042015000000000000000000000000000000000000000000000000000000000004200c0000000000000000000000000000000000000000000000000000000000042016000000000000000000000000000000000000000000000000000000000004200d0000000000000000000000000000000000000000000000000000000000042017000000000000000000000000000000000000000000000000000000000004200e0000000000000000000000000000000000000000000000000000000000042018000000000000000000000000000000000000000000000000000000000004200f00000000000000000000000000000000000000000000000000000000000420190000000000000000000000000000000000000000000000000000000000042010000000000000000000000000000000000000000000000000000000000004201a0000000000000000000000000000000000000000000000000000000000042011000000000000000000000000000000000000000000000000000000000004201b0000000000000000000000000000000000000000000000000000000000042012000000000000000000000000000000000000000000000000000000000004201c0000000000000000000000000000000000000000000000000000000000042013000000000000000000000000000000000000000000000000000000000004201d0000000000000000000000000000000000000000000000000000000000042014000000000000000000000000000000000000000000000000000000000004201e0000000000000000000000000000000000000000000000000000000000042015000000000000000000000000000000000000000000000000000000000004201f00000000000000000000000000000000000000000000000000000000000420160000000000000000000000000000000000000000000000000000000000042020000000000000000000000000000000000000000000000000000000000004201700000000000000000000000000000000000000000000000000000000000420210000000000000000000000000000000000000000000000000000000000042018000000000000000000000000000000000000000000000000000000000004202200000000000000000000000000000000000000000000000000000000000420190000000000000000000000000000000000000000000000000000000000042023000000000000000000000000000000000000000000000000000000000004201a0000000000000000000000000000000000000000000000000000000000042024000000000000000000000000000000000000000000000000000000000004201b0000000000000000000000000000000000000000000000000000000000042025000000000000000000000000000000000000000000000000000000000004201c0000000000000000000000000000000000000000000000000000000000042026000000000000000000000000000000000000000000000000000000000004201d0000000000000000000000000000000000000000000000000000000000042027000000000000000000000000000000000000000000000000000000000004201e0000000000000000000000000000000000000000000000000000000000042028000000000000000000000000000000000000000000000000000000000004201f00000000000000000000000000000000000000000000000000000000000420290000000000000000000000000000000000000000000000000000000000042020000000000000000000000000000000000000000000000000000000000004202a0000000000000000000000000000000000000000000000000000000000042021000000000000000000000000000000000000000000000000000000000004202b0000000000000000000000000000000000000000000000000000000000042022000000000000000000000000000000000000000000000000000000000004202c0000000000000000000000000000000000000000000000000000000000042023000000000000000000000000000000000000000000000000000000000004202d0000000000000000000000000000000000000000000000000000000000042024000000000000000000000000000000000000000000000000000000000004202e0000000000000000000000000000000000000000000000000000000000042025000000000000000000000000000000000000000000000000000000000004202f00000000000000000000000000000000000000000000000000000000000420260000000000000000000000000000000000000000000000000000000000042030000000000000000000000000000000000000000000000000000000000004202700000000000000000000000000000000000000000000000000000000000420310000000000000000000000000000000000000000000000000000000000042028000000000000000000000000000000000000000000000000000000000004203200000000000000000000000000000000000000000000000000000000000420290000000000000000000000000000000000000000000000000000000000042033000000000000000000000000000000000000000000000000000000000004202a0000000000000000000000000000000000000000000000000000000000042034000000000000000000000000000000000000000000000000000000000004202b0000000000000000000000000000000000000000000000000000000000042035000000000000000000000000000000000000000000000000000000000004202c0000000000000000000000000000000000000000000000000000000000042036000000000000000000000000000000000000000000000000000000000004202d0000000000000000000000000000000000000000000000000000000000042037000000000000000000000000000000000000000000000000000000000004202e0000000000000000000000000000000000000000000000000000000000042038000000000000000000000000000000000000000000000000000000000004202f00000000000000000000000000000000000000000000000000000000000420390000000000000000000000000000000000000000000000000000000000042030000000000000000000000000000000000000000000000000000000000004203a0000000000000000000000000000000000000000000000000000000000042031000000000000000000000000000000000000000000000000000000000004203b0000000000000000000000000000000000000000000000000000000000042032000000000000000000000000000000000000000000000000000000000004203c0000000000000000000000000000000000000000000000000000000000042033000000000000000000000000000000000000000000000000000000000004203d0000000000000000000000000000000000000000000000000000000000042034000000000000000000000000000000000000000000000000000000000004203e0000000000000000000000000000000000000000000000000000000000042035000000000000000000000000000000000000000000000000000000000004203f00000000000000000000000000000000000000000000000000000000000420360000000000000000000000000000000000000000000000000000000000042040000000000000000000000000000000000000000000000000000000000004203700000000000000000000000000000000000000000000000000000000000420410000000000000000000000000000000000000000000000000000000000042038000000000000000000000000000000000000000000000000000000000004204200000000000000000000000000000000000000000000000000000000000420390000000000000000000000000000000000000000000000000000000000042043000000000000000000000000000000000000000000000000000000000004203a0000000000000000000000000000000000000000000000000000000000042044000000000000000000000000000000000000000000000000000000000004203b0000000000000000000000000000000000000000000000000000000000042045000000000000000000000000000000000000000000000000000000000004203c0000000000000000000000000000000000000000000000000000000000042046000000000000000000000000000000000000000000000000000000000004203d0000000000000000000000000000000000000000000000000000000000042047000000000000000000000000000000000000000000000000000000000004203e0000000000000000000000000000000000000000000000000000000000042048200000000000000000000000000000000000000000000000000000000000041700000000000000000000000000000000000000000000000000000000000004170100000000000000000000000000000000000000000000000000000000000417020000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004170100000000000000000000000000000000000000000000000000000000000417020000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417020000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041703000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004170400000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417050000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417160000000000000000000000000000000000000000000000000000000000041706000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417160000000000000000000000000000000000000000000000000000000000041717000000000000000000000000000000000000000000000000000000000004170700000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417160000000000000000000000000000000000000000000000000000000000041717000000000000000000000000000000000000000000000000000000000004171800000000000000000000000000000000000000000000000000000000000417080000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f00000000000000000000000000000000000000000000000000000000000417100000000000000000000000000000000000000000000000000000000000041711000000000000000000000000000000000000000000000000000000000004171200000000000000000000000000000000000000000000000000000000000417130000000000000000000000000000000000000000000000000000000000041714000000000000000000000000000000000000000000000000000000000004171500000000000000000000000000000000000000000000000000000000000417160000000000000000000000000000000000000000000000000000000000041717000000000000000000000000000000000000000000000000000000000004171800000000000000000000000000000000000000000000000000000000000417190000000000000000000000000000000000000000000000000000000000041709000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004170a000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004170b000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004170c000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004170d000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004170e000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f000000000000000000000000000000000000000000000000000000000004170f0000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041710000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004171100000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417120000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041713000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004171400000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417150000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417260000000000000000000000000000000000000000000000000000000000041716000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417260000000000000000000000000000000000000000000000000000000000041727000000000000000000000000000000000000000000000000000000000004171700000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417260000000000000000000000000000000000000000000000000000000000041727000000000000000000000000000000000000000000000000000000000004172800000000000000000000000000000000000000000000000000000000000417180000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f00000000000000000000000000000000000000000000000000000000000417200000000000000000000000000000000000000000000000000000000000041721000000000000000000000000000000000000000000000000000000000004172200000000000000000000000000000000000000000000000000000000000417230000000000000000000000000000000000000000000000000000000000041724000000000000000000000000000000000000000000000000000000000004172500000000000000000000000000000000000000000000000000000000000417260000000000000000000000000000000000000000000000000000000000041727000000000000000000000000000000000000000000000000000000000004172800000000000000000000000000000000000000000000000000000000000417290000000000000000000000000000000000000000000000000000000000041719000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004171a000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004171b000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004171c000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004171d000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004172e000000000000000000000000000000000000000000000000000000000004171e000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004172e000000000000000000000000000000000000000000000000000000000004172f000000000000000000000000000000000000000000000000000000000004171f0000000000000000000000000000000000000000000000000000000000041720000000000000000000000000000000000000000000000000000000000004172100000000000000000000000000000000000000000000000000000000000417220000000000000000000000000000000000000000000000000000000000041723000000000000000000000000000000000000000000000000000000000004172400000000000000000000000000000000000000000000000000000000000417250000000000000000000000000000000000000000000000000000000000041726000000000000000000000000000000000000000000000000000000000004172700000000000000000000000000000000000000000000000000000000000417280000000000000000000000000000000000000000000000000000000000041729000000000000000000000000000000000000000000000000000000000004172a000000000000000000000000000000000000000000000000000000000004172b000000000000000000000000000000000000000000000000000000000004172c000000000000000000000000000000000000000000000000000000000004172d000000000000000000000000000000000000000000000000000000000004172e000000000000000000000000000000000000000000000000000000000004172f0000000000000000000000000000000000000000000000000000000000041730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000081000000000000000000000000000000000000000000000000000000000000008100100000000000000000000000000000000000000000000000000000000000810020000000000000000000000000000000000000000000000000000000000081003000000000000000000000000000000000000000000000000000000000008100400000000000000000000000000000000000000000000000000000000000810050000000000000000000000000000000000000000000000000000000000081006000000000000000000000000000000000000000000000000000000000008100700000000000000000000000000000000000000000000000000000000000810080000000000000000000000000000000000000000000000000000000000081009000000000000000000000000000000000000000000000000000000000008100a000000000000000000000000000000000000000000000000000000000008100b000000000000000000000000000000000000000000000000000000000008100c000000000000000000000000000000000000000000000000000000000008100d000000000000000000000000000000000000000000000000000000000008100e000000000000000000000000000000000000000000000000000000000008100f0000000000000000000000000000000000000000000000000000000000081010000000000000000000000000000000000000000000000000000000000008101100000000000000000000000000000000000000000000000000000000000810120000000000000000000000000000000000000000000000000000000000081013000000000000000000000000000000000000000000000000000000000008101400000000000000000000000000000000000000000000000000000000000810150000000000000000000000000000000000000000000000000000000000081016000000000000000000000000000000000000000000000000000000000008101700000000000000000000000000000000000000000000000000000000000810180000000000000000000000000000000000000000000000000000000000081019000000000000000000000000000000000000000000000000000000000008101a000000000000000000000000000000000000000000000000000000000008101b000000000000000000000000000000000000000000000000000000000008101c000000000000000000000000000000000000000000000000000000000008101d000000000000000000000000000000000000000000000000000000000008101e000000000000000000000000000000000000000000000000000000000008101f0000000000000000000000000000000000000000000000000000000000081020000000000000000000000000000000000000000000000000000000000008102100000000000000000000000000000000000000000000000000000000000810220000000000000000000000000000000000000000000000000000000000081023000000000000000000000000000000000000000000000000000000000008102400000000000000000000000000000000000000000000000000000000000810250000000000000000000000000000000000000000000000000000000000081026000000000000000000000000000000000000000000000000000000000008102700000000000000000000000000000000000000000000000000000000000810280000000000000000000000000000000000000000000000000000000000081029000000000000000000000000000000000000000000000000000000000008102a000000000000000000000000000000000000000000000000000000000008102b000000000000000000000000000000000000000000000000000000000008102c000000000000000000000000000000000000000000000000000000000008102d000000000000000000000000000000000000000000000000000000000008102e000000000000000000000000000000000000000000000000000000000008102f0000000000000000000000000000000000000000000000000000000000081030000000000000000000000000000000000000000000000000000000000008103100000000000000000000000000000000000000000000000000000000000810320000000000000000000000000000000000000000000000000000000000081033000000000000000000000000000000000000000000000000000000000008103400000000000000000000000000000000000000000000000000000000000810350000000000000000000000000000000000000000000000000000000000081036000000000000000000000000000000000000000000000000000000000008103700000000000000000000000000000000000000000000000000000000000810380000000000000000000000000000000000000000000000000000000000081039000000000000000000000000000000000000000000000000000000000008103a000000000000000000000000000000000000000000000000000000000008103b000000000000000000000000000000000000000000000000000000000008103c000000000000000000000000000000000000000000000000000000000008103d000000000000000000000000000000000000000000000000000000000008103e000000000000000000000000000000000000000000000000000000000008103f4000000000000000000000000000000000000000000000000000000000000800010000000000000000000000000000000000000000000000000000000000081100000000000000000000000000000000000000000000000000000000000008110100000000000000000000000000000000000000000000000000000000000811020000000000000000000000000000000000000000000000000000000000081103000000000000000000000000000000000000000000000000000000000008110400000000000000000000000000000000000000000000000000000000000811050000000000000000000000000000000000000000000000000000000000081106000000000000000000000000000000000000000000000000000000000008110700000000000000000000000000000000000000000000000000000000000811080000000000000000000000000000000000000000000000000000000000081109000000000000000000000000000000000000000000000000000000000008110a000000000000000000000000000000000000000000000000000000000008110b000000000000000000000000000000000000000000000000000000000008110c000000000000000000000000000000000000000000000000000000000008110d000000000000000000000000000000000000000000000000000000000008110e000000000000000000000000000000000000000000000000000000000008110f0000000000000000000000000000000000000000000000000000000000081110000000000000000000000000000000000000000000000000000000000008111100000000000000000000000000000000000000000000000000000000000811120000000000000000000000000000000000000000000000000000000000081113000000000000000000000000000000000000000000000000000000000008111400000000000000000000000000000000000000000000000000000000000811150000000000000000000000000000000000000000000000000000000000081116000000000000000000000000000000000000000000000000000000000008111700000000000000000000000000000000000000000000000000000000000811180000000000000000000000000000000000000000000000000000000000081119000000000000000000000000000000000000000000000000000000000008111a000000000000000000000000000000000000000000000000000000000008111b000000000000000000000000000000000000000000000000000000000008111c000000000000000000000000000000000000000000000000000000000008111d000000000000000000000000000000000000000000000000000000000008111e000000000000000000000000000000000000000000000000000000000008111f0000000000000000000000000000000000000000000000000000000000081120000000000000000000000000000000000000000000000000000000000008112100000000000000000000000000000000000000000000000000000000000811220000000000000000000000000000000000000000000000000000000000081123000000000000000000000000000000000000000000000000000000000008112400000000000000000000000000000000000000000000000000000000000811250000000000000000000000000000000000000000000000000000000000081126000000000000000000000000000000000000000000000000000000000008112700000000000000000000000000000000000000000000000000000000000811280000000000000000000000000000000000000000000000000000000000081129000000000000000000000000000000000000000000000000000000000008112a000000000000000000000000000000000000000000000000000000000008112b000000000000000000000000000000000000000000000000000000000008112c000000000000000000000000000000000000000000000000000000000008112d000000000000000000000000000000000000000000000000000000000008112e000000000000000000000000000000000000000000000000000000000008112f0000000000000000000000000000000000000000000000000000000000081130000000000000000000000000000000000000000000000000000000000008113100000000000000000000000000000000000000000000000000000000000811320000000000000000000000000000000000000000000000000000000000081133000000000000000000000000000000000000000000000000000000000008113400000000000000000000000000000000000000000000000000000000000811350000000000000000000000000000000000000000000000000000000000081136000000000000000000000000000000000000000000000000000000000008113700000000000000000000000000000000000000000000000000000000000811380000000000000000000000000000000000000000000000000000000000081139000000000000000000000000000000000000000000000000000000000008113a000000000000000000000000000000000000000000000000000000000008113b000000000000000000000000000000000000000000000000000000000008113c000000000000000000000000000000000000000000000000000000000008113d000000000000000000000000000000000000000000000000000000000008113e08003c0472260790b0bdfb8ae4dc4d437e7686b73643f2198970d84e1059a5f13500bfd46275a318e438726ff2765ae154b63ab8a0daebcbed668a5f58a0e63dc1007906b9418dc758c6b4f8454c69baa48b7889b6b511d707abe8e2cb8f7c397300aeb60c4d65a44f122e58bf9565dfe2024b3ae654d5cf2e47ecb035d53c927000bf82e8cda20345f37bbb1de3932172324b57f0b98be483392697b168e3bba8000fb4bbad884ef30edf68e45a6cf2733fcf50310c69d7c1432b29af2c0aa8040023e1622d27fee3b4a40ab975ae0eb2e31619ef3dc76eb858f7fddb6a056131004689cd7007daf98dd3218b839b8e6a29f957154347b391fdb376bd0b344be23f0000000000000000000000000000000000000000000000000000000000082000000000000000000000000000000000000000000000000000000000000008200a0000000000000000000000000000000000000000000000000000000000082001000000000000000000000000000000000000000000000000000000000008200b0000000000000000000000000000000000000000000000000000000000082002000000000000000000000000000000000000000000000000000000000008200c0000000000000000000000000000000000000000000000000000000000082003000000000000000000000000000000000000000000000000000000000008200d0000000000000000000000000000000000000000000000000000000000082004000000000000000000000000000000000000000000000000000000000008200e0000000000000000000000000000000000000000000000000000000000082005000000000000000000000000000000000000000000000000000000000008200f00000000000000000000000000000000000000000000000000000000000820060000000000000000000000000000000000000000000000000000000000082010000000000000000000000000000000000000000000000000000000000008200700000000000000000000000000000000000000000000000000000000000820110000000000000000000000000000000000000000000000000000000000082008000000000000000000000000000000000000000000000000000000000008201200000000000000000000000000000000000000000000000000000000000820090000000000000000000000000000000000000000000000000000000000082013000000000000000000000000000000000000000000000000000000000008200a0000000000000000000000000000000000000000000000000000000000082014000000000000000000000000000000000000000000000000000000000008200b0000000000000000000000000000000000000000000000000000000000082015000000000000000000000000000000000000000000000000000000000008200c0000000000000000000000000000000000000000000000000000000000082016000000000000000000000000000000000000000000000000000000000008200d0000000000000000000000000000000000000000000000000000000000082017000000000000000000000000000000000000000000000000000000000008200e0000000000000000000000000000000000000000000000000000000000082018000000000000000000000000000000000000000000000000000000000008200f00000000000000000000000000000000000000000000000000000000000820190000000000000000000000000000000000000000000000000000000000082010000000000000000000000000000000000000000000000000000000000008201a0000000000000000000000000000000000000000000000000000000000082011000000000000000000000000000000000000000000000000000000000008201b0000000000000000000000000000000000000000000000000000000000082012000000000000000000000000000000000000000000000000000000000008201c0000000000000000000000000000000000000000000000000000000000082013000000000000000000000000000000000000000000000000000000000008201d0000000000000000000000000000000000000000000000000000000000082014000000000000000000000000000000000000000000000000000000000008201e0000000000000000000000000000000000000000000000000000000000082015000000000000000000000000000000000000000000000000000000000008201f00000000000000000000000000000000000000000000000000000000000820160000000000000000000000000000000000000000000000000000000000082020000000000000000000000000000000000000000000000000000000000008201700000000000000000000000000000000000000000000000000000000000820210000000000000000000000000000000000000000000000000000000000082018000000000000000000000000000000000000000000000000000000000008202200000000000000000000000000000000000000000000000000000000000820190000000000000000000000000000000000000000000000000000000000082023000000000000000000000000000000000000000000000000000000000008201a0000000000000000000000000000000000000000000000000000000000082024000000000000000000000000000000000000000000000000000000000008201b0000000000000000000000000000000000000000000000000000000000082025000000000000000000000000000000000000000000000000000000000008201c0000000000000000000000000000000000000000000000000000000000082026000000000000000000000000000000000000000000000000000000000008201d0000000000000000000000000000000000000000000000000000000000082027000000000000000000000000000000000000000000000000000000000008201e0000000000000000000000000000000000000000000000000000000000082028000000000000000000000000000000000000000000000000000000000008201f00000000000000000000000000000000000000000000000000000000000820290000000000000000000000000000000000000000000000000000000000082020000000000000000000000000000000000000000000000000000000000008202a0000000000000000000000000000000000000000000000000000000000082021000000000000000000000000000000000000000000000000000000000008202b0000000000000000000000000000000000000000000000000000000000082022000000000000000000000000000000000000000000000000000000000008202c0000000000000000000000000000000000000000000000000000000000082023000000000000000000000000000000000000000000000000000000000008202d0000000000000000000000000000000000000000000000000000000000082024000000000000000000000000000000000000000000000000000000000008202e0000000000000000000000000000000000000000000000000000000000082025000000000000000000000000000000000000000000000000000000000008202f00000000000000000000000000000000000000000000000000000000000820260000000000000000000000000000000000000000000000000000000000082030000000000000000000000000000000000000000000000000000000000008202700000000000000000000000000000000000000000000000000000000000820310000000000000000000000000000000000000000000000000000000000082028000000000000000000000000000000000000000000000000000000000008203200000000000000000000000000000000000000000000000000000000000820290000000000000000000000000000000000000000000000000000000000082033000000000000000000000000000000000000000000000000000000000008202a0000000000000000000000000000000000000000000000000000000000082034000000000000000000000000000000000000000000000000000000000008202b0000000000000000000000000000000000000000000000000000000000082035000000000000000000000000000000000000000000000000000000000008202c0000000000000000000000000000000000000000000000000000000000082036000000000000000000000000000000000000000000000000000000000008202d0000000000000000000000000000000000000000000000000000000000082037000000000000000000000000000000000000000000000000000000000008202e0000000000000000000000000000000000000000000000000000000000082038000000000000000000000000000000000000000000000000000000000008202f00000000000000000000000000000000000000000000000000000000000820390000000000000000000000000000000000000000000000000000000000082030000000000000000000000000000000000000000000000000000000000008203a0000000000000000000000000000000000000000000000000000000000082031000000000000000000000000000000000000000000000000000000000008203b0000000000000000000000000000000000000000000000000000000000082032000000000000000000000000000000000000000000000000000000000008203c0000000000000000000000000000000000000000000000000000000000082033000000000000000000000000000000000000000000000000000000000008203d0000000000000000000000000000000000000000000000000000000000082034000000000000000000000000000000000000000000000000000000000008203e0000000000000000000000000000000000000000000000000000000000082035000000000000000000000000000000000000000000000000000000000008203f00000000000000000000000000000000000000000000000000000000000820360000000000000000000000000000000000000000000000000000000000082040000000000000000000000000000000000000000000000000000000000008203700000000000000000000000000000000000000000000000000000000000820410000000000000000000000000000000000000000000000000000000000082038000000000000000000000000000000000000000000000000000000000008204200000000000000000000000000000000000000000000000000000000000820390000000000000000000000000000000000000000000000000000000000082043000000000000000000000000000000000000000000000000000000000008203a0000000000000000000000000000000000000000000000000000000000082044000000000000000000000000000000000000000000000000000000000008203b0000000000000000000000000000000000000000000000000000000000082045000000000000000000000000000000000000000000000000000000000008203c0000000000000000000000000000000000000000000000000000000000082046000000000000000000000000000000000000000000000000000000000008203d0000000000000000000000000000000000000000000000000000000000082047000000000000000000000000000000000000000000000000000000000008203e0000000000000000000000000000000000000000000000000000000000082048200000000000000000000000000000000000000000000000000000000000081700000000000000000000000000000000000000000000000000000000000008170100000000000000000000000000000000000000000000000000000000000817020000000000000000000000000000000000000000000000000000000000081703000000000000000000000000000000000000000000000000000000000008170400000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008170100000000000000000000000000000000000000000000000000000000000817020000000000000000000000000000000000000000000000000000000000081703000000000000000000000000000000000000000000000000000000000008170400000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817020000000000000000000000000000000000000000000000000000000000081703000000000000000000000000000000000000000000000000000000000008170400000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817130000000000000000000000000000000000000000000000000000000000081703000000000000000000000000000000000000000000000000000000000008170400000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817130000000000000000000000000000000000000000000000000000000000081714000000000000000000000000000000000000000000000000000000000008170400000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817130000000000000000000000000000000000000000000000000000000000081714000000000000000000000000000000000000000000000000000000000008171500000000000000000000000000000000000000000000000000000000000817050000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817130000000000000000000000000000000000000000000000000000000000081714000000000000000000000000000000000000000000000000000000000008171500000000000000000000000000000000000000000000000000000000000817160000000000000000000000000000000000000000000000000000000000081706000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817130000000000000000000000000000000000000000000000000000000000081714000000000000000000000000000000000000000000000000000000000008171500000000000000000000000000000000000000000000000000000000000817160000000000000000000000000000000000000000000000000000000000081717000000000000000000000000000000000000000000000000000000000008170700000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817130000000000000000000000000000000000000000000000000000000000081714000000000000000000000000000000000000000000000000000000000008171500000000000000000000000000000000000000000000000000000000000817160000000000000000000000000000000000000000000000000000000000081717000000000000000000000000000000000000000000000000000000000008171800000000000000000000000000000000000000000000000000000000000817080000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f00000000000000000000000000000000000000000000000000000000000817100000000000000000000000000000000000000000000000000000000000081711000000000000000000000000000000000000000000000000000000000008171200000000000000000000000000000000000000000000000000000000000817130000000000000000000000000000000000000000000000000000000000081714000000000000000000000000000000000000000000000000000000000008171500000000000000000000000000000000000000000000000000000000000817160000000000000000000000000000000000000000000000000000000000081717000000000000000000000000000000000000000000000000000000000008171800000000000000000000000000000000000000000000000000000000000817190000000000000000000000000000000000000000000000000000000000081709000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008170a000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008170b000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008170c000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008170d000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008170e000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f000000000000000000000000000000000000000000000000000000000008170f0000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081710000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008171100000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817120000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817230000000000000000000000000000000000000000000000000000000000081713000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817230000000000000000000000000000000000000000000000000000000000081724000000000000000000000000000000000000000000000000000000000008171400000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817230000000000000000000000000000000000000000000000000000000000081724000000000000000000000000000000000000000000000000000000000008172500000000000000000000000000000000000000000000000000000000000817150000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817230000000000000000000000000000000000000000000000000000000000081724000000000000000000000000000000000000000000000000000000000008172500000000000000000000000000000000000000000000000000000000000817260000000000000000000000000000000000000000000000000000000000081716000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817230000000000000000000000000000000000000000000000000000000000081724000000000000000000000000000000000000000000000000000000000008172500000000000000000000000000000000000000000000000000000000000817260000000000000000000000000000000000000000000000000000000000081727000000000000000000000000000000000000000000000000000000000008171700000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817230000000000000000000000000000000000000000000000000000000000081724000000000000000000000000000000000000000000000000000000000008172500000000000000000000000000000000000000000000000000000000000817260000000000000000000000000000000000000000000000000000000000081727000000000000000000000000000000000000000000000000000000000008172800000000000000000000000000000000000000000000000000000000000817180000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f00000000000000000000000000000000000000000000000000000000000817200000000000000000000000000000000000000000000000000000000000081721000000000000000000000000000000000000000000000000000000000008172200000000000000000000000000000000000000000000000000000000000817230000000000000000000000000000000000000000000000000000000000081724000000000000000000000000000000000000000000000000000000000008172500000000000000000000000000000000000000000000000000000000000817260000000000000000000000000000000000000000000000000000000000081727000000000000000000000000000000000000000000000000000000000008172800000000000000000000000000000000000000000000000000000000000817290000000000000000000000000000000000000000000000000000000000081719000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008171a000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008171b000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008172c000000000000000000000000000000000000000000000000000000000008171c000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008172c000000000000000000000000000000000000000000000000000000000008172d000000000000000000000000000000000000000000000000000000000008171d000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008172c000000000000000000000000000000000000000000000000000000000008172d000000000000000000000000000000000000000000000000000000000008172e000000000000000000000000000000000000000000000000000000000008171e000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008172c000000000000000000000000000000000000000000000000000000000008172d000000000000000000000000000000000000000000000000000000000008172e000000000000000000000000000000000000000000000000000000000008172f000000000000000000000000000000000000000000000000000000000008171f0000000000000000000000000000000000000000000000000000000000081720000000000000000000000000000000000000000000000000000000000008172100000000000000000000000000000000000000000000000000000000000817220000000000000000000000000000000000000000000000000000000000081723000000000000000000000000000000000000000000000000000000000008172400000000000000000000000000000000000000000000000000000000000817250000000000000000000000000000000000000000000000000000000000081726000000000000000000000000000000000000000000000000000000000008172700000000000000000000000000000000000000000000000000000000000817280000000000000000000000000000000000000000000000000000000000081729000000000000000000000000000000000000000000000000000000000008172a000000000000000000000000000000000000000000000000000000000008172b000000000000000000000000000000000000000000000000000000000008172c000000000000000000000000000000000000000000000000000000000008172d000000000000000000000000000000000000000000000000000000000008172e000000000000000000000000000000000000000000000000000000000008172f00000000000000000000000000000000000000000000000000000000000817300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000c100000000000000000000000000000000000000000000000000000000000000c100100000000000000000000000000000000000000000000000000000000000c100200000000000000000000000000000000000000000000000000000000000c100300000000000000000000000000000000000000000000000000000000000c100400000000000000000000000000000000000000000000000000000000000c100500000000000000000000000000000000000000000000000000000000000c100600000000000000000000000000000000000000000000000000000000000c100700000000000000000000000000000000000000000000000000000000000c100800000000000000000000000000000000000000000000000000000000000c100900000000000000000000000000000000000000000000000000000000000c100a00000000000000000000000000000000000000000000000000000000000c100b00000000000000000000000000000000000000000000000000000000000c100c00000000000000000000000000000000000000000000000000000000000c100d00000000000000000000000000000000000000000000000000000000000c100e00000000000000000000000000000000000000000000000000000000000c100f00000000000000000000000000000000000000000000000000000000000c101000000000000000000000000000000000000000000000000000000000000c101100000000000000000000000000000000000000000000000000000000000c101200000000000000000000000000000000000000000000000000000000000c101300000000000000000000000000000000000000000000000000000000000c101400000000000000000000000000000000000000000000000000000000000c101500000000000000000000000000000000000000000000000000000000000c101600000000000000000000000000000000000000000000000000000000000c101700000000000000000000000000000000000000000000000000000000000c101800000000000000000000000000000000000000000000000000000000000c101900000000000000000000000000000000000000000000000000000000000c101a00000000000000000000000000000000000000000000000000000000000c101b00000000000000000000000000000000000000000000000000000000000c101c00000000000000000000000000000000000000000000000000000000000c101d00000000000000000000000000000000000000000000000000000000000c101e00000000000000000000000000000000000000000000000000000000000c101f00000000000000000000000000000000000000000000000000000000000c102000000000000000000000000000000000000000000000000000000000000c102100000000000000000000000000000000000000000000000000000000000c102200000000000000000000000000000000000000000000000000000000000c102300000000000000000000000000000000000000000000000000000000000c102400000000000000000000000000000000000000000000000000000000000c102500000000000000000000000000000000000000000000000000000000000c102600000000000000000000000000000000000000000000000000000000000c102700000000000000000000000000000000000000000000000000000000000c102800000000000000000000000000000000000000000000000000000000000c102900000000000000000000000000000000000000000000000000000000000c102a00000000000000000000000000000000000000000000000000000000000c102b00000000000000000000000000000000000000000000000000000000000c102c00000000000000000000000000000000000000000000000000000000000c102d00000000000000000000000000000000000000000000000000000000000c102e00000000000000000000000000000000000000000000000000000000000c102f00000000000000000000000000000000000000000000000000000000000c103000000000000000000000000000000000000000000000000000000000000c103100000000000000000000000000000000000000000000000000000000000c103200000000000000000000000000000000000000000000000000000000000c103300000000000000000000000000000000000000000000000000000000000c103400000000000000000000000000000000000000000000000000000000000c103500000000000000000000000000000000000000000000000000000000000c103600000000000000000000000000000000000000000000000000000000000c103700000000000000000000000000000000000000000000000000000000000c103800000000000000000000000000000000000000000000000000000000000c103900000000000000000000000000000000000000000000000000000000000c103a00000000000000000000000000000000000000000000000000000000000c103b00000000000000000000000000000000000000000000000000000000000c103c00000000000000000000000000000000000000000000000000000000000c103d00000000000000000000000000000000000000000000000000000000000c103e00000000000000000000000000000000000000000000000000000000000c103f4000000000000000000000000000000000000000000000000000000000000c000100000000000000000000000000000000000000000000000000000000000c110000000000000000000000000000000000000000000000000000000000000c110100000000000000000000000000000000000000000000000000000000000c110200000000000000000000000000000000000000000000000000000000000c110300000000000000000000000000000000000000000000000000000000000c110400000000000000000000000000000000000000000000000000000000000c110500000000000000000000000000000000000000000000000000000000000c110600000000000000000000000000000000000000000000000000000000000c110700000000000000000000000000000000000000000000000000000000000c110800000000000000000000000000000000000000000000000000000000000c110900000000000000000000000000000000000000000000000000000000000c110a00000000000000000000000000000000000000000000000000000000000c110b00000000000000000000000000000000000000000000000000000000000c110c00000000000000000000000000000000000000000000000000000000000c110d00000000000000000000000000000000000000000000000000000000000c110e00000000000000000000000000000000000000000000000000000000000c110f00000000000000000000000000000000000000000000000000000000000c111000000000000000000000000000000000000000000000000000000000000c111100000000000000000000000000000000000000000000000000000000000c111200000000000000000000000000000000000000000000000000000000000c111300000000000000000000000000000000000000000000000000000000000c111400000000000000000000000000000000000000000000000000000000000c111500000000000000000000000000000000000000000000000000000000000c111600000000000000000000000000000000000000000000000000000000000c111700000000000000000000000000000000000000000000000000000000000c111800000000000000000000000000000000000000000000000000000000000c111900000000000000000000000000000000000000000000000000000000000c111a00000000000000000000000000000000000000000000000000000000000c111b00000000000000000000000000000000000000000000000000000000000c111c00000000000000000000000000000000000000000000000000000000000c111d00000000000000000000000000000000000000000000000000000000000c111e00000000000000000000000000000000000000000000000000000000000c111f00000000000000000000000000000000000000000000000000000000000c112000000000000000000000000000000000000000000000000000000000000c112100000000000000000000000000000000000000000000000000000000000c112200000000000000000000000000000000000000000000000000000000000c112300000000000000000000000000000000000000000000000000000000000c112400000000000000000000000000000000000000000000000000000000000c112500000000000000000000000000000000000000000000000000000000000c112600000000000000000000000000000000000000000000000000000000000c112700000000000000000000000000000000000000000000000000000000000c112800000000000000000000000000000000000000000000000000000000000c112900000000000000000000000000000000000000000000000000000000000c112a00000000000000000000000000000000000000000000000000000000000c112b00000000000000000000000000000000000000000000000000000000000c112c00000000000000000000000000000000000000000000000000000000000c112d00000000000000000000000000000000000000000000000000000000000c112e00000000000000000000000000000000000000000000000000000000000c112f00000000000000000000000000000000000000000000000000000000000c113000000000000000000000000000000000000000000000000000000000000c113100000000000000000000000000000000000000000000000000000000000c113200000000000000000000000000000000000000000000000000000000000c113300000000000000000000000000000000000000000000000000000000000c113400000000000000000000000000000000000000000000000000000000000c113500000000000000000000000000000000000000000000000000000000000c113600000000000000000000000000000000000000000000000000000000000c113700000000000000000000000000000000000000000000000000000000000c113800000000000000000000000000000000000000000000000000000000000c113900000000000000000000000000000000000000000000000000000000000c113a00000000000000000000000000000000000000000000000000000000000c113b00000000000000000000000000000000000000000000000000000000000c113c00000000000000000000000000000000000000000000000000000000000c113d00000000000000000000000000000000000000000000000000000000000c113e0800f8029be42ec3f25204907ca981fb71e5b357093eb5db10fc01ca98a4e4154c0030e13d351a5bf1d5a040e82a163ca57017f39162693f85c571e441e36d702d00a550ae0f39f977d9473d6de1be3232fc68ed0c4a601d53542148695102cfc9005580bc65e4bff9c8fffa64db02c0fa6af14d9d26fd962f4c5904cbd3ddec2500758c4a0d43dfec788b2f580877c4f473adec8f168ea24424f2600e4eb4916f00342602bf90d10f8ca8e582a894dcc4c02bb89fe458532e0c632b53bae54b4d00ca43ab78ab834337e9964d84a0674c9adabdca140539c5a6bc96e0ba9a51f6004ffbfd91be292a7c6a0e255e50caa156ac2d628b40ad2128c4ab63a92d8a1c3f00000000000000000000000000000000000000000000000000000000000c200000000000000000000000000000000000000000000000000000000000000c200a00000000000000000000000000000000000000000000000000000000000c200100000000000000000000000000000000000000000000000000000000000c200b00000000000000000000000000000000000000000000000000000000000c200200000000000000000000000000000000000000000000000000000000000c200c00000000000000000000000000000000000000000000000000000000000c200300000000000000000000000000000000000000000000000000000000000c200d00000000000000000000000000000000000000000000000000000000000c200400000000000000000000000000000000000000000000000000000000000c200e00000000000000000000000000000000000000000000000000000000000c200500000000000000000000000000000000000000000000000000000000000c200f00000000000000000000000000000000000000000000000000000000000c200600000000000000000000000000000000000000000000000000000000000c201000000000000000000000000000000000000000000000000000000000000c200700000000000000000000000000000000000000000000000000000000000c201100000000000000000000000000000000000000000000000000000000000c200800000000000000000000000000000000000000000000000000000000000c201200000000000000000000000000000000000000000000000000000000000c200900000000000000000000000000000000000000000000000000000000000c201300000000000000000000000000000000000000000000000000000000000c200a00000000000000000000000000000000000000000000000000000000000c201400000000000000000000000000000000000000000000000000000000000c200b00000000000000000000000000000000000000000000000000000000000c201500000000000000000000000000000000000000000000000000000000000c200c00000000000000000000000000000000000000000000000000000000000c201600000000000000000000000000000000000000000000000000000000000c200d00000000000000000000000000000000000000000000000000000000000c201700000000000000000000000000000000000000000000000000000000000c200e00000000000000000000000000000000000000000000000000000000000c201800000000000000000000000000000000000000000000000000000000000c200f00000000000000000000000000000000000000000000000000000000000c201900000000000000000000000000000000000000000000000000000000000c201000000000000000000000000000000000000000000000000000000000000c201a00000000000000000000000000000000000000000000000000000000000c201100000000000000000000000000000000000000000000000000000000000c201b00000000000000000000000000000000000000000000000000000000000c201200000000000000000000000000000000000000000000000000000000000c201c00000000000000000000000000000000000000000000000000000000000c201300000000000000000000000000000000000000000000000000000000000c201d00000000000000000000000000000000000000000000000000000000000c201400000000000000000000000000000000000000000000000000000000000c201e00000000000000000000000000000000000000000000000000000000000c201500000000000000000000000000000000000000000000000000000000000c201f00000000000000000000000000000000000000000000000000000000000c201600000000000000000000000000000000000000000000000000000000000c202000000000000000000000000000000000000000000000000000000000000c201700000000000000000000000000000000000000000000000000000000000c202100000000000000000000000000000000000000000000000000000000000c201800000000000000000000000000000000000000000000000000000000000c202200000000000000000000000000000000000000000000000000000000000c201900000000000000000000000000000000000000000000000000000000000c202300000000000000000000000000000000000000000000000000000000000c201a00000000000000000000000000000000000000000000000000000000000c202400000000000000000000000000000000000000000000000000000000000c201b00000000000000000000000000000000000000000000000000000000000c202500000000000000000000000000000000000000000000000000000000000c201c00000000000000000000000000000000000000000000000000000000000c202600000000000000000000000000000000000000000000000000000000000c201d00000000000000000000000000000000000000000000000000000000000c202700000000000000000000000000000000000000000000000000000000000c201e00000000000000000000000000000000000000000000000000000000000c202800000000000000000000000000000000000000000000000000000000000c201f00000000000000000000000000000000000000000000000000000000000c202900000000000000000000000000000000000000000000000000000000000c202000000000000000000000000000000000000000000000000000000000000c202a00000000000000000000000000000000000000000000000000000000000c202100000000000000000000000000000000000000000000000000000000000c202b00000000000000000000000000000000000000000000000000000000000c202200000000000000000000000000000000000000000000000000000000000c202c00000000000000000000000000000000000000000000000000000000000c202300000000000000000000000000000000000000000000000000000000000c202d00000000000000000000000000000000000000000000000000000000000c202400000000000000000000000000000000000000000000000000000000000c202e00000000000000000000000000000000000000000000000000000000000c202500000000000000000000000000000000000000000000000000000000000c202f00000000000000000000000000000000000000000000000000000000000c202600000000000000000000000000000000000000000000000000000000000c203000000000000000000000000000000000000000000000000000000000000c202700000000000000000000000000000000000000000000000000000000000c203100000000000000000000000000000000000000000000000000000000000c202800000000000000000000000000000000000000000000000000000000000c203200000000000000000000000000000000000000000000000000000000000c202900000000000000000000000000000000000000000000000000000000000c203300000000000000000000000000000000000000000000000000000000000c202a00000000000000000000000000000000000000000000000000000000000c203400000000000000000000000000000000000000000000000000000000000c202b00000000000000000000000000000000000000000000000000000000000c203500000000000000000000000000000000000000000000000000000000000c202c00000000000000000000000000000000000000000000000000000000000c203600000000000000000000000000000000000000000000000000000000000c202d00000000000000000000000000000000000000000000000000000000000c203700000000000000000000000000000000000000000000000000000000000c202e00000000000000000000000000000000000000000000000000000000000c203800000000000000000000000000000000000000000000000000000000000c202f00000000000000000000000000000000000000000000000000000000000c203900000000000000000000000000000000000000000000000000000000000c203000000000000000000000000000000000000000000000000000000000000c203a00000000000000000000000000000000000000000000000000000000000c203100000000000000000000000000000000000000000000000000000000000c203b00000000000000000000000000000000000000000000000000000000000c203200000000000000000000000000000000000000000000000000000000000c203c00000000000000000000000000000000000000000000000000000000000c203300000000000000000000000000000000000000000000000000000000000c203d00000000000000000000000000000000000000000000000000000000000c203400000000000000000000000000000000000000000000000000000000000c203e00000000000000000000000000000000000000000000000000000000000c203500000000000000000000000000000000000000000000000000000000000c203f00000000000000000000000000000000000000000000000000000000000c203600000000000000000000000000000000000000000000000000000000000c204000000000000000000000000000000000000000000000000000000000000c203700000000000000000000000000000000000000000000000000000000000c204100000000000000000000000000000000000000000000000000000000000c203800000000000000000000000000000000000000000000000000000000000c204200000000000000000000000000000000000000000000000000000000000c203900000000000000000000000000000000000000000000000000000000000c204300000000000000000000000000000000000000000000000000000000000c203a00000000000000000000000000000000000000000000000000000000000c204400000000000000000000000000000000000000000000000000000000000c203b00000000000000000000000000000000000000000000000000000000000c204500000000000000000000000000000000000000000000000000000000000c203c00000000000000000000000000000000000000000000000000000000000c204600000000000000000000000000000000000000000000000000000000000c203d00000000000000000000000000000000000000000000000000000000000c204700000000000000000000000000000000000000000000000000000000000c203e00000000000000000000000000000000000000000000000000000000000c20482000000000000000000000000000000000000000000000000000000000000c170000000000000000000000000000000000000000000000000000000000000c170100000000000000000000000000000000000000000000000000000000000c170200000000000000000000000000000000000000000000000000000000000c170300000000000000000000000000000000000000000000000000000000000c170400000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c170100000000000000000000000000000000000000000000000000000000000c170200000000000000000000000000000000000000000000000000000000000c170300000000000000000000000000000000000000000000000000000000000c170400000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c170200000000000000000000000000000000000000000000000000000000000c170300000000000000000000000000000000000000000000000000000000000c170400000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c170300000000000000000000000000000000000000000000000000000000000c170400000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c170400000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c170500000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c170600000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c170700000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c170800000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c170900000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c170a00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c170b00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c170c00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c170d00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c170e00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c170f00000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c171000000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c171100000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c171200000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c171300000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c171400000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c171500000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c171600000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c171700000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c171800000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c171900000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c171a00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c171b00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c172c00000000000000000000000000000000000000000000000000000000000c171c00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c172c00000000000000000000000000000000000000000000000000000000000c172d00000000000000000000000000000000000000000000000000000000000c171d00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c172c00000000000000000000000000000000000000000000000000000000000c172d00000000000000000000000000000000000000000000000000000000000c172e00000000000000000000000000000000000000000000000000000000000c171e00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c172c00000000000000000000000000000000000000000000000000000000000c172d00000000000000000000000000000000000000000000000000000000000c172e00000000000000000000000000000000000000000000000000000000000c172f00000000000000000000000000000000000000000000000000000000000c171f00000000000000000000000000000000000000000000000000000000000c172000000000000000000000000000000000000000000000000000000000000c172100000000000000000000000000000000000000000000000000000000000c172200000000000000000000000000000000000000000000000000000000000c172300000000000000000000000000000000000000000000000000000000000c172400000000000000000000000000000000000000000000000000000000000c172500000000000000000000000000000000000000000000000000000000000c172600000000000000000000000000000000000000000000000000000000000c172700000000000000000000000000000000000000000000000000000000000c172800000000000000000000000000000000000000000000000000000000000c172900000000000000000000000000000000000000000000000000000000000c172a00000000000000000000000000000000000000000000000000000000000c172b00000000000000000000000000000000000000000000000000000000000c172c00000000000000000000000000000000000000000000000000000000000c172d00000000000000000000000000000000000000000000000000000000000c172e00000000000000000000000000000000000000000000000000000000000c172f00000000000000000000000000000000000000000000000000000000000c1730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000101000000000000000000000000000000000000000000000000000000000000010100100000000000000000000000000000000000000000000000000000000001010020000000000000000000000000000000000000000000000000000000000101003000000000000000000000000000000000000000000000000000000000010100400000000000000000000000000000000000000000000000000000000001010050000000000000000000000000000000000000000000000000000000000101006000000000000000000000000000000000000000000000000000000000010100700000000000000000000000000000000000000000000000000000000001010080000000000000000000000000000000000000000000000000000000000101009000000000000000000000000000000000000000000000000000000000010100a000000000000000000000000000000000000000000000000000000000010100b000000000000000000000000000000000000000000000000000000000010100c000000000000000000000000000000000000000000000000000000000010100d000000000000000000000000000000000000000000000000000000000010100e000000000000000000000000000000000000000000000000000000000010100f0000000000000000000000000000000000000000000000000000000000101010000000000000000000000000000000000000000000000000000000000010101100000000000000000000000000000000000000000000000000000000001010120000000000000000000000000000000000000000000000000000000000101013000000000000000000000000000000000000000000000000000000000010101400000000000000000000000000000000000000000000000000000000001010150000000000000000000000000000000000000000000000000000000000101016000000000000000000000000000000000000000000000000000000000010101700000000000000000000000000000000000000000000000000000000001010180000000000000000000000000000000000000000000000000000000000101019000000000000000000000000000000000000000000000000000000000010101a000000000000000000000000000000000000000000000000000000000010101b000000000000000000000000000000000000000000000000000000000010101c000000000000000000000000000000000000000000000000000000000010101d000000000000000000000000000000000000000000000000000000000010101e000000000000000000000000000000000000000000000000000000000010101f0000000000000000000000000000000000000000000000000000000000101020000000000000000000000000000000000000000000000000000000000010102100000000000000000000000000000000000000000000000000000000001010220000000000000000000000000000000000000000000000000000000000101023000000000000000000000000000000000000000000000000000000000010102400000000000000000000000000000000000000000000000000000000001010250000000000000000000000000000000000000000000000000000000000101026000000000000000000000000000000000000000000000000000000000010102700000000000000000000000000000000000000000000000000000000001010280000000000000000000000000000000000000000000000000000000000101029000000000000000000000000000000000000000000000000000000000010102a000000000000000000000000000000000000000000000000000000000010102b000000000000000000000000000000000000000000000000000000000010102c000000000000000000000000000000000000000000000000000000000010102d000000000000000000000000000000000000000000000000000000000010102e000000000000000000000000000000000000000000000000000000000010102f0000000000000000000000000000000000000000000000000000000000101030000000000000000000000000000000000000000000000000000000000010103100000000000000000000000000000000000000000000000000000000001010320000000000000000000000000000000000000000000000000000000000101033000000000000000000000000000000000000000000000000000000000010103400000000000000000000000000000000000000000000000000000000001010350000000000000000000000000000000000000000000000000000000000101036000000000000000000000000000000000000000000000000000000000010103700000000000000000000000000000000000000000000000000000000001010380000000000000000000000000000000000000000000000000000000000101039000000000000000000000000000000000000000000000000000000000010103a000000000000000000000000000000000000000000000000000000000010103b000000000000000000000000000000000000000000000000000000000010103c000000000000000000000000000000000000000000000000000000000010103d000000000000000000000000000000000000000000000000000000000010103e000000000000000000000000000000000000000000000000000000000010103f4000000000000000000000000000000000000000000000000000000000001000010000000000000000000000000000000000000000000000000000000000101100000000000000000000000000000000000000000000000000000000000010110100000000000000000000000000000000000000000000000000000000001011020000000000000000000000000000000000000000000000000000000000101103000000000000000000000000000000000000000000000000000000000010110400000000000000000000000000000000000000000000000000000000001011050000000000000000000000000000000000000000000000000000000000101106000000000000000000000000000000000000000000000000000000000010110700000000000000000000000000000000000000000000000000000000001011080000000000000000000000000000000000000000000000000000000000101109000000000000000000000000000000000000000000000000000000000010110a000000000000000000000000000000000000000000000000000000000010110b000000000000000000000000000000000000000000000000000000000010110c000000000000000000000000000000000000000000000000000000000010110d000000000000000000000000000000000000000000000000000000000010110e000000000000000000000000000000000000000000000000000000000010110f0000000000000000000000000000000000000000000000000000000000101110000000000000000000000000000000000000000000000000000000000010111100000000000000000000000000000000000000000000000000000000001011120000000000000000000000000000000000000000000000000000000000101113000000000000000000000000000000000000000000000000000000000010111400000000000000000000000000000000000000000000000000000000001011150000000000000000000000000000000000000000000000000000000000101116000000000000000000000000000000000000000000000000000000000010111700000000000000000000000000000000000000000000000000000000001011180000000000000000000000000000000000000000000000000000000000101119000000000000000000000000000000000000000000000000000000000010111a000000000000000000000000000000000000000000000000000000000010111b000000000000000000000000000000000000000000000000000000000010111c000000000000000000000000000000000000000000000000000000000010111d000000000000000000000000000000000000000000000000000000000010111e000000000000000000000000000000000000000000000000000000000010111f0000000000000000000000000000000000000000000000000000000000101120000000000000000000000000000000000000000000000000000000000010112100000000000000000000000000000000000000000000000000000000001011220000000000000000000000000000000000000000000000000000000000101123000000000000000000000000000000000000000000000000000000000010112400000000000000000000000000000000000000000000000000000000001011250000000000000000000000000000000000000000000000000000000000101126000000000000000000000000000000000000000000000000000000000010112700000000000000000000000000000000000000000000000000000000001011280000000000000000000000000000000000000000000000000000000000101129000000000000000000000000000000000000000000000000000000000010112a000000000000000000000000000000000000000000000000000000000010112b000000000000000000000000000000000000000000000000000000000010112c000000000000000000000000000000000000000000000000000000000010112d000000000000000000000000000000000000000000000000000000000010112e000000000000000000000000000000000000000000000000000000000010112f0000000000000000000000000000000000000000000000000000000000101130000000000000000000000000000000000000000000000000000000000010113100000000000000000000000000000000000000000000000000000000001011320000000000000000000000000000000000000000000000000000000000101133000000000000000000000000000000000000000000000000000000000010113400000000000000000000000000000000000000000000000000000000001011350000000000000000000000000000000000000000000000000000000000101136000000000000000000000000000000000000000000000000000000000010113700000000000000000000000000000000000000000000000000000000001011380000000000000000000000000000000000000000000000000000000000101139000000000000000000000000000000000000000000000000000000000010113a000000000000000000000000000000000000000000000000000000000010113b000000000000000000000000000000000000000000000000000000000010113c000000000000000000000000000000000000000000000000000000000010113d000000000000000000000000000000000000000000000000000000000010113e080099145b6c0d32753835121f8b271186d01236948a4622ce78a98347fcfc98390085277a27c6acbd5ffc4c19cd65fc30056999e9bec36998f753132db0ff8e2300f3cf77a7261759ebd5f4149f6ad56746f4499cfcd4adf27a1d373f77da64d5009bc6e0e994a23cde8c95b90c1acc1b4a480c6599d1df2c3f9f6e76f3d1aff200d7a1c4a2700dacaaf07f1f0ff33837bdbabcf0b9ace17efabe0761708c4bb900dbeb8e96d14f21e57d5786b6d6ae7e5ddb1bb35935c0fb246d4bdbca62e02c00fbf12b5e0df6223b801088798e4e04d2a92ffe9a11639b7f0ce314e3412a8000d796e0724de03b796ba77069fcd6cf921e566f3aed15eb3e77258add74e9ff3f0000000000000000000000000000000000000000000000000000000000102000000000000000000000000000000000000000000000000000000000000010200a0000000000000000000000000000000000000000000000000000000000102001000000000000000000000000000000000000000000000000000000000010200b0000000000000000000000000000000000000000000000000000000000102002000000000000000000000000000000000000000000000000000000000010200c0000000000000000000000000000000000000000000000000000000000102003000000000000000000000000000000000000000000000000000000000010200d0000000000000000000000000000000000000000000000000000000000102004000000000000000000000000000000000000000000000000000000000010200e0000000000000000000000000000000000000000000000000000000000102005000000000000000000000000000000000000000000000000000000000010200f00000000000000000000000000000000000000000000000000000000001020060000000000000000000000000000000000000000000000000000000000102010000000000000000000000000000000000000000000000000000000000010200700000000000000000000000000000000000000000000000000000000001020110000000000000000000000000000000000000000000000000000000000102008000000000000000000000000000000000000000000000000000000000010201200000000000000000000000000000000000000000000000000000000001020090000000000000000000000000000000000000000000000000000000000102013000000000000000000000000000000000000000000000000000000000010200a0000000000000000000000000000000000000000000000000000000000102014000000000000000000000000000000000000000000000000000000000010200b0000000000000000000000000000000000000000000000000000000000102015000000000000000000000000000000000000000000000000000000000010200c0000000000000000000000000000000000000000000000000000000000102016000000000000000000000000000000000000000000000000000000000010200d0000000000000000000000000000000000000000000000000000000000102017000000000000000000000000000000000000000000000000000000000010200e0000000000000000000000000000000000000000000000000000000000102018000000000000000000000000000000000000000000000000000000000010200f00000000000000000000000000000000000000000000000000000000001020190000000000000000000000000000000000000000000000000000000000102010000000000000000000000000000000000000000000000000000000000010201a0000000000000000000000000000000000000000000000000000000000102011000000000000000000000000000000000000000000000000000000000010201b0000000000000000000000000000000000000000000000000000000000102012000000000000000000000000000000000000000000000000000000000010201c0000000000000000000000000000000000000000000000000000000000102013000000000000000000000000000000000000000000000000000000000010201d0000000000000000000000000000000000000000000000000000000000102014000000000000000000000000000000000000000000000000000000000010201e0000000000000000000000000000000000000000000000000000000000102015000000000000000000000000000000000000000000000000000000000010201f00000000000000000000000000000000000000000000000000000000001020160000000000000000000000000000000000000000000000000000000000102020000000000000000000000000000000000000000000000000000000000010201700000000000000000000000000000000000000000000000000000000001020210000000000000000000000000000000000000000000000000000000000102018000000000000000000000000000000000000000000000000000000000010202200000000000000000000000000000000000000000000000000000000001020190000000000000000000000000000000000000000000000000000000000102023000000000000000000000000000000000000000000000000000000000010201a0000000000000000000000000000000000000000000000000000000000102024000000000000000000000000000000000000000000000000000000000010201b0000000000000000000000000000000000000000000000000000000000102025000000000000000000000000000000000000000000000000000000000010201c0000000000000000000000000000000000000000000000000000000000102026000000000000000000000000000000000000000000000000000000000010201d0000000000000000000000000000000000000000000000000000000000102027000000000000000000000000000000000000000000000000000000000010201e0000000000000000000000000000000000000000000000000000000000102028000000000000000000000000000000000000000000000000000000000010201f00000000000000000000000000000000000000000000000000000000001020290000000000000000000000000000000000000000000000000000000000102020000000000000000000000000000000000000000000000000000000000010202a0000000000000000000000000000000000000000000000000000000000102021000000000000000000000000000000000000000000000000000000000010202b0000000000000000000000000000000000000000000000000000000000102022000000000000000000000000000000000000000000000000000000000010202c0000000000000000000000000000000000000000000000000000000000102023000000000000000000000000000000000000000000000000000000000010202d0000000000000000000000000000000000000000000000000000000000102024000000000000000000000000000000000000000000000000000000000010202e0000000000000000000000000000000000000000000000000000000000102025000000000000000000000000000000000000000000000000000000000010202f00000000000000000000000000000000000000000000000000000000001020260000000000000000000000000000000000000000000000000000000000102030000000000000000000000000000000000000000000000000000000000010202700000000000000000000000000000000000000000000000000000000001020310000000000000000000000000000000000000000000000000000000000102028000000000000000000000000000000000000000000000000000000000010203200000000000000000000000000000000000000000000000000000000001020290000000000000000000000000000000000000000000000000000000000102033000000000000000000000000000000000000000000000000000000000010202a0000000000000000000000000000000000000000000000000000000000102034000000000000000000000000000000000000000000000000000000000010202b0000000000000000000000000000000000000000000000000000000000102035000000000000000000000000000000000000000000000000000000000010202c0000000000000000000000000000000000000000000000000000000000102036000000000000000000000000000000000000000000000000000000000010202d0000000000000000000000000000000000000000000000000000000000102037000000000000000000000000000000000000000000000000000000000010202e0000000000000000000000000000000000000000000000000000000000102038000000000000000000000000000000000000000000000000000000000010202f00000000000000000000000000000000000000000000000000000000001020390000000000000000000000000000000000000000000000000000000000102030000000000000000000000000000000000000000000000000000000000010203a0000000000000000000000000000000000000000000000000000000000102031000000000000000000000000000000000000000000000000000000000010203b0000000000000000000000000000000000000000000000000000000000102032000000000000000000000000000000000000000000000000000000000010203c0000000000000000000000000000000000000000000000000000000000102033000000000000000000000000000000000000000000000000000000000010203d0000000000000000000000000000000000000000000000000000000000102034000000000000000000000000000000000000000000000000000000000010203e0000000000000000000000000000000000000000000000000000000000102035000000000000000000000000000000000000000000000000000000000010203f00000000000000000000000000000000000000000000000000000000001020360000000000000000000000000000000000000000000000000000000000102040000000000000000000000000000000000000000000000000000000000010203700000000000000000000000000000000000000000000000000000000001020410000000000000000000000000000000000000000000000000000000000102038000000000000000000000000000000000000000000000000000000000010204200000000000000000000000000000000000000000000000000000000001020390000000000000000000000000000000000000000000000000000000000102043000000000000000000000000000000000000000000000000000000000010203a0000000000000000000000000000000000000000000000000000000000102044000000000000000000000000000000000000000000000000000000000010203b0000000000000000000000000000000000000000000000000000000000102045000000000000000000000000000000000000000000000000000000000010203c0000000000000000000000000000000000000000000000000000000000102046000000000000000000000000000000000000000000000000000000000010203d0000000000000000000000000000000000000000000000000000000000102047000000000000000000000000000000000000000000000000000000000010203e0000000000000000000000000000000000000000000000000000000000102048200000000000000000000000000000000000000000000000000000000000101700000000000000000000000000000000000000000000000000000000000010170100000000000000000000000000000000000000000000000000000000001017020000000000000000000000000000000000000000000000000000000000101703000000000000000000000000000000000000000000000000000000000010170400000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010170100000000000000000000000000000000000000000000000000000000001017020000000000000000000000000000000000000000000000000000000000101703000000000000000000000000000000000000000000000000000000000010170400000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017020000000000000000000000000000000000000000000000000000000000101703000000000000000000000000000000000000000000000000000000000010170400000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017130000000000000000000000000000000000000000000000000000000000101703000000000000000000000000000000000000000000000000000000000010170400000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017130000000000000000000000000000000000000000000000000000000000101714000000000000000000000000000000000000000000000000000000000010170400000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017130000000000000000000000000000000000000000000000000000000000101714000000000000000000000000000000000000000000000000000000000010171500000000000000000000000000000000000000000000000000000000001017050000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017130000000000000000000000000000000000000000000000000000000000101714000000000000000000000000000000000000000000000000000000000010171500000000000000000000000000000000000000000000000000000000001017160000000000000000000000000000000000000000000000000000000000101706000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017130000000000000000000000000000000000000000000000000000000000101714000000000000000000000000000000000000000000000000000000000010171500000000000000000000000000000000000000000000000000000000001017160000000000000000000000000000000000000000000000000000000000101717000000000000000000000000000000000000000000000000000000000010170700000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017130000000000000000000000000000000000000000000000000000000000101714000000000000000000000000000000000000000000000000000000000010171500000000000000000000000000000000000000000000000000000000001017160000000000000000000000000000000000000000000000000000000000101717000000000000000000000000000000000000000000000000000000000010171800000000000000000000000000000000000000000000000000000000001017080000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f00000000000000000000000000000000000000000000000000000000001017100000000000000000000000000000000000000000000000000000000000101711000000000000000000000000000000000000000000000000000000000010171200000000000000000000000000000000000000000000000000000000001017130000000000000000000000000000000000000000000000000000000000101714000000000000000000000000000000000000000000000000000000000010171500000000000000000000000000000000000000000000000000000000001017160000000000000000000000000000000000000000000000000000000000101717000000000000000000000000000000000000000000000000000000000010171800000000000000000000000000000000000000000000000000000000001017190000000000000000000000000000000000000000000000000000000000101709000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010170a000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010170b000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010170c000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010170d000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010170e000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f000000000000000000000000000000000000000000000000000000000010170f0000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101710000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010171100000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017120000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017230000000000000000000000000000000000000000000000000000000000101713000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017230000000000000000000000000000000000000000000000000000000000101724000000000000000000000000000000000000000000000000000000000010171400000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017230000000000000000000000000000000000000000000000000000000000101724000000000000000000000000000000000000000000000000000000000010172500000000000000000000000000000000000000000000000000000000001017150000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017230000000000000000000000000000000000000000000000000000000000101724000000000000000000000000000000000000000000000000000000000010172500000000000000000000000000000000000000000000000000000000001017260000000000000000000000000000000000000000000000000000000000101716000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017230000000000000000000000000000000000000000000000000000000000101724000000000000000000000000000000000000000000000000000000000010172500000000000000000000000000000000000000000000000000000000001017260000000000000000000000000000000000000000000000000000000000101727000000000000000000000000000000000000000000000000000000000010171700000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017230000000000000000000000000000000000000000000000000000000000101724000000000000000000000000000000000000000000000000000000000010172500000000000000000000000000000000000000000000000000000000001017260000000000000000000000000000000000000000000000000000000000101727000000000000000000000000000000000000000000000000000000000010172800000000000000000000000000000000000000000000000000000000001017180000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f00000000000000000000000000000000000000000000000000000000001017200000000000000000000000000000000000000000000000000000000000101721000000000000000000000000000000000000000000000000000000000010172200000000000000000000000000000000000000000000000000000000001017230000000000000000000000000000000000000000000000000000000000101724000000000000000000000000000000000000000000000000000000000010172500000000000000000000000000000000000000000000000000000000001017260000000000000000000000000000000000000000000000000000000000101727000000000000000000000000000000000000000000000000000000000010172800000000000000000000000000000000000000000000000000000000001017290000000000000000000000000000000000000000000000000000000000101719000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010171a000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010171b000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010172c000000000000000000000000000000000000000000000000000000000010171c000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010172c000000000000000000000000000000000000000000000000000000000010172d000000000000000000000000000000000000000000000000000000000010171d000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010172c000000000000000000000000000000000000000000000000000000000010172d000000000000000000000000000000000000000000000000000000000010172e000000000000000000000000000000000000000000000000000000000010171e000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010172c000000000000000000000000000000000000000000000000000000000010172d000000000000000000000000000000000000000000000000000000000010172e000000000000000000000000000000000000000000000000000000000010172f000000000000000000000000000000000000000000000000000000000010171f0000000000000000000000000000000000000000000000000000000000101720000000000000000000000000000000000000000000000000000000000010172100000000000000000000000000000000000000000000000000000000001017220000000000000000000000000000000000000000000000000000000000101723000000000000000000000000000000000000000000000000000000000010172400000000000000000000000000000000000000000000000000000000001017250000000000000000000000000000000000000000000000000000000000101726000000000000000000000000000000000000000000000000000000000010172700000000000000000000000000000000000000000000000000000000001017280000000000000000000000000000000000000000000000000000000000101729000000000000000000000000000000000000000000000000000000000010172a000000000000000000000000000000000000000000000000000000000010172b000000000000000000000000000000000000000000000000000000000010172c000000000000000000000000000000000000000000000000000000000010172d000000000000000000000000000000000000000000000000000000000010172e000000000000000000000000000000000000000000000000000000000010172f0000000000000000000000000000000000000000000000000000000000101730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "decodedHeader": { "contentCommitment": { - "blobsHash": "0x00476e8bde67f5103417638177f69bafaab0a230f87b856043fe8fc0c8643f5f", + "blobsHash": "0x0047ad599f577c7558023a21c96b4f15fff72314bf54e8a4c59d4fde2659ec12", "inHash": "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c", "outHash": "0x000ca4a4610ad22c97c9161cedcf01faa3619f1b85457f1627d09627b71903a6", "numTxs": 4 @@ -72,13 +72,13 @@ "blockNumber": 1, "slotNumber": "0x000000000000000000000000000000000000000000000000000000000000001a", "chainId": 31337, - "timestamp": 1732758635, + "timestamp": 1732960608, "version": 1, - "coinbase": "0x965a60c81ca829bc7cae5dc7c6b11b0af4c80008", - "feeRecipient": "0x0fb90e658e203227a651f1d683f812a8b34a7b6e546d1a3458c8bfbe1048fa1a", + "coinbase": "0xf20572542ac9ada404acf215961dd6efd971702f", + "feeRecipient": "0x0e2308c5b3418e8f4a48b435e89759d03ba430e1ce4e4dbc7b44ef103082ea02", "gasFees": { "feePerDaGas": 0, - "feePerL2Gas": 54166739060 + "feePerL2Gas": 54162487970 } }, "totalFees": "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -108,9 +108,9 @@ } } }, - "header": "0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae00000001000000000000000000000000000000000000000000000000000000000000000400476e8bde67f5103417638177f69bafaab0a230f87b856043fe8fc0c8643f5f00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c000ca4a4610ad22c97c9161cedcf01faa3619f1b85457f1627d09627b71903a62e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d60000001000553ea03210e12bf95ed15f0105108f39db784d318cfe9b52cba413618711ce000001001d52eeaaacb445d9193d29e0df8f0ad4bf69bc457fe955b8e05b48ae3fdc3b3f0000018020a27b2839a892ce7ac7c3a76b625388d4efdd4d736f29f86d41bb32d4bc73cf0000017c0000000000000000000000000000000000000000000000000000000000007a6900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000006747cc6b965a60c81ca829bc7cae5dc7c6b11b0af4c800080fb90e658e203227a651f1d683f812a8b34a7b6e546d1a3458c8bfbe1048fa1a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c9c96d87400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "publicInputsHash": "0x007c1bede18d1bf57ebc9122757b7c120ad05ab2b30c5a5527ae3d2bb9524436", - "blobInputs": "0x0101cb2643c794ffd2835b698dffc25f63cfff60717970cd3e7f7c0fb91f8303b80e8146e9a02fbb7bd2ff2df8550f8f2bf1c36eda19989d2153fd161a3bf214b35de7f666c8edd3cf3471753892f8f732973d009e684843388c18516476687d91b4f3cb75876a86c8edde736e313975c9cf1486d38d2c4ff8dad0667a878b196d41db63ab7d6d1893f0f432f6ea73c736b6393353efca34a3dcdc7db71ae0fd0a4443ef02bf48f1bf68b38a370de4886ec6a846a3ba62ff186072d2b25992bcd1", + "header": "0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae0000000100000000000000000000000000000000000000000000000000000000000000040047ad599f577c7558023a21c96b4f15fff72314bf54e8a4c59d4fde2659ec1200089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c000ca4a4610ad22c97c9161cedcf01faa3619f1b85457f1627d09627b71903a62e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d60000001000553ea03210e12bf95ed15f0105108f39db784d318cfe9b52cba413618711ce000001000627376bc9d9804095498d2fe262c2dceeb5ecfc696966496eaee65f1798fed50000018020a27b2839a892ce7ac7c3a76b625388d4efdd4d736f29f86d41bb32d4bc73cf0000017c0000000000000000000000000000000000000000000000000000000000007a6900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000674ae160f20572542ac9ada404acf215961dd6efd971702f0e2308c5b3418e8f4a48b435e89759d03ba430e1ce4e4dbc7b44ef103082ea0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c9c55faa200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "publicInputsHash": "0x0034b99c4b69dc95d5716c5adb130a6189254b654c4c8ac10e7e08525625c66a", + "blobInputs": "0x0101cc37eb7aaf02a4133018fd157076feeabf78ad88ff33edcfabad8ac4f36bf7170450ec839926ed04c1c4dbcdb46459ae324944b98c70a4027debb16279e95860ce046b9453d9d9f025ad8e6ed7f1f50eca04c6f0bd1caa021ba74d7f924106af942e8996258b43d5403f231c878ff8fed318c1c9d973ce1677742676688cbc483e03a593b3cce8bc68115e772a4233903eae33609a6d67905c9f4738d96194be8ca02d57e936ef8148f1d77519d041e23921bdacb190c319fec28ab84c8316", "numTxs": 4 } } \ No newline at end of file diff --git a/l1-contracts/test/fixtures/mixed_block_2.json b/l1-contracts/test/fixtures/mixed_block_2.json index 59f1fb3cb1e..52719f4478d 100644 --- a/l1-contracts/test/fixtures/mixed_block_2.json +++ b/l1-contracts/test/fixtures/mixed_block_2.json @@ -58,12 +58,12 @@ ] }, "block": { - "archive": "0x25e2dbd3d2c46401d9d79479b990ca3097e7b2cb80cddc4c1034349ce544eb85", - "blockHash": "0x212a549f61965631d3548eb2f194be3afc17ab340c0e651693f3620256fed414", - "body": "0x00000004000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000141000000000000000000000000000000000000000000000000000000000000014100100000000000000000000000000000000000000000000000000000000001410020000000000000000000000000000000000000000000000000000000000141003000000000000000000000000000000000000000000000000000000000014100400000000000000000000000000000000000000000000000000000000001410050000000000000000000000000000000000000000000000000000000000141006000000000000000000000000000000000000000000000000000000000014100700000000000000000000000000000000000000000000000000000000001410080000000000000000000000000000000000000000000000000000000000141009000000000000000000000000000000000000000000000000000000000014100a000000000000000000000000000000000000000000000000000000000014100b000000000000000000000000000000000000000000000000000000000014100c000000000000000000000000000000000000000000000000000000000014100d000000000000000000000000000000000000000000000000000000000014100e000000000000000000000000000000000000000000000000000000000014100f0000000000000000000000000000000000000000000000000000000000141010000000000000000000000000000000000000000000000000000000000014101100000000000000000000000000000000000000000000000000000000001410120000000000000000000000000000000000000000000000000000000000141013000000000000000000000000000000000000000000000000000000000014101400000000000000000000000000000000000000000000000000000000001410150000000000000000000000000000000000000000000000000000000000141016000000000000000000000000000000000000000000000000000000000014101700000000000000000000000000000000000000000000000000000000001410180000000000000000000000000000000000000000000000000000000000141019000000000000000000000000000000000000000000000000000000000014101a000000000000000000000000000000000000000000000000000000000014101b000000000000000000000000000000000000000000000000000000000014101c000000000000000000000000000000000000000000000000000000000014101d000000000000000000000000000000000000000000000000000000000014101e000000000000000000000000000000000000000000000000000000000014101f0000000000000000000000000000000000000000000000000000000000141020000000000000000000000000000000000000000000000000000000000014102100000000000000000000000000000000000000000000000000000000001410220000000000000000000000000000000000000000000000000000000000141023000000000000000000000000000000000000000000000000000000000014102400000000000000000000000000000000000000000000000000000000001410250000000000000000000000000000000000000000000000000000000000141026000000000000000000000000000000000000000000000000000000000014102700000000000000000000000000000000000000000000000000000000001410280000000000000000000000000000000000000000000000000000000000141029000000000000000000000000000000000000000000000000000000000014102a000000000000000000000000000000000000000000000000000000000014102b000000000000000000000000000000000000000000000000000000000014102c000000000000000000000000000000000000000000000000000000000014102d000000000000000000000000000000000000000000000000000000000014102e000000000000000000000000000000000000000000000000000000000014102f0000000000000000000000000000000000000000000000000000000000141030000000000000000000000000000000000000000000000000000000000014103100000000000000000000000000000000000000000000000000000000001410320000000000000000000000000000000000000000000000000000000000141033000000000000000000000000000000000000000000000000000000000014103400000000000000000000000000000000000000000000000000000000001410350000000000000000000000000000000000000000000000000000000000141036000000000000000000000000000000000000000000000000000000000014103700000000000000000000000000000000000000000000000000000000001410380000000000000000000000000000000000000000000000000000000000141039000000000000000000000000000000000000000000000000000000000014103a000000000000000000000000000000000000000000000000000000000014103b000000000000000000000000000000000000000000000000000000000014103c000000000000000000000000000000000000000000000000000000000014103d000000000000000000000000000000000000000000000000000000000014103e000000000000000000000000000000000000000000000000000000000014103f3f0000000000000000000000000000000000000000000000000000000000141100000000000000000000000000000000000000000000000000000000000014110100000000000000000000000000000000000000000000000000000000001411020000000000000000000000000000000000000000000000000000000000141103000000000000000000000000000000000000000000000000000000000014110400000000000000000000000000000000000000000000000000000000001411050000000000000000000000000000000000000000000000000000000000141106000000000000000000000000000000000000000000000000000000000014110700000000000000000000000000000000000000000000000000000000001411080000000000000000000000000000000000000000000000000000000000141109000000000000000000000000000000000000000000000000000000000014110a000000000000000000000000000000000000000000000000000000000014110b000000000000000000000000000000000000000000000000000000000014110c000000000000000000000000000000000000000000000000000000000014110d000000000000000000000000000000000000000000000000000000000014110e000000000000000000000000000000000000000000000000000000000014110f0000000000000000000000000000000000000000000000000000000000141110000000000000000000000000000000000000000000000000000000000014111100000000000000000000000000000000000000000000000000000000001411120000000000000000000000000000000000000000000000000000000000141113000000000000000000000000000000000000000000000000000000000014111400000000000000000000000000000000000000000000000000000000001411150000000000000000000000000000000000000000000000000000000000141116000000000000000000000000000000000000000000000000000000000014111700000000000000000000000000000000000000000000000000000000001411180000000000000000000000000000000000000000000000000000000000141119000000000000000000000000000000000000000000000000000000000014111a000000000000000000000000000000000000000000000000000000000014111b000000000000000000000000000000000000000000000000000000000014111c000000000000000000000000000000000000000000000000000000000014111d000000000000000000000000000000000000000000000000000000000014111e000000000000000000000000000000000000000000000000000000000014111f0000000000000000000000000000000000000000000000000000000000141120000000000000000000000000000000000000000000000000000000000014112100000000000000000000000000000000000000000000000000000000001411220000000000000000000000000000000000000000000000000000000000141123000000000000000000000000000000000000000000000000000000000014112400000000000000000000000000000000000000000000000000000000001411250000000000000000000000000000000000000000000000000000000000141126000000000000000000000000000000000000000000000000000000000014112700000000000000000000000000000000000000000000000000000000001411280000000000000000000000000000000000000000000000000000000000141129000000000000000000000000000000000000000000000000000000000014112a000000000000000000000000000000000000000000000000000000000014112b000000000000000000000000000000000000000000000000000000000014112c000000000000000000000000000000000000000000000000000000000014112d000000000000000000000000000000000000000000000000000000000014112e000000000000000000000000000000000000000000000000000000000014112f0000000000000000000000000000000000000000000000000000000000141130000000000000000000000000000000000000000000000000000000000014113100000000000000000000000000000000000000000000000000000000001411320000000000000000000000000000000000000000000000000000000000141133000000000000000000000000000000000000000000000000000000000014113400000000000000000000000000000000000000000000000000000000001411350000000000000000000000000000000000000000000000000000000000141136000000000000000000000000000000000000000000000000000000000014113700000000000000000000000000000000000000000000000000000000001411380000000000000000000000000000000000000000000000000000000000141139000000000000000000000000000000000000000000000000000000000014113a000000000000000000000000000000000000000000000000000000000014113b000000000000000000000000000000000000000000000000000000000014113c000000000000000000000000000000000000000000000000000000000014113d000000000000000000000000000000000000000000000000000000000014113e08005c015113cb57d67dd6c0febd596819ac0298b6a23fc80aba17d445d540059a00f20b7d1308051fe7b68031a7c336b0b4b56738928b6510133aff1b818d5a9a0063eec1883a4f95f4933f9275e850d84b3d035f5061ed986c437a07331fd30e00d3a32d6bbc4fd843686fd0c5e118a73b847529977dca5b9e0e81f6604f22ca00c2f4f5133d9194d41e853e5e951e16690babce8461f25342c0bad20f2aa1e3000a6bf4739e7eb387913d955dc2e8f14f8cce27696b9d2e128b6acefafb80ee005763f7e0648f958b559677622a648f318fc79ebc0cb539170d49c26456e69200302e2b8a92cda941e9af8761b89899a58a587656d9710594e1d865b16522993f0000000000000000000000000000000000000000000000000000000000142000000000000000000000000000000000000000000000000000000000000014200a0000000000000000000000000000000000000000000000000000000000142001000000000000000000000000000000000000000000000000000000000014200b0000000000000000000000000000000000000000000000000000000000142002000000000000000000000000000000000000000000000000000000000014200c0000000000000000000000000000000000000000000000000000000000142003000000000000000000000000000000000000000000000000000000000014200d0000000000000000000000000000000000000000000000000000000000142004000000000000000000000000000000000000000000000000000000000014200e0000000000000000000000000000000000000000000000000000000000142005000000000000000000000000000000000000000000000000000000000014200f00000000000000000000000000000000000000000000000000000000001420060000000000000000000000000000000000000000000000000000000000142010000000000000000000000000000000000000000000000000000000000014200700000000000000000000000000000000000000000000000000000000001420110000000000000000000000000000000000000000000000000000000000142008000000000000000000000000000000000000000000000000000000000014201200000000000000000000000000000000000000000000000000000000001420090000000000000000000000000000000000000000000000000000000000142013000000000000000000000000000000000000000000000000000000000014200a0000000000000000000000000000000000000000000000000000000000142014000000000000000000000000000000000000000000000000000000000014200b0000000000000000000000000000000000000000000000000000000000142015000000000000000000000000000000000000000000000000000000000014200c0000000000000000000000000000000000000000000000000000000000142016000000000000000000000000000000000000000000000000000000000014200d0000000000000000000000000000000000000000000000000000000000142017000000000000000000000000000000000000000000000000000000000014200e0000000000000000000000000000000000000000000000000000000000142018000000000000000000000000000000000000000000000000000000000014200f00000000000000000000000000000000000000000000000000000000001420190000000000000000000000000000000000000000000000000000000000142010000000000000000000000000000000000000000000000000000000000014201a0000000000000000000000000000000000000000000000000000000000142011000000000000000000000000000000000000000000000000000000000014201b0000000000000000000000000000000000000000000000000000000000142012000000000000000000000000000000000000000000000000000000000014201c0000000000000000000000000000000000000000000000000000000000142013000000000000000000000000000000000000000000000000000000000014201d0000000000000000000000000000000000000000000000000000000000142014000000000000000000000000000000000000000000000000000000000014201e0000000000000000000000000000000000000000000000000000000000142015000000000000000000000000000000000000000000000000000000000014201f00000000000000000000000000000000000000000000000000000000001420160000000000000000000000000000000000000000000000000000000000142020000000000000000000000000000000000000000000000000000000000014201700000000000000000000000000000000000000000000000000000000001420210000000000000000000000000000000000000000000000000000000000142018000000000000000000000000000000000000000000000000000000000014202200000000000000000000000000000000000000000000000000000000001420190000000000000000000000000000000000000000000000000000000000142023000000000000000000000000000000000000000000000000000000000014201a0000000000000000000000000000000000000000000000000000000000142024000000000000000000000000000000000000000000000000000000000014201b0000000000000000000000000000000000000000000000000000000000142025000000000000000000000000000000000000000000000000000000000014201c0000000000000000000000000000000000000000000000000000000000142026000000000000000000000000000000000000000000000000000000000014201d0000000000000000000000000000000000000000000000000000000000142027000000000000000000000000000000000000000000000000000000000014201e0000000000000000000000000000000000000000000000000000000000142028000000000000000000000000000000000000000000000000000000000014201f00000000000000000000000000000000000000000000000000000000001420290000000000000000000000000000000000000000000000000000000000142020000000000000000000000000000000000000000000000000000000000014202a0000000000000000000000000000000000000000000000000000000000142021000000000000000000000000000000000000000000000000000000000014202b0000000000000000000000000000000000000000000000000000000000142022000000000000000000000000000000000000000000000000000000000014202c0000000000000000000000000000000000000000000000000000000000142023000000000000000000000000000000000000000000000000000000000014202d0000000000000000000000000000000000000000000000000000000000142024000000000000000000000000000000000000000000000000000000000014202e0000000000000000000000000000000000000000000000000000000000142025000000000000000000000000000000000000000000000000000000000014202f00000000000000000000000000000000000000000000000000000000001420260000000000000000000000000000000000000000000000000000000000142030000000000000000000000000000000000000000000000000000000000014202700000000000000000000000000000000000000000000000000000000001420310000000000000000000000000000000000000000000000000000000000142028000000000000000000000000000000000000000000000000000000000014203200000000000000000000000000000000000000000000000000000000001420290000000000000000000000000000000000000000000000000000000000142033000000000000000000000000000000000000000000000000000000000014202a0000000000000000000000000000000000000000000000000000000000142034000000000000000000000000000000000000000000000000000000000014202b0000000000000000000000000000000000000000000000000000000000142035000000000000000000000000000000000000000000000000000000000014202c0000000000000000000000000000000000000000000000000000000000142036000000000000000000000000000000000000000000000000000000000014202d0000000000000000000000000000000000000000000000000000000000142037000000000000000000000000000000000000000000000000000000000014202e0000000000000000000000000000000000000000000000000000000000142038000000000000000000000000000000000000000000000000000000000014202f00000000000000000000000000000000000000000000000000000000001420390000000000000000000000000000000000000000000000000000000000142030000000000000000000000000000000000000000000000000000000000014203a0000000000000000000000000000000000000000000000000000000000142031000000000000000000000000000000000000000000000000000000000014203b0000000000000000000000000000000000000000000000000000000000142032000000000000000000000000000000000000000000000000000000000014203c0000000000000000000000000000000000000000000000000000000000142033000000000000000000000000000000000000000000000000000000000014203d0000000000000000000000000000000000000000000000000000000000142034000000000000000000000000000000000000000000000000000000000014203e0000000000000000000000000000000000000000000000000000000000142035000000000000000000000000000000000000000000000000000000000014203f00000000000000000000000000000000000000000000000000000000001420360000000000000000000000000000000000000000000000000000000000142040000000000000000000000000000000000000000000000000000000000014203700000000000000000000000000000000000000000000000000000000001420410000000000000000000000000000000000000000000000000000000000142038000000000000000000000000000000000000000000000000000000000014204200000000000000000000000000000000000000000000000000000000001420390000000000000000000000000000000000000000000000000000000000142043000000000000000000000000000000000000000000000000000000000014203a0000000000000000000000000000000000000000000000000000000000142044000000000000000000000000000000000000000000000000000000000014203b0000000000000000000000000000000000000000000000000000000000142045000000000000000000000000000000000000000000000000000000000014203c0000000000000000000000000000000000000000000000000000000000142046000000000000000000000000000000000000000000000000000000000014203d0000000000000000000000000000000000000000000000000000000000142047000000000000000000000000000000000000000000000000000000000014203e0000000000000000000000000000000000000000000000000000000000142048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000181000000000000000000000000000000000000000000000000000000000000018100100000000000000000000000000000000000000000000000000000000001810020000000000000000000000000000000000000000000000000000000000181003000000000000000000000000000000000000000000000000000000000018100400000000000000000000000000000000000000000000000000000000001810050000000000000000000000000000000000000000000000000000000000181006000000000000000000000000000000000000000000000000000000000018100700000000000000000000000000000000000000000000000000000000001810080000000000000000000000000000000000000000000000000000000000181009000000000000000000000000000000000000000000000000000000000018100a000000000000000000000000000000000000000000000000000000000018100b000000000000000000000000000000000000000000000000000000000018100c000000000000000000000000000000000000000000000000000000000018100d000000000000000000000000000000000000000000000000000000000018100e000000000000000000000000000000000000000000000000000000000018100f0000000000000000000000000000000000000000000000000000000000181010000000000000000000000000000000000000000000000000000000000018101100000000000000000000000000000000000000000000000000000000001810120000000000000000000000000000000000000000000000000000000000181013000000000000000000000000000000000000000000000000000000000018101400000000000000000000000000000000000000000000000000000000001810150000000000000000000000000000000000000000000000000000000000181016000000000000000000000000000000000000000000000000000000000018101700000000000000000000000000000000000000000000000000000000001810180000000000000000000000000000000000000000000000000000000000181019000000000000000000000000000000000000000000000000000000000018101a000000000000000000000000000000000000000000000000000000000018101b000000000000000000000000000000000000000000000000000000000018101c000000000000000000000000000000000000000000000000000000000018101d000000000000000000000000000000000000000000000000000000000018101e000000000000000000000000000000000000000000000000000000000018101f0000000000000000000000000000000000000000000000000000000000181020000000000000000000000000000000000000000000000000000000000018102100000000000000000000000000000000000000000000000000000000001810220000000000000000000000000000000000000000000000000000000000181023000000000000000000000000000000000000000000000000000000000018102400000000000000000000000000000000000000000000000000000000001810250000000000000000000000000000000000000000000000000000000000181026000000000000000000000000000000000000000000000000000000000018102700000000000000000000000000000000000000000000000000000000001810280000000000000000000000000000000000000000000000000000000000181029000000000000000000000000000000000000000000000000000000000018102a000000000000000000000000000000000000000000000000000000000018102b000000000000000000000000000000000000000000000000000000000018102c000000000000000000000000000000000000000000000000000000000018102d000000000000000000000000000000000000000000000000000000000018102e000000000000000000000000000000000000000000000000000000000018102f0000000000000000000000000000000000000000000000000000000000181030000000000000000000000000000000000000000000000000000000000018103100000000000000000000000000000000000000000000000000000000001810320000000000000000000000000000000000000000000000000000000000181033000000000000000000000000000000000000000000000000000000000018103400000000000000000000000000000000000000000000000000000000001810350000000000000000000000000000000000000000000000000000000000181036000000000000000000000000000000000000000000000000000000000018103700000000000000000000000000000000000000000000000000000000001810380000000000000000000000000000000000000000000000000000000000181039000000000000000000000000000000000000000000000000000000000018103a000000000000000000000000000000000000000000000000000000000018103b000000000000000000000000000000000000000000000000000000000018103c000000000000000000000000000000000000000000000000000000000018103d000000000000000000000000000000000000000000000000000000000018103e000000000000000000000000000000000000000000000000000000000018103f3f0000000000000000000000000000000000000000000000000000000000181100000000000000000000000000000000000000000000000000000000000018110100000000000000000000000000000000000000000000000000000000001811020000000000000000000000000000000000000000000000000000000000181103000000000000000000000000000000000000000000000000000000000018110400000000000000000000000000000000000000000000000000000000001811050000000000000000000000000000000000000000000000000000000000181106000000000000000000000000000000000000000000000000000000000018110700000000000000000000000000000000000000000000000000000000001811080000000000000000000000000000000000000000000000000000000000181109000000000000000000000000000000000000000000000000000000000018110a000000000000000000000000000000000000000000000000000000000018110b000000000000000000000000000000000000000000000000000000000018110c000000000000000000000000000000000000000000000000000000000018110d000000000000000000000000000000000000000000000000000000000018110e000000000000000000000000000000000000000000000000000000000018110f0000000000000000000000000000000000000000000000000000000000181110000000000000000000000000000000000000000000000000000000000018111100000000000000000000000000000000000000000000000000000000001811120000000000000000000000000000000000000000000000000000000000181113000000000000000000000000000000000000000000000000000000000018111400000000000000000000000000000000000000000000000000000000001811150000000000000000000000000000000000000000000000000000000000181116000000000000000000000000000000000000000000000000000000000018111700000000000000000000000000000000000000000000000000000000001811180000000000000000000000000000000000000000000000000000000000181119000000000000000000000000000000000000000000000000000000000018111a000000000000000000000000000000000000000000000000000000000018111b000000000000000000000000000000000000000000000000000000000018111c000000000000000000000000000000000000000000000000000000000018111d000000000000000000000000000000000000000000000000000000000018111e000000000000000000000000000000000000000000000000000000000018111f0000000000000000000000000000000000000000000000000000000000181120000000000000000000000000000000000000000000000000000000000018112100000000000000000000000000000000000000000000000000000000001811220000000000000000000000000000000000000000000000000000000000181123000000000000000000000000000000000000000000000000000000000018112400000000000000000000000000000000000000000000000000000000001811250000000000000000000000000000000000000000000000000000000000181126000000000000000000000000000000000000000000000000000000000018112700000000000000000000000000000000000000000000000000000000001811280000000000000000000000000000000000000000000000000000000000181129000000000000000000000000000000000000000000000000000000000018112a000000000000000000000000000000000000000000000000000000000018112b000000000000000000000000000000000000000000000000000000000018112c000000000000000000000000000000000000000000000000000000000018112d000000000000000000000000000000000000000000000000000000000018112e000000000000000000000000000000000000000000000000000000000018112f0000000000000000000000000000000000000000000000000000000000181130000000000000000000000000000000000000000000000000000000000018113100000000000000000000000000000000000000000000000000000000001811320000000000000000000000000000000000000000000000000000000000181133000000000000000000000000000000000000000000000000000000000018113400000000000000000000000000000000000000000000000000000000001811350000000000000000000000000000000000000000000000000000000000181136000000000000000000000000000000000000000000000000000000000018113700000000000000000000000000000000000000000000000000000000001811380000000000000000000000000000000000000000000000000000000000181139000000000000000000000000000000000000000000000000000000000018113a000000000000000000000000000000000000000000000000000000000018113b000000000000000000000000000000000000000000000000000000000018113c000000000000000000000000000000000000000000000000000000000018113d000000000000000000000000000000000000000000000000000000000018113e0800f872eb9653f03af10f331da1361fa1524d3cd958cb72dacea1d424f19df3af00ffc548a17cd6ba1f2d228f30e4ddb19ecc46ad3b609977d52bb0f49e1206410032f8058bd779c520eabae2743b02ec4f71670428506fcceb2d4b69f26fb11800c0283e15fbf74ffa4eafb984030394f3c2ea6733cc0eacb0431a9475eff28f00b7f55314bfd9d441c1c624e241908228fe4da3d3a0a7fbd56814e1c8cd5d3e00f430f33a786675271736fd728c7bf7428b8c24ac948d7faf76ddb8783a496c0048fc235ead8d4b9d44929662a6384074fc4e5076bec5b7deb34f612393684300fd9b61cb1ad9b4b28f58399906e73933e3cccee8fc98a393f0eedb95b13ee63f0000000000000000000000000000000000000000000000000000000000182000000000000000000000000000000000000000000000000000000000000018200a0000000000000000000000000000000000000000000000000000000000182001000000000000000000000000000000000000000000000000000000000018200b0000000000000000000000000000000000000000000000000000000000182002000000000000000000000000000000000000000000000000000000000018200c0000000000000000000000000000000000000000000000000000000000182003000000000000000000000000000000000000000000000000000000000018200d0000000000000000000000000000000000000000000000000000000000182004000000000000000000000000000000000000000000000000000000000018200e0000000000000000000000000000000000000000000000000000000000182005000000000000000000000000000000000000000000000000000000000018200f00000000000000000000000000000000000000000000000000000000001820060000000000000000000000000000000000000000000000000000000000182010000000000000000000000000000000000000000000000000000000000018200700000000000000000000000000000000000000000000000000000000001820110000000000000000000000000000000000000000000000000000000000182008000000000000000000000000000000000000000000000000000000000018201200000000000000000000000000000000000000000000000000000000001820090000000000000000000000000000000000000000000000000000000000182013000000000000000000000000000000000000000000000000000000000018200a0000000000000000000000000000000000000000000000000000000000182014000000000000000000000000000000000000000000000000000000000018200b0000000000000000000000000000000000000000000000000000000000182015000000000000000000000000000000000000000000000000000000000018200c0000000000000000000000000000000000000000000000000000000000182016000000000000000000000000000000000000000000000000000000000018200d0000000000000000000000000000000000000000000000000000000000182017000000000000000000000000000000000000000000000000000000000018200e0000000000000000000000000000000000000000000000000000000000182018000000000000000000000000000000000000000000000000000000000018200f00000000000000000000000000000000000000000000000000000000001820190000000000000000000000000000000000000000000000000000000000182010000000000000000000000000000000000000000000000000000000000018201a0000000000000000000000000000000000000000000000000000000000182011000000000000000000000000000000000000000000000000000000000018201b0000000000000000000000000000000000000000000000000000000000182012000000000000000000000000000000000000000000000000000000000018201c0000000000000000000000000000000000000000000000000000000000182013000000000000000000000000000000000000000000000000000000000018201d0000000000000000000000000000000000000000000000000000000000182014000000000000000000000000000000000000000000000000000000000018201e0000000000000000000000000000000000000000000000000000000000182015000000000000000000000000000000000000000000000000000000000018201f00000000000000000000000000000000000000000000000000000000001820160000000000000000000000000000000000000000000000000000000000182020000000000000000000000000000000000000000000000000000000000018201700000000000000000000000000000000000000000000000000000000001820210000000000000000000000000000000000000000000000000000000000182018000000000000000000000000000000000000000000000000000000000018202200000000000000000000000000000000000000000000000000000000001820190000000000000000000000000000000000000000000000000000000000182023000000000000000000000000000000000000000000000000000000000018201a0000000000000000000000000000000000000000000000000000000000182024000000000000000000000000000000000000000000000000000000000018201b0000000000000000000000000000000000000000000000000000000000182025000000000000000000000000000000000000000000000000000000000018201c0000000000000000000000000000000000000000000000000000000000182026000000000000000000000000000000000000000000000000000000000018201d0000000000000000000000000000000000000000000000000000000000182027000000000000000000000000000000000000000000000000000000000018201e0000000000000000000000000000000000000000000000000000000000182028000000000000000000000000000000000000000000000000000000000018201f00000000000000000000000000000000000000000000000000000000001820290000000000000000000000000000000000000000000000000000000000182020000000000000000000000000000000000000000000000000000000000018202a0000000000000000000000000000000000000000000000000000000000182021000000000000000000000000000000000000000000000000000000000018202b0000000000000000000000000000000000000000000000000000000000182022000000000000000000000000000000000000000000000000000000000018202c0000000000000000000000000000000000000000000000000000000000182023000000000000000000000000000000000000000000000000000000000018202d0000000000000000000000000000000000000000000000000000000000182024000000000000000000000000000000000000000000000000000000000018202e0000000000000000000000000000000000000000000000000000000000182025000000000000000000000000000000000000000000000000000000000018202f00000000000000000000000000000000000000000000000000000000001820260000000000000000000000000000000000000000000000000000000000182030000000000000000000000000000000000000000000000000000000000018202700000000000000000000000000000000000000000000000000000000001820310000000000000000000000000000000000000000000000000000000000182028000000000000000000000000000000000000000000000000000000000018203200000000000000000000000000000000000000000000000000000000001820290000000000000000000000000000000000000000000000000000000000182033000000000000000000000000000000000000000000000000000000000018202a0000000000000000000000000000000000000000000000000000000000182034000000000000000000000000000000000000000000000000000000000018202b0000000000000000000000000000000000000000000000000000000000182035000000000000000000000000000000000000000000000000000000000018202c0000000000000000000000000000000000000000000000000000000000182036000000000000000000000000000000000000000000000000000000000018202d0000000000000000000000000000000000000000000000000000000000182037000000000000000000000000000000000000000000000000000000000018202e0000000000000000000000000000000000000000000000000000000000182038000000000000000000000000000000000000000000000000000000000018202f00000000000000000000000000000000000000000000000000000000001820390000000000000000000000000000000000000000000000000000000000182030000000000000000000000000000000000000000000000000000000000018203a0000000000000000000000000000000000000000000000000000000000182031000000000000000000000000000000000000000000000000000000000018203b0000000000000000000000000000000000000000000000000000000000182032000000000000000000000000000000000000000000000000000000000018203c0000000000000000000000000000000000000000000000000000000000182033000000000000000000000000000000000000000000000000000000000018203d0000000000000000000000000000000000000000000000000000000000182034000000000000000000000000000000000000000000000000000000000018203e0000000000000000000000000000000000000000000000000000000000182035000000000000000000000000000000000000000000000000000000000018203f00000000000000000000000000000000000000000000000000000000001820360000000000000000000000000000000000000000000000000000000000182040000000000000000000000000000000000000000000000000000000000018203700000000000000000000000000000000000000000000000000000000001820410000000000000000000000000000000000000000000000000000000000182038000000000000000000000000000000000000000000000000000000000018204200000000000000000000000000000000000000000000000000000000001820390000000000000000000000000000000000000000000000000000000000182043000000000000000000000000000000000000000000000000000000000018203a0000000000000000000000000000000000000000000000000000000000182044000000000000000000000000000000000000000000000000000000000018203b0000000000000000000000000000000000000000000000000000000000182045000000000000000000000000000000000000000000000000000000000018203c0000000000000000000000000000000000000000000000000000000000182046000000000000000000000000000000000000000000000000000000000018203d0000000000000000000000000000000000000000000000000000000000182047000000000000000000000000000000000000000000000000000000000018203e00000000000000000000000000000000000000000000000000000000001820480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000001c100000000000000000000000000000000000000000000000000000000000001c100100000000000000000000000000000000000000000000000000000000001c100200000000000000000000000000000000000000000000000000000000001c100300000000000000000000000000000000000000000000000000000000001c100400000000000000000000000000000000000000000000000000000000001c100500000000000000000000000000000000000000000000000000000000001c100600000000000000000000000000000000000000000000000000000000001c100700000000000000000000000000000000000000000000000000000000001c100800000000000000000000000000000000000000000000000000000000001c100900000000000000000000000000000000000000000000000000000000001c100a00000000000000000000000000000000000000000000000000000000001c100b00000000000000000000000000000000000000000000000000000000001c100c00000000000000000000000000000000000000000000000000000000001c100d00000000000000000000000000000000000000000000000000000000001c100e00000000000000000000000000000000000000000000000000000000001c100f00000000000000000000000000000000000000000000000000000000001c101000000000000000000000000000000000000000000000000000000000001c101100000000000000000000000000000000000000000000000000000000001c101200000000000000000000000000000000000000000000000000000000001c101300000000000000000000000000000000000000000000000000000000001c101400000000000000000000000000000000000000000000000000000000001c101500000000000000000000000000000000000000000000000000000000001c101600000000000000000000000000000000000000000000000000000000001c101700000000000000000000000000000000000000000000000000000000001c101800000000000000000000000000000000000000000000000000000000001c101900000000000000000000000000000000000000000000000000000000001c101a00000000000000000000000000000000000000000000000000000000001c101b00000000000000000000000000000000000000000000000000000000001c101c00000000000000000000000000000000000000000000000000000000001c101d00000000000000000000000000000000000000000000000000000000001c101e00000000000000000000000000000000000000000000000000000000001c101f00000000000000000000000000000000000000000000000000000000001c102000000000000000000000000000000000000000000000000000000000001c102100000000000000000000000000000000000000000000000000000000001c102200000000000000000000000000000000000000000000000000000000001c102300000000000000000000000000000000000000000000000000000000001c102400000000000000000000000000000000000000000000000000000000001c102500000000000000000000000000000000000000000000000000000000001c102600000000000000000000000000000000000000000000000000000000001c102700000000000000000000000000000000000000000000000000000000001c102800000000000000000000000000000000000000000000000000000000001c102900000000000000000000000000000000000000000000000000000000001c102a00000000000000000000000000000000000000000000000000000000001c102b00000000000000000000000000000000000000000000000000000000001c102c00000000000000000000000000000000000000000000000000000000001c102d00000000000000000000000000000000000000000000000000000000001c102e00000000000000000000000000000000000000000000000000000000001c102f00000000000000000000000000000000000000000000000000000000001c103000000000000000000000000000000000000000000000000000000000001c103100000000000000000000000000000000000000000000000000000000001c103200000000000000000000000000000000000000000000000000000000001c103300000000000000000000000000000000000000000000000000000000001c103400000000000000000000000000000000000000000000000000000000001c103500000000000000000000000000000000000000000000000000000000001c103600000000000000000000000000000000000000000000000000000000001c103700000000000000000000000000000000000000000000000000000000001c103800000000000000000000000000000000000000000000000000000000001c103900000000000000000000000000000000000000000000000000000000001c103a00000000000000000000000000000000000000000000000000000000001c103b00000000000000000000000000000000000000000000000000000000001c103c00000000000000000000000000000000000000000000000000000000001c103d00000000000000000000000000000000000000000000000000000000001c103e00000000000000000000000000000000000000000000000000000000001c103f3f00000000000000000000000000000000000000000000000000000000001c110000000000000000000000000000000000000000000000000000000000001c110100000000000000000000000000000000000000000000000000000000001c110200000000000000000000000000000000000000000000000000000000001c110300000000000000000000000000000000000000000000000000000000001c110400000000000000000000000000000000000000000000000000000000001c110500000000000000000000000000000000000000000000000000000000001c110600000000000000000000000000000000000000000000000000000000001c110700000000000000000000000000000000000000000000000000000000001c110800000000000000000000000000000000000000000000000000000000001c110900000000000000000000000000000000000000000000000000000000001c110a00000000000000000000000000000000000000000000000000000000001c110b00000000000000000000000000000000000000000000000000000000001c110c00000000000000000000000000000000000000000000000000000000001c110d00000000000000000000000000000000000000000000000000000000001c110e00000000000000000000000000000000000000000000000000000000001c110f00000000000000000000000000000000000000000000000000000000001c111000000000000000000000000000000000000000000000000000000000001c111100000000000000000000000000000000000000000000000000000000001c111200000000000000000000000000000000000000000000000000000000001c111300000000000000000000000000000000000000000000000000000000001c111400000000000000000000000000000000000000000000000000000000001c111500000000000000000000000000000000000000000000000000000000001c111600000000000000000000000000000000000000000000000000000000001c111700000000000000000000000000000000000000000000000000000000001c111800000000000000000000000000000000000000000000000000000000001c111900000000000000000000000000000000000000000000000000000000001c111a00000000000000000000000000000000000000000000000000000000001c111b00000000000000000000000000000000000000000000000000000000001c111c00000000000000000000000000000000000000000000000000000000001c111d00000000000000000000000000000000000000000000000000000000001c111e00000000000000000000000000000000000000000000000000000000001c111f00000000000000000000000000000000000000000000000000000000001c112000000000000000000000000000000000000000000000000000000000001c112100000000000000000000000000000000000000000000000000000000001c112200000000000000000000000000000000000000000000000000000000001c112300000000000000000000000000000000000000000000000000000000001c112400000000000000000000000000000000000000000000000000000000001c112500000000000000000000000000000000000000000000000000000000001c112600000000000000000000000000000000000000000000000000000000001c112700000000000000000000000000000000000000000000000000000000001c112800000000000000000000000000000000000000000000000000000000001c112900000000000000000000000000000000000000000000000000000000001c112a00000000000000000000000000000000000000000000000000000000001c112b00000000000000000000000000000000000000000000000000000000001c112c00000000000000000000000000000000000000000000000000000000001c112d00000000000000000000000000000000000000000000000000000000001c112e00000000000000000000000000000000000000000000000000000000001c112f00000000000000000000000000000000000000000000000000000000001c113000000000000000000000000000000000000000000000000000000000001c113100000000000000000000000000000000000000000000000000000000001c113200000000000000000000000000000000000000000000000000000000001c113300000000000000000000000000000000000000000000000000000000001c113400000000000000000000000000000000000000000000000000000000001c113500000000000000000000000000000000000000000000000000000000001c113600000000000000000000000000000000000000000000000000000000001c113700000000000000000000000000000000000000000000000000000000001c113800000000000000000000000000000000000000000000000000000000001c113900000000000000000000000000000000000000000000000000000000001c113a00000000000000000000000000000000000000000000000000000000001c113b00000000000000000000000000000000000000000000000000000000001c113c00000000000000000000000000000000000000000000000000000000001c113d00000000000000000000000000000000000000000000000000000000001c113e08006838aa99533bea0d4204cad17cb3c147e99c2f9089e54a4289d54733eeada2002ab314bd11ace2494a3fb0970d276da39f0fe7da19c9a2438b9c7c334d32470071703d79d8425a7eca52006df6a8f9728508a83639e3e1c2ebae2b853a087c00c9501ac04a78ac5413c9131b08708064ed2c2515b8893f12c2d1cda15a44f100a0955f93e109778d26f9e5b0d46e45c539e59b0941517bfa888eb2d7d2d8a6005adc3be9406cc5f102c6adb44746e8529a256e2396353a8659344cc3e914c4007a5fe572cf6af804f472dabf095c5eb6b30efc5fd627ad3245a8ef0f3f578c003dcaa91dfc9fdad7ba8da68a48fc662dfc0a995cbb0c1bc62099c8257d240d3f00000000000000000000000000000000000000000000000000000000001c200000000000000000000000000000000000000000000000000000000000001c200a00000000000000000000000000000000000000000000000000000000001c200100000000000000000000000000000000000000000000000000000000001c200b00000000000000000000000000000000000000000000000000000000001c200200000000000000000000000000000000000000000000000000000000001c200c00000000000000000000000000000000000000000000000000000000001c200300000000000000000000000000000000000000000000000000000000001c200d00000000000000000000000000000000000000000000000000000000001c200400000000000000000000000000000000000000000000000000000000001c200e00000000000000000000000000000000000000000000000000000000001c200500000000000000000000000000000000000000000000000000000000001c200f00000000000000000000000000000000000000000000000000000000001c200600000000000000000000000000000000000000000000000000000000001c201000000000000000000000000000000000000000000000000000000000001c200700000000000000000000000000000000000000000000000000000000001c201100000000000000000000000000000000000000000000000000000000001c200800000000000000000000000000000000000000000000000000000000001c201200000000000000000000000000000000000000000000000000000000001c200900000000000000000000000000000000000000000000000000000000001c201300000000000000000000000000000000000000000000000000000000001c200a00000000000000000000000000000000000000000000000000000000001c201400000000000000000000000000000000000000000000000000000000001c200b00000000000000000000000000000000000000000000000000000000001c201500000000000000000000000000000000000000000000000000000000001c200c00000000000000000000000000000000000000000000000000000000001c201600000000000000000000000000000000000000000000000000000000001c200d00000000000000000000000000000000000000000000000000000000001c201700000000000000000000000000000000000000000000000000000000001c200e00000000000000000000000000000000000000000000000000000000001c201800000000000000000000000000000000000000000000000000000000001c200f00000000000000000000000000000000000000000000000000000000001c201900000000000000000000000000000000000000000000000000000000001c201000000000000000000000000000000000000000000000000000000000001c201a00000000000000000000000000000000000000000000000000000000001c201100000000000000000000000000000000000000000000000000000000001c201b00000000000000000000000000000000000000000000000000000000001c201200000000000000000000000000000000000000000000000000000000001c201c00000000000000000000000000000000000000000000000000000000001c201300000000000000000000000000000000000000000000000000000000001c201d00000000000000000000000000000000000000000000000000000000001c201400000000000000000000000000000000000000000000000000000000001c201e00000000000000000000000000000000000000000000000000000000001c201500000000000000000000000000000000000000000000000000000000001c201f00000000000000000000000000000000000000000000000000000000001c201600000000000000000000000000000000000000000000000000000000001c202000000000000000000000000000000000000000000000000000000000001c201700000000000000000000000000000000000000000000000000000000001c202100000000000000000000000000000000000000000000000000000000001c201800000000000000000000000000000000000000000000000000000000001c202200000000000000000000000000000000000000000000000000000000001c201900000000000000000000000000000000000000000000000000000000001c202300000000000000000000000000000000000000000000000000000000001c201a00000000000000000000000000000000000000000000000000000000001c202400000000000000000000000000000000000000000000000000000000001c201b00000000000000000000000000000000000000000000000000000000001c202500000000000000000000000000000000000000000000000000000000001c201c00000000000000000000000000000000000000000000000000000000001c202600000000000000000000000000000000000000000000000000000000001c201d00000000000000000000000000000000000000000000000000000000001c202700000000000000000000000000000000000000000000000000000000001c201e00000000000000000000000000000000000000000000000000000000001c202800000000000000000000000000000000000000000000000000000000001c201f00000000000000000000000000000000000000000000000000000000001c202900000000000000000000000000000000000000000000000000000000001c202000000000000000000000000000000000000000000000000000000000001c202a00000000000000000000000000000000000000000000000000000000001c202100000000000000000000000000000000000000000000000000000000001c202b00000000000000000000000000000000000000000000000000000000001c202200000000000000000000000000000000000000000000000000000000001c202c00000000000000000000000000000000000000000000000000000000001c202300000000000000000000000000000000000000000000000000000000001c202d00000000000000000000000000000000000000000000000000000000001c202400000000000000000000000000000000000000000000000000000000001c202e00000000000000000000000000000000000000000000000000000000001c202500000000000000000000000000000000000000000000000000000000001c202f00000000000000000000000000000000000000000000000000000000001c202600000000000000000000000000000000000000000000000000000000001c203000000000000000000000000000000000000000000000000000000000001c202700000000000000000000000000000000000000000000000000000000001c203100000000000000000000000000000000000000000000000000000000001c202800000000000000000000000000000000000000000000000000000000001c203200000000000000000000000000000000000000000000000000000000001c202900000000000000000000000000000000000000000000000000000000001c203300000000000000000000000000000000000000000000000000000000001c202a00000000000000000000000000000000000000000000000000000000001c203400000000000000000000000000000000000000000000000000000000001c202b00000000000000000000000000000000000000000000000000000000001c203500000000000000000000000000000000000000000000000000000000001c202c00000000000000000000000000000000000000000000000000000000001c203600000000000000000000000000000000000000000000000000000000001c202d00000000000000000000000000000000000000000000000000000000001c203700000000000000000000000000000000000000000000000000000000001c202e00000000000000000000000000000000000000000000000000000000001c203800000000000000000000000000000000000000000000000000000000001c202f00000000000000000000000000000000000000000000000000000000001c203900000000000000000000000000000000000000000000000000000000001c203000000000000000000000000000000000000000000000000000000000001c203a00000000000000000000000000000000000000000000000000000000001c203100000000000000000000000000000000000000000000000000000000001c203b00000000000000000000000000000000000000000000000000000000001c203200000000000000000000000000000000000000000000000000000000001c203c00000000000000000000000000000000000000000000000000000000001c203300000000000000000000000000000000000000000000000000000000001c203d00000000000000000000000000000000000000000000000000000000001c203400000000000000000000000000000000000000000000000000000000001c203e00000000000000000000000000000000000000000000000000000000001c203500000000000000000000000000000000000000000000000000000000001c203f00000000000000000000000000000000000000000000000000000000001c203600000000000000000000000000000000000000000000000000000000001c204000000000000000000000000000000000000000000000000000000000001c203700000000000000000000000000000000000000000000000000000000001c204100000000000000000000000000000000000000000000000000000000001c203800000000000000000000000000000000000000000000000000000000001c204200000000000000000000000000000000000000000000000000000000001c203900000000000000000000000000000000000000000000000000000000001c204300000000000000000000000000000000000000000000000000000000001c203a00000000000000000000000000000000000000000000000000000000001c204400000000000000000000000000000000000000000000000000000000001c203b00000000000000000000000000000000000000000000000000000000001c204500000000000000000000000000000000000000000000000000000000001c203c00000000000000000000000000000000000000000000000000000000001c204600000000000000000000000000000000000000000000000000000000001c203d00000000000000000000000000000000000000000000000000000000001c204700000000000000000000000000000000000000000000000000000000001c203e00000000000000000000000000000000000000000000000000000000001c2048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000201000000000000000000000000000000000000000000000000000000000000020100100000000000000000000000000000000000000000000000000000000002010020000000000000000000000000000000000000000000000000000000000201003000000000000000000000000000000000000000000000000000000000020100400000000000000000000000000000000000000000000000000000000002010050000000000000000000000000000000000000000000000000000000000201006000000000000000000000000000000000000000000000000000000000020100700000000000000000000000000000000000000000000000000000000002010080000000000000000000000000000000000000000000000000000000000201009000000000000000000000000000000000000000000000000000000000020100a000000000000000000000000000000000000000000000000000000000020100b000000000000000000000000000000000000000000000000000000000020100c000000000000000000000000000000000000000000000000000000000020100d000000000000000000000000000000000000000000000000000000000020100e000000000000000000000000000000000000000000000000000000000020100f0000000000000000000000000000000000000000000000000000000000201010000000000000000000000000000000000000000000000000000000000020101100000000000000000000000000000000000000000000000000000000002010120000000000000000000000000000000000000000000000000000000000201013000000000000000000000000000000000000000000000000000000000020101400000000000000000000000000000000000000000000000000000000002010150000000000000000000000000000000000000000000000000000000000201016000000000000000000000000000000000000000000000000000000000020101700000000000000000000000000000000000000000000000000000000002010180000000000000000000000000000000000000000000000000000000000201019000000000000000000000000000000000000000000000000000000000020101a000000000000000000000000000000000000000000000000000000000020101b000000000000000000000000000000000000000000000000000000000020101c000000000000000000000000000000000000000000000000000000000020101d000000000000000000000000000000000000000000000000000000000020101e000000000000000000000000000000000000000000000000000000000020101f0000000000000000000000000000000000000000000000000000000000201020000000000000000000000000000000000000000000000000000000000020102100000000000000000000000000000000000000000000000000000000002010220000000000000000000000000000000000000000000000000000000000201023000000000000000000000000000000000000000000000000000000000020102400000000000000000000000000000000000000000000000000000000002010250000000000000000000000000000000000000000000000000000000000201026000000000000000000000000000000000000000000000000000000000020102700000000000000000000000000000000000000000000000000000000002010280000000000000000000000000000000000000000000000000000000000201029000000000000000000000000000000000000000000000000000000000020102a000000000000000000000000000000000000000000000000000000000020102b000000000000000000000000000000000000000000000000000000000020102c000000000000000000000000000000000000000000000000000000000020102d000000000000000000000000000000000000000000000000000000000020102e000000000000000000000000000000000000000000000000000000000020102f0000000000000000000000000000000000000000000000000000000000201030000000000000000000000000000000000000000000000000000000000020103100000000000000000000000000000000000000000000000000000000002010320000000000000000000000000000000000000000000000000000000000201033000000000000000000000000000000000000000000000000000000000020103400000000000000000000000000000000000000000000000000000000002010350000000000000000000000000000000000000000000000000000000000201036000000000000000000000000000000000000000000000000000000000020103700000000000000000000000000000000000000000000000000000000002010380000000000000000000000000000000000000000000000000000000000201039000000000000000000000000000000000000000000000000000000000020103a000000000000000000000000000000000000000000000000000000000020103b000000000000000000000000000000000000000000000000000000000020103c000000000000000000000000000000000000000000000000000000000020103d000000000000000000000000000000000000000000000000000000000020103e000000000000000000000000000000000000000000000000000000000020103f3f0000000000000000000000000000000000000000000000000000000000201100000000000000000000000000000000000000000000000000000000000020110100000000000000000000000000000000000000000000000000000000002011020000000000000000000000000000000000000000000000000000000000201103000000000000000000000000000000000000000000000000000000000020110400000000000000000000000000000000000000000000000000000000002011050000000000000000000000000000000000000000000000000000000000201106000000000000000000000000000000000000000000000000000000000020110700000000000000000000000000000000000000000000000000000000002011080000000000000000000000000000000000000000000000000000000000201109000000000000000000000000000000000000000000000000000000000020110a000000000000000000000000000000000000000000000000000000000020110b000000000000000000000000000000000000000000000000000000000020110c000000000000000000000000000000000000000000000000000000000020110d000000000000000000000000000000000000000000000000000000000020110e000000000000000000000000000000000000000000000000000000000020110f0000000000000000000000000000000000000000000000000000000000201110000000000000000000000000000000000000000000000000000000000020111100000000000000000000000000000000000000000000000000000000002011120000000000000000000000000000000000000000000000000000000000201113000000000000000000000000000000000000000000000000000000000020111400000000000000000000000000000000000000000000000000000000002011150000000000000000000000000000000000000000000000000000000000201116000000000000000000000000000000000000000000000000000000000020111700000000000000000000000000000000000000000000000000000000002011180000000000000000000000000000000000000000000000000000000000201119000000000000000000000000000000000000000000000000000000000020111a000000000000000000000000000000000000000000000000000000000020111b000000000000000000000000000000000000000000000000000000000020111c000000000000000000000000000000000000000000000000000000000020111d000000000000000000000000000000000000000000000000000000000020111e000000000000000000000000000000000000000000000000000000000020111f0000000000000000000000000000000000000000000000000000000000201120000000000000000000000000000000000000000000000000000000000020112100000000000000000000000000000000000000000000000000000000002011220000000000000000000000000000000000000000000000000000000000201123000000000000000000000000000000000000000000000000000000000020112400000000000000000000000000000000000000000000000000000000002011250000000000000000000000000000000000000000000000000000000000201126000000000000000000000000000000000000000000000000000000000020112700000000000000000000000000000000000000000000000000000000002011280000000000000000000000000000000000000000000000000000000000201129000000000000000000000000000000000000000000000000000000000020112a000000000000000000000000000000000000000000000000000000000020112b000000000000000000000000000000000000000000000000000000000020112c000000000000000000000000000000000000000000000000000000000020112d000000000000000000000000000000000000000000000000000000000020112e000000000000000000000000000000000000000000000000000000000020112f0000000000000000000000000000000000000000000000000000000000201130000000000000000000000000000000000000000000000000000000000020113100000000000000000000000000000000000000000000000000000000002011320000000000000000000000000000000000000000000000000000000000201133000000000000000000000000000000000000000000000000000000000020113400000000000000000000000000000000000000000000000000000000002011350000000000000000000000000000000000000000000000000000000000201136000000000000000000000000000000000000000000000000000000000020113700000000000000000000000000000000000000000000000000000000002011380000000000000000000000000000000000000000000000000000000000201139000000000000000000000000000000000000000000000000000000000020113a000000000000000000000000000000000000000000000000000000000020113b000000000000000000000000000000000000000000000000000000000020113c000000000000000000000000000000000000000000000000000000000020113d000000000000000000000000000000000000000000000000000000000020113e0800e9805e8a4faa87fc419af08a6d956f18976c46ea694bbd4cf6946e6d02033200e0925a6b172b4b01bb76eb1d3f7dd2ced118bca70d223a6d61afa1b75915ae00383590492d2f99a0283d1de57015b4b6b0759a8023af2c68fb4929dee2f303007ed57100dd77e2b6405f780503ef61b7b53e13f344b6e6a6eff3e3c13de0d0001ab1b0c348c46184dbc86ff79f248e7da1b09d3f9c6a986e98fe45389f060d0023d134bc68d7efa25e255001069827dc0bee766c08c988d6300071ed27fe6c0031cbb780b07f632cbaf767dc80608cc0a8e1d1df3ecd6f5d8bc0ca6703e4f4002c7dc9e731fc5f6456b2a70b4e636ac17d5e0cd36d3a591116a9e124f735863f0000000000000000000000000000000000000000000000000000000000202000000000000000000000000000000000000000000000000000000000000020200a0000000000000000000000000000000000000000000000000000000000202001000000000000000000000000000000000000000000000000000000000020200b0000000000000000000000000000000000000000000000000000000000202002000000000000000000000000000000000000000000000000000000000020200c0000000000000000000000000000000000000000000000000000000000202003000000000000000000000000000000000000000000000000000000000020200d0000000000000000000000000000000000000000000000000000000000202004000000000000000000000000000000000000000000000000000000000020200e0000000000000000000000000000000000000000000000000000000000202005000000000000000000000000000000000000000000000000000000000020200f00000000000000000000000000000000000000000000000000000000002020060000000000000000000000000000000000000000000000000000000000202010000000000000000000000000000000000000000000000000000000000020200700000000000000000000000000000000000000000000000000000000002020110000000000000000000000000000000000000000000000000000000000202008000000000000000000000000000000000000000000000000000000000020201200000000000000000000000000000000000000000000000000000000002020090000000000000000000000000000000000000000000000000000000000202013000000000000000000000000000000000000000000000000000000000020200a0000000000000000000000000000000000000000000000000000000000202014000000000000000000000000000000000000000000000000000000000020200b0000000000000000000000000000000000000000000000000000000000202015000000000000000000000000000000000000000000000000000000000020200c0000000000000000000000000000000000000000000000000000000000202016000000000000000000000000000000000000000000000000000000000020200d0000000000000000000000000000000000000000000000000000000000202017000000000000000000000000000000000000000000000000000000000020200e0000000000000000000000000000000000000000000000000000000000202018000000000000000000000000000000000000000000000000000000000020200f00000000000000000000000000000000000000000000000000000000002020190000000000000000000000000000000000000000000000000000000000202010000000000000000000000000000000000000000000000000000000000020201a0000000000000000000000000000000000000000000000000000000000202011000000000000000000000000000000000000000000000000000000000020201b0000000000000000000000000000000000000000000000000000000000202012000000000000000000000000000000000000000000000000000000000020201c0000000000000000000000000000000000000000000000000000000000202013000000000000000000000000000000000000000000000000000000000020201d0000000000000000000000000000000000000000000000000000000000202014000000000000000000000000000000000000000000000000000000000020201e0000000000000000000000000000000000000000000000000000000000202015000000000000000000000000000000000000000000000000000000000020201f00000000000000000000000000000000000000000000000000000000002020160000000000000000000000000000000000000000000000000000000000202020000000000000000000000000000000000000000000000000000000000020201700000000000000000000000000000000000000000000000000000000002020210000000000000000000000000000000000000000000000000000000000202018000000000000000000000000000000000000000000000000000000000020202200000000000000000000000000000000000000000000000000000000002020190000000000000000000000000000000000000000000000000000000000202023000000000000000000000000000000000000000000000000000000000020201a0000000000000000000000000000000000000000000000000000000000202024000000000000000000000000000000000000000000000000000000000020201b0000000000000000000000000000000000000000000000000000000000202025000000000000000000000000000000000000000000000000000000000020201c0000000000000000000000000000000000000000000000000000000000202026000000000000000000000000000000000000000000000000000000000020201d0000000000000000000000000000000000000000000000000000000000202027000000000000000000000000000000000000000000000000000000000020201e0000000000000000000000000000000000000000000000000000000000202028000000000000000000000000000000000000000000000000000000000020201f00000000000000000000000000000000000000000000000000000000002020290000000000000000000000000000000000000000000000000000000000202020000000000000000000000000000000000000000000000000000000000020202a0000000000000000000000000000000000000000000000000000000000202021000000000000000000000000000000000000000000000000000000000020202b0000000000000000000000000000000000000000000000000000000000202022000000000000000000000000000000000000000000000000000000000020202c0000000000000000000000000000000000000000000000000000000000202023000000000000000000000000000000000000000000000000000000000020202d0000000000000000000000000000000000000000000000000000000000202024000000000000000000000000000000000000000000000000000000000020202e0000000000000000000000000000000000000000000000000000000000202025000000000000000000000000000000000000000000000000000000000020202f00000000000000000000000000000000000000000000000000000000002020260000000000000000000000000000000000000000000000000000000000202030000000000000000000000000000000000000000000000000000000000020202700000000000000000000000000000000000000000000000000000000002020310000000000000000000000000000000000000000000000000000000000202028000000000000000000000000000000000000000000000000000000000020203200000000000000000000000000000000000000000000000000000000002020290000000000000000000000000000000000000000000000000000000000202033000000000000000000000000000000000000000000000000000000000020202a0000000000000000000000000000000000000000000000000000000000202034000000000000000000000000000000000000000000000000000000000020202b0000000000000000000000000000000000000000000000000000000000202035000000000000000000000000000000000000000000000000000000000020202c0000000000000000000000000000000000000000000000000000000000202036000000000000000000000000000000000000000000000000000000000020202d0000000000000000000000000000000000000000000000000000000000202037000000000000000000000000000000000000000000000000000000000020202e0000000000000000000000000000000000000000000000000000000000202038000000000000000000000000000000000000000000000000000000000020202f00000000000000000000000000000000000000000000000000000000002020390000000000000000000000000000000000000000000000000000000000202030000000000000000000000000000000000000000000000000000000000020203a0000000000000000000000000000000000000000000000000000000000202031000000000000000000000000000000000000000000000000000000000020203b0000000000000000000000000000000000000000000000000000000000202032000000000000000000000000000000000000000000000000000000000020203c0000000000000000000000000000000000000000000000000000000000202033000000000000000000000000000000000000000000000000000000000020203d0000000000000000000000000000000000000000000000000000000000202034000000000000000000000000000000000000000000000000000000000020203e0000000000000000000000000000000000000000000000000000000000202035000000000000000000000000000000000000000000000000000000000020203f00000000000000000000000000000000000000000000000000000000002020360000000000000000000000000000000000000000000000000000000000202040000000000000000000000000000000000000000000000000000000000020203700000000000000000000000000000000000000000000000000000000002020410000000000000000000000000000000000000000000000000000000000202038000000000000000000000000000000000000000000000000000000000020204200000000000000000000000000000000000000000000000000000000002020390000000000000000000000000000000000000000000000000000000000202043000000000000000000000000000000000000000000000000000000000020203a0000000000000000000000000000000000000000000000000000000000202044000000000000000000000000000000000000000000000000000000000020203b0000000000000000000000000000000000000000000000000000000000202045000000000000000000000000000000000000000000000000000000000020203c0000000000000000000000000000000000000000000000000000000000202046000000000000000000000000000000000000000000000000000000000020203d0000000000000000000000000000000000000000000000000000000000202047000000000000000000000000000000000000000000000000000000000020203e0000000000000000000000000000000000000000000000000000000000202048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "archive": "0x229e3c7da0fed7665b1196d18613e8d5b054781aba59c906a6fe574e6f1f7975", + "blockHash": "0x0d9562e07790bc8678900b5fe3157092bfacae88180f03d946ba65b61d10ae54", + "body": "0x00000004000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000141000000000000000000000000000000000000000000000000000000000000014100100000000000000000000000000000000000000000000000000000000001410020000000000000000000000000000000000000000000000000000000000141003000000000000000000000000000000000000000000000000000000000014100400000000000000000000000000000000000000000000000000000000001410050000000000000000000000000000000000000000000000000000000000141006000000000000000000000000000000000000000000000000000000000014100700000000000000000000000000000000000000000000000000000000001410080000000000000000000000000000000000000000000000000000000000141009000000000000000000000000000000000000000000000000000000000014100a000000000000000000000000000000000000000000000000000000000014100b000000000000000000000000000000000000000000000000000000000014100c000000000000000000000000000000000000000000000000000000000014100d000000000000000000000000000000000000000000000000000000000014100e000000000000000000000000000000000000000000000000000000000014100f0000000000000000000000000000000000000000000000000000000000141010000000000000000000000000000000000000000000000000000000000014101100000000000000000000000000000000000000000000000000000000001410120000000000000000000000000000000000000000000000000000000000141013000000000000000000000000000000000000000000000000000000000014101400000000000000000000000000000000000000000000000000000000001410150000000000000000000000000000000000000000000000000000000000141016000000000000000000000000000000000000000000000000000000000014101700000000000000000000000000000000000000000000000000000000001410180000000000000000000000000000000000000000000000000000000000141019000000000000000000000000000000000000000000000000000000000014101a000000000000000000000000000000000000000000000000000000000014101b000000000000000000000000000000000000000000000000000000000014101c000000000000000000000000000000000000000000000000000000000014101d000000000000000000000000000000000000000000000000000000000014101e000000000000000000000000000000000000000000000000000000000014101f0000000000000000000000000000000000000000000000000000000000141020000000000000000000000000000000000000000000000000000000000014102100000000000000000000000000000000000000000000000000000000001410220000000000000000000000000000000000000000000000000000000000141023000000000000000000000000000000000000000000000000000000000014102400000000000000000000000000000000000000000000000000000000001410250000000000000000000000000000000000000000000000000000000000141026000000000000000000000000000000000000000000000000000000000014102700000000000000000000000000000000000000000000000000000000001410280000000000000000000000000000000000000000000000000000000000141029000000000000000000000000000000000000000000000000000000000014102a000000000000000000000000000000000000000000000000000000000014102b000000000000000000000000000000000000000000000000000000000014102c000000000000000000000000000000000000000000000000000000000014102d000000000000000000000000000000000000000000000000000000000014102e000000000000000000000000000000000000000000000000000000000014102f0000000000000000000000000000000000000000000000000000000000141030000000000000000000000000000000000000000000000000000000000014103100000000000000000000000000000000000000000000000000000000001410320000000000000000000000000000000000000000000000000000000000141033000000000000000000000000000000000000000000000000000000000014103400000000000000000000000000000000000000000000000000000000001410350000000000000000000000000000000000000000000000000000000000141036000000000000000000000000000000000000000000000000000000000014103700000000000000000000000000000000000000000000000000000000001410380000000000000000000000000000000000000000000000000000000000141039000000000000000000000000000000000000000000000000000000000014103a000000000000000000000000000000000000000000000000000000000014103b000000000000000000000000000000000000000000000000000000000014103c000000000000000000000000000000000000000000000000000000000014103d000000000000000000000000000000000000000000000000000000000014103e000000000000000000000000000000000000000000000000000000000014103f4000000000000000000000000000000000000000000000000000000000001400010000000000000000000000000000000000000000000000000000000000141100000000000000000000000000000000000000000000000000000000000014110100000000000000000000000000000000000000000000000000000000001411020000000000000000000000000000000000000000000000000000000000141103000000000000000000000000000000000000000000000000000000000014110400000000000000000000000000000000000000000000000000000000001411050000000000000000000000000000000000000000000000000000000000141106000000000000000000000000000000000000000000000000000000000014110700000000000000000000000000000000000000000000000000000000001411080000000000000000000000000000000000000000000000000000000000141109000000000000000000000000000000000000000000000000000000000014110a000000000000000000000000000000000000000000000000000000000014110b000000000000000000000000000000000000000000000000000000000014110c000000000000000000000000000000000000000000000000000000000014110d000000000000000000000000000000000000000000000000000000000014110e000000000000000000000000000000000000000000000000000000000014110f0000000000000000000000000000000000000000000000000000000000141110000000000000000000000000000000000000000000000000000000000014111100000000000000000000000000000000000000000000000000000000001411120000000000000000000000000000000000000000000000000000000000141113000000000000000000000000000000000000000000000000000000000014111400000000000000000000000000000000000000000000000000000000001411150000000000000000000000000000000000000000000000000000000000141116000000000000000000000000000000000000000000000000000000000014111700000000000000000000000000000000000000000000000000000000001411180000000000000000000000000000000000000000000000000000000000141119000000000000000000000000000000000000000000000000000000000014111a000000000000000000000000000000000000000000000000000000000014111b000000000000000000000000000000000000000000000000000000000014111c000000000000000000000000000000000000000000000000000000000014111d000000000000000000000000000000000000000000000000000000000014111e000000000000000000000000000000000000000000000000000000000014111f0000000000000000000000000000000000000000000000000000000000141120000000000000000000000000000000000000000000000000000000000014112100000000000000000000000000000000000000000000000000000000001411220000000000000000000000000000000000000000000000000000000000141123000000000000000000000000000000000000000000000000000000000014112400000000000000000000000000000000000000000000000000000000001411250000000000000000000000000000000000000000000000000000000000141126000000000000000000000000000000000000000000000000000000000014112700000000000000000000000000000000000000000000000000000000001411280000000000000000000000000000000000000000000000000000000000141129000000000000000000000000000000000000000000000000000000000014112a000000000000000000000000000000000000000000000000000000000014112b000000000000000000000000000000000000000000000000000000000014112c000000000000000000000000000000000000000000000000000000000014112d000000000000000000000000000000000000000000000000000000000014112e000000000000000000000000000000000000000000000000000000000014112f0000000000000000000000000000000000000000000000000000000000141130000000000000000000000000000000000000000000000000000000000014113100000000000000000000000000000000000000000000000000000000001411320000000000000000000000000000000000000000000000000000000000141133000000000000000000000000000000000000000000000000000000000014113400000000000000000000000000000000000000000000000000000000001411350000000000000000000000000000000000000000000000000000000000141136000000000000000000000000000000000000000000000000000000000014113700000000000000000000000000000000000000000000000000000000001411380000000000000000000000000000000000000000000000000000000000141139000000000000000000000000000000000000000000000000000000000014113a000000000000000000000000000000000000000000000000000000000014113b000000000000000000000000000000000000000000000000000000000014113c000000000000000000000000000000000000000000000000000000000014113d000000000000000000000000000000000000000000000000000000000014113e08005c015113cb57d67dd6c0febd596819ac0298b6a23fc80aba17d445d540059a00f20b7d1308051fe7b68031a7c336b0b4b56738928b6510133aff1b818d5a9a0063eec1883a4f95f4933f9275e850d84b3d035f5061ed986c437a07331fd30e00d3a32d6bbc4fd843686fd0c5e118a73b847529977dca5b9e0e81f6604f22ca00c2f4f5133d9194d41e853e5e951e16690babce8461f25342c0bad20f2aa1e3000a6bf4739e7eb387913d955dc2e8f14f8cce27696b9d2e128b6acefafb80ee005763f7e0648f958b559677622a648f318fc79ebc0cb539170d49c26456e69200302e2b8a92cda941e9af8761b89899a58a587656d9710594e1d865b16522993f0000000000000000000000000000000000000000000000000000000000142000000000000000000000000000000000000000000000000000000000000014200a0000000000000000000000000000000000000000000000000000000000142001000000000000000000000000000000000000000000000000000000000014200b0000000000000000000000000000000000000000000000000000000000142002000000000000000000000000000000000000000000000000000000000014200c0000000000000000000000000000000000000000000000000000000000142003000000000000000000000000000000000000000000000000000000000014200d0000000000000000000000000000000000000000000000000000000000142004000000000000000000000000000000000000000000000000000000000014200e0000000000000000000000000000000000000000000000000000000000142005000000000000000000000000000000000000000000000000000000000014200f00000000000000000000000000000000000000000000000000000000001420060000000000000000000000000000000000000000000000000000000000142010000000000000000000000000000000000000000000000000000000000014200700000000000000000000000000000000000000000000000000000000001420110000000000000000000000000000000000000000000000000000000000142008000000000000000000000000000000000000000000000000000000000014201200000000000000000000000000000000000000000000000000000000001420090000000000000000000000000000000000000000000000000000000000142013000000000000000000000000000000000000000000000000000000000014200a0000000000000000000000000000000000000000000000000000000000142014000000000000000000000000000000000000000000000000000000000014200b0000000000000000000000000000000000000000000000000000000000142015000000000000000000000000000000000000000000000000000000000014200c0000000000000000000000000000000000000000000000000000000000142016000000000000000000000000000000000000000000000000000000000014200d0000000000000000000000000000000000000000000000000000000000142017000000000000000000000000000000000000000000000000000000000014200e0000000000000000000000000000000000000000000000000000000000142018000000000000000000000000000000000000000000000000000000000014200f00000000000000000000000000000000000000000000000000000000001420190000000000000000000000000000000000000000000000000000000000142010000000000000000000000000000000000000000000000000000000000014201a0000000000000000000000000000000000000000000000000000000000142011000000000000000000000000000000000000000000000000000000000014201b0000000000000000000000000000000000000000000000000000000000142012000000000000000000000000000000000000000000000000000000000014201c0000000000000000000000000000000000000000000000000000000000142013000000000000000000000000000000000000000000000000000000000014201d0000000000000000000000000000000000000000000000000000000000142014000000000000000000000000000000000000000000000000000000000014201e0000000000000000000000000000000000000000000000000000000000142015000000000000000000000000000000000000000000000000000000000014201f00000000000000000000000000000000000000000000000000000000001420160000000000000000000000000000000000000000000000000000000000142020000000000000000000000000000000000000000000000000000000000014201700000000000000000000000000000000000000000000000000000000001420210000000000000000000000000000000000000000000000000000000000142018000000000000000000000000000000000000000000000000000000000014202200000000000000000000000000000000000000000000000000000000001420190000000000000000000000000000000000000000000000000000000000142023000000000000000000000000000000000000000000000000000000000014201a0000000000000000000000000000000000000000000000000000000000142024000000000000000000000000000000000000000000000000000000000014201b0000000000000000000000000000000000000000000000000000000000142025000000000000000000000000000000000000000000000000000000000014201c0000000000000000000000000000000000000000000000000000000000142026000000000000000000000000000000000000000000000000000000000014201d0000000000000000000000000000000000000000000000000000000000142027000000000000000000000000000000000000000000000000000000000014201e0000000000000000000000000000000000000000000000000000000000142028000000000000000000000000000000000000000000000000000000000014201f00000000000000000000000000000000000000000000000000000000001420290000000000000000000000000000000000000000000000000000000000142020000000000000000000000000000000000000000000000000000000000014202a0000000000000000000000000000000000000000000000000000000000142021000000000000000000000000000000000000000000000000000000000014202b0000000000000000000000000000000000000000000000000000000000142022000000000000000000000000000000000000000000000000000000000014202c0000000000000000000000000000000000000000000000000000000000142023000000000000000000000000000000000000000000000000000000000014202d0000000000000000000000000000000000000000000000000000000000142024000000000000000000000000000000000000000000000000000000000014202e0000000000000000000000000000000000000000000000000000000000142025000000000000000000000000000000000000000000000000000000000014202f00000000000000000000000000000000000000000000000000000000001420260000000000000000000000000000000000000000000000000000000000142030000000000000000000000000000000000000000000000000000000000014202700000000000000000000000000000000000000000000000000000000001420310000000000000000000000000000000000000000000000000000000000142028000000000000000000000000000000000000000000000000000000000014203200000000000000000000000000000000000000000000000000000000001420290000000000000000000000000000000000000000000000000000000000142033000000000000000000000000000000000000000000000000000000000014202a0000000000000000000000000000000000000000000000000000000000142034000000000000000000000000000000000000000000000000000000000014202b0000000000000000000000000000000000000000000000000000000000142035000000000000000000000000000000000000000000000000000000000014202c0000000000000000000000000000000000000000000000000000000000142036000000000000000000000000000000000000000000000000000000000014202d0000000000000000000000000000000000000000000000000000000000142037000000000000000000000000000000000000000000000000000000000014202e0000000000000000000000000000000000000000000000000000000000142038000000000000000000000000000000000000000000000000000000000014202f00000000000000000000000000000000000000000000000000000000001420390000000000000000000000000000000000000000000000000000000000142030000000000000000000000000000000000000000000000000000000000014203a0000000000000000000000000000000000000000000000000000000000142031000000000000000000000000000000000000000000000000000000000014203b0000000000000000000000000000000000000000000000000000000000142032000000000000000000000000000000000000000000000000000000000014203c0000000000000000000000000000000000000000000000000000000000142033000000000000000000000000000000000000000000000000000000000014203d0000000000000000000000000000000000000000000000000000000000142034000000000000000000000000000000000000000000000000000000000014203e0000000000000000000000000000000000000000000000000000000000142035000000000000000000000000000000000000000000000000000000000014203f00000000000000000000000000000000000000000000000000000000001420360000000000000000000000000000000000000000000000000000000000142040000000000000000000000000000000000000000000000000000000000014203700000000000000000000000000000000000000000000000000000000001420410000000000000000000000000000000000000000000000000000000000142038000000000000000000000000000000000000000000000000000000000014204200000000000000000000000000000000000000000000000000000000001420390000000000000000000000000000000000000000000000000000000000142043000000000000000000000000000000000000000000000000000000000014203a0000000000000000000000000000000000000000000000000000000000142044000000000000000000000000000000000000000000000000000000000014203b0000000000000000000000000000000000000000000000000000000000142045000000000000000000000000000000000000000000000000000000000014203c0000000000000000000000000000000000000000000000000000000000142046000000000000000000000000000000000000000000000000000000000014203d0000000000000000000000000000000000000000000000000000000000142047000000000000000000000000000000000000000000000000000000000014203e0000000000000000000000000000000000000000000000000000000000142048200000000000000000000000000000000000000000000000000000000000141700000000000000000000000000000000000000000000000000000000000014170100000000000000000000000000000000000000000000000000000000001417020000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014170100000000000000000000000000000000000000000000000000000000001417020000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417020000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141703000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014170400000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417050000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417160000000000000000000000000000000000000000000000000000000000141706000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417160000000000000000000000000000000000000000000000000000000000141717000000000000000000000000000000000000000000000000000000000014170700000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417160000000000000000000000000000000000000000000000000000000000141717000000000000000000000000000000000000000000000000000000000014171800000000000000000000000000000000000000000000000000000000001417080000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f00000000000000000000000000000000000000000000000000000000001417100000000000000000000000000000000000000000000000000000000000141711000000000000000000000000000000000000000000000000000000000014171200000000000000000000000000000000000000000000000000000000001417130000000000000000000000000000000000000000000000000000000000141714000000000000000000000000000000000000000000000000000000000014171500000000000000000000000000000000000000000000000000000000001417160000000000000000000000000000000000000000000000000000000000141717000000000000000000000000000000000000000000000000000000000014171800000000000000000000000000000000000000000000000000000000001417190000000000000000000000000000000000000000000000000000000000141709000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014170a000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014170b000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014170c000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014170d000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014170e000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f000000000000000000000000000000000000000000000000000000000014170f0000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141710000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014171100000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417120000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141713000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014171400000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417150000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417260000000000000000000000000000000000000000000000000000000000141716000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417260000000000000000000000000000000000000000000000000000000000141727000000000000000000000000000000000000000000000000000000000014171700000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417260000000000000000000000000000000000000000000000000000000000141727000000000000000000000000000000000000000000000000000000000014172800000000000000000000000000000000000000000000000000000000001417180000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f00000000000000000000000000000000000000000000000000000000001417200000000000000000000000000000000000000000000000000000000000141721000000000000000000000000000000000000000000000000000000000014172200000000000000000000000000000000000000000000000000000000001417230000000000000000000000000000000000000000000000000000000000141724000000000000000000000000000000000000000000000000000000000014172500000000000000000000000000000000000000000000000000000000001417260000000000000000000000000000000000000000000000000000000000141727000000000000000000000000000000000000000000000000000000000014172800000000000000000000000000000000000000000000000000000000001417290000000000000000000000000000000000000000000000000000000000141719000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014171a000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014171b000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014171c000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014171d000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014172e000000000000000000000000000000000000000000000000000000000014171e000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014172e000000000000000000000000000000000000000000000000000000000014172f000000000000000000000000000000000000000000000000000000000014171f0000000000000000000000000000000000000000000000000000000000141720000000000000000000000000000000000000000000000000000000000014172100000000000000000000000000000000000000000000000000000000001417220000000000000000000000000000000000000000000000000000000000141723000000000000000000000000000000000000000000000000000000000014172400000000000000000000000000000000000000000000000000000000001417250000000000000000000000000000000000000000000000000000000000141726000000000000000000000000000000000000000000000000000000000014172700000000000000000000000000000000000000000000000000000000001417280000000000000000000000000000000000000000000000000000000000141729000000000000000000000000000000000000000000000000000000000014172a000000000000000000000000000000000000000000000000000000000014172b000000000000000000000000000000000000000000000000000000000014172c000000000000000000000000000000000000000000000000000000000014172d000000000000000000000000000000000000000000000000000000000014172e000000000000000000000000000000000000000000000000000000000014172f0000000000000000000000000000000000000000000000000000000000141730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000181000000000000000000000000000000000000000000000000000000000000018100100000000000000000000000000000000000000000000000000000000001810020000000000000000000000000000000000000000000000000000000000181003000000000000000000000000000000000000000000000000000000000018100400000000000000000000000000000000000000000000000000000000001810050000000000000000000000000000000000000000000000000000000000181006000000000000000000000000000000000000000000000000000000000018100700000000000000000000000000000000000000000000000000000000001810080000000000000000000000000000000000000000000000000000000000181009000000000000000000000000000000000000000000000000000000000018100a000000000000000000000000000000000000000000000000000000000018100b000000000000000000000000000000000000000000000000000000000018100c000000000000000000000000000000000000000000000000000000000018100d000000000000000000000000000000000000000000000000000000000018100e000000000000000000000000000000000000000000000000000000000018100f0000000000000000000000000000000000000000000000000000000000181010000000000000000000000000000000000000000000000000000000000018101100000000000000000000000000000000000000000000000000000000001810120000000000000000000000000000000000000000000000000000000000181013000000000000000000000000000000000000000000000000000000000018101400000000000000000000000000000000000000000000000000000000001810150000000000000000000000000000000000000000000000000000000000181016000000000000000000000000000000000000000000000000000000000018101700000000000000000000000000000000000000000000000000000000001810180000000000000000000000000000000000000000000000000000000000181019000000000000000000000000000000000000000000000000000000000018101a000000000000000000000000000000000000000000000000000000000018101b000000000000000000000000000000000000000000000000000000000018101c000000000000000000000000000000000000000000000000000000000018101d000000000000000000000000000000000000000000000000000000000018101e000000000000000000000000000000000000000000000000000000000018101f0000000000000000000000000000000000000000000000000000000000181020000000000000000000000000000000000000000000000000000000000018102100000000000000000000000000000000000000000000000000000000001810220000000000000000000000000000000000000000000000000000000000181023000000000000000000000000000000000000000000000000000000000018102400000000000000000000000000000000000000000000000000000000001810250000000000000000000000000000000000000000000000000000000000181026000000000000000000000000000000000000000000000000000000000018102700000000000000000000000000000000000000000000000000000000001810280000000000000000000000000000000000000000000000000000000000181029000000000000000000000000000000000000000000000000000000000018102a000000000000000000000000000000000000000000000000000000000018102b000000000000000000000000000000000000000000000000000000000018102c000000000000000000000000000000000000000000000000000000000018102d000000000000000000000000000000000000000000000000000000000018102e000000000000000000000000000000000000000000000000000000000018102f0000000000000000000000000000000000000000000000000000000000181030000000000000000000000000000000000000000000000000000000000018103100000000000000000000000000000000000000000000000000000000001810320000000000000000000000000000000000000000000000000000000000181033000000000000000000000000000000000000000000000000000000000018103400000000000000000000000000000000000000000000000000000000001810350000000000000000000000000000000000000000000000000000000000181036000000000000000000000000000000000000000000000000000000000018103700000000000000000000000000000000000000000000000000000000001810380000000000000000000000000000000000000000000000000000000000181039000000000000000000000000000000000000000000000000000000000018103a000000000000000000000000000000000000000000000000000000000018103b000000000000000000000000000000000000000000000000000000000018103c000000000000000000000000000000000000000000000000000000000018103d000000000000000000000000000000000000000000000000000000000018103e000000000000000000000000000000000000000000000000000000000018103f4000000000000000000000000000000000000000000000000000000000001800010000000000000000000000000000000000000000000000000000000000181100000000000000000000000000000000000000000000000000000000000018110100000000000000000000000000000000000000000000000000000000001811020000000000000000000000000000000000000000000000000000000000181103000000000000000000000000000000000000000000000000000000000018110400000000000000000000000000000000000000000000000000000000001811050000000000000000000000000000000000000000000000000000000000181106000000000000000000000000000000000000000000000000000000000018110700000000000000000000000000000000000000000000000000000000001811080000000000000000000000000000000000000000000000000000000000181109000000000000000000000000000000000000000000000000000000000018110a000000000000000000000000000000000000000000000000000000000018110b000000000000000000000000000000000000000000000000000000000018110c000000000000000000000000000000000000000000000000000000000018110d000000000000000000000000000000000000000000000000000000000018110e000000000000000000000000000000000000000000000000000000000018110f0000000000000000000000000000000000000000000000000000000000181110000000000000000000000000000000000000000000000000000000000018111100000000000000000000000000000000000000000000000000000000001811120000000000000000000000000000000000000000000000000000000000181113000000000000000000000000000000000000000000000000000000000018111400000000000000000000000000000000000000000000000000000000001811150000000000000000000000000000000000000000000000000000000000181116000000000000000000000000000000000000000000000000000000000018111700000000000000000000000000000000000000000000000000000000001811180000000000000000000000000000000000000000000000000000000000181119000000000000000000000000000000000000000000000000000000000018111a000000000000000000000000000000000000000000000000000000000018111b000000000000000000000000000000000000000000000000000000000018111c000000000000000000000000000000000000000000000000000000000018111d000000000000000000000000000000000000000000000000000000000018111e000000000000000000000000000000000000000000000000000000000018111f0000000000000000000000000000000000000000000000000000000000181120000000000000000000000000000000000000000000000000000000000018112100000000000000000000000000000000000000000000000000000000001811220000000000000000000000000000000000000000000000000000000000181123000000000000000000000000000000000000000000000000000000000018112400000000000000000000000000000000000000000000000000000000001811250000000000000000000000000000000000000000000000000000000000181126000000000000000000000000000000000000000000000000000000000018112700000000000000000000000000000000000000000000000000000000001811280000000000000000000000000000000000000000000000000000000000181129000000000000000000000000000000000000000000000000000000000018112a000000000000000000000000000000000000000000000000000000000018112b000000000000000000000000000000000000000000000000000000000018112c000000000000000000000000000000000000000000000000000000000018112d000000000000000000000000000000000000000000000000000000000018112e000000000000000000000000000000000000000000000000000000000018112f0000000000000000000000000000000000000000000000000000000000181130000000000000000000000000000000000000000000000000000000000018113100000000000000000000000000000000000000000000000000000000001811320000000000000000000000000000000000000000000000000000000000181133000000000000000000000000000000000000000000000000000000000018113400000000000000000000000000000000000000000000000000000000001811350000000000000000000000000000000000000000000000000000000000181136000000000000000000000000000000000000000000000000000000000018113700000000000000000000000000000000000000000000000000000000001811380000000000000000000000000000000000000000000000000000000000181139000000000000000000000000000000000000000000000000000000000018113a000000000000000000000000000000000000000000000000000000000018113b000000000000000000000000000000000000000000000000000000000018113c000000000000000000000000000000000000000000000000000000000018113d000000000000000000000000000000000000000000000000000000000018113e0800f872eb9653f03af10f331da1361fa1524d3cd958cb72dacea1d424f19df3af00ffc548a17cd6ba1f2d228f30e4ddb19ecc46ad3b609977d52bb0f49e1206410032f8058bd779c520eabae2743b02ec4f71670428506fcceb2d4b69f26fb11800c0283e15fbf74ffa4eafb984030394f3c2ea6733cc0eacb0431a9475eff28f00b7f55314bfd9d441c1c624e241908228fe4da3d3a0a7fbd56814e1c8cd5d3e00f430f33a786675271736fd728c7bf7428b8c24ac948d7faf76ddb8783a496c0048fc235ead8d4b9d44929662a6384074fc4e5076bec5b7deb34f612393684300fd9b61cb1ad9b4b28f58399906e73933e3cccee8fc98a393f0eedb95b13ee63f0000000000000000000000000000000000000000000000000000000000182000000000000000000000000000000000000000000000000000000000000018200a0000000000000000000000000000000000000000000000000000000000182001000000000000000000000000000000000000000000000000000000000018200b0000000000000000000000000000000000000000000000000000000000182002000000000000000000000000000000000000000000000000000000000018200c0000000000000000000000000000000000000000000000000000000000182003000000000000000000000000000000000000000000000000000000000018200d0000000000000000000000000000000000000000000000000000000000182004000000000000000000000000000000000000000000000000000000000018200e0000000000000000000000000000000000000000000000000000000000182005000000000000000000000000000000000000000000000000000000000018200f00000000000000000000000000000000000000000000000000000000001820060000000000000000000000000000000000000000000000000000000000182010000000000000000000000000000000000000000000000000000000000018200700000000000000000000000000000000000000000000000000000000001820110000000000000000000000000000000000000000000000000000000000182008000000000000000000000000000000000000000000000000000000000018201200000000000000000000000000000000000000000000000000000000001820090000000000000000000000000000000000000000000000000000000000182013000000000000000000000000000000000000000000000000000000000018200a0000000000000000000000000000000000000000000000000000000000182014000000000000000000000000000000000000000000000000000000000018200b0000000000000000000000000000000000000000000000000000000000182015000000000000000000000000000000000000000000000000000000000018200c0000000000000000000000000000000000000000000000000000000000182016000000000000000000000000000000000000000000000000000000000018200d0000000000000000000000000000000000000000000000000000000000182017000000000000000000000000000000000000000000000000000000000018200e0000000000000000000000000000000000000000000000000000000000182018000000000000000000000000000000000000000000000000000000000018200f00000000000000000000000000000000000000000000000000000000001820190000000000000000000000000000000000000000000000000000000000182010000000000000000000000000000000000000000000000000000000000018201a0000000000000000000000000000000000000000000000000000000000182011000000000000000000000000000000000000000000000000000000000018201b0000000000000000000000000000000000000000000000000000000000182012000000000000000000000000000000000000000000000000000000000018201c0000000000000000000000000000000000000000000000000000000000182013000000000000000000000000000000000000000000000000000000000018201d0000000000000000000000000000000000000000000000000000000000182014000000000000000000000000000000000000000000000000000000000018201e0000000000000000000000000000000000000000000000000000000000182015000000000000000000000000000000000000000000000000000000000018201f00000000000000000000000000000000000000000000000000000000001820160000000000000000000000000000000000000000000000000000000000182020000000000000000000000000000000000000000000000000000000000018201700000000000000000000000000000000000000000000000000000000001820210000000000000000000000000000000000000000000000000000000000182018000000000000000000000000000000000000000000000000000000000018202200000000000000000000000000000000000000000000000000000000001820190000000000000000000000000000000000000000000000000000000000182023000000000000000000000000000000000000000000000000000000000018201a0000000000000000000000000000000000000000000000000000000000182024000000000000000000000000000000000000000000000000000000000018201b0000000000000000000000000000000000000000000000000000000000182025000000000000000000000000000000000000000000000000000000000018201c0000000000000000000000000000000000000000000000000000000000182026000000000000000000000000000000000000000000000000000000000018201d0000000000000000000000000000000000000000000000000000000000182027000000000000000000000000000000000000000000000000000000000018201e0000000000000000000000000000000000000000000000000000000000182028000000000000000000000000000000000000000000000000000000000018201f00000000000000000000000000000000000000000000000000000000001820290000000000000000000000000000000000000000000000000000000000182020000000000000000000000000000000000000000000000000000000000018202a0000000000000000000000000000000000000000000000000000000000182021000000000000000000000000000000000000000000000000000000000018202b0000000000000000000000000000000000000000000000000000000000182022000000000000000000000000000000000000000000000000000000000018202c0000000000000000000000000000000000000000000000000000000000182023000000000000000000000000000000000000000000000000000000000018202d0000000000000000000000000000000000000000000000000000000000182024000000000000000000000000000000000000000000000000000000000018202e0000000000000000000000000000000000000000000000000000000000182025000000000000000000000000000000000000000000000000000000000018202f00000000000000000000000000000000000000000000000000000000001820260000000000000000000000000000000000000000000000000000000000182030000000000000000000000000000000000000000000000000000000000018202700000000000000000000000000000000000000000000000000000000001820310000000000000000000000000000000000000000000000000000000000182028000000000000000000000000000000000000000000000000000000000018203200000000000000000000000000000000000000000000000000000000001820290000000000000000000000000000000000000000000000000000000000182033000000000000000000000000000000000000000000000000000000000018202a0000000000000000000000000000000000000000000000000000000000182034000000000000000000000000000000000000000000000000000000000018202b0000000000000000000000000000000000000000000000000000000000182035000000000000000000000000000000000000000000000000000000000018202c0000000000000000000000000000000000000000000000000000000000182036000000000000000000000000000000000000000000000000000000000018202d0000000000000000000000000000000000000000000000000000000000182037000000000000000000000000000000000000000000000000000000000018202e0000000000000000000000000000000000000000000000000000000000182038000000000000000000000000000000000000000000000000000000000018202f00000000000000000000000000000000000000000000000000000000001820390000000000000000000000000000000000000000000000000000000000182030000000000000000000000000000000000000000000000000000000000018203a0000000000000000000000000000000000000000000000000000000000182031000000000000000000000000000000000000000000000000000000000018203b0000000000000000000000000000000000000000000000000000000000182032000000000000000000000000000000000000000000000000000000000018203c0000000000000000000000000000000000000000000000000000000000182033000000000000000000000000000000000000000000000000000000000018203d0000000000000000000000000000000000000000000000000000000000182034000000000000000000000000000000000000000000000000000000000018203e0000000000000000000000000000000000000000000000000000000000182035000000000000000000000000000000000000000000000000000000000018203f00000000000000000000000000000000000000000000000000000000001820360000000000000000000000000000000000000000000000000000000000182040000000000000000000000000000000000000000000000000000000000018203700000000000000000000000000000000000000000000000000000000001820410000000000000000000000000000000000000000000000000000000000182038000000000000000000000000000000000000000000000000000000000018204200000000000000000000000000000000000000000000000000000000001820390000000000000000000000000000000000000000000000000000000000182043000000000000000000000000000000000000000000000000000000000018203a0000000000000000000000000000000000000000000000000000000000182044000000000000000000000000000000000000000000000000000000000018203b0000000000000000000000000000000000000000000000000000000000182045000000000000000000000000000000000000000000000000000000000018203c0000000000000000000000000000000000000000000000000000000000182046000000000000000000000000000000000000000000000000000000000018203d0000000000000000000000000000000000000000000000000000000000182047000000000000000000000000000000000000000000000000000000000018203e0000000000000000000000000000000000000000000000000000000000182048200000000000000000000000000000000000000000000000000000000000181700000000000000000000000000000000000000000000000000000000000018170100000000000000000000000000000000000000000000000000000000001817020000000000000000000000000000000000000000000000000000000000181703000000000000000000000000000000000000000000000000000000000018170400000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018170100000000000000000000000000000000000000000000000000000000001817020000000000000000000000000000000000000000000000000000000000181703000000000000000000000000000000000000000000000000000000000018170400000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817020000000000000000000000000000000000000000000000000000000000181703000000000000000000000000000000000000000000000000000000000018170400000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817130000000000000000000000000000000000000000000000000000000000181703000000000000000000000000000000000000000000000000000000000018170400000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817130000000000000000000000000000000000000000000000000000000000181714000000000000000000000000000000000000000000000000000000000018170400000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817130000000000000000000000000000000000000000000000000000000000181714000000000000000000000000000000000000000000000000000000000018171500000000000000000000000000000000000000000000000000000000001817050000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817130000000000000000000000000000000000000000000000000000000000181714000000000000000000000000000000000000000000000000000000000018171500000000000000000000000000000000000000000000000000000000001817160000000000000000000000000000000000000000000000000000000000181706000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817130000000000000000000000000000000000000000000000000000000000181714000000000000000000000000000000000000000000000000000000000018171500000000000000000000000000000000000000000000000000000000001817160000000000000000000000000000000000000000000000000000000000181717000000000000000000000000000000000000000000000000000000000018170700000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817130000000000000000000000000000000000000000000000000000000000181714000000000000000000000000000000000000000000000000000000000018171500000000000000000000000000000000000000000000000000000000001817160000000000000000000000000000000000000000000000000000000000181717000000000000000000000000000000000000000000000000000000000018171800000000000000000000000000000000000000000000000000000000001817080000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f00000000000000000000000000000000000000000000000000000000001817100000000000000000000000000000000000000000000000000000000000181711000000000000000000000000000000000000000000000000000000000018171200000000000000000000000000000000000000000000000000000000001817130000000000000000000000000000000000000000000000000000000000181714000000000000000000000000000000000000000000000000000000000018171500000000000000000000000000000000000000000000000000000000001817160000000000000000000000000000000000000000000000000000000000181717000000000000000000000000000000000000000000000000000000000018171800000000000000000000000000000000000000000000000000000000001817190000000000000000000000000000000000000000000000000000000000181709000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018170a000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018170b000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018170c000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018170d000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018170e000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f000000000000000000000000000000000000000000000000000000000018170f0000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181710000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018171100000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817120000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817230000000000000000000000000000000000000000000000000000000000181713000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817230000000000000000000000000000000000000000000000000000000000181724000000000000000000000000000000000000000000000000000000000018171400000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817230000000000000000000000000000000000000000000000000000000000181724000000000000000000000000000000000000000000000000000000000018172500000000000000000000000000000000000000000000000000000000001817150000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817230000000000000000000000000000000000000000000000000000000000181724000000000000000000000000000000000000000000000000000000000018172500000000000000000000000000000000000000000000000000000000001817260000000000000000000000000000000000000000000000000000000000181716000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817230000000000000000000000000000000000000000000000000000000000181724000000000000000000000000000000000000000000000000000000000018172500000000000000000000000000000000000000000000000000000000001817260000000000000000000000000000000000000000000000000000000000181727000000000000000000000000000000000000000000000000000000000018171700000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817230000000000000000000000000000000000000000000000000000000000181724000000000000000000000000000000000000000000000000000000000018172500000000000000000000000000000000000000000000000000000000001817260000000000000000000000000000000000000000000000000000000000181727000000000000000000000000000000000000000000000000000000000018172800000000000000000000000000000000000000000000000000000000001817180000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f00000000000000000000000000000000000000000000000000000000001817200000000000000000000000000000000000000000000000000000000000181721000000000000000000000000000000000000000000000000000000000018172200000000000000000000000000000000000000000000000000000000001817230000000000000000000000000000000000000000000000000000000000181724000000000000000000000000000000000000000000000000000000000018172500000000000000000000000000000000000000000000000000000000001817260000000000000000000000000000000000000000000000000000000000181727000000000000000000000000000000000000000000000000000000000018172800000000000000000000000000000000000000000000000000000000001817290000000000000000000000000000000000000000000000000000000000181719000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018171a000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018171b000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018172c000000000000000000000000000000000000000000000000000000000018171c000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018172c000000000000000000000000000000000000000000000000000000000018172d000000000000000000000000000000000000000000000000000000000018171d000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018172c000000000000000000000000000000000000000000000000000000000018172d000000000000000000000000000000000000000000000000000000000018172e000000000000000000000000000000000000000000000000000000000018171e000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018172c000000000000000000000000000000000000000000000000000000000018172d000000000000000000000000000000000000000000000000000000000018172e000000000000000000000000000000000000000000000000000000000018172f000000000000000000000000000000000000000000000000000000000018171f0000000000000000000000000000000000000000000000000000000000181720000000000000000000000000000000000000000000000000000000000018172100000000000000000000000000000000000000000000000000000000001817220000000000000000000000000000000000000000000000000000000000181723000000000000000000000000000000000000000000000000000000000018172400000000000000000000000000000000000000000000000000000000001817250000000000000000000000000000000000000000000000000000000000181726000000000000000000000000000000000000000000000000000000000018172700000000000000000000000000000000000000000000000000000000001817280000000000000000000000000000000000000000000000000000000000181729000000000000000000000000000000000000000000000000000000000018172a000000000000000000000000000000000000000000000000000000000018172b000000000000000000000000000000000000000000000000000000000018172c000000000000000000000000000000000000000000000000000000000018172d000000000000000000000000000000000000000000000000000000000018172e000000000000000000000000000000000000000000000000000000000018172f00000000000000000000000000000000000000000000000000000000001817300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000001c100000000000000000000000000000000000000000000000000000000000001c100100000000000000000000000000000000000000000000000000000000001c100200000000000000000000000000000000000000000000000000000000001c100300000000000000000000000000000000000000000000000000000000001c100400000000000000000000000000000000000000000000000000000000001c100500000000000000000000000000000000000000000000000000000000001c100600000000000000000000000000000000000000000000000000000000001c100700000000000000000000000000000000000000000000000000000000001c100800000000000000000000000000000000000000000000000000000000001c100900000000000000000000000000000000000000000000000000000000001c100a00000000000000000000000000000000000000000000000000000000001c100b00000000000000000000000000000000000000000000000000000000001c100c00000000000000000000000000000000000000000000000000000000001c100d00000000000000000000000000000000000000000000000000000000001c100e00000000000000000000000000000000000000000000000000000000001c100f00000000000000000000000000000000000000000000000000000000001c101000000000000000000000000000000000000000000000000000000000001c101100000000000000000000000000000000000000000000000000000000001c101200000000000000000000000000000000000000000000000000000000001c101300000000000000000000000000000000000000000000000000000000001c101400000000000000000000000000000000000000000000000000000000001c101500000000000000000000000000000000000000000000000000000000001c101600000000000000000000000000000000000000000000000000000000001c101700000000000000000000000000000000000000000000000000000000001c101800000000000000000000000000000000000000000000000000000000001c101900000000000000000000000000000000000000000000000000000000001c101a00000000000000000000000000000000000000000000000000000000001c101b00000000000000000000000000000000000000000000000000000000001c101c00000000000000000000000000000000000000000000000000000000001c101d00000000000000000000000000000000000000000000000000000000001c101e00000000000000000000000000000000000000000000000000000000001c101f00000000000000000000000000000000000000000000000000000000001c102000000000000000000000000000000000000000000000000000000000001c102100000000000000000000000000000000000000000000000000000000001c102200000000000000000000000000000000000000000000000000000000001c102300000000000000000000000000000000000000000000000000000000001c102400000000000000000000000000000000000000000000000000000000001c102500000000000000000000000000000000000000000000000000000000001c102600000000000000000000000000000000000000000000000000000000001c102700000000000000000000000000000000000000000000000000000000001c102800000000000000000000000000000000000000000000000000000000001c102900000000000000000000000000000000000000000000000000000000001c102a00000000000000000000000000000000000000000000000000000000001c102b00000000000000000000000000000000000000000000000000000000001c102c00000000000000000000000000000000000000000000000000000000001c102d00000000000000000000000000000000000000000000000000000000001c102e00000000000000000000000000000000000000000000000000000000001c102f00000000000000000000000000000000000000000000000000000000001c103000000000000000000000000000000000000000000000000000000000001c103100000000000000000000000000000000000000000000000000000000001c103200000000000000000000000000000000000000000000000000000000001c103300000000000000000000000000000000000000000000000000000000001c103400000000000000000000000000000000000000000000000000000000001c103500000000000000000000000000000000000000000000000000000000001c103600000000000000000000000000000000000000000000000000000000001c103700000000000000000000000000000000000000000000000000000000001c103800000000000000000000000000000000000000000000000000000000001c103900000000000000000000000000000000000000000000000000000000001c103a00000000000000000000000000000000000000000000000000000000001c103b00000000000000000000000000000000000000000000000000000000001c103c00000000000000000000000000000000000000000000000000000000001c103d00000000000000000000000000000000000000000000000000000000001c103e00000000000000000000000000000000000000000000000000000000001c103f4000000000000000000000000000000000000000000000000000000000001c000100000000000000000000000000000000000000000000000000000000001c110000000000000000000000000000000000000000000000000000000000001c110100000000000000000000000000000000000000000000000000000000001c110200000000000000000000000000000000000000000000000000000000001c110300000000000000000000000000000000000000000000000000000000001c110400000000000000000000000000000000000000000000000000000000001c110500000000000000000000000000000000000000000000000000000000001c110600000000000000000000000000000000000000000000000000000000001c110700000000000000000000000000000000000000000000000000000000001c110800000000000000000000000000000000000000000000000000000000001c110900000000000000000000000000000000000000000000000000000000001c110a00000000000000000000000000000000000000000000000000000000001c110b00000000000000000000000000000000000000000000000000000000001c110c00000000000000000000000000000000000000000000000000000000001c110d00000000000000000000000000000000000000000000000000000000001c110e00000000000000000000000000000000000000000000000000000000001c110f00000000000000000000000000000000000000000000000000000000001c111000000000000000000000000000000000000000000000000000000000001c111100000000000000000000000000000000000000000000000000000000001c111200000000000000000000000000000000000000000000000000000000001c111300000000000000000000000000000000000000000000000000000000001c111400000000000000000000000000000000000000000000000000000000001c111500000000000000000000000000000000000000000000000000000000001c111600000000000000000000000000000000000000000000000000000000001c111700000000000000000000000000000000000000000000000000000000001c111800000000000000000000000000000000000000000000000000000000001c111900000000000000000000000000000000000000000000000000000000001c111a00000000000000000000000000000000000000000000000000000000001c111b00000000000000000000000000000000000000000000000000000000001c111c00000000000000000000000000000000000000000000000000000000001c111d00000000000000000000000000000000000000000000000000000000001c111e00000000000000000000000000000000000000000000000000000000001c111f00000000000000000000000000000000000000000000000000000000001c112000000000000000000000000000000000000000000000000000000000001c112100000000000000000000000000000000000000000000000000000000001c112200000000000000000000000000000000000000000000000000000000001c112300000000000000000000000000000000000000000000000000000000001c112400000000000000000000000000000000000000000000000000000000001c112500000000000000000000000000000000000000000000000000000000001c112600000000000000000000000000000000000000000000000000000000001c112700000000000000000000000000000000000000000000000000000000001c112800000000000000000000000000000000000000000000000000000000001c112900000000000000000000000000000000000000000000000000000000001c112a00000000000000000000000000000000000000000000000000000000001c112b00000000000000000000000000000000000000000000000000000000001c112c00000000000000000000000000000000000000000000000000000000001c112d00000000000000000000000000000000000000000000000000000000001c112e00000000000000000000000000000000000000000000000000000000001c112f00000000000000000000000000000000000000000000000000000000001c113000000000000000000000000000000000000000000000000000000000001c113100000000000000000000000000000000000000000000000000000000001c113200000000000000000000000000000000000000000000000000000000001c113300000000000000000000000000000000000000000000000000000000001c113400000000000000000000000000000000000000000000000000000000001c113500000000000000000000000000000000000000000000000000000000001c113600000000000000000000000000000000000000000000000000000000001c113700000000000000000000000000000000000000000000000000000000001c113800000000000000000000000000000000000000000000000000000000001c113900000000000000000000000000000000000000000000000000000000001c113a00000000000000000000000000000000000000000000000000000000001c113b00000000000000000000000000000000000000000000000000000000001c113c00000000000000000000000000000000000000000000000000000000001c113d00000000000000000000000000000000000000000000000000000000001c113e08006838aa99533bea0d4204cad17cb3c147e99c2f9089e54a4289d54733eeada2002ab314bd11ace2494a3fb0970d276da39f0fe7da19c9a2438b9c7c334d32470071703d79d8425a7eca52006df6a8f9728508a83639e3e1c2ebae2b853a087c00c9501ac04a78ac5413c9131b08708064ed2c2515b8893f12c2d1cda15a44f100a0955f93e109778d26f9e5b0d46e45c539e59b0941517bfa888eb2d7d2d8a6005adc3be9406cc5f102c6adb44746e8529a256e2396353a8659344cc3e914c4007a5fe572cf6af804f472dabf095c5eb6b30efc5fd627ad3245a8ef0f3f578c003dcaa91dfc9fdad7ba8da68a48fc662dfc0a995cbb0c1bc62099c8257d240d3f00000000000000000000000000000000000000000000000000000000001c200000000000000000000000000000000000000000000000000000000000001c200a00000000000000000000000000000000000000000000000000000000001c200100000000000000000000000000000000000000000000000000000000001c200b00000000000000000000000000000000000000000000000000000000001c200200000000000000000000000000000000000000000000000000000000001c200c00000000000000000000000000000000000000000000000000000000001c200300000000000000000000000000000000000000000000000000000000001c200d00000000000000000000000000000000000000000000000000000000001c200400000000000000000000000000000000000000000000000000000000001c200e00000000000000000000000000000000000000000000000000000000001c200500000000000000000000000000000000000000000000000000000000001c200f00000000000000000000000000000000000000000000000000000000001c200600000000000000000000000000000000000000000000000000000000001c201000000000000000000000000000000000000000000000000000000000001c200700000000000000000000000000000000000000000000000000000000001c201100000000000000000000000000000000000000000000000000000000001c200800000000000000000000000000000000000000000000000000000000001c201200000000000000000000000000000000000000000000000000000000001c200900000000000000000000000000000000000000000000000000000000001c201300000000000000000000000000000000000000000000000000000000001c200a00000000000000000000000000000000000000000000000000000000001c201400000000000000000000000000000000000000000000000000000000001c200b00000000000000000000000000000000000000000000000000000000001c201500000000000000000000000000000000000000000000000000000000001c200c00000000000000000000000000000000000000000000000000000000001c201600000000000000000000000000000000000000000000000000000000001c200d00000000000000000000000000000000000000000000000000000000001c201700000000000000000000000000000000000000000000000000000000001c200e00000000000000000000000000000000000000000000000000000000001c201800000000000000000000000000000000000000000000000000000000001c200f00000000000000000000000000000000000000000000000000000000001c201900000000000000000000000000000000000000000000000000000000001c201000000000000000000000000000000000000000000000000000000000001c201a00000000000000000000000000000000000000000000000000000000001c201100000000000000000000000000000000000000000000000000000000001c201b00000000000000000000000000000000000000000000000000000000001c201200000000000000000000000000000000000000000000000000000000001c201c00000000000000000000000000000000000000000000000000000000001c201300000000000000000000000000000000000000000000000000000000001c201d00000000000000000000000000000000000000000000000000000000001c201400000000000000000000000000000000000000000000000000000000001c201e00000000000000000000000000000000000000000000000000000000001c201500000000000000000000000000000000000000000000000000000000001c201f00000000000000000000000000000000000000000000000000000000001c201600000000000000000000000000000000000000000000000000000000001c202000000000000000000000000000000000000000000000000000000000001c201700000000000000000000000000000000000000000000000000000000001c202100000000000000000000000000000000000000000000000000000000001c201800000000000000000000000000000000000000000000000000000000001c202200000000000000000000000000000000000000000000000000000000001c201900000000000000000000000000000000000000000000000000000000001c202300000000000000000000000000000000000000000000000000000000001c201a00000000000000000000000000000000000000000000000000000000001c202400000000000000000000000000000000000000000000000000000000001c201b00000000000000000000000000000000000000000000000000000000001c202500000000000000000000000000000000000000000000000000000000001c201c00000000000000000000000000000000000000000000000000000000001c202600000000000000000000000000000000000000000000000000000000001c201d00000000000000000000000000000000000000000000000000000000001c202700000000000000000000000000000000000000000000000000000000001c201e00000000000000000000000000000000000000000000000000000000001c202800000000000000000000000000000000000000000000000000000000001c201f00000000000000000000000000000000000000000000000000000000001c202900000000000000000000000000000000000000000000000000000000001c202000000000000000000000000000000000000000000000000000000000001c202a00000000000000000000000000000000000000000000000000000000001c202100000000000000000000000000000000000000000000000000000000001c202b00000000000000000000000000000000000000000000000000000000001c202200000000000000000000000000000000000000000000000000000000001c202c00000000000000000000000000000000000000000000000000000000001c202300000000000000000000000000000000000000000000000000000000001c202d00000000000000000000000000000000000000000000000000000000001c202400000000000000000000000000000000000000000000000000000000001c202e00000000000000000000000000000000000000000000000000000000001c202500000000000000000000000000000000000000000000000000000000001c202f00000000000000000000000000000000000000000000000000000000001c202600000000000000000000000000000000000000000000000000000000001c203000000000000000000000000000000000000000000000000000000000001c202700000000000000000000000000000000000000000000000000000000001c203100000000000000000000000000000000000000000000000000000000001c202800000000000000000000000000000000000000000000000000000000001c203200000000000000000000000000000000000000000000000000000000001c202900000000000000000000000000000000000000000000000000000000001c203300000000000000000000000000000000000000000000000000000000001c202a00000000000000000000000000000000000000000000000000000000001c203400000000000000000000000000000000000000000000000000000000001c202b00000000000000000000000000000000000000000000000000000000001c203500000000000000000000000000000000000000000000000000000000001c202c00000000000000000000000000000000000000000000000000000000001c203600000000000000000000000000000000000000000000000000000000001c202d00000000000000000000000000000000000000000000000000000000001c203700000000000000000000000000000000000000000000000000000000001c202e00000000000000000000000000000000000000000000000000000000001c203800000000000000000000000000000000000000000000000000000000001c202f00000000000000000000000000000000000000000000000000000000001c203900000000000000000000000000000000000000000000000000000000001c203000000000000000000000000000000000000000000000000000000000001c203a00000000000000000000000000000000000000000000000000000000001c203100000000000000000000000000000000000000000000000000000000001c203b00000000000000000000000000000000000000000000000000000000001c203200000000000000000000000000000000000000000000000000000000001c203c00000000000000000000000000000000000000000000000000000000001c203300000000000000000000000000000000000000000000000000000000001c203d00000000000000000000000000000000000000000000000000000000001c203400000000000000000000000000000000000000000000000000000000001c203e00000000000000000000000000000000000000000000000000000000001c203500000000000000000000000000000000000000000000000000000000001c203f00000000000000000000000000000000000000000000000000000000001c203600000000000000000000000000000000000000000000000000000000001c204000000000000000000000000000000000000000000000000000000000001c203700000000000000000000000000000000000000000000000000000000001c204100000000000000000000000000000000000000000000000000000000001c203800000000000000000000000000000000000000000000000000000000001c204200000000000000000000000000000000000000000000000000000000001c203900000000000000000000000000000000000000000000000000000000001c204300000000000000000000000000000000000000000000000000000000001c203a00000000000000000000000000000000000000000000000000000000001c204400000000000000000000000000000000000000000000000000000000001c203b00000000000000000000000000000000000000000000000000000000001c204500000000000000000000000000000000000000000000000000000000001c203c00000000000000000000000000000000000000000000000000000000001c204600000000000000000000000000000000000000000000000000000000001c203d00000000000000000000000000000000000000000000000000000000001c204700000000000000000000000000000000000000000000000000000000001c203e00000000000000000000000000000000000000000000000000000000001c20482000000000000000000000000000000000000000000000000000000000001c170000000000000000000000000000000000000000000000000000000000001c170100000000000000000000000000000000000000000000000000000000001c170200000000000000000000000000000000000000000000000000000000001c170300000000000000000000000000000000000000000000000000000000001c170400000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c170100000000000000000000000000000000000000000000000000000000001c170200000000000000000000000000000000000000000000000000000000001c170300000000000000000000000000000000000000000000000000000000001c170400000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c170200000000000000000000000000000000000000000000000000000000001c170300000000000000000000000000000000000000000000000000000000001c170400000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c170300000000000000000000000000000000000000000000000000000000001c170400000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c170400000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c170500000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c170600000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c170700000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c170800000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c170900000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c170a00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c170b00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c170c00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c170d00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c170e00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c170f00000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c171000000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c171100000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c171200000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c171300000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c171400000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c171500000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c171600000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c171700000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c171800000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c171900000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c171a00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c171b00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c172c00000000000000000000000000000000000000000000000000000000001c171c00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c172c00000000000000000000000000000000000000000000000000000000001c172d00000000000000000000000000000000000000000000000000000000001c171d00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c172c00000000000000000000000000000000000000000000000000000000001c172d00000000000000000000000000000000000000000000000000000000001c172e00000000000000000000000000000000000000000000000000000000001c171e00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c172c00000000000000000000000000000000000000000000000000000000001c172d00000000000000000000000000000000000000000000000000000000001c172e00000000000000000000000000000000000000000000000000000000001c172f00000000000000000000000000000000000000000000000000000000001c171f00000000000000000000000000000000000000000000000000000000001c172000000000000000000000000000000000000000000000000000000000001c172100000000000000000000000000000000000000000000000000000000001c172200000000000000000000000000000000000000000000000000000000001c172300000000000000000000000000000000000000000000000000000000001c172400000000000000000000000000000000000000000000000000000000001c172500000000000000000000000000000000000000000000000000000000001c172600000000000000000000000000000000000000000000000000000000001c172700000000000000000000000000000000000000000000000000000000001c172800000000000000000000000000000000000000000000000000000000001c172900000000000000000000000000000000000000000000000000000000001c172a00000000000000000000000000000000000000000000000000000000001c172b00000000000000000000000000000000000000000000000000000000001c172c00000000000000000000000000000000000000000000000000000000001c172d00000000000000000000000000000000000000000000000000000000001c172e00000000000000000000000000000000000000000000000000000000001c172f00000000000000000000000000000000000000000000000000000000001c1730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000201000000000000000000000000000000000000000000000000000000000000020100100000000000000000000000000000000000000000000000000000000002010020000000000000000000000000000000000000000000000000000000000201003000000000000000000000000000000000000000000000000000000000020100400000000000000000000000000000000000000000000000000000000002010050000000000000000000000000000000000000000000000000000000000201006000000000000000000000000000000000000000000000000000000000020100700000000000000000000000000000000000000000000000000000000002010080000000000000000000000000000000000000000000000000000000000201009000000000000000000000000000000000000000000000000000000000020100a000000000000000000000000000000000000000000000000000000000020100b000000000000000000000000000000000000000000000000000000000020100c000000000000000000000000000000000000000000000000000000000020100d000000000000000000000000000000000000000000000000000000000020100e000000000000000000000000000000000000000000000000000000000020100f0000000000000000000000000000000000000000000000000000000000201010000000000000000000000000000000000000000000000000000000000020101100000000000000000000000000000000000000000000000000000000002010120000000000000000000000000000000000000000000000000000000000201013000000000000000000000000000000000000000000000000000000000020101400000000000000000000000000000000000000000000000000000000002010150000000000000000000000000000000000000000000000000000000000201016000000000000000000000000000000000000000000000000000000000020101700000000000000000000000000000000000000000000000000000000002010180000000000000000000000000000000000000000000000000000000000201019000000000000000000000000000000000000000000000000000000000020101a000000000000000000000000000000000000000000000000000000000020101b000000000000000000000000000000000000000000000000000000000020101c000000000000000000000000000000000000000000000000000000000020101d000000000000000000000000000000000000000000000000000000000020101e000000000000000000000000000000000000000000000000000000000020101f0000000000000000000000000000000000000000000000000000000000201020000000000000000000000000000000000000000000000000000000000020102100000000000000000000000000000000000000000000000000000000002010220000000000000000000000000000000000000000000000000000000000201023000000000000000000000000000000000000000000000000000000000020102400000000000000000000000000000000000000000000000000000000002010250000000000000000000000000000000000000000000000000000000000201026000000000000000000000000000000000000000000000000000000000020102700000000000000000000000000000000000000000000000000000000002010280000000000000000000000000000000000000000000000000000000000201029000000000000000000000000000000000000000000000000000000000020102a000000000000000000000000000000000000000000000000000000000020102b000000000000000000000000000000000000000000000000000000000020102c000000000000000000000000000000000000000000000000000000000020102d000000000000000000000000000000000000000000000000000000000020102e000000000000000000000000000000000000000000000000000000000020102f0000000000000000000000000000000000000000000000000000000000201030000000000000000000000000000000000000000000000000000000000020103100000000000000000000000000000000000000000000000000000000002010320000000000000000000000000000000000000000000000000000000000201033000000000000000000000000000000000000000000000000000000000020103400000000000000000000000000000000000000000000000000000000002010350000000000000000000000000000000000000000000000000000000000201036000000000000000000000000000000000000000000000000000000000020103700000000000000000000000000000000000000000000000000000000002010380000000000000000000000000000000000000000000000000000000000201039000000000000000000000000000000000000000000000000000000000020103a000000000000000000000000000000000000000000000000000000000020103b000000000000000000000000000000000000000000000000000000000020103c000000000000000000000000000000000000000000000000000000000020103d000000000000000000000000000000000000000000000000000000000020103e000000000000000000000000000000000000000000000000000000000020103f4000000000000000000000000000000000000000000000000000000000002000010000000000000000000000000000000000000000000000000000000000201100000000000000000000000000000000000000000000000000000000000020110100000000000000000000000000000000000000000000000000000000002011020000000000000000000000000000000000000000000000000000000000201103000000000000000000000000000000000000000000000000000000000020110400000000000000000000000000000000000000000000000000000000002011050000000000000000000000000000000000000000000000000000000000201106000000000000000000000000000000000000000000000000000000000020110700000000000000000000000000000000000000000000000000000000002011080000000000000000000000000000000000000000000000000000000000201109000000000000000000000000000000000000000000000000000000000020110a000000000000000000000000000000000000000000000000000000000020110b000000000000000000000000000000000000000000000000000000000020110c000000000000000000000000000000000000000000000000000000000020110d000000000000000000000000000000000000000000000000000000000020110e000000000000000000000000000000000000000000000000000000000020110f0000000000000000000000000000000000000000000000000000000000201110000000000000000000000000000000000000000000000000000000000020111100000000000000000000000000000000000000000000000000000000002011120000000000000000000000000000000000000000000000000000000000201113000000000000000000000000000000000000000000000000000000000020111400000000000000000000000000000000000000000000000000000000002011150000000000000000000000000000000000000000000000000000000000201116000000000000000000000000000000000000000000000000000000000020111700000000000000000000000000000000000000000000000000000000002011180000000000000000000000000000000000000000000000000000000000201119000000000000000000000000000000000000000000000000000000000020111a000000000000000000000000000000000000000000000000000000000020111b000000000000000000000000000000000000000000000000000000000020111c000000000000000000000000000000000000000000000000000000000020111d000000000000000000000000000000000000000000000000000000000020111e000000000000000000000000000000000000000000000000000000000020111f0000000000000000000000000000000000000000000000000000000000201120000000000000000000000000000000000000000000000000000000000020112100000000000000000000000000000000000000000000000000000000002011220000000000000000000000000000000000000000000000000000000000201123000000000000000000000000000000000000000000000000000000000020112400000000000000000000000000000000000000000000000000000000002011250000000000000000000000000000000000000000000000000000000000201126000000000000000000000000000000000000000000000000000000000020112700000000000000000000000000000000000000000000000000000000002011280000000000000000000000000000000000000000000000000000000000201129000000000000000000000000000000000000000000000000000000000020112a000000000000000000000000000000000000000000000000000000000020112b000000000000000000000000000000000000000000000000000000000020112c000000000000000000000000000000000000000000000000000000000020112d000000000000000000000000000000000000000000000000000000000020112e000000000000000000000000000000000000000000000000000000000020112f0000000000000000000000000000000000000000000000000000000000201130000000000000000000000000000000000000000000000000000000000020113100000000000000000000000000000000000000000000000000000000002011320000000000000000000000000000000000000000000000000000000000201133000000000000000000000000000000000000000000000000000000000020113400000000000000000000000000000000000000000000000000000000002011350000000000000000000000000000000000000000000000000000000000201136000000000000000000000000000000000000000000000000000000000020113700000000000000000000000000000000000000000000000000000000002011380000000000000000000000000000000000000000000000000000000000201139000000000000000000000000000000000000000000000000000000000020113a000000000000000000000000000000000000000000000000000000000020113b000000000000000000000000000000000000000000000000000000000020113c000000000000000000000000000000000000000000000000000000000020113d000000000000000000000000000000000000000000000000000000000020113e0800e9805e8a4faa87fc419af08a6d956f18976c46ea694bbd4cf6946e6d02033200e0925a6b172b4b01bb76eb1d3f7dd2ced118bca70d223a6d61afa1b75915ae00383590492d2f99a0283d1de57015b4b6b0759a8023af2c68fb4929dee2f303007ed57100dd77e2b6405f780503ef61b7b53e13f344b6e6a6eff3e3c13de0d0001ab1b0c348c46184dbc86ff79f248e7da1b09d3f9c6a986e98fe45389f060d0023d134bc68d7efa25e255001069827dc0bee766c08c988d6300071ed27fe6c0031cbb780b07f632cbaf767dc80608cc0a8e1d1df3ecd6f5d8bc0ca6703e4f4002c7dc9e731fc5f6456b2a70b4e636ac17d5e0cd36d3a591116a9e124f735863f0000000000000000000000000000000000000000000000000000000000202000000000000000000000000000000000000000000000000000000000000020200a0000000000000000000000000000000000000000000000000000000000202001000000000000000000000000000000000000000000000000000000000020200b0000000000000000000000000000000000000000000000000000000000202002000000000000000000000000000000000000000000000000000000000020200c0000000000000000000000000000000000000000000000000000000000202003000000000000000000000000000000000000000000000000000000000020200d0000000000000000000000000000000000000000000000000000000000202004000000000000000000000000000000000000000000000000000000000020200e0000000000000000000000000000000000000000000000000000000000202005000000000000000000000000000000000000000000000000000000000020200f00000000000000000000000000000000000000000000000000000000002020060000000000000000000000000000000000000000000000000000000000202010000000000000000000000000000000000000000000000000000000000020200700000000000000000000000000000000000000000000000000000000002020110000000000000000000000000000000000000000000000000000000000202008000000000000000000000000000000000000000000000000000000000020201200000000000000000000000000000000000000000000000000000000002020090000000000000000000000000000000000000000000000000000000000202013000000000000000000000000000000000000000000000000000000000020200a0000000000000000000000000000000000000000000000000000000000202014000000000000000000000000000000000000000000000000000000000020200b0000000000000000000000000000000000000000000000000000000000202015000000000000000000000000000000000000000000000000000000000020200c0000000000000000000000000000000000000000000000000000000000202016000000000000000000000000000000000000000000000000000000000020200d0000000000000000000000000000000000000000000000000000000000202017000000000000000000000000000000000000000000000000000000000020200e0000000000000000000000000000000000000000000000000000000000202018000000000000000000000000000000000000000000000000000000000020200f00000000000000000000000000000000000000000000000000000000002020190000000000000000000000000000000000000000000000000000000000202010000000000000000000000000000000000000000000000000000000000020201a0000000000000000000000000000000000000000000000000000000000202011000000000000000000000000000000000000000000000000000000000020201b0000000000000000000000000000000000000000000000000000000000202012000000000000000000000000000000000000000000000000000000000020201c0000000000000000000000000000000000000000000000000000000000202013000000000000000000000000000000000000000000000000000000000020201d0000000000000000000000000000000000000000000000000000000000202014000000000000000000000000000000000000000000000000000000000020201e0000000000000000000000000000000000000000000000000000000000202015000000000000000000000000000000000000000000000000000000000020201f00000000000000000000000000000000000000000000000000000000002020160000000000000000000000000000000000000000000000000000000000202020000000000000000000000000000000000000000000000000000000000020201700000000000000000000000000000000000000000000000000000000002020210000000000000000000000000000000000000000000000000000000000202018000000000000000000000000000000000000000000000000000000000020202200000000000000000000000000000000000000000000000000000000002020190000000000000000000000000000000000000000000000000000000000202023000000000000000000000000000000000000000000000000000000000020201a0000000000000000000000000000000000000000000000000000000000202024000000000000000000000000000000000000000000000000000000000020201b0000000000000000000000000000000000000000000000000000000000202025000000000000000000000000000000000000000000000000000000000020201c0000000000000000000000000000000000000000000000000000000000202026000000000000000000000000000000000000000000000000000000000020201d0000000000000000000000000000000000000000000000000000000000202027000000000000000000000000000000000000000000000000000000000020201e0000000000000000000000000000000000000000000000000000000000202028000000000000000000000000000000000000000000000000000000000020201f00000000000000000000000000000000000000000000000000000000002020290000000000000000000000000000000000000000000000000000000000202020000000000000000000000000000000000000000000000000000000000020202a0000000000000000000000000000000000000000000000000000000000202021000000000000000000000000000000000000000000000000000000000020202b0000000000000000000000000000000000000000000000000000000000202022000000000000000000000000000000000000000000000000000000000020202c0000000000000000000000000000000000000000000000000000000000202023000000000000000000000000000000000000000000000000000000000020202d0000000000000000000000000000000000000000000000000000000000202024000000000000000000000000000000000000000000000000000000000020202e0000000000000000000000000000000000000000000000000000000000202025000000000000000000000000000000000000000000000000000000000020202f00000000000000000000000000000000000000000000000000000000002020260000000000000000000000000000000000000000000000000000000000202030000000000000000000000000000000000000000000000000000000000020202700000000000000000000000000000000000000000000000000000000002020310000000000000000000000000000000000000000000000000000000000202028000000000000000000000000000000000000000000000000000000000020203200000000000000000000000000000000000000000000000000000000002020290000000000000000000000000000000000000000000000000000000000202033000000000000000000000000000000000000000000000000000000000020202a0000000000000000000000000000000000000000000000000000000000202034000000000000000000000000000000000000000000000000000000000020202b0000000000000000000000000000000000000000000000000000000000202035000000000000000000000000000000000000000000000000000000000020202c0000000000000000000000000000000000000000000000000000000000202036000000000000000000000000000000000000000000000000000000000020202d0000000000000000000000000000000000000000000000000000000000202037000000000000000000000000000000000000000000000000000000000020202e0000000000000000000000000000000000000000000000000000000000202038000000000000000000000000000000000000000000000000000000000020202f00000000000000000000000000000000000000000000000000000000002020390000000000000000000000000000000000000000000000000000000000202030000000000000000000000000000000000000000000000000000000000020203a0000000000000000000000000000000000000000000000000000000000202031000000000000000000000000000000000000000000000000000000000020203b0000000000000000000000000000000000000000000000000000000000202032000000000000000000000000000000000000000000000000000000000020203c0000000000000000000000000000000000000000000000000000000000202033000000000000000000000000000000000000000000000000000000000020203d0000000000000000000000000000000000000000000000000000000000202034000000000000000000000000000000000000000000000000000000000020203e0000000000000000000000000000000000000000000000000000000000202035000000000000000000000000000000000000000000000000000000000020203f00000000000000000000000000000000000000000000000000000000002020360000000000000000000000000000000000000000000000000000000000202040000000000000000000000000000000000000000000000000000000000020203700000000000000000000000000000000000000000000000000000000002020410000000000000000000000000000000000000000000000000000000000202038000000000000000000000000000000000000000000000000000000000020204200000000000000000000000000000000000000000000000000000000002020390000000000000000000000000000000000000000000000000000000000202043000000000000000000000000000000000000000000000000000000000020203a0000000000000000000000000000000000000000000000000000000000202044000000000000000000000000000000000000000000000000000000000020203b0000000000000000000000000000000000000000000000000000000000202045000000000000000000000000000000000000000000000000000000000020203c0000000000000000000000000000000000000000000000000000000000202046000000000000000000000000000000000000000000000000000000000020203d0000000000000000000000000000000000000000000000000000000000202047000000000000000000000000000000000000000000000000000000000020203e0000000000000000000000000000000000000000000000000000000000202048200000000000000000000000000000000000000000000000000000000000201700000000000000000000000000000000000000000000000000000000000020170100000000000000000000000000000000000000000000000000000000002017020000000000000000000000000000000000000000000000000000000000201703000000000000000000000000000000000000000000000000000000000020170400000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020170100000000000000000000000000000000000000000000000000000000002017020000000000000000000000000000000000000000000000000000000000201703000000000000000000000000000000000000000000000000000000000020170400000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017020000000000000000000000000000000000000000000000000000000000201703000000000000000000000000000000000000000000000000000000000020170400000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017130000000000000000000000000000000000000000000000000000000000201703000000000000000000000000000000000000000000000000000000000020170400000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017130000000000000000000000000000000000000000000000000000000000201714000000000000000000000000000000000000000000000000000000000020170400000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017130000000000000000000000000000000000000000000000000000000000201714000000000000000000000000000000000000000000000000000000000020171500000000000000000000000000000000000000000000000000000000002017050000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017130000000000000000000000000000000000000000000000000000000000201714000000000000000000000000000000000000000000000000000000000020171500000000000000000000000000000000000000000000000000000000002017160000000000000000000000000000000000000000000000000000000000201706000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017130000000000000000000000000000000000000000000000000000000000201714000000000000000000000000000000000000000000000000000000000020171500000000000000000000000000000000000000000000000000000000002017160000000000000000000000000000000000000000000000000000000000201717000000000000000000000000000000000000000000000000000000000020170700000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017130000000000000000000000000000000000000000000000000000000000201714000000000000000000000000000000000000000000000000000000000020171500000000000000000000000000000000000000000000000000000000002017160000000000000000000000000000000000000000000000000000000000201717000000000000000000000000000000000000000000000000000000000020171800000000000000000000000000000000000000000000000000000000002017080000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f00000000000000000000000000000000000000000000000000000000002017100000000000000000000000000000000000000000000000000000000000201711000000000000000000000000000000000000000000000000000000000020171200000000000000000000000000000000000000000000000000000000002017130000000000000000000000000000000000000000000000000000000000201714000000000000000000000000000000000000000000000000000000000020171500000000000000000000000000000000000000000000000000000000002017160000000000000000000000000000000000000000000000000000000000201717000000000000000000000000000000000000000000000000000000000020171800000000000000000000000000000000000000000000000000000000002017190000000000000000000000000000000000000000000000000000000000201709000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020170a000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020170b000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020170c000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020170d000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020170e000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f000000000000000000000000000000000000000000000000000000000020170f0000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201710000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020171100000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017120000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017230000000000000000000000000000000000000000000000000000000000201713000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017230000000000000000000000000000000000000000000000000000000000201724000000000000000000000000000000000000000000000000000000000020171400000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017230000000000000000000000000000000000000000000000000000000000201724000000000000000000000000000000000000000000000000000000000020172500000000000000000000000000000000000000000000000000000000002017150000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017230000000000000000000000000000000000000000000000000000000000201724000000000000000000000000000000000000000000000000000000000020172500000000000000000000000000000000000000000000000000000000002017260000000000000000000000000000000000000000000000000000000000201716000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017230000000000000000000000000000000000000000000000000000000000201724000000000000000000000000000000000000000000000000000000000020172500000000000000000000000000000000000000000000000000000000002017260000000000000000000000000000000000000000000000000000000000201727000000000000000000000000000000000000000000000000000000000020171700000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017230000000000000000000000000000000000000000000000000000000000201724000000000000000000000000000000000000000000000000000000000020172500000000000000000000000000000000000000000000000000000000002017260000000000000000000000000000000000000000000000000000000000201727000000000000000000000000000000000000000000000000000000000020172800000000000000000000000000000000000000000000000000000000002017180000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f00000000000000000000000000000000000000000000000000000000002017200000000000000000000000000000000000000000000000000000000000201721000000000000000000000000000000000000000000000000000000000020172200000000000000000000000000000000000000000000000000000000002017230000000000000000000000000000000000000000000000000000000000201724000000000000000000000000000000000000000000000000000000000020172500000000000000000000000000000000000000000000000000000000002017260000000000000000000000000000000000000000000000000000000000201727000000000000000000000000000000000000000000000000000000000020172800000000000000000000000000000000000000000000000000000000002017290000000000000000000000000000000000000000000000000000000000201719000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020171a000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020171b000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020172c000000000000000000000000000000000000000000000000000000000020171c000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020172c000000000000000000000000000000000000000000000000000000000020172d000000000000000000000000000000000000000000000000000000000020171d000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020172c000000000000000000000000000000000000000000000000000000000020172d000000000000000000000000000000000000000000000000000000000020172e000000000000000000000000000000000000000000000000000000000020171e000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020172c000000000000000000000000000000000000000000000000000000000020172d000000000000000000000000000000000000000000000000000000000020172e000000000000000000000000000000000000000000000000000000000020172f000000000000000000000000000000000000000000000000000000000020171f0000000000000000000000000000000000000000000000000000000000201720000000000000000000000000000000000000000000000000000000000020172100000000000000000000000000000000000000000000000000000000002017220000000000000000000000000000000000000000000000000000000000201723000000000000000000000000000000000000000000000000000000000020172400000000000000000000000000000000000000000000000000000000002017250000000000000000000000000000000000000000000000000000000000201726000000000000000000000000000000000000000000000000000000000020172700000000000000000000000000000000000000000000000000000000002017280000000000000000000000000000000000000000000000000000000000201729000000000000000000000000000000000000000000000000000000000020172a000000000000000000000000000000000000000000000000000000000020172b000000000000000000000000000000000000000000000000000000000020172c000000000000000000000000000000000000000000000000000000000020172d000000000000000000000000000000000000000000000000000000000020172e000000000000000000000000000000000000000000000000000000000020172f0000000000000000000000000000000000000000000000000000000000201730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "decodedHeader": { "contentCommitment": { - "blobsHash": "0x00a249a9f834ecee6d0bd91c841e5a02a0629a89754c2844593b74bb50002697", + "blobsHash": "0x009e8ec13116b15eb50b79827d2b7e54e1bbbedfe36c073ad7ad123cd219df1c", "inHash": "0x00e1371045bd7d2c3e1f19cba5f536f0e82042ba4bc257d4ba19c146215e8242", "outHash": "0x00a5c37986316b1f5f2df53fa9ddf4965f539e872f5e1374f28d225540faca26", "numTxs": 4 @@ -72,20 +72,20 @@ "blockNumber": 2, "slotNumber": "0x0000000000000000000000000000000000000000000000000000000000000023", "chainId": 31337, - "timestamp": 1732758851, + "timestamp": 1732960824, "version": 1, - "coinbase": "0x965a60c81ca829bc7cae5dc7c6b11b0af4c80008", - "feeRecipient": "0x0fb90e658e203227a651f1d683f812a8b34a7b6e546d1a3458c8bfbe1048fa1a", + "coinbase": "0xf20572542ac9ada404acf215961dd6efd971702f", + "feeRecipient": "0x0e2308c5b3418e8f4a48b435e89759d03ba430e1ce4e4dbc7b44ef103082ea02", "gasFees": { "feePerDaGas": 0, - "feePerL2Gas": 54154337420 + "feePerL2Gas": 54154091150 } }, "totalFees": "0x0000000000000000000000000000000000000000000000000000000000000000", "totalManaUsed": "0x0000000000000000000000000000000000000000000000000000000000000000", "lastArchive": { "nextAvailableLeafIndex": 2, - "root": "0x2be14b8c75041b535481e613d5c4912e4cbea72a73ead54b45e797431fc50437" + "root": "0x22666f92ace792cc12f915398edb14583d408832420c18e58fc2b0ffe60a3a1d" }, "stateReference": { "l1ToL2MessageTree": { @@ -108,9 +108,9 @@ } } }, - "header": "0x2be14b8c75041b535481e613d5c4912e4cbea72a73ead54b45e797431fc5043700000002000000000000000000000000000000000000000000000000000000000000000400a249a9f834ecee6d0bd91c841e5a02a0629a89754c2844593b74bb5000269700e1371045bd7d2c3e1f19cba5f536f0e82042ba4bc257d4ba19c146215e824200a5c37986316b1f5f2df53fa9ddf4965f539e872f5e1374f28d225540faca26026efb6c2a517de2448119d0f1255757265dbec7cdd2952df929ede666e10944000000202494d2575971bca59a28ddc774d19136f4a294951ab67258c7e9c2d8f9805924000002002ed5c359f01d6a1cacfa324bc48b7fcc6fe75a95ad66bdb1a6e32d6907550957000002800c5783f9fe3a18bb5abd12daca67d280f6b5dfef250b7433dc059ce0d868b319000002780000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000023000000000000000000000000000000000000000000000000000000006747cd43965a60c81ca829bc7cae5dc7c6b11b0af4c800080fb90e658e203227a651f1d683f812a8b34a7b6e546d1a3458c8bfbe1048fa1a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c9bd99c8c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "publicInputsHash": "0x00473e2d7995508204c374bb620abeffaa66e6d1dac792d4716ac33b3a8d3446", - "blobInputs": "0x01019459274d8bf8edc690446032c9e349e4bed693db5fbc7e05d0d38e780445042b05f8c7ed84b2d229b760cecee7a7eec6cff16285f647eeadd63601b9fa240110881755773868744fbb3cd4a392b3ec27e859107d782b2e039791d03e16ce44a1e7643408f2a24771eb694ee4d50298d6122a3459cd4a5257829a3c4cc13b13247b7dd371eae4c94e7d9aff21f04137971b54bb0a05a7cc8338c36bec0149c0f9afaffba3f7836abe8e2ac6cab4955c20ef2e8d2e002384bcfdeade0fe3f915", + "header": "0x22666f92ace792cc12f915398edb14583d408832420c18e58fc2b0ffe60a3a1d000000020000000000000000000000000000000000000000000000000000000000000004009e8ec13116b15eb50b79827d2b7e54e1bbbedfe36c073ad7ad123cd219df1c00e1371045bd7d2c3e1f19cba5f536f0e82042ba4bc257d4ba19c146215e824200a5c37986316b1f5f2df53fa9ddf4965f539e872f5e1374f28d225540faca26026efb6c2a517de2448119d0f1255757265dbec7cdd2952df929ede666e10944000000202494d2575971bca59a28ddc774d19136f4a294951ab67258c7e9c2d8f980592400000200137a2b2aa3dc64677f9670d964242d8fbf9fbabaa6b05e2c910eb0cb0f7cc3be000002800c5783f9fe3a18bb5abd12daca67d280f6b5dfef250b7433dc059ce0d868b319000002780000000000000000000000000000000000000000000000000000000000007a6900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000002300000000000000000000000000000000000000000000000000000000674ae238f20572542ac9ada404acf215961dd6efd971702f0e2308c5b3418e8f4a48b435e89759d03ba430e1ce4e4dbc7b44ef103082ea0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c9bd5da8e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "publicInputsHash": "0x0000157180569292d60e39f8c37f6e94a226c19dd99dc231aaac5529a5711c23", + "blobInputs": "0x01016ddb07c26bcdc21e279c2f806b3c0d83ba904a9613e814d6c23809e51679ba0d49b3f9d7f14b92142a0baa0c9b57052dac080c56b28dd35609078dc17cc5644a81a8bd59c424a6981a6a6a7a26d66026183805cb1a62961de02566162eff28a6d6f0b5150a930256ce35717e2fc9b9eb44999512a27afcb61c232b749e3a946e369374fd26c8a392cb5b07922512538069d533d4be5af41daafd826d4b7e0413032361fb05acbac0a61ee09a8d31afdba6fab61583a732ab56cc3e8245a92e", "numTxs": 4 } } \ No newline at end of file diff --git a/noir-projects/noir-protocol-circuits/crates/blob/src/mock_blob_oracle.nr b/noir-projects/noir-protocol-circuits/crates/blob/src/mock_blob_oracle.nr index 9af68fd2d12..e25468ded05 100644 --- a/noir-projects/noir-protocol-circuits/crates/blob/src/mock_blob_oracle.nr +++ b/noir-projects/noir-protocol-circuits/crates/blob/src/mock_blob_oracle.nr @@ -3,7 +3,7 @@ use types::{ abis::sponge_blob::SpongeBlob, constants::{BLOB_PUBLIC_INPUTS, BLOBS_PER_BLOCK, FIELDS_PER_BLOB}, }; -// TODO(BLOB_ORACLE): this was added to save simulation time (~1min in ACVM, ~3mins in wasm -> 500ms). +// TODO(#10323): this was added to save simulation time (~1min in ACVM, ~3mins in wasm -> 500ms). // The use of bignum adds a lot of unconstrained code which overloads limits when simulating. // If/when simulation times of unconstrained are improved, remove this. pub unconstrained fn evaluate_blobs( diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/private_base_rollup.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/private_base_rollup.nr index 12be530bd8f..05eae7394dc 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/private_base_rollup.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/private_base_rollup.nr @@ -233,7 +233,9 @@ mod tests { private_base_rollup::PrivateBaseRollupInputs, state_diff_hints::PrivateBaseStateDiffHints, }, - components::{append_tx_effects_for_blob, TX_EFFECTS_BLOB_HASH_INPUT_FIELDS}, + components::{ + append_tx_effects_for_blob, encode_blob_prefix, TX_EFFECTS_BLOB_HASH_INPUT_FIELDS, + }, }; use dep::types::{ abis::{ @@ -245,14 +247,14 @@ mod tests { }, address::{AztecAddress, EthAddress}, constants::{ - ARCHIVE_HEIGHT, CONTRACT_CLASS_LOGS_PREFIX, ENCRYPTED_LOGS_PREFIX, L2_L1_MSGS_PREFIX, - MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, - MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, NOTE_ENCRYPTED_LOGS_PREFIX, - NOTE_HASH_SUBTREE_HEIGHT, NOTE_HASH_SUBTREE_SIBLING_PATH_LENGTH, NOTE_HASH_TREE_HEIGHT, - NOTES_PREFIX, NULLIFIER_SUBTREE_HEIGHT, NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH, - NULLIFIER_TREE_HEIGHT, NULLIFIERS_PREFIX, PRIVATE_KERNEL_EMPTY_INDEX, - PUBLIC_DATA_TREE_HEIGHT, REVERT_CODE_PREFIX, TUBE_VK_INDEX, TX_FEE_PREFIX, - TX_START_PREFIX, UNENCRYPTED_LOGS_PREFIX, + ARCHIVE_HEIGHT, CONTRACT_CLASS_LOGS_PREFIX, L2_L1_MSGS_PREFIX, MAX_L2_TO_L1_MSGS_PER_TX, + MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, + MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, NOTE_HASH_SUBTREE_HEIGHT, + NOTE_HASH_SUBTREE_SIBLING_PATH_LENGTH, NOTE_HASH_TREE_HEIGHT, NOTES_PREFIX, + NULLIFIER_SUBTREE_HEIGHT, NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH, NULLIFIER_TREE_HEIGHT, + NULLIFIERS_PREFIX, PRIVATE_KERNEL_EMPTY_INDEX, PRIVATE_LOG_SIZE_IN_FIELDS, + PRIVATE_LOGS_PREFIX, PUBLIC_DATA_TREE_HEIGHT, REVERT_CODE_PREFIX, TUBE_VK_INDEX, + TX_FEE_PREFIX, TX_START_PREFIX, UNENCRYPTED_LOGS_PREFIX, }, data::{public_data_hint::PublicDataHint, PublicDataTreeLeaf, PublicDataTreeLeafPreimage}, hash::silo_l2_to_l1_message, @@ -859,12 +861,25 @@ mod tests { #[test] unconstrained fn fuller_tx_effects_sponge() { - let NUM_NOTES = 50; + let NUM_NOTES = 25; let NUM_NULLIFIERS = 3; let NUM_MSGS = 5; - let NUM_ENC_LOGS = 4; + let NUM_PRIV_EVENT_LOGS = 4; let NUM_UNENC_LOGS = 6; let NUM_CC_LOGS = 1; + let TOTAL_BLOB_FIELDS = 2 // revert code and tx fee + + NUM_NOTES + + 1 // notes and prefix + + NUM_NULLIFIERS + + 1 // nullifiers and prefix + + NUM_MSGS + + 1 // L2 to L1 msgs and prefix + + NUM_UNENC_LOGS + + 1 // unenc. logs and prefix + + NUM_CC_LOGS + + 1 // contract class logs and prefix + + (NUM_NOTES + NUM_PRIV_EVENT_LOGS) * PRIVATE_LOG_SIZE_IN_FIELDS + + 1; // private logs and prefix let mut builder = PrivateBaseRollupInputsBuilder::new(); builder.tube_data.set_gas_used(100, 200); builder.constants.global_variables.gas_fees.fee_per_da_gas = 1; @@ -886,7 +901,7 @@ mod tests { // Copied from public data test below: builder.pre_existing_public_data[0] = PublicDataTreeLeafPreimage { slot: 20, value: 40, next_slot: 0, next_index: 0 }; - builder.tube_data.append_encrypted_log_hashes(NUM_ENC_LOGS); + builder.tube_data.append_private_logs(NUM_PRIV_EVENT_LOGS); builder.tube_data.append_unencrypted_log_hashes(NUM_UNENC_LOGS); // Below will only work with NUM_CC_LOGS=1 builder.tube_data.add_contract_class_log_hash(1, 2); @@ -895,11 +910,19 @@ mod tests { let mut reconstructed_tx_effects = [0; TX_EFFECTS_BLOB_HASH_INPUT_FIELDS]; // Initial field = TX_START_PREFIX | 0 | txlen[0] txlen[1] | 0 | REVERT_CODE_PREFIX | 0 | revert_code // revert code = 0 - // fields appended here = 128 = offset once appending complete + let total_blob_fields_bytes = (TOTAL_BLOB_FIELDS as Field).to_be_bytes::<2>(); reconstructed_tx_effects[0] = field_from_bytes( array_concat( TX_START_PREFIX.to_be_bytes::<8>(), - [0, 0, 128, 0, REVERT_CODE_PREFIX, 0, 0], + [ + 0, + total_blob_fields_bytes[0], + total_blob_fields_bytes[1], + 0, + REVERT_CODE_PREFIX, + 0, + 0, + ], ), true, ); @@ -910,7 +933,7 @@ mod tests { ); // notes let mut offset = 2; - let notes_prefix = field_from_bytes([NOTES_PREFIX, 0, NUM_NOTES as u8], true); + let notes_prefix = encode_blob_prefix(NOTES_PREFIX, NUM_NOTES); reconstructed_tx_effects[offset] = notes_prefix; offset += 1; for i in 0..NUM_NOTES { @@ -919,8 +942,7 @@ mod tests { } offset += NUM_NOTES; // nullifiers - let nullifiers_prefix = - field_from_bytes([NULLIFIERS_PREFIX, 0, NUM_NULLIFIERS as u8], true); + let nullifiers_prefix = encode_blob_prefix(NULLIFIERS_PREFIX, NUM_NULLIFIERS); reconstructed_tx_effects[offset] = nullifiers_prefix; offset += 1; for i in 0..NUM_NULLIFIERS { @@ -928,7 +950,7 @@ mod tests { } offset += NUM_NULLIFIERS; // l2 to l1 msgs - let l2_to_l1_msgs_prefix = field_from_bytes([L2_L1_MSGS_PREFIX, 0, NUM_MSGS as u8], true); + let l2_to_l1_msgs_prefix = encode_blob_prefix(L2_L1_MSGS_PREFIX, NUM_MSGS); reconstructed_tx_effects[offset] = l2_to_l1_msgs_prefix; offset += 1; for i in 0..NUM_MSGS { @@ -939,32 +961,20 @@ mod tests { ); } offset += NUM_MSGS; - // note logs - let note_encrypted_logs_prefix = - field_from_bytes([NOTE_ENCRYPTED_LOGS_PREFIX, 0, NUM_NOTES as u8], true); - reconstructed_tx_effects[offset] = note_encrypted_logs_prefix; - offset += 1; - for i in 0..NUM_NOTES { - reconstructed_tx_effects[offset + i] = - builder.tube_data.note_encrypted_logs_hashes.storage()[i].value(); - } - offset += NUM_NOTES; - // enc logs - let encrypted_logs_prefix = - field_from_bytes([ENCRYPTED_LOGS_PREFIX, 0, NUM_ENC_LOGS as u8], true); - reconstructed_tx_effects[offset] = encrypted_logs_prefix; + // private logs + let total_private_logs_len = (NUM_NOTES + NUM_PRIV_EVENT_LOGS) * PRIVATE_LOG_SIZE_IN_FIELDS; + let private_logs_prefix = encode_blob_prefix(PRIVATE_LOGS_PREFIX, total_private_logs_len); + reconstructed_tx_effects[offset] = private_logs_prefix; offset += 1; - for i in 0..NUM_ENC_LOGS { - reconstructed_tx_effects[offset + i] = types::hash::silo_encrypted_log_hash(builder - .tube_data - .encrypted_logs_hashes - .storage()[i] - .expose_to_public()); + for i in 0..NUM_NOTES + NUM_PRIV_EVENT_LOGS { + for j in 0..PRIVATE_LOG_SIZE_IN_FIELDS { + reconstructed_tx_effects[offset + i * PRIVATE_LOG_SIZE_IN_FIELDS + j] = + builder.tube_data.private_logs.storage()[i].inner.log.fields[j]; + } } - offset += NUM_ENC_LOGS; + offset += total_private_logs_len; // unenc logs - let unencrypted_logs_prefix = - field_from_bytes([UNENCRYPTED_LOGS_PREFIX, 0, NUM_UNENC_LOGS as u8], true); + let unencrypted_logs_prefix = encode_blob_prefix(UNENCRYPTED_LOGS_PREFIX, NUM_UNENC_LOGS); reconstructed_tx_effects[offset] = unencrypted_logs_prefix; offset += 1; for i in 0..NUM_UNENC_LOGS { @@ -975,7 +985,7 @@ mod tests { offset += NUM_UNENC_LOGS; // cc logs let contract_class_logs_prefix = - field_from_bytes([CONTRACT_CLASS_LOGS_PREFIX, 0, NUM_CC_LOGS as u8], true); + encode_blob_prefix(CONTRACT_CLASS_LOGS_PREFIX, NUM_CC_LOGS); reconstructed_tx_effects[offset] = contract_class_logs_prefix; offset += 1; for i in 0..NUM_CC_LOGS { @@ -985,8 +995,8 @@ mod tests { } offset += NUM_CC_LOGS; - // Sanity check - if this fails change the above use of 128 - assert(offset == 128); + // Sanity check + assert(offset == TOTAL_BLOB_FIELDS); let mut expected_sponge = outputs.start_sponge_blob; expected_sponge.absorb(reconstructed_tx_effects, offset); diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/public_base_rollup.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/public_base_rollup.nr index 6b2bc65eaa3..ac7e8f9ca1c 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/public_base_rollup.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/public_base_rollup.nr @@ -18,7 +18,7 @@ use dep::types::{ accumulated_data::CombinedAccumulatedData, append_only_tree_snapshot::AppendOnlyTreeSnapshot, avm_circuit_public_inputs::AvmProofData, combined_constant_data::CombinedConstantData, log_hash::ScopedLogHash, - nullifier_leaf_preimage::NullifierLeafPreimage,public_data_write::PublicDataWrite, + nullifier_leaf_preimage::NullifierLeafPreimage, public_data_write::PublicDataWrite, sponge_blob::SpongeBlob, tube::PublicTubeData, }, constants::{ @@ -356,7 +356,9 @@ mod tests { components::fees::compute_fee_payer_fee_juice_balance_leaf_slot, public_base_rollup::PublicBaseRollupInputs, state_diff_hints::PublicBaseStateDiffHints, }, - components::{append_tx_effects_for_blob, TX_EFFECTS_BLOB_HASH_INPUT_FIELDS}, + components::{ + append_tx_effects_for_blob, encode_blob_prefix, TX_EFFECTS_BLOB_HASH_INPUT_FIELDS, + }, }; use dep::types::{ abis::{ @@ -367,13 +369,13 @@ mod tests { }, address::{AztecAddress, EthAddress}, constants::{ - ARCHIVE_HEIGHT, AVM_VK_INDEX, CONTRACT_CLASS_LOGS_PREFIX, ENCRYPTED_LOGS_PREFIX, - L2_L1_MSGS_PREFIX, MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, - MAX_NULLIFIERS_PER_TX, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, - MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, NOTE_HASH_SUBTREE_HEIGHT, - NOTE_HASH_SUBTREE_SIBLING_PATH_LENGTH, NOTE_HASH_TREE_HEIGHT, NOTES_PREFIX, - NULLIFIER_SUBTREE_HEIGHT, NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH, NULLIFIER_TREE_HEIGHT, - NULLIFIERS_PREFIX, PRIVATE_KERNEL_EMPTY_INDEX, + ARCHIVE_HEIGHT, AVM_VK_INDEX, CONTRACT_CLASS_LOGS_PREFIX, L2_L1_MSGS_PREFIX, + MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, + MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, + NOTE_HASH_SUBTREE_HEIGHT, NOTE_HASH_SUBTREE_SIBLING_PATH_LENGTH, NOTE_HASH_TREE_HEIGHT, + NOTES_PREFIX, NULLIFIER_SUBTREE_HEIGHT, NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH, + NULLIFIER_TREE_HEIGHT, NULLIFIERS_PREFIX, PRIVATE_KERNEL_EMPTY_INDEX, + PRIVATE_LOG_SIZE_IN_FIELDS, PRIVATE_LOGS_PREFIX, PROTOCOL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, PUBLIC_DATA_TREE_HEIGHT, PUBLIC_DATA_UPDATE_REQUESTS_PREFIX, REVERT_CODE_PREFIX, TUBE_VK_INDEX, TX_FEE_PREFIX, TX_START_PREFIX, UNENCRYPTED_LOGS_PREFIX, @@ -1032,11 +1034,26 @@ mod tests { let NUM_NOTES = 50; let NUM_NULLIFIERS = 3; let NUM_MSGS = 5; - let NUM_ENC_LOGS = 4; + let NUM_PRIV_EVENT_LOGS = 4; let NUM_UNENC_LOGS = 6; let NUM_CC_LOGS = 1; let PUB_DATA_SLOT = 25; let PUB_DATA_VALUE = 60; + let TOTAL_BLOB_FIELDS = 2 // revert code and tx fee + + NUM_NOTES + + 1 // notes and prefix + + NUM_NULLIFIERS + + 1 // nullifiers and prefix + + NUM_MSGS + + 1 // L2 to L1 msgs and prefix + + NUM_UNENC_LOGS + + 1 // unenc. logs and prefix + + NUM_CC_LOGS + + 1 // contract class logs and prefix + + 2 + + 1 // single public data update (2 fields) and prefix + + NUM_PRIV_EVENT_LOGS * PRIVATE_LOG_SIZE_IN_FIELDS + + 1; // private logs and prefix let tx_fee = 100_000; let mut builder = PublicBaseRollupInputsBuilder::new(); builder.transaction_fee = tx_fee; @@ -1058,7 +1075,7 @@ mod tests { builder.public_data_writes.push(( 0, PublicDataTreeLeaf { slot: PUB_DATA_SLOT, value: PUB_DATA_VALUE }, )); - builder.tube_data.append_encrypted_log_hashes(NUM_ENC_LOGS); + builder.tube_data.append_private_logs(NUM_PRIV_EVENT_LOGS); builder.avm_data.append_unencrypted_log_hashes(NUM_UNENC_LOGS); // Below will only work with NUM_CC_LOGS=1 builder.tube_data.add_contract_class_log_hash(1, 2); @@ -1067,11 +1084,19 @@ mod tests { let mut reconstructed_tx_effects = [0; TX_EFFECTS_BLOB_HASH_INPUT_FIELDS]; // Initial field = TX_START_PREFIX | 0 | txlen[0] txlen[1] | 0 | REVERT_CODE_PREFIX | 0 | revert_code // revert code = 0 - // fields appended here = 80 = offset once appending complete + let total_blob_fields_bytes = (TOTAL_BLOB_FIELDS as Field).to_be_bytes::<2>(); reconstructed_tx_effects[0] = field_from_bytes( array_concat( TX_START_PREFIX.to_be_bytes::<8>(), - [0, 0, 80, 0, REVERT_CODE_PREFIX, 0, 0], + [ + 0, + total_blob_fields_bytes[0], + total_blob_fields_bytes[1], + 0, + REVERT_CODE_PREFIX, + 0, + 0, + ], ), true, ); @@ -1082,7 +1107,7 @@ mod tests { ); // notes let mut offset = 2; - let notes_prefix = field_from_bytes([NOTES_PREFIX, 0, NUM_NOTES as u8], true); + let notes_prefix = encode_blob_prefix(NOTES_PREFIX, NUM_NOTES); reconstructed_tx_effects[offset] = notes_prefix; offset += 1; for i in 0..NUM_NOTES { @@ -1091,8 +1116,7 @@ mod tests { } offset += NUM_NOTES; // nullifiers - let nullifiers_prefix = - field_from_bytes([NULLIFIERS_PREFIX, 0, NUM_NULLIFIERS as u8], true); + let nullifiers_prefix = encode_blob_prefix(NULLIFIERS_PREFIX, NUM_NULLIFIERS); reconstructed_tx_effects[offset] = nullifiers_prefix; offset += 1; for i in 0..NUM_NULLIFIERS { @@ -1100,7 +1124,7 @@ mod tests { } offset += NUM_NULLIFIERS; // l2 to l1 msgs - let l2_to_l1_msgs_prefix = field_from_bytes([L2_L1_MSGS_PREFIX, 0, NUM_MSGS as u8], true); + let l2_to_l1_msgs_prefix = encode_blob_prefix(L2_L1_MSGS_PREFIX, NUM_MSGS); reconstructed_tx_effects[offset] = l2_to_l1_msgs_prefix; offset += 1; for i in 0..NUM_MSGS { @@ -1113,29 +1137,27 @@ mod tests { offset += NUM_MSGS; // public data update let public_data_update_requests_prefix = - field_from_bytes([PUBLIC_DATA_UPDATE_REQUESTS_PREFIX, 0, 2], true); + encode_blob_prefix(PUBLIC_DATA_UPDATE_REQUESTS_PREFIX, 2); reconstructed_tx_effects[offset] = public_data_update_requests_prefix; offset += 1; reconstructed_tx_effects[offset] = PUB_DATA_SLOT; reconstructed_tx_effects[offset + 1] = PUB_DATA_VALUE; offset += 2; - // TODO(#8954): The below will change with log deconstruction - // enc logs - let encrypted_logs_prefix = - field_from_bytes([ENCRYPTED_LOGS_PREFIX, 0, NUM_ENC_LOGS as u8], true); - reconstructed_tx_effects[offset] = encrypted_logs_prefix; + // private logs + let total_private_logs_len = NUM_PRIV_EVENT_LOGS * PRIVATE_LOG_SIZE_IN_FIELDS; + let private_logs_prefix = encode_blob_prefix(PRIVATE_LOGS_PREFIX, total_private_logs_len); + reconstructed_tx_effects[offset] = private_logs_prefix; offset += 1; - for i in 0..NUM_ENC_LOGS { - reconstructed_tx_effects[offset + i] = types::hash::silo_encrypted_log_hash(builder - .tube_data - .encrypted_logs_hashes - .storage()[i] - .expose_to_public()); + for i in 0..NUM_PRIV_EVENT_LOGS { + for j in 0..PRIVATE_LOG_SIZE_IN_FIELDS { + reconstructed_tx_effects[offset + i * PRIVATE_LOG_SIZE_IN_FIELDS + j] = + builder.tube_data.private_logs.storage()[i].inner.log.fields[j]; + } } - offset += NUM_ENC_LOGS; + offset += total_private_logs_len; + // TODO(#8954): The below will change with log deconstruction // unenc logs - let unencrypted_logs_prefix = - field_from_bytes([UNENCRYPTED_LOGS_PREFIX, 0, NUM_UNENC_LOGS as u8], true); + let unencrypted_logs_prefix = encode_blob_prefix(UNENCRYPTED_LOGS_PREFIX, NUM_UNENC_LOGS); reconstructed_tx_effects[offset] = unencrypted_logs_prefix; offset += 1; for i in 0..NUM_UNENC_LOGS { @@ -1146,7 +1168,7 @@ mod tests { offset += NUM_UNENC_LOGS; // cc logs let contract_class_logs_prefix = - field_from_bytes([CONTRACT_CLASS_LOGS_PREFIX, 0, NUM_CC_LOGS as u8], true); + encode_blob_prefix(CONTRACT_CLASS_LOGS_PREFIX, NUM_CC_LOGS); reconstructed_tx_effects[offset] = contract_class_logs_prefix; offset += 1; for i in 0..NUM_CC_LOGS { @@ -1156,8 +1178,8 @@ mod tests { } offset += NUM_CC_LOGS; - // Sanity check - if this fails change the above use of 80 - assert(offset == 80); + // Sanity check + assert(offset == TOTAL_BLOB_FIELDS); let mut expected_sponge = outputs.start_sponge_blob; expected_sponge.absorb(reconstructed_tx_effects, offset); diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_rollup_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_rollup_inputs.nr index 7a7ba1d73fb..8cfecfe55d8 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_rollup_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_rollup_inputs.nr @@ -140,7 +140,7 @@ impl BlockRootRollupInputs { right.end_sponge_blob, ); } else { - // TODO(BLOB_ORACLE): this was added to save simulation time, if/when simulation times of unconstrained are improved, remove this. + // TODO(#10323): this was added to save simulation time, if/when simulation times of unconstrained are improved, remove this. blob_public_inputs[0] = unsafe { blob::mock_blob_oracle::evaluate_blobs( self.blobs_fields, diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/mod.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/mod.nr index 09e429413b1..985834cf361 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/mod.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/mod.nr @@ -44,7 +44,7 @@ mod tests { #[test] fn check_blob() { // Note: this test will not run in unconstrained, because it reaches the foreign call - // TODO(BLOB_ORACLE): remove the oracle and switch this test to unconstrained + // TODO(#10323): remove the oracle and switch this test to unconstrained let inputs = default_block_root_rollup_inputs(); let outputs = inputs.block_root_rollup_circuit(); diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/components.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/components.nr index 2c4ee4c727b..368d222b803 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/components.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/components.nr @@ -6,24 +6,19 @@ use crate::abis::{ }; use dep::types::{ abis::{ - accumulated_data::CombinedAccumulatedData, - log_hash::{LogHash, ScopedLogHash}, - public_data_write::PublicDataWrite, - sponge_blob::SpongeBlob, + accumulated_data::CombinedAccumulatedData, log_hash::ScopedLogHash, + public_data_write::PublicDataWrite, sponge_blob::SpongeBlob, }, constants::{ - AZTEC_MAX_EPOCH_DURATION, CONTRACT_CLASS_LOGS_PREFIX, ENCRYPTED_LOGS_PREFIX, - L2_L1_MSGS_PREFIX, MAX_CONTRACT_CLASS_LOGS_PER_TX, MAX_PRIVATE_LOGS_PER_TX, - MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, - MAX_NULLIFIERS_PER_TX, MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, - MAX_UNENCRYPTED_LOGS_PER_TX, NOTE_ENCRYPTED_LOGS_PREFIX, NOTES_PREFIX, NULLIFIERS_PREFIX, + AZTEC_MAX_EPOCH_DURATION, CONTRACT_CLASS_LOGS_PREFIX, L2_L1_MSGS_PREFIX, + MAX_CONTRACT_CLASS_LOGS_PER_TX, MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, + MAX_NULLIFIERS_PER_TX, MAX_PRIVATE_LOGS_PER_TX, + MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, MAX_UNENCRYPTED_LOGS_PER_TX, NOTES_PREFIX, + NULLIFIERS_PREFIX, PRIVATE_LOG_SIZE_IN_FIELDS, PRIVATE_LOGS_PREFIX, PUBLIC_DATA_UPDATE_REQUESTS_PREFIX, REVERT_CODE_PREFIX, TX_FEE_PREFIX, TX_START_PREFIX, - UNENCRYPTED_LOGS_PREFIX, PRIVATE_LOG_SIZE_IN_FIELDS, + UNENCRYPTED_LOGS_PREFIX, }, - hash::{ - accumulate_sha256, compute_tx_logs_hash, silo_encrypted_log_hash, silo_unencrypted_log_hash, - }, - hash::{accumulate_sha256, compute_tx_logs_hash, silo_unencrypted_log_hash}, + hash::{accumulate_sha256, silo_unencrypted_log_hash}, merkle_tree::VariableMerkleTree, traits::is_empty, utils::{arrays::{array_concat, array_length, array_merge}, field::field_from_bytes}, @@ -229,19 +224,6 @@ pub fn compute_kernel_out_hash(l2_to_l1_msgs: [Field; MAX_L2_TO_L1_MSGS_PER_TX]) merkle_tree.get_root() } -fn silo_and_hash_unencrypted_logs( - unencrypted_logs_hashes: [ScopedLogHash; N], -) -> Field { - let siloed_logs = unencrypted_logs_hashes.map(|log: ScopedLogHash| { - LogHash { - value: silo_unencrypted_log_hash(log), - counter: log.log_hash.counter, - length: log.log_hash.length, - } - }); - compute_tx_logs_hash(siloed_logs) -} - /** * Asserts that the first sponge blob was empty to begin with. * This prevents injecting unchecked tx effects in the first base of a rollup. @@ -254,6 +236,15 @@ pub fn assert_first_sponge_blob_empty(left: BaseOrMergeRollupPublicInputs) { ); } +/** + * Converts given type (e.g. note hashes = 3) and length (e.g. 5) into a prefix: 0x03000005. + * Uses 2 bytes to encode the length even when we only need 1 to keep uniform. + */ +pub fn encode_blob_prefix(input_type: u8, array_len: u32) -> Field { + let len_bytes = (array_len as Field).to_be_bytes::<2>(); + field_from_bytes([input_type, 0, len_bytes[0], len_bytes[1]], true) +} + // Tx effects consist of // 1 field for revert code // 1 field for transaction fee @@ -265,7 +256,7 @@ pub fn assert_first_sponge_blob_empty(left: BaseOrMergeRollupPublicInputs) { // MAX_PRIVATE_LOGS_PER_TX * PRIVATE_LOG_SIZE_IN_FIELDS fields for private logs // MAX_UNENCRYPTED_LOGS_PER_TX fields for unencrypted logs // MAX_CONTRACT_CLASS_LOGS_PER_TX fields for contract class logs -// 8 fields for prefixes for each of the above categories +// 7 fields for prefixes for each of the above categories global TX_EFFECTS_BLOB_HASH_INPUT_FIELDS: u32 = 1 + 1 + MAX_NOTE_HASHES_PER_TX @@ -275,7 +266,7 @@ global TX_EFFECTS_BLOB_HASH_INPUT_FIELDS: u32 = 1 + MAX_PRIVATE_LOGS_PER_TX * PRIVATE_LOG_SIZE_IN_FIELDS + MAX_UNENCRYPTED_LOGS_PER_TX + MAX_CONTRACT_CLASS_LOGS_PER_TX - + 8; + + 7; pub fn append_tx_effects_for_blob( combined: CombinedAccumulatedData, revert_code: u8, @@ -293,9 +284,7 @@ pub fn append_tx_effects_for_blob( // The incoming all_public_data_update_requests may have empty update requests in the middle, so we move those to the end of the array. let public_data_update_requests = get_all_update_requests_for_tx_effects(all_public_data_update_requests); - let note_encrypted_logs = combined.note_encrypted_logs_hashes.map(|log: LogHash| log.value); - let encrypted_logs = - combined.encrypted_logs_hashes.map(|log: ScopedLogHash| silo_encrypted_log_hash(log)); + let private_logs = combined.private_logs; let unencrypted_logs = combined.unencrypted_logs_hashes.map(|log: ScopedLogHash| silo_unencrypted_log_hash(log)); let contract_class_logs = combined.contract_class_logs_hashes.map(|log: ScopedLogHash| { @@ -313,7 +302,7 @@ pub fn append_tx_effects_for_blob( offset += 1; // TX FEE - // TODO(Miranda): how many bytes do we expect tx fee to be? Using 29 for now + // Using 29 bytes to encompass all reasonable fee lengths tx_effects_hash_input[offset] = field_from_bytes( array_concat([TX_FEE_PREFIX, 0], transaction_fee.to_be_bytes::<29>()), true, @@ -326,7 +315,7 @@ pub fn append_tx_effects_for_blob( // NOTE HASHES array_len = array_length(note_hashes); if array_len != 0 { - let notes_prefix = field_from_bytes([NOTES_PREFIX, 0, array_len as u8], true); + let notes_prefix = encode_blob_prefix(NOTES_PREFIX, array_len); tx_effects_hash_input[offset] = notes_prefix; offset += 1; @@ -339,7 +328,7 @@ pub fn append_tx_effects_for_blob( // NULLIFIERS array_len = array_length(nullifiers); if array_len != 0 { - let nullifiers_prefix = field_from_bytes([NULLIFIERS_PREFIX, 0, array_len as u8], true); + let nullifiers_prefix = encode_blob_prefix(NULLIFIERS_PREFIX, array_len); tx_effects_hash_input[offset] = nullifiers_prefix; offset += 1; @@ -352,7 +341,7 @@ pub fn append_tx_effects_for_blob( // L2 TO L1 MESSAGES array_len = array_length(l2_to_l1_msgs); if array_len != 0 { - let l2_to_l1_msgs_prefix = field_from_bytes([L2_L1_MSGS_PREFIX, 0, array_len as u8], true); + let l2_to_l1_msgs_prefix = encode_blob_prefix(L2_L1_MSGS_PREFIX, array_len); tx_effects_hash_input[offset] = l2_to_l1_msgs_prefix; offset += 1; @@ -365,10 +354,8 @@ pub fn append_tx_effects_for_blob( // PUBLIC DATA UPDATE REQUESTS array_len = array_length(public_data_update_requests); if array_len != 0 { - let public_data_update_requests_prefix = field_from_bytes( - [PUBLIC_DATA_UPDATE_REQUESTS_PREFIX, 0, (array_len as u8) * 2], - true, - ); + let public_data_update_requests_prefix = + encode_blob_prefix(PUBLIC_DATA_UPDATE_REQUESTS_PREFIX, array_len * 2); tx_effects_hash_input[offset] = public_data_update_requests_prefix; offset += 1; for j in 0..MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX { @@ -378,47 +365,29 @@ pub fn append_tx_effects_for_blob( offset += array_len * 2; } - // TODO(MIRANDA): replace below - // // PRIVATE_LOGS - // for j in 0..MAX_PRIVATE_LOGS_PER_TX { - // tx_effects_hash_input.extend_from_array(combined.private_logs[j].fields); - // } - - // TODO(#8954): When logs are refactored into fields, we will append the values here - // Currently appending the single log hash as an interim solution - // NOTE ENCRYPTED LOGS - array_len = array_length(note_encrypted_logs); + // TODO(Miranda): squash 0s in a nested loop and add len prefix? + // PRIVATE_LOGS + array_len = array_length(private_logs) * PRIVATE_LOG_SIZE_IN_FIELDS; if array_len != 0 { - let note_encrypted_logs_prefix = - field_from_bytes([NOTE_ENCRYPTED_LOGS_PREFIX, 0, array_len as u8], true); - tx_effects_hash_input[offset] = note_encrypted_logs_prefix; + let private_logs_prefix = encode_blob_prefix(PRIVATE_LOGS_PREFIX, array_len); + tx_effects_hash_input[offset] = private_logs_prefix; offset += 1; - for j in 0..MAX_NOTE_ENCRYPTED_LOGS_PER_TX { - tx_effects_hash_input[offset + j] = note_encrypted_logs[j]; - } - offset += array_len; - } - - // ENCRYPTED LOGS - array_len = array_length(encrypted_logs); - if array_len != 0 { - let encrypted_logs_prefix = - field_from_bytes([ENCRYPTED_LOGS_PREFIX, 0, array_len as u8], true); - tx_effects_hash_input[offset] = encrypted_logs_prefix; - offset += 1; - - for j in 0..MAX_ENCRYPTED_LOGS_PER_TX { - tx_effects_hash_input[offset + j] = encrypted_logs[j]; + for j in 0..MAX_PRIVATE_LOGS_PER_TX { + for k in 0..PRIVATE_LOG_SIZE_IN_FIELDS { + let index = offset + j * PRIVATE_LOG_SIZE_IN_FIELDS + k; + tx_effects_hash_input[index] = private_logs[j].fields[k]; + } } offset += array_len; } + // TODO(#8954): When logs are refactored into fields, we will append the values here + // Currently appending the single log hash as an interim solution // UNENCRYPTED LOGS array_len = array_length(unencrypted_logs); if array_len != 0 { - let unencrypted_logs_prefix = - field_from_bytes([UNENCRYPTED_LOGS_PREFIX, 0, array_len as u8], true); + let unencrypted_logs_prefix = encode_blob_prefix(UNENCRYPTED_LOGS_PREFIX, array_len); tx_effects_hash_input[offset] = unencrypted_logs_prefix; offset += 1; @@ -431,8 +400,7 @@ pub fn append_tx_effects_for_blob( // CONTRACT CLASS LOGS array_len = array_length(contract_class_logs); if array_len != 0 { - let contract_class_logs_prefix = - field_from_bytes([CONTRACT_CLASS_LOGS_PREFIX, 0, array_len as u8], true); + let contract_class_logs_prefix = encode_blob_prefix(CONTRACT_CLASS_LOGS_PREFIX, array_len); tx_effects_hash_input[offset] = contract_class_logs_prefix; offset += 1; @@ -446,7 +414,6 @@ pub fn append_tx_effects_for_blob( // TX_START_PREFIX | 0 | txlen[0] txlen[1] | 0 | REVERT_CODE_PREFIX | 0 | revert_code // Start prefix is "tx_start".to_field() => 8 bytes let prefix_bytes = TX_START_PREFIX.to_be_bytes::<8>(); - // Assigning length to 2 bytes, since we may go over 255 fields let length_bytes = (offset as Field).to_be_bytes::<2>(); // REVERT CODE tx_effects_hash_input[0] = field_from_bytes( diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr index d068a6fb297..d98c2132e26 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr @@ -729,10 +729,9 @@ pub global NOTES_PREFIX: u8 = 3; pub global NULLIFIERS_PREFIX: u8 = 4; pub global L2_L1_MSGS_PREFIX: u8 = 5; pub global PUBLIC_DATA_UPDATE_REQUESTS_PREFIX: u8 = 6; -pub global NOTE_ENCRYPTED_LOGS_PREFIX: u8 = 7; -pub global ENCRYPTED_LOGS_PREFIX: u8 = 8; -pub global UNENCRYPTED_LOGS_PREFIX: u8 = 9; -pub global CONTRACT_CLASS_LOGS_PREFIX: u8 = 10; +pub global PRIVATE_LOGS_PREFIX: u8 = 7; +pub global UNENCRYPTED_LOGS_PREFIX: u8 = 8; +pub global CONTRACT_CLASS_LOGS_PREFIX: u8 = 9; // Constants related to proof type of a recursive proof verification. // Keep following constants in sync with the enum acir_format::PROOF_TYPE in recursion_constraint.hpp diff --git a/yarn-project/archiver/src/archiver/data_retrieval.ts b/yarn-project/archiver/src/archiver/data_retrieval.ts index 5cd23bbb390..5562fbb4264 100644 --- a/yarn-project/archiver/src/archiver/data_retrieval.ts +++ b/yarn-project/archiver/src/archiver/data_retrieval.ts @@ -167,13 +167,7 @@ async function getBlockFromRollupTx( // TODO(#9101): The below reconstruction is currently redundant, but once we extract blobs will be the way to construct blocks. // The blob source will give us blockFields, and we must construct the body from them: // TODO(#8954): When logs are refactored into fields, we won't need to inject them here. - const reconstructedBlock = Body.fromBlobFields( - blockFields, - blockBody.noteEncryptedLogs, - blockBody.encryptedLogs, - blockBody.unencryptedLogs, - blockBody.contractClassLogs, - ); + const reconstructedBlock = Body.fromBlobFields(blockFields, blockBody.unencryptedLogs, blockBody.contractClassLogs); if (!reconstructedBlock.toBuffer().equals(blockBody.toBuffer())) { // TODO(#9101): Remove below check (without calldata there will be nothing to check against) diff --git a/yarn-project/bb-prover/src/test/test_circuit_prover.ts b/yarn-project/bb-prover/src/test/test_circuit_prover.ts index 2cac5fdf3c7..7d9056302ad 100644 --- a/yarn-project/bb-prover/src/test/test_circuit_prover.ts +++ b/yarn-project/bb-prover/src/test/test_circuit_prover.ts @@ -315,7 +315,7 @@ export class TestCircuitProver implements ServerCircuitProver { let simulationProvider = this.simulationProvider ?? this.wasmSimulator; if (artifactName == 'BlockRootRollupArtifact') { - // TODO(BLOB_ORACLE): temporarily force block root to use wasm while we simulate + // TODO(#10323): temporarily force block root to use wasm while we simulate // the blob operations with an oracle. Appears to be no way to provide nativeACVM with a foreign call hander. simulationProvider = this.wasmSimulator; } diff --git a/yarn-project/circuit-types/src/body.test.ts b/yarn-project/circuit-types/src/body.test.ts index 5ed7188fdf2..e5b3eb52698 100644 --- a/yarn-project/circuit-types/src/body.test.ts +++ b/yarn-project/circuit-types/src/body.test.ts @@ -13,15 +13,7 @@ describe('Body', () => { const body = Body.random(); const fields = body.toBlobFields(); // TODO(#8954): When logs are refactored into fields, we won't need to inject them here - expect( - Body.fromBlobFields( - fields, - body.noteEncryptedLogs, - body.encryptedLogs, - body.unencryptedLogs, - body.contractClassLogs, - ), - ).toEqual(body); + expect(Body.fromBlobFields(fields, body.unencryptedLogs, body.contractClassLogs)).toEqual(body); }); it('converts empty to and from fields', () => { diff --git a/yarn-project/circuit-types/src/body.ts b/yarn-project/circuit-types/src/body.ts index 00948de3920..a3967a6f738 100644 --- a/yarn-project/circuit-types/src/body.ts +++ b/yarn-project/circuit-types/src/body.ts @@ -61,8 +61,6 @@ export class Body { */ static fromBlobFields( fields: Fr[], - noteEncryptedLogs?: EncryptedNoteL2BlockL2Logs, - encryptedLogs?: EncryptedL2BlockL2Logs, unencryptedLogs?: UnencryptedL2BlockL2Logs, contractClassLogs?: ContractClass2BlockL2Logs, ) { @@ -78,15 +76,7 @@ export class Body { } const txEffects = txEffectsFields .filter(effect => effect.length) - .map((effect, i) => - TxEffect.fromBlobFields( - effect, - noteEncryptedLogs?.txLogs[i], - encryptedLogs?.txLogs[i], - unencryptedLogs?.txLogs[i], - contractClassLogs?.txLogs[i], - ), - ); + .map((effect, i) => TxEffect.fromBlobFields(effect, unencryptedLogs?.txLogs[i], contractClassLogs?.txLogs[i])); return new this(txEffects); } @@ -97,18 +87,6 @@ export class Body { }`; } - get noteEncryptedLogs(): EncryptedNoteL2BlockL2Logs { - const logs = this.txEffects.map(txEffect => txEffect.noteEncryptedLogs); - - return new EncryptedNoteL2BlockL2Logs(logs); - } - - get encryptedLogs(): EncryptedL2BlockL2Logs { - const logs = this.txEffects.map(txEffect => txEffect.encryptedLogs); - - return new EncryptedL2BlockL2Logs(logs); - } - get unencryptedLogs(): UnencryptedL2BlockL2Logs { const logs = this.txEffects.map(txEffect => txEffect.unencryptedLogs); diff --git a/yarn-project/circuit-types/src/tx_effect.test.ts b/yarn-project/circuit-types/src/tx_effect.test.ts index 9b50180e852..41c9502b0d2 100644 --- a/yarn-project/circuit-types/src/tx_effect.test.ts +++ b/yarn-project/circuit-types/src/tx_effect.test.ts @@ -13,15 +13,7 @@ describe('TxEffect', () => { const txEffect = TxEffect.random(); const fields = txEffect.toBlobFields(); // TODO(#8954): When logs are refactored into fields, we won't need to inject them here - expect( - TxEffect.fromBlobFields( - fields, - txEffect.noteEncryptedLogs, - txEffect.encryptedLogs, - txEffect.unencryptedLogs, - txEffect.contractClassLogs, - ), - ).toEqual(txEffect); + expect(TxEffect.fromBlobFields(fields, txEffect.unencryptedLogs, txEffect.contractClassLogs)).toEqual(txEffect); }); it('converts empty to and from fields', () => { @@ -42,33 +34,21 @@ describe('TxEffect', () => { // Add an extra field fields.push(new Fr(7)); // TODO(#8954): When logs are refactored into fields, we won't need to inject them here - expect(() => - TxEffect.fromBlobFields( - fields, - txEffect.noteEncryptedLogs, - txEffect.encryptedLogs, - txEffect.unencryptedLogs, - txEffect.contractClassLogs, - ), - ).toThrow('Too many fields'); + expect(() => TxEffect.fromBlobFields(fields, txEffect.unencryptedLogs, txEffect.contractClassLogs)).toThrow( + 'Too many fields', + ); txEffect = TxEffect.random(); fields = txEffect.toBlobFields(); - const buf = Buffer.alloc(3); + const buf = Buffer.alloc(4); buf.writeUint8(6); - buf.writeUint8(0, 2); + buf.writeUint16BE(0, 2); // Add an extra field which looks like a valid prefix const fakePrefix = new Fr(buf); fields.push(fakePrefix); // TODO(#8954): When logs are refactored into fields, we won't need to inject them here - expect(() => - TxEffect.fromBlobFields( - fields, - txEffect.noteEncryptedLogs, - txEffect.encryptedLogs, - txEffect.unencryptedLogs, - txEffect.contractClassLogs, - ), - ).toThrow('Invalid fields'); + expect(() => TxEffect.fromBlobFields(fields, txEffect.unencryptedLogs, txEffect.contractClassLogs)).toThrow( + 'Invalid fields', + ); }); }); diff --git a/yarn-project/circuit-types/src/tx_effect.ts b/yarn-project/circuit-types/src/tx_effect.ts index 6d53566de46..924f2e5bc95 100644 --- a/yarn-project/circuit-types/src/tx_effect.ts +++ b/yarn-project/circuit-types/src/tx_effect.ts @@ -1,6 +1,5 @@ import { CONTRACT_CLASS_LOGS_PREFIX, - ENCRYPTED_LOGS_PREFIX, Fr, L2_L1_MSGS_PREFIX, MAX_L2_TO_L1_MSGS_PER_TX, @@ -9,10 +8,10 @@ import { MAX_PRIVATE_LOGS_PER_TX, MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, NOTES_PREFIX, - NOTE_ENCRYPTED_LOGS_PREFIX, NULLIFIERS_PREFIX, - PUBLIC_DATA_UPDATE_REQUESTS_PREFIX, + PRIVATE_LOGS_PREFIX, PRIVATE_LOG_SIZE_IN_FIELDS, + PUBLIC_DATA_UPDATE_REQUESTS_PREFIX, PrivateLog, PublicDataWrite, REVERT_CODE_PREFIX, @@ -38,12 +37,7 @@ import { bufferToHex, hexToBuffer } from '@aztec/foundation/string'; import { inspect } from 'util'; import { z } from 'zod'; -import { - ContractClassTxL2Logs, - type TxL2Logs, - type UnencryptedL2Log, - UnencryptedTxL2Logs, -} from './logs/index.js'; +import { ContractClassTxL2Logs, type TxL2Logs, UnencryptedTxL2Logs } from './logs/index.js'; import { TxHash } from './tx/tx_hash.js'; export { RevertCodeEnum } from '@aztec/circuits.js'; @@ -257,9 +251,9 @@ export class TxEffect { * Used to prefix a 'block' of tx effects with its type and length. */ private toPrefix(type: number, length: number): Fr { - const buf = Buffer.alloc(3); + const buf = Buffer.alloc(4); buf.writeUint8(type); - buf.writeUint8(length, 2); + buf.writeUInt16BE(length, 2); return new Fr(buf); } @@ -267,8 +261,8 @@ export class TxEffect { * Decodes the prefix as used in a blob to tx effect type and length. */ static fromPrefix(prefix: Fr) { - const buf = prefix.toBuffer().subarray(-3); - return { type: buf[0], length: buf[2] }; + const buf = prefix.toBuffer().subarray(-4); + return { type: buf[0], length: new Fr(buf.subarray(-2)).toNumber() }; } /** @@ -362,16 +356,12 @@ export class TxEffect { flattened.push(this.toPrefix(PUBLIC_DATA_UPDATE_REQUESTS_PREFIX, this.publicDataWrites.length * 2)); flattened.push(...this.publicDataWrites.map(w => [w.leafSlot, w.value]).flat()); } + if (this.privateLogs.length) { + flattened.push(this.toPrefix(PRIVATE_LOGS_PREFIX, this.privateLogs.length * PRIVATE_LOG_SIZE_IN_FIELDS)); + flattened.push(...this.privateLogs.map(l => l.fields).flat()); + } // TODO(#8954): When logs are refactored into fields, we will append the values here // Currently appending the single log hash as an interim solution - if (this.noteEncryptedLogs.unrollLogs().length) { - flattened.push(this.toPrefix(NOTE_ENCRYPTED_LOGS_PREFIX, this.noteEncryptedLogs.unrollLogs().length)); - flattened.push(...this.noteEncryptedLogs.unrollLogs().map(log => Fr.fromBuffer(log.hash()))); - } - if (this.encryptedLogs.unrollLogs().length) { - flattened.push(this.toPrefix(ENCRYPTED_LOGS_PREFIX, this.encryptedLogs.unrollLogs().length)); - flattened.push(...this.encryptedLogs.unrollLogs().map(log => Fr.fromBuffer(log.getSiloedHash()))); - } if (this.unencryptedLogs.unrollLogs().length) { flattened.push(this.toPrefix(UNENCRYPTED_LOGS_PREFIX, this.unencryptedLogs.unrollLogs().length)); flattened.push(...this.unencryptedLogs.unrollLogs().map(log => Fr.fromBuffer(log.getSiloedHash()))); @@ -395,8 +385,6 @@ export class TxEffect { */ static fromBlobFields( fields: Fr[] | FieldReader, - noteEncryptedLogs?: EncryptedNoteTxL2Logs, - encryptedLogs?: EncryptedTxL2Logs, unencryptedLogs?: UnencryptedTxL2Logs, contractClassLogs?: ContractClassTxL2Logs, ) { @@ -419,6 +407,7 @@ export class TxEffect { // TODO: how long should tx fee be? For now, not using fromPrefix() const prefixedFee = reader.readField(); // NB: Fr.fromBuffer hangs here if you provide a buffer less than 32 in len + // todo: try new Fr(prefixedFee.toBuffer().subarray(3)) effect.transactionFee = Fr.fromBuffer(Buffer.concat([Buffer.alloc(3), prefixedFee.toBuffer().subarray(3)])); while (!reader.isFinished()) { const { type, length } = this.fromPrefix(reader.readField()); @@ -443,27 +432,16 @@ export class TxEffect { } break; } - // TODO(#8954): When logs are refactored into fields, we will append the read fields here - case NOTE_ENCRYPTED_LOGS_PREFIX: - // effect.noteEncryptedLogs = EncryptedNoteTxL2Logs.fromFields(reader.readFieldArray(length)); - ensureEmpty(effect.noteEncryptedLogs.functionLogs); - if (!noteEncryptedLogs) { - throw new Error(`Tx effect has note logs, but they were not passed raw to .fromBlobFields()`); - } - this.checkInjectedLogs(noteEncryptedLogs, reader.readFieldArray(length)); - effect.noteEncryptedLogs = noteEncryptedLogs; - effect.noteEncryptedLogsLength = new Fr(noteEncryptedLogs.getKernelLength()); - break; - case ENCRYPTED_LOGS_PREFIX: - // effect.encryptedLogs = EncryptedTxL2Logs.fromFields(reader.readFieldArray(length)); - ensureEmpty(effect.encryptedLogs.functionLogs); - if (!encryptedLogs) { - throw new Error(`Tx effect has encrypted logs, but they were not passed raw to .fromBlobFields()`); + case PRIVATE_LOGS_PREFIX: { + // TODO(Miranda): squash log 0s in a nested loop and add len prefix? + ensureEmpty(effect.privateLogs); + const flatPrivateLogs = reader.readFieldArray(length); + for (let i = 0; i < length; i += PRIVATE_LOG_SIZE_IN_FIELDS) { + effect.privateLogs.push(PrivateLog.fromFields(flatPrivateLogs.slice(i, i + PRIVATE_LOG_SIZE_IN_FIELDS))); } - this.checkInjectedLogs(encryptedLogs, reader.readFieldArray(length)); - effect.encryptedLogs = encryptedLogs; - effect.encryptedLogsLength = new Fr(encryptedLogs.getKernelLength()); break; + } + // TODO(#8954): When logs are refactored into fields, we will append the read fields here case UNENCRYPTED_LOGS_PREFIX: // effect.unencryptedLogs = UnencryptedTxL2Logs.fromFields(reader.readFieldArray(length)); ensureEmpty(effect.unencryptedLogs.functionLogs); @@ -491,10 +469,6 @@ export class TxEffect { } // If the input fields have no logs, ensure we match the original struct by reassigning injected logs - effect.noteEncryptedLogs = - !effect.noteEncryptedLogs.getTotalLogCount() && noteEncryptedLogs ? noteEncryptedLogs : effect.noteEncryptedLogs; - effect.encryptedLogs = - !effect.encryptedLogs.getTotalLogCount() && encryptedLogs ? encryptedLogs : effect.encryptedLogs; effect.unencryptedLogs = !effect.unencryptedLogs.getTotalLogCount() && unencryptedLogs ? unencryptedLogs : effect.unencryptedLogs; effect.contractClassLogs = @@ -503,12 +477,9 @@ export class TxEffect { } // TODO(#8954): Remove below when logs are refactored into fields - private static checkInjectedLogs( - injected: TxL2Logs, - expectedHashes: Fr[], - ) { + private static checkInjectedLogs(injected: TxL2Logs, expectedHashes: Fr[]) { injected.unrollLogs().forEach((log, i) => { - const logHash = log instanceof EncryptedL2NoteLog ? log.hash() : log.getSiloedHash(); + const logHash = log.getSiloedHash(); if (!Fr.fromBuffer(logHash).equals(expectedHashes[i])) { throw new Error( `Log hash mismatch when reconstructing tx effect. Expected: ${Fr.fromBuffer(logHash)}, Got: ${ diff --git a/yarn-project/circuits.js/src/constants.gen.ts b/yarn-project/circuits.js/src/constants.gen.ts index 57a359b53a6..9602df1159a 100644 --- a/yarn-project/circuits.js/src/constants.gen.ts +++ b/yarn-project/circuits.js/src/constants.gen.ts @@ -183,7 +183,7 @@ export const TOTAL_FEES_LENGTH = 1; export const TOTAL_MANA_USED_LENGTH = 1; export const HEADER_LENGTH = 25; export const HEADER_LENGTH_BYTES = 648; -export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 491; +export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 731; export const PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 867; export const PRIVATE_CONTEXT_INPUTS_LENGTH = 38; export const FEE_RECIPIENT_LENGTH = 2; @@ -328,10 +328,9 @@ export const NOTES_PREFIX = 3; export const NULLIFIERS_PREFIX = 4; export const L2_L1_MSGS_PREFIX = 5; export const PUBLIC_DATA_UPDATE_REQUESTS_PREFIX = 6; -export const NOTE_ENCRYPTED_LOGS_PREFIX = 7; -export const ENCRYPTED_LOGS_PREFIX = 8; -export const UNENCRYPTED_LOGS_PREFIX = 9; -export const CONTRACT_CLASS_LOGS_PREFIX = 10; +export const PRIVATE_LOGS_PREFIX = 7; +export const UNENCRYPTED_LOGS_PREFIX = 8; +export const CONTRACT_CLASS_LOGS_PREFIX = 9; export const PROOF_TYPE_PLONK = 0; export const PROOF_TYPE_HONK = 1; export const PROOF_TYPE_OINK = 2; diff --git a/yarn-project/noir-protocol-circuits-types/src/index.ts b/yarn-project/noir-protocol-circuits-types/src/index.ts index 3a68ea234d5..7777fdf63ee 100644 --- a/yarn-project/noir-protocol-circuits-types/src/index.ts +++ b/yarn-project/noir-protocol-circuits-types/src/index.ts @@ -776,14 +776,11 @@ export function foreignCallHandler(name: string, args: ForeignCallInput[]): Prom const fieldsFr: Fr[] = fields.map((field: string) => fromACVMField(field)); log.verbose('debug_log ' + applyStringFormatting(msg, fieldsFr)); } else if (name === 'evaluateBlobs') { - // TODO(BLOB_ORACLE): this was added to save simulation time (~1min in ACVM, ~3mins in wasm -> 500ms). + // TODO(#10323): this was added to save simulation time (~1min in ACVM, ~3mins in wasm -> 500ms). // The use of bignum adds a lot of unconstrained code which overloads limits when simulating. // If/when simulation times of unconstrained are improved, remove this. // Create and evaulate our blobs: - const blobsAsFr: Fr[] = args[0].map((field: string) => fromACVMField(field)).filter(field => !field.isZero()); - const blobs = Blob.getBlobs(blobsAsFr); - const blobPublicInputs = BlockBlobPublicInputs.fromBlobs(blobs); - // Checks on injected values: + const paddedBlobsAsFr: Fr[] = args[0].map((field: string) => fromACVMField(field)); const kzgCommitments = args[1].map((field: string) => fromACVMField(field)); const spongeBlob = SpongeBlob.fromFields( args @@ -791,13 +788,21 @@ export function foreignCallHandler(name: string, args: ForeignCallInput[]): Prom .flat() .map((field: string) => fromACVMField(field)), ); + const blobsAsFr = paddedBlobsAsFr.slice(0, spongeBlob.expectedFields); + // NB: the above used to be: + // const blobsAsFr: Fr[] = args[0].map((field: string) => fromACVMField(field)).filter(field => !field.isZero()); + // ...but we now have private logs which have a fixed number of fields and may have 0 values. + // TODO(Miranda): trim 0 fields from private logs + const blobs = Blob.getBlobs(blobsAsFr); + const blobPublicInputs = BlockBlobPublicInputs.fromBlobs(blobs); + // Checks on injected values: + const hash = spongeBlob.squeeze(); blobs.forEach((blob, i) => { const injected = kzgCommitments.slice(2 * i, 2 * i + 2); const calculated = blob.commitmentToFields(); if (!calculated[0].equals(injected[0]) || !calculated[1].equals(injected[1])) { throw new Error(`Blob commitment mismatch. Real: ${calculated}, Injected: ${injected}`); } - const hash = spongeBlob.squeeze(); if (!hash.equals(blob.fieldsHash)) { throw new Error( `Injected blob fields do not match rolled up fields. Real hash: ${hash}, Injected hash: ${blob.fieldsHash}`, From 5c5a6550ae1e3bf6979d8acc59a49173ab3591f4 Mon Sep 17 00:00:00 2001 From: MirandaWood Date: Sat, 30 Nov 2024 16:52:09 +0000 Subject: [PATCH 09/39] chore: update proof fixture --- .../end-to-end/src/fixtures/dumps/epoch_proof_result.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json b/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json index 97470ed164d..e63211405d3 100644 --- a/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json +++ b/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json @@ -1 +1 @@ -{"proof":"00008b640000045b0000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000029c000000000000000000000000000000000000000000000000000000000000000102569a59ee1ac7a8d3d639e5b0ce3d403b83817fad4ef0ce64ae2befa3e5b9880000000000000000000000000000000000000000000000000000000000000002125c927dd0de76f063cb388b0eb79006a71c2c467d77347c912716e226214d6300000000000000000000000000000000000000000000000000000000000000041bdef12b868de34c7158964699584da32b1e7f038d2db9e86937f4320f0b209b1fe377018287e4433534dd3e41c258ecfb4f45d32c6bc672cfd0207185fde0fe000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000193267463615cd9b4ecaa6f720f5802327eac0b7313912d4f33b80b572fbc14508ba3c9b66832b1f42f21e1fbcca04fe95cc97b2c32a66f24f16e42853993a0e00000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012189e27304c838e300000000000000000000000000000000000000000000000985c06289c30a6a9f000000000000000000000000000000000000000000000009420ce02918efb1880000000000000000000000000000000000000000000000000000f48c23066f5e000000000000000000000000000000000000000000000008f73303fb5521728500000000000000000000000000000000000000000000000441d894a4da4b43270000000000000000000000000000000000000000000000097e112b4dad2e16b80000000000000000000000000000000000000000000000000002d4845277c71d000000000000000000000000000000000000000000000003532fda527bef209b00000000000000000000000000000000000000000000000018fb29dde3adc50c00000000000000000000000000000000000000000000000a3284a388739fc7620000000000000000000000000000000000000000000000000002bcbb9a83ebda0000000000000000000000000000000000000000000000051b88c6a06c0f8d6300000000000000000000000000000000000000000000000d2275b2fb2e01048e00000000000000000000000000000000000000000000000041ea5add096a879e00000000000000000000000000000000000000000000000000022998a28814a800000000000000000000000000000020a4c09b8157a83ede3e933a0c8a17cb0800000000000000000000000000000000000e10b37afd746f69689ef702a863470000000000000000000000000000003bdc6f25064046c31fac6815ad6d834f52000000000000000000000000000000000015532f1394158280e9c5b262495bca000000000000000000000000000000200f5a8c403c3ae98e465ece5d93565808000000000000000000000000000000000001b3d265f330ec060e354e19932941000000000000000000000000000000d9adf8961780b226c47c87476786a04bf200000000000000000000000000000000000741a698ce4d0bc1f593ce7ceece51000000000000000000000000000000a259417e85fda5c9d3a13a85e88c0b5ac9000000000000000000000000000000000011ed0b39603c1b8b252e73385367c0000000000000000000000000000000467158cda2d8a4beabb695c6e7e1672ae30000000000000000000000000000000000142e068301743e86fba4f53335f92200000000000000000000000000000096650cbf350fd79e4e21a3a53f084e5359000000000000000000000000000000000025e86237c45eeb6939f852e4019e10000000000000000000000000000000870ec61adc23bc1294a793de7d329135e300000000000000000000000000000000000d59e4f667228b55d76d57b80cbb4a000000000000000000000000000000dfa123d263c27f5e0a447510bbbf014a24000000000000000000000000000000000014c0e9197abcac09fcca8aa3f56231000000000000000000000000000000693200aaa7a1cf111060bfd9649742812e00000000000000000000000000000000000a64ac6619042e406467e1ef5c7d8000000000000000000000000000000017242d34ae4d5bc824da2a7b879251db3000000000000000000000000000000000001bd2c1cfb5141b0e5a5be4b94e65da00000000000000000000000000000065d868bbcd8b74f45dd8f024f2428cdeca0000000000000000000000000000000000222d34b257386cc9497f829dddaee8000000000000000000000000000000d50105a74dbf09f4818c455b6d7b0fa27000000000000000000000000000000000002abdf5ec09815d6c5bf9f88e0d26fd000000000000000000000000000000d34505e69518c155621b27dea90d44c862000000000000000000000000000000000028e927dd263b5a5eecbab80b4f0ac30000000000000000000000000000003087be9b771666928f848dd7bfc5e957dc000000000000000000000000000000000010bfc3e0fdecef090eb1705d77ec2b000000000000000000000000000000c9e70926e040e8728ad4d1678beeb4670400000000000000000000000000000000002946af12346abfd95caf6699b543a21a3793a9a941b6e4dd953b737235778140fbba9ac9c36b531d371bda74aa1fd6162cbac937efe944dabb0a430f4be0dbe7382dadaff6053e26aad9b97b55e02b16ab9efed44bea0071b2c05a093c31e7252538ed8f53dc730a04cf16b0d55c5c261022d541b8676341ddadb61f9626f05abd6f656ee4e1929e5c303916ae7f3404f11061e011161df0cf1a31e084d3e1c37135d45364d2ab1e39253d689f31b419965fb39c9829702afe0681cb3b58b5a46648d6f17cbe45aee13165b3de25bd1f63ee0ce13aa8e5f2e42b8bf6dddc6abdb38ca12c38a7f90035779fb3560a3402106c22f7743b27312fcd5fa39c0c5ef9393192bda7d86ba51f3fc1ea331f670ae7ab9a7d83a39a1d56b5833afaf6d2486f780a64adb200fd1cedd76e9aa7501c6b958892a372a0d31ee97c25b27585ab615ded56c7b202709bcea02f4ad746029b9c89243932aceb3c6eabc08ed44c4e78ee760e2cebe204bd87a737cf0c100fa6a19b5f300b28e99add95c4db87945001bc77380e632387fc9bf8fb4e75360d1c2e5b00ee6a997b86d6bec1aa58b5db4b8dc4bc1f73ebca7168c3510a57a12cee9edd53478ef81fb7d56355ad2bafa78ef21455a7f43e36b8a7b2b0d7ee0a2bf7ca51c74be0d52657e6f5024b8775ef36292b7e9bda109b817efbcec84dca11c5c3429a6e7988aef74142045258c7e64ac77baf33d46464526342c2def8f51d464bdd9a17f986db9e0912e407c4ebef64aef6ba1f744cabe3b104a02236ba0d27a85b2b04a4136d9671c9aaea77fadb0d8854564f52f52df2dd7baee926d5075458dd715570fe26f268f5221fa866dfbd587d8abb0943cde1554914d3d2d2232660003c75d1e9c4c3c00f72bee367dda32110b8a14dad1858313439fb43ec014be463c31af0bac5b0ce597e94aec7f6705a699712f3eace15164f39b938752a3b86ad3e1da20fdb6fd54c397acb300738a37afe6611c84e2f22d5d54919830259eab18f0ea42f1dab14f042813bd28133a815680798b4442ae3c32cf595140bfe7e793f4ed5678c627740779f3bd5404ff3cc6ec717e181732cafd2e22d6724bbdaf40a45f95640d65ae5da5b4a17dbff2b2bc66b0076f00ab24dc1a6d9aa2bc874886a704b74ff967cd2fd1ad8bb42cae90ab0f79b9e246642e4b7f9ddf10cf2f9e44db39561406b4cba8bd2c86356d024782bfc1976323bd5e4616946631ae25763db7c26ebdf5e4a427835a7966d5d87cb56978d6a92d8873a27e9800a07a29c7f148a82dcb8ad4c2088078769ee20753de841d6e51c27080a9259737d2ffb6e31dd85ea0c8e2f369edc0b37debaf3c08acc8dbb825b7a3bc6206c99560a3257319e4b1803cc5aca51f7a18867333b0a8dd6c743e38da249bfdf6ae587059fd4ec89f4a9d0fce1779e9e9e5206f66b8d8f0b1152d734fc15e313e5824b0aabc25cd1ba5ece0d708c2a9cb2f3974e5e99adc10c9ce5eae4024740cbf85c2bcf74ff536c8f020e992a6627f007a1bf522776d89dc1e1073cf92ff50c1f962ef279021f6f7c6a281d66d0f6507f031c9fc54c4d9d8e1b04b9619f7ac1dbe517bd743e57a03e8e69299e4ef50a9ca13f60d5043c9de40b5c235018cadd07e21f7896d9d17f5ee0ac3babd4006f560a0e123e3d4f51345f80c7a50ec8d2b0d42f4fcdb6ff7e6f365073b38ba45f810eb785ce3b8683da42a8d58e57e6220b8f056833b6e5bcc887d513c9351fbda047a348b816d30442089059716029ece25c26638ec9a41291a49263bc047cb70c3bed2f937e9ffd56509a3b6efd2eb5b56d13fb29a78a0083a85772eda91f76c9d372af4e894cc7c6424a9e5bb95d2408f60f8125a22e746efb0dd5036f9d15a0044b0ce6824d1dce055ff164612182bb77039363e4aa1714cc81cc02818e0d0a05023aa1c6d49a31810bc98a1f418f496a019924b173fcf343b986ed489ab82d7149ac4347ca31815712a9b7470b8950912d4969ae35ad30bdbda3c2578e7a3bf663be902dfb30040da4505b3ec3d7951419b3ac856ddbac7e3c33b5f31379948c59930e7b3e70e19144cc011088abfa231195cc3f057c533d83f0bdbe0d46df6c5f106400a29b354337b178a6cf16c2d52f34b73766e0cda98376dd9eef548a02e6f7dd5739c7ced639fbbf8add45225309dad42e760821bb781540dd9488e7a094a300234d27eeb19335db02f7b35221055e1f0bccfff895ffcb852d42ed5dad249228b01a99c9124e771056b2011699065a6ae251d889b74ebe4c8a081285c05a333772be976242e7794d8ce1292ea02c34ddf89e06afe7fcafacbe3ff380c4c6ac2d8c6f0ebcbeea31b6dcbd8f883c1491a73470cc6ed2a64c85ebf85650c980d6455c4161c0c590e27a00be97ea682dabf2c027be8c392a33e2e0e327117de8baef83c2b16e73e5e564591da163e2295544427ef991ba9eae1d6c4145e9b3a3e9f78d1b2bdac68c1e14e1a661108f1c46723ffd82434bfc32c2a5eefd71d3d30f00fb3ac9e1ea3b2afd555cfd57a72277d571f6f5e15a8104f75f809c350606a6b2675318cde836a924a8c6a2187414f3bef92347292bd3a81b69d955774c112ee996f33235dd028087fb5f56a75d0ee679a841c6a822ef2235e5107f5a1414556bf0d4a67870de5806fb2a35d0370bca02651b89f0fd6ae04e52a5c0bcfdbde8096299a5116d21214839d7ef56a720b6e3b394c9e7c77816bd24b143d9a6f5f5e7f378dcc3c41549d10cdc10a33d21ab96de1843f9729a7e4c6b499b628a2e3c51f1e51855bd0a8623ae1b701cdf0db1c53dc3b3ad63e79efae4826c9a4022b673327a1e5a99a021961e1f9877460b5627961b25b3f1c3beb9da1d00735c5fe3eda62872be3bc1aa7ff0c9caa4b71f00284219ed4e00691cb8d38c4d4e0c699e86479b0ba11fbb4597ac44b34e4700375b434bea848b21b3533f3552d119140224305204b5b89c08ce981c5165c6045a1ba261fd66bac1c7e1f42131262156aa7a52466c9504c3736c10571b6e6319e56ce2f62387fea59df9c9545cf3b8deddfd2d5c4abaf3de7cf08e95889c3426797310c5adb5b12bdf53d8de0b409fb365ec1ad572b41a406e213b3086930b0fd4e837d1aa46aca7faa17b077653c4398253f7c7f6f5d16fb36c314a63087a2501378020b090395c15a36915ee144fdc5eeb1e02b199159baacfafc4b84fa3112d3d8930b50776e5da242f29446de0200bd77dd54ad8a1aa2589e30673029606fd00ea75886a050975bcaec46eb2c5733bb026c5920c05ed28ba4a063135371d912736b053d46439bf9a68ba6eedf941357abc5d878e6e53008c9db59aad5629a06e5ffa90c911f366cba8d2f7104a742b03cb96e8cae8c78c50584e9bc8550fc8fd8e4ac147d101d78390d18c60d1f5f291b554227b48384d1a6300ddca56154d320dd43c82f0ea5aecdc4f176eb5f3d9d87faf33ce9e7e180f991d8f5060095fad700e44198822b0af7978e17599f1e06ea0575e298ead4692ab44a9489b1d8d9bf4436a2b863b88b39d0b9cc8354dc6d0c15e17b402adcaf06ea66be07606234912f0fd32ed8f6a8ea485d30486fe12c80224c4d9aa6831d2e2d9423a6610473387f5624a055835e6a6dccd324d7d5262daca77019febd171497d53652a1180e1c76c53e3dfe126576b8b173f9a545fdacfb6dfac476f2440d8f193bc411be4e0f7351dfd2ec6fd2f8a5421639a49ec4fc6a156c452dbf7045d5477bbca2ab4673d80f6ed21d500f64627a758005179607b119bc057ce0fa0c47eb9094e1b88b5694786e591a5ec7d4dda0f51fd7cd25580483f4d571542930da8cf87150ce769ce7207787e7b11b9a2a9ebc0a449e85d18193662a20a7b06fee8ecd7b22b12e7ef98f6d6b928d4a332c89688f4357bf66d3145918c944a6d9737ce69c20176ac1dd368c287891ccb6ac708383d7e19a4c0bb550b37ef43109c701aaf6b060986e5de4aaa19d55c0f4d2bcb28c8fa2bf8198252cbba7d438005eaadfafb25a3945fd9bbbbc2f733c35b8f52ee47e6328b0c4cfbe1a55892f69504629362107de9c1ea93ce5f6f9fe4ea153a0c34b82468da7ad603fa47300620163fa79f05e65b742f9d108eb8c165a17aa59205146388b4b041f96c820bc049bc12017c194e299b08850a6962d72f86adecf38662c1b887cdc00c630de454cd5e0eadd52cd0543c898dc78c9c41647b1c644aec36905b8b48754ed28c9c1642315d532f13d6a7e246f5ed1a420e648d1420e249ef591db854790f13ff8472e9d5716db2225c3fdc86b1b9ae0f49a737776f663e0961b5a3d097273ea025993f8eddb6ed166524ff7013a9505ab0697ab9656ef8df024288eb0246f3d479b98d49dac14824da7f57e458c9e692792e3665e686a92517fd3d85e8095de86a55545b6bf7280a4a5961688b9976d48667a3eafa29e4ab85e42f73f903cfb282f82fe85a095913b5bfb988aefb5372ead5968301f97473a39827adfc0d639d19b72ec91e2530159cf73c74aa49cbcba799c8142dbc663dad8fad71d871180c640e5c09a48cb60d12539e1f0854a22a7ceadcd92c6757bf81277bfdf73387d93057d0dc17306c294309b187ae6f3b963e6eda567bb25568630739eae17d03a1583fd03a363d8e2f39ef61fd7f473cadf59e34fe571599aa265912d19d36995029ce08eeb0ae5e122c87ad8b0eeb81742015bbaa9b1ad1cde0d314925eb1dfe999f96b9b73f2de2b1df5e24336e7045710dd2a598e8cdc9b4a60fd2e495a386101975cec2b730125c4b612696d968093ef30d7798ff3d89750ee37d27ccff3c165541fdcb71cd92a2b5a8b69a9c7cbbaca4ed8619122b031d01746d98b328d5125c342b3542a1a27b2de2cf6ee19aca504fdbed41b82acfd2e35f9fe21b2cbf48923de49ce94a10308c12fbaf3a006dd8480579aa3dc67fd606d30f8ffb6c72af37a9b975f0d230fa5c900868d929ca5debc440fea04da76707f55aa2711b6c2e705283e62c43e081e4ce2964478cb7a407061331548eedcdc943649de08e219f3735d60245136117b6e4974845c04a553ba17577012ca708c9e0778dc04dd9bde3607b552b2450f8ecee6aae366ebf27daf9e73a7a5ff1f41e1e58859f3516fe506fbc52306422459bc5cb9b5160babe71ed79b8299794d3e84e85043d655cbc0c865048a4bf602b7fdef6eb81cf63d875280a36af50e800b9b2018ac74dcd813ddb556ba55d51e3a1b0484d38bf0b332ea375887c5a9bc4abbfee35f3a2b7036927ec6e4d5700ffcb728d107c93b0463e84f7afaa535eef609f49a1ba9d6b5323fd3c6257ade2486fddef5f12453bda4afdf58af6fa1d87b9604d2ba76dacc0a29e61abdfe3b2f40670d057dd13208d1a8d1fe980868adea0c98bdff8a923df4bfaae14c0f6f04f260b9b8dd86fe2e4bfc5f588fc38afc222cf0681abe5cacf6a8d9d01fea962889a1fc5e40fdd2a2aaa5f28aab864b72471c65744f08df7e4c22bfdfb12e6608caa0510fb51c74047a8e4959794d97d196fd3def2a82f42c18c3e28dc3f0c221017f784c6e9c87374fe2abb69f8dcead7e8f461e3b851e760f985a8fc888991811b2e3460c96f4e57f47fb79eb0126fc3b491dc654a5718e2b76d17f7ccc5a23b6591f7488fd295acfc4af9a0846a0229bbd4a9323920bcef5c39acf8b96940a5e9d3fa3cb770937a86385f956af6596c466fbc8bdd7ce6cb922dad7d5340c0a483fab0a66cc6298833a72e67770e184efe1ea85b84996368100035f8a599927cba10ed7514a95f87c85eff8c2f73031178117c94a5d75b98babdcc77a1e3715cdbd25640175e07f6d48862479306927c96a985ccde9211c899016b9b76312088a3a8d95aad87d74332a765c46c48ec88f964da624744bc1dbc9e5767d5e4a1b03081838cbc541d72daf68c9acc5cdb556b48b9986099525879c96fa54b0071f9c314d017ae49cb966e5e99ac832beee1405a22742c9d92f4923a07dabc88c0771311e26af2c044d4ab793e2e5edf9e23e23702c313f91d9355519e3bcc77e0a17a498f05b63bc72955e597c35603b015bf00fbeb766b7b079d4cc3bccd95321d79afaf7242b08d5d8468e7662453561e87c4cc0add16c4c193abe86b1c84e126c910075b2b11bd5eafbfdb02e4322ea28dbdfeae3e7f80ae1bead12c6c98804387c23debeed15fd9cf14a859c1888e90b606bab746308eee70b77dd5b234e0b6e9ade85584168a385dbfdb666a6d32c4087ab1d8b2d5ac1e9b9c76c2f178927ef87a3fe660fc38511db450e423f69e3af5f287d02ac32ff5ef6be0c37211d101e8b407891319927949adf5fa2187f046d04b7271bfa4c15b679d30d67432204c7018a3bcb0ab57dce794c0dc7aa1a391e085b18ec07956640ec2d2e8535a1223650e1a8595310c152cd6ba4edebf3bc74224c752840d2387a72f7a91b750418eb5053ebbaf44c686f7f1eab04d936010b39e0ab380746925af72f034a94831188b55d60605c1f11d444159c4b6b76ea3a380e8830b2f7510de6a69abd1c7e20fee8b86649318150383b52707d2879b64bea7a78b30f4f038213bdbe4f179b23b4811128cc53717aca1e949ec0db406ac1fd4132ba8a50460c28b2a900adbd03a71aa7a47bed45b42a6ee50ef07fa754f42b83917899cb189628b8ed1c08ce2442f78e792d36c0727579fd95e2761a45e48c1b3152740fa65e676eb45ed2a3184d3b40d9620b53d748bcd365809fa8f1cfb6fadf16f76e21167ba17b61724c13dc78c7eaebdf2b1f7a353b81f198f4614ff9b674540f275ddbdab00a6ad50e00ff3fa0ab62677be7b24d1989d7e491a2d40b541ab31e0f2f845313e6d58133254ec3b7fdc5a657767922b1f95e8e27dd24d98704e9aad298618a666f5b9f001dd453fd334f0efd4474f50afe94f5910e272fa88bd0ef642a52bb32bfcc1bd60d4e9a6643795aa9d3b35569a0bca6a2baa7e4363e54ae7cb2017616d15f2d910515692752df16e4026d00b7de61fb5416581c627c296cf20cbcf7141f7728ab15f5c1cd527ca111e217de87b07fde9e297592e82e446eed82d4ff6eebcd135f148e6ba7491f31f73588d9b19bf480138d96e2c74b8cf69eff55af499b71eabb1bf39091abcd27f00a7d21661d138f66c2def69535bc456099f770030d162c8822a3b5bd1a8d2ae07f3d563f27e4d27a45ac1d9b1e37123ca2d1d538700e747b2a9b41e5c19aee15c5cbcef302f5d4f784943cd709db1d595977e9fd8b217247297df5252225af7e0c8d46c9dbc638e9680a172f8ba923bcfe84f507c234e8da1efa2d9c1a61f0922860bd2bc949f8d94dbbc7ba8268aa4e0d491d31fd9d741c305444e8510cfc7dc53eff164228892196a3316501e45138edd7ccf5499d03ac17473cb8c960910c5662caf159d5b10573c825736a0d3e9538d6e3b0c7ea955f2bdd1c1492ad8cfd0323401ba4eaafd8995421356caa3f7c8da40f6eea88a34f0be976eb318393872322087d8619a822c6ea17494df22619d59ba956986460da2e38f0fa65203a9db98ba0e903286d68b1bf1490aad7bc93921ef3e4b787da2b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006aa6080e2e0426a7ab1f68a05c174e8bc01866330086dca2248ab3b3731ff26003949201707b407a0f67de1b95b4fc091bf19111f4437188732ef16eea1a6b6020c4975d1ea76a8e96cb18c92941fa00d0c2efb76803b9112074fbbae2cb9f42b7d8fc760038e2c5c24d2dc10e04404d9f6906a1673de95df84921810a21e5e1d7c23d4c1f5c218388cadf0e8da4c243c6e6ee54340729901d76d32cf1ae17f2e213dd9f61ccf1bf3ff4f5c1790084fe2575704477d346096df1273e5976e84079a5fdb9620f0de62b617ab0bb45aa3e4d87b45632d05ac95ef16a14fa60b27030cca2b7a9e94ba354d03489fdcdfa16d8af1fdcabb53be4112636d7267affc2f1e34508a24318a79fcc433579c97b701496f8c79c1068e198eac96ddf826c60d70c2b305b9f895ccb79ca919329a4299ebbea320cf57d3125a990a4bad9c830d7c7b357ea202fcd10bd9a07dc304c48e48dba2b1e70a653c60a93621192b5c2f22e09d7126391835cb630533690ba9618ddc4e2b6105e3bb929431c1870e781654c43c7885922a4bee8b2bbe7ed296fa2d34e737bc5c1f1d17a10bc652cc980b344f4dd31f25a48b7d45e37e09280c6bb8b17e37715e341f6107d8ef5864731322aee5f839697b7c916d3f321bea17e94fbaee8349c4a75949837fba2805802f9c51a89797ddbf4e9384d68d5cbbc9cdef5dc41af215c74e4ccc22247bda181e8316132a6fc947a533ba66ab3e9a5c6268025eddbe85f15bb9ff853dd9bc012ea3f216a358c4b7e1838484d6f24ccd7192342ffe7e30f7e73b617eada1fe32301e3162a484531d7a44677d4a435ecca0249c3f735f2ecb2b2fd41cee14874a1f49fe2f5f3a20ac51e93e37084ba1f57eeb671dd085ecd319597ee5f66bc5ca11e7a2ca111f5308c3467230c3f0d4ed3e6a25ff171da0289015649ab46f251e0e83c4b37415d77cf92169c4d17008118a0e8fda870bfd2d8d71b706009a277a2fd06ef22bd28770dde752c12c269d771abd22971ec728c24d394b677ad677c0053ae2d18fe754e8537481ac49e2f20ac97fed84fb1fcfa0fa946e7a0086dce7099053a22392bf331f1ce01be8f72a8dbc7d2570b1b2504c1cc3e97a8c0dc04b0039da1f917cb23c7ce9c37d900919eb8c43194d9652fe97e9328436770d6a0f1090b95ec5aae37820ae544c4570ab44fe732c6b59f1839a44dacfd66fb82e511a0387fb4e12908b53de55e1d29eacd588d6b8dff658c804404e27f72a434bbd039887f27d43af85cb8fd572f63cd49f4c2dc49102b4c8be8df393e7d789ba23189bc621566c9f642b0f5714d6bcc141372ce9bd7408762037c4a70925d84bdd298602f3f1015ce659643ac4ab7ec26ba2080dee04413a19fc3dd345e135f0d40857f2874659cfb3bec91bb4d85cc799e16252f39236ca2120d25db8d47c094a0919d2eb4ed07350880b9f887eeb9040882136ed03c33a6870ffe79a8eaf0fb911cde6ecb3f7c468c864b82905376d49dd409996660b85efb7cac1798700eb920645261885277c62b6d9fb29e0a797daec4442071965306fef93e421cb928020243775aa72809864b0d2d68e737eb085fed6744654b4b947ff18017773a9a0710a28ccb0da53d77d181fd0aa3062e35fe65a5ed56cc8ebe57dad940393e025522816b1d1d97fdfa28af6c748d317080b4499409d2efdcf8f1b6273a5f5faff412d190ee38bb1a7924590f2a74d08eac36ca8081589af0b1fea392cf3337474c8107f9a59f56ef65719b1f1521489af9f21d6546b20bedc2e617b3b9d2e3c5dbf03306b320ade8dca97a3110dc761f2faa9843c7aa0c0d92427c64ccb6ba92fdc290bba04878b6274106d6395fc4b24e340dd02a10e01d5acaefde133f93efeff07628206218c2407335307640faba6aa649c216dc6b1fc980ad2856f54068baf1b799de76265cf605c086c49b735ee3b315dd157384dc136cdb6f54e7e0cfcba0000000000000000000000000000006a75c485cf87be4c92744f7df0a2eaeeba000000000000000000000000000000000000f2d07648da4fcd65d82617d173a400000000000000000000000000000038f6bf97c50dd6a375e7cf762fc67c6a0a00000000000000000000000000000000001b93f5f761c9455f73bda5e4edfe900000000000000000000000000000000bf432e3efd16e7ff66f81a2dd12aa730a000000000000000000000000000000000009d05f9292ddf99e80707fadffb0bc000000000000000000000000000000d4e97ed86b6a6fdd1926753b08c2fc638c00000000000000000000000000000000000fe866ac3a6809213c08dc15f11ba9000000000000000000000000000000e0c52820ebc863d2dbcbd777fe77b02c4500000000000000000000000000000000000e3f707fd46be5e0074fbae0989ba2000000000000000000000000000000ac9344428bfb0c9217f7c4626c7b317fc4000000000000000000000000000000000012629e191041c6ea93e5c0aae0f755000000000000000000000000000000d1c0a2db28bc1894e3d8a2d22dc60e8c970000000000000000000000000000000000304c99def73a55ae1c3ebd9d4d7009000000000000000000000000000000e54f6413a82290147564fb057cfa789b0400000000000000000000000000000000002583673b3ecd28404eeef0f8d9d0d4000000000000000000000000000000af6c2adde50398cedf2089031e2291dc520000000000000000000000000000000000056d69be1fb381aedebf7de8bca03200000000000000000000000000000025148637aca922a6e3b3cc79c318b2fd25000000000000000000000000000000000007eb04afb8bf7f6dbe2736f662f337000000000000000000000000000000767769c9f7492f460d4e30d8dd7b8a83c9000000000000000000000000000000000027070450cedd24e4039fa316ca1290000000000000000000000000000000701de0578eb2c6188da4d522c8984b8a6b00000000000000000000000000000000003042027948358066c2e49a4409bb68000000000000000000000000000000f1300b2c2e0a9e10795b044615d88e9438000000000000000000000000000000000003c2ad4b58ddbae60dd4143c765b6600000000000000000000000000000066f9d8176ef2177148bc3baa83462c9a5300000000000000000000000000000000002314f62e871c26d03a4448071ddefa000000000000000000000000000000d2e877f9e3968766f08b068f38c5781082000000000000000000000000000000000026a0de05ed713dd3b67e579d147e23000000000000000000000000000000e6f4695b853d46cda09ceb24719a78376d0000000000000000000000000000000000174665fba01ebaa4e5f0353c8521e5000000000000000000000000000000af8c81347e1d282627d5835d921ccc0511000000000000000000000000000000000011989e4a9332d9d034cab27923d0b9000000000000000000000000000000d6c49d309f441cdfa1d1ba5da2abbb85d3000000000000000000000000000000000011a480e1a0f8140ed9984b83a7facb000000000000000000000000000000204ee3af0f077c1e20afeb1f22ba8dea3b00000000000000000000000000000000001cc114cd66e97fc4fac20ef47bbf03000000000000000000000000000000a5575335ae35f1a417ead6e54b52589431000000000000000000000000000000000023e2c9fc4acbc6a97445fbbbe6dace000000000000000000000000000000b81bcd56f66e1d60048a7abfa2ac63e07100000000000000000000000000000000001909118832ad01e1276d3055672a2700000000000000000000000000000095337ca1eaa682bd5572994e119cc39828000000000000000000000000000000000007006cb1bb8aa584fb992ce1657307000000000000000000000000000000015e035f523f149f2bc71ee1a0604e69280000000000000000000000000000000000269a1c5429d7e738e852d12e5b2b63000000000000000000000000000000226fa99b18cb6d8044c98bc8f6498bab170000000000000000000000000000000000094d10f2d45d21656244c7af981225000000000000000000000000000000c849ade589b7f6238fe559c8931d46554200000000000000000000000000000000002f2adbe2217506a9e84472c243925d00000000000000000000000000000025bd045bd02c5a4da42c9d856ebaa1ffcc000000000000000000000000000000000010fe648f46df182c985146b90d5ee200000000000000000000000000000005e10400efe15441967580ac93a295f4d10000000000000000000000000000000000093ad3274859a19238f1a48fef0f53000000000000000000000000000000969d87a40cb83590c542a52c81c43b311e000000000000000000000000000000000019fd918dd63ef760a7d71120162b80000000000000000000000000000000ddc1368e48261d537fee14e9776d1ffc090000000000000000000000000000000000123b1e637b4057652320d424a224ae000000000000000000000000000000bd0fc4f32ecba6ea917593bd9283672614000000000000000000000000000000000021e8455de8ec340bcae353deaedb4b000000000000000000000000000000e2a0730f81a0faf77795cfd01d431c9a7400000000000000000000000000000000002f4fa7e14edca2efcc49b146a55a3700000000000000000000000000000017560a101e4e62a17b7ba85d76ccd1132e000000000000000000000000000000000018404b2834d98aedf3df71cd08de6f000000000000000000000000000000dec37e48cde642b80c272d4b2417cb112200000000000000000000000000000000002b02b6fa16a8a4e9d049031152a13800000000000000000000000000000069c2ea187fc5527d577e1c0b0421c7af860000000000000000000000000000000000024d712941f81e82492ffa716b23fd000000000000000000000000000000a03b0a28ec2ebdc96ff63d22b1b9546286000000000000000000000000000000000019d47bb2be4d1f474b039769c43daf000000000000000000000000000000648e22ac49d53b073e51099b4e155290ad000000000000000000000000000000000020232516630aea7abd4bf3f59f2f2a000000000000000000000000000000d7b56dae0b6b4fb2ca8dc4c6877388d6c400000000000000000000000000000000000020ae5182691dd99cd00db855bd2d0000000000000000000000000000009065bbf34a82043b945219dda959e9e7e20000000000000000000000000000000000190b95174efda20ee247c51390009700000000000000000000000000000039b3c3a59cbb81dc3e5bd7db84bf37f0f800000000000000000000000000000000001050b9a04b0be3196344f7b3bd5a6d000000000000000000000000000000ede920772a1cf5c75399b3b3ac0fa6e24000000000000000000000000000000000000a762b1f7a0e36cbb858ad616305bc0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000027161cd7d94ba07d570dc05049367c18d5216051070f00266e3d38e5683ab93129387a1590eae334e1d4338dcb8c82ca96fbf7942473b2383002261d8c3c8851ab7869a89bf3a502a8b56f9776cb290c4c9a4ec3e034e9f981a68f89ba5cc1027bc23eb01977528cdefa37841a12e8f22df810b5e95f3ca98869475dd527bf428bedbfc26f5cf9a5df1bdf8432c8a7908bb3612b9bfb0a6befbcb2118235e6c0f78585666f9f1e0442a55f4a57f1f83c02c956b6c917e57ac38036ae38941d3263916eb4c67179ee88a44fcd6b6c98f002f4fe2cdeadd7065f4ed66b3fa6a481d106837378da9b357a9ce58820d8b8bbcb6f66ce661a02bb93f71bc532916b003ac85f048fb3724836b6a024cdaef9166a7adf87ab185d093a0817daf05009320ee862a3af62fd94a74ad64f6fe04c6cc316b36269b45c10aef262194d312cd09675217eb8dc68b2cd141eacf973e9ce7434cca47f6d5c58295b60e7b201c172f084069512ddc88e3ff33c34c5c48f6b26ca233ef89f6d33e1062a156ea86a914e68ee034c8c1554244303975d6786cc9897b44db6c02d44d677a71674a6e1504ce2768010cb18423e55f064448b9cdcd45fe3b8e4b58dfd542d9c5e3d355181c4bd4fe1c6cadece19fd14e76f19451fc60f4e8f8bc6935fc0786ca88e0a3d419bcd8ab0f019655ff3109aaedb49f0e6f0888e99f18da4c799bf905a7d3f9360d5ec93b851acc7ada9510dc383a0dd7f9b9baee59d0e6f0e310b4a3e89b929711f561890ed8ad279dd2bfe648e6ed056c195d1c5d8de9b30cb1c5b13e1783c8029ba89ac82b835f1059e6ed9e47f5f3889c8fde43ca956ae3fcbf319654eaf711d7ef8096e220d644654342dee2bbafe5ead303e17d136e6b010d921b9aa0030abba364f85bde187d35e2587dabf837cd2fd214ac5a93c40153e30857cbc7890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e384122fa6ef39cd678c54b3acf21ccc0800000000000000000000000000000000001fe645c24f836a5f9f2e7f2bfb64c80000000000000000000000000000005aa1afa7f068421f97e7b135bbcc72f72c0000000000000000000000000000000000231051ed83ade2ca091843c6e106ef000000000000000000000000000000a8a5ddd351e975251400bd35e402d946f200000000000000000000000000000000000449a718d48f5adddb0c289bc672a20000000000000000000000000000005912b23ff4f97982c1b6b19081bce393620000000000000000000000000000000000086eec3524f43ea66f02b65c18d4620000029c","publicInputs":"02569a59ee1ac7a8d3d639e5b0ce3d403b83817fad4ef0ce64ae2befa3e5b98800000002125c927dd0de76f063cb388b0eb79006a71c2c467d77347c912716e226214d63000000041bdef12b868de34c7158964699584da32b1e7f038d2db9e86937f4320f0b209b1fe377018287e4433534dd3e41c258ecfb4f45d32c6bc672cfd0207185fde0fe000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000193267463615cd9b4ecaa6f720f5802327eac0b7313912d4f33b80b572fbc14508ba3c9b66832b1f42f21e1fbcca04fe95cc97b2c32a66f24f16e42853993a0e00000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"} \ No newline at end of file +{"proof":"0x00008b640000045b0000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000029c000000000000000000000000000000000000000000000000000000000000000114dbb5ceb242d62d79cdf71705a6e56dfbc7678c4050f694f49d2d37cb6b4325000000000000000000000000000000000000000000000000000000000000000224ea389a21363dc394add32d7d09d1d5a6af047848d9f0c756c7af2358f745b4000000000000000000000000000000000000000000000000000000000000000408768eaa02a2ea49ecf02c4486e40089e18da9574903f3cd171d2d3fe401222c05a8128b8d55768d8850d24611497beed9bb0e33fc43a2135fcc79f028653002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002f1d59ed909d79632cc0baec79289c060cebe98ab8024bb4259620a96b7c7d0e21055565154d81bf243f21a818fc3265eb3a0fb1564f3a932e8e87808c52da2900000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bf4d18b6005ccb3a2000000000000000000000000000000000000000000000000ef9262e09bddf4b0000000000000000000000000000000000000000000000006605e504418ee9f500000000000000000000000000000000000000000000000000001d5432c6f2dba00000000000000000000000000000000000000000000000ef798991ee0c2326300000000000000000000000000000000000000000000000355cec386790a611c00000000000000000000000000000000000000000000000711db5ce013fa95d500000000000000000000000000000000000000000000000000027682aff48e65000000000000000000000000000000000000000000000003e7b506b207827a7b00000000000000000000000000000000000000000000000824a721ca94f7a73e0000000000000000000000000000000000000000000000090adb989409c730c9000000000000000000000000000000000000000000000000000215bb71612c47000000000000000000000000000000000000000000000001aa3d969538df9c5f000000000000000000000000000000000000000000000001af7fc9463eca7d3000000000000000000000000000000000000000000000000d31962aa8daeab74a00000000000000000000000000000000000000000000000000004e60e5ddda600000000000000000000000000000003881e09d48ce069505f5c274f9139a37630000000000000000000000000000000000015dffc6374595fc1268f978430853000000000000000000000000000000b0f90e22b5f89a6ea5ba1769edde0c90d5000000000000000000000000000000000008d897ccd64e66252e7ff214e8510c000000000000000000000000000000c9a9e524481d2353f71f9aa3884d2afb3d0000000000000000000000000000000000152a0a0d10f6ccc8e8cb42dc397cde00000000000000000000000000000019eea60ba36735e6e953685448380b59c6000000000000000000000000000000000013e3f2d8f08a6548f8620263f22a76000000000000000000000000000000b6baa864359e74a2f081c1a9bd38068b8e0000000000000000000000000000000000176c8004fdb73d19aaca9ee5ebcc24000000000000000000000000000000d811da28b24015c0609cd0371b19e4fdda000000000000000000000000000000000004e45d40802f7e8caaf5332af4503500000000000000000000000000000096650cbf350fd79e4e21a3a53f084e5359000000000000000000000000000000000025e86237c45eeb6939f852e4019e10000000000000000000000000000000870ec61adc23bc1294a793de7d329135e300000000000000000000000000000000000d59e4f667228b55d76d57b80cbb4a000000000000000000000000000000dfa123d263c27f5e0a447510bbbf014a24000000000000000000000000000000000014c0e9197abcac09fcca8aa3f56231000000000000000000000000000000693200aaa7a1cf111060bfd9649742812e00000000000000000000000000000000000a64ac6619042e406467e1ef5c7d8000000000000000000000000000000095b549de30dc82f274db63243fba94e243000000000000000000000000000000000014e04c1390602b6d827cd67dfbb50c000000000000000000000000000000c47931eace96522cfca0855a0dcc2d063600000000000000000000000000000000000124dfb4127245da26c767e834b5b5000000000000000000000000000000e281e1087a3aef1ea1ce93da4d22b585eb00000000000000000000000000000000001e22e7394257edb372960c386a8e210000000000000000000000000000001c0af0cd9d8946a3033d650d975877813800000000000000000000000000000000000ec2cf6820125d25214b46ab55dfbc000000000000000000000000000000467905e76a34283a277b9b8dcce71e2c210000000000000000000000000000000000042ed60453407583ebbcfc0b1c208d000000000000000000000000000000b818dbeb8214b760156c4147058f789ed6000000000000000000000000000000000019c726591df8b21de05b78c1dc01890ebf7c2015626f39e22ee0984e9ffd43d474958e46dc3026707c9030e1e89aab21a4d252cbcf30efd621651e32e15b1953bf52ba32dd406ad36565630e1765562d6c83554e7dee09c993a3cf5522f32a471d308aa9377a242d51266463452ff5184df8379db0c24e3fa6db44a230a0ef8c50cc31c786c23eb4f3107acafb2ed302c14ef2963f79fb73ec7a14335b72c5f3a3362ad9fd04f5c03fd112f2688ca31632fe68ff6cbf53f02216388d7400a4c35e94fa428c3ac12bcf31607808eccd2aeb3981606b0de38c361be86f332a5515eadc3a58e0b1e628153159bac15d5f286578cae521e1b324668c7a28565456c4e528044f7dd42e0dc2e84074c5c76420219a06960e0b86c8a29f58068495c0882514774361ddf19db896949371d2b104322bf95dc39248944d18c189bcffea2e9eafdd5592f02a4e2a6469f77e08f5192f890af67ff92cc79e33d6fcf2198c125821442fa0b639e4023bcb42842cb227e35fc6eb976891d5010d30f397097d875b4429f7e324768f41afae275c6bff1a14e5a29a2da7ede94f506e01018c6eee8d51248dd066a0c3e67a0103859809031eeb55792051f00c3c938dded7cfef22ab2436b2b45fb43c380c3fbc373976222daa0102d0701a0a3bddfd896347cd9a27bfd36d68eac931c196b86bd5b80e1a37616d845b6d773b65eb4103779d6aa86456cc52ca3c91f2f8d5ed6603851f04a82221ad1025939a048acb2e9b4b6e65d04046cb6352e32dffcb7b46a21ee0075891c58cae50fe087829032b13a3e4ded5a8465b31c6d81e7250fa2f1bc74809e52d380fa33ddfee9a3afe86f8a8d2a149f7ca466a0a3e481fdeef0bd91b6e1f6098c0cf670e65225994f2be34a8c4ebc1cc1553cfec73f589906bb7147b5d2fddcf937edae310fc23ba11cc5f0359fa520484b794e52fc1c4ec2ac957da1103fdf85477937a9c426ad1aec91426c27ad8118a7db49b9c1057596f841edeb9165df84a7affe038a67aa1c935582084473d516ff4833cb991d224baa2dad2071edfe1626a256f30dd0acf17a0db3ad72f385c671481b48de4dc3c1fda7ad7461632e9699716a7c81460e7e431938d4a9182b483fd7304bc9d74198ac13bd9bb139e6acac639cc6218c7da7ab7aabb2d688c5baf38800b43784e24f054dc9dd91d1b291c25b6fea13b0e5ad769d71f6259d98efc1bd1d143070d815ec8d8e2cb2253b0f66fb893accfce56f8f6e8a1b945b26fa92dce86e6d85a0e821b823e361c1b370474995727b1c7b19c4cc8003c3b39917f2f11617c7d6f7bbaacfbff422010d8d90bf542f08bb8e95bd7f85c25f720355ff92d6d61af0a7ee7e9450fbf0b00f0a4ad1c64a4d19f44530cc7b9da741157725d3cd9ff875051c6b53f6dbd192445d0b96d553d93464421ca24dc02c8c743a40a29f8fa1c8779f6fcbc31b92885197e4635c3522894c2e31c7945636c86cea6c61f664c6ae645901222077625fa8f58f239dfb76df3f174a0ad17c43f5aac24ed79d3b53933ca78134bd5b407f64a634d8c3f43178929a8e0829cb24ca3e9f27b8ff2cded419249edf6aa1c2c07a1ac0a569d5c517831f16a955f554b3686d63ad3efbda024cf159a54d5de0ddc92367e3d90ba1a207b3434973c0cc344120e1b93fdb1110f43b1f5ab3b3b1f75ce2998d2b2af19df12f7b23fac6b72bd5666af45c2d8d7d7a4d4338c01ca07b77d6a79f8eec071d445e2e174e2bf539934cc248e70e46d1092e5d2184d8c2ecb27add0f026b40612ee87cee96091bf1d85401d98f5eaf06f4cdc663d9d432293e53dbc291fc3718626aae099a03c932f28b30ebd46bdcfc381986315d82109674745aa74e8e23cb5bc2678648d4d81bc59f4b73ec32a8dd88925253c9b7e01622987830d9c80972221cde7f1922c5b23195a2afd5e910db191b23d172d1c035e9160dc81bf970d1aea0476ca4c21ad3168e1c0c55336a0fe9ffcddcf2770150f492f7858c0336d0a836e941b6fcafd78c9aaabbb2124d1811234eacd70f226f05a75ba4ef2a9b8ef821bc48048609c9977b743ef128fdc9f95eddd09dbd529269043ea04f89cf7b3b019e97da982fdfa8f8990d8a6ea14c3423e14fa2795092003766b094875f25ffcfd6a18502c9962db38ed571dd68708aea70743e18f1d638e11c6a8ef91c74cd6e5781f87323f77ff1ad99fd68859fb1499d26d23300ee32c7a031bedbb6f00b358f9752c03544b10a6e323cdb2d528abd64ab3c08b23307c8f432383a6cacd20f909c095960c266c9440282469621268885214264d1716398689af521b71b5de0e76936f4541ffa3b8a6586430df95222b2895d65707c1e0df55ad7a1ebfeebe6ccb5d0d3f45759caee877fb6944f907dfb2992c1e15d15146aee835cff72479218c8cbaa8df635ec4ca9eeb0701e3172dba19b88f1d9e401b0ce7832f8b1c497ad28beae79681d99925b8c980c2d9e4a509a777031d737db510005f61bb8d2950e414dc7d18e92b1b112a94dd42ba1f0696d332ba1d54776349272d16a41f80db79f2de041f8539125baad71db7f8b8f47ea7393203abadc7f04bcf4c520b888dccee1ddf0a3efa93052ab7337f1c081743a061bb0f2a01967e92b317e3c7ea9df8edebcbd1a6bce0a55283dd0d47e73a3ecab06d14fe5c6bbd183d3739d5e1776e601dd5f7595d07a8c1731a5e1d6f709c324d13019fd2cb10cf9d032bad466b229601e139b18aed346e9242b46fb557b1e31f3706b6d52c200d82035e3f9ef375cccd0d704703aa6c6722cdf54b25eac522c25123661a4a10dce48b3859e792ebdf6615a85c23284fbd495ed562a5cf5e96fa86216e832085aa56d406e33320b4a4b5321678fba57b704e305b133ca7e388c8e328c293494ae5cd99da731f3daaa6c64b2eaba8b2e9f3916576250a12238bda4c0f5e126a548941abdd3570338b504aaac7360d4e5afc1ed796b94216bfa8c506037b51d45ba9409987b1964b55bc6349641c54d663d8540760ef2f75009d54a922d472d8734705df8d52e1940d8b4cd5aff91bfc0a16c5b97ad7fcd2fb660ad826fb732aa56a6af348599318b3005da2cb16f6d421870a479e7d305d013a7b1d1ba9c3e0aa098337feda0d3dccfc9aceb72989e16f879b94e52efcf10f2fff520b9b37960af6126a493ee8eae8ad4d9ec2f88022b24eb83924014df7fb9825621716a43e80903885fb85ce81dbbe0de4119757bfe02f85846c01dc9dd005c41d18555e69f6413f89eebfdc6b3f4ec5f761f69f0e1ae5d80a8084ddafc1a9001c2128dbbd55afb83e26a4f9b6bf2ed2f73e806ffd6691cf7ec32c5dcb9ca484902e051c2bb3265eb5f8d43a43cbe546e7a5b942bc7dabd333369a71a6f74834412cf1775e9a610b2f590e4bc9c72f6dea39ed0fa4418ef7301c69c1a088e7c79c22f1366e4dfb75c6e420868c05e05e8083eff65c886e060aa2eac6e47371d90b2008941ed16b003229463db9d62debc5921bd99eea329b92ddd9ba3a7cec96900f55528f14355a4041fac36d2067e8bb2a1a230db43a0863bd9d1bf1545c27501b24bbb5bc87de60d5008fb7c548b1ecb3caea56a56eba690f2a8409306489c70eb589d34125f0cbae1189174019dc541ddd8b26b56b00883f9a6127733898b00b534460c0df55ef3374fdb94cc98b6c78aec584c364f985e7333a72e8662f481726b49d1af6722eb0785a76c7398b7a9e0b4438165960e82669377715b99edc11609c6c4de2a03e206a953ce9a409413c413433badb0db86a1534f5e282d6060fd5e6df3a66bb250fb68002e268c0a56d2e8cf88f172642deb574d4cb2362812beb06f823ba4a30762a8abc1681e4f40e95caf7a9e37c0e5a7b6a54780d914f1aa25d18502323cac07f1de6d0f5f6ae752e80813449e7e9c195d896e58b45d82969bc686b5bb5db6e5182ccbd6fc9fb7b729f1b7da4a6a9c58b5b97ac32726428661f62d8c2f75db7780650fb672f5c62b242915815d6457fb74963bbf2cde82492c5cf0f6f359ec16cd0f105f2f004180254d4352130de71b129794b06fb841a781eb84ec75ec2b3b46db37296d129a4e0f559d7536f3c4efd65b92b2a793f139b348ab8bbb357f582ab0e85368179dad3ade6d40410afd59fde8a3c4f36db1786a8775e413a3ed3146650241267bf5dacf4f2eedccfe42a62a02e834550ab03dcc265784b9974ddc9c8c33f01a0ac36923ff07f7ec7ffe251a8e43159a6d9179806af8b63ad7682b57dbbfde3a6d04eba9310e9edbe02dc6d162d8f7716ef0bffbc77681262f6e25c3f7cf4e35aba4c8b634cafcb80bbd0a756831d17bee2027c9be9534da55e57fc6be7d9aa9a17532df06e115b17394b38f9549a8643b51b7413f7a6707a4a50dcbf4d71213f8f73123e4b919a3ffd9584e8ea5a68f06312b80201d1ed155c23af21e79a206ea4b552af4c4a645075fe7f45ea3e4063a52f3cf36b837c595d056cbc9dbce1bb14516288f9e9345db44cc2375c0af8171316fd6dd4e1725fcddafb64c43f75250e7cc93cff4f8eaae2439184a0f68ca9de2255768cfc5b49e8dc08bae43286a51a4040cc195613981f7b001dd8dc7a1cf5233702b3d574c6875590d7f109fbbca491974f5d8020607745956ecdf01d78ef041a29fb300217c9f22b33db2d36ef3fd6a330d877e33991a8fdeea37e7110ed2d750f031539065a24eba3a82da7895121d066eb239031c827e9fb130478a37c0b2cf720f9ce2f15c88c8afe46767f145bdea7e50178121bb3ddca3cf12a64c922360c6799ddee28a08e85d43855792f498779f9f055b5e523239b4aaae41d76080ea3111514b01a63e31ccceeeaec7f8db118bc1abe11a78bc2b98b0319b22f14a4768c9930eb063a35080496d3815cf9f3925213900516048c3a5e96862e2c1caeb3b8638258702134dbaa916b670ac2925968680cd08ea4e47c8f67b20ae5159b1d9acb13d2b82857193dd25bce2e0f68f0d955fb5f618d99cacfa72b591f1dd38aa7aa2caef1dd137658ae07fc8a94cba5e17187e220ab528096e6e627b503d8c7d3efec7bb330483f9c5bc2e67cc64ef733c8c72a8e85fd01c61cc084ba1db48fa6a574411aec4c9df8250b26edebc361ba2ec5a75d44e1f2834745b361080ed8d279cbd05987dfcc71e0dd48a9e57ce074270a8e537f5e3d33199ff038229b72773bfce6c4cb832b9ac7cc18119398beb630d3cee30979092173d38bf32de7601a64bdd94d21545252d17605fee20b12bb46bd063573a5b6dc9f3a930f27447580bd32bdbcdf510d7a2b3d308b52ea92b01abf3064d25d5bdac5f9ccfd06fa482f133a871370e76f57df8cc0432f47cc2d154fe04d21579c5896b394630221675932ad8ef0d97b6705b89c2ba37e4d43611bab2963e540483ae9bebc3b1ff1666f16f45000245a87069b7725e8cbcb949e0960f8dec0502168a315ab34099650c65e377d2fab6fe0d62b21cf15bd766c5da9dfe91349f648b07f7031de0d98b666adf75e8f069940b17969859fe0e030c3fe6d8b2e4325599cbf5157482d5909bebfb5b6476140c00917169967781f1e5e8fed2a1bcb85602451f8a21918849ef9d2a3d0351fa581b93ca39abe903175f389413ddd06e15f109c9647982e13690feb43fef4995dc8cf62f8c395028041df7eb0ff53a5b8bb033ed236bc13dc496016ccb578a8b4b4d1ae9765332099308b0f384f6beff9ef72794cb439207e87fbff3ed6ae9973c706d1cc5065dfff460a3080bd4c27ff8c7f8fa2a23d292054d3843ed224490d1ad2db8c1748ae47eb2e03db5015aac13509ae4a77660547d8985d99242d41db57ce4012fa9979c6e56ad450e53893ca95ae004ee9351f5db5f3b194e83f91592427cdb10323b5e037ccdfaad04783693873b5b09efc14ef7522dce11ce561f34f79f72e3bfaf815dbfa06e854ce9b468064af1be0e51202101cab2017db00bf75ebcf2cacefb8596e5394144952f8e537cc1ce18ac71b1b9e6d6fad81a5e4c7514a3094d1a9256f60e586b79576c0eebf622b1d888e13f379a1d947465b974e33de0d96c698dae6faea4ea0b14839ac973b48b6a4ba1967f00ebb912687d2f0cfbe17007d9fd22a91107d8a67067834fff1858947912a04a3d80b818e0bc8fcd9f6f84c1e05e0a578dcf7389d5cd620d2e3b5eb0d300fa18308b3e162b5dbecb38f8978f84e27f42823cf5d669f4e96e7ec4caabc680a600ca35b16355f5b9fc391360a47bc5b6ab880d487041f7a8b6decbb72b562088f2805e62cfb0109e034a7eee7c2017ce7bd5aea40e60ca04f00d86243a4d907dbdc7c5e09bdaa178a74b7eeb1975069968ea9f82b20253c9556b56f6ca31b0f46d44623bbb48ca54daef6bfee1bf0f52c5a4b8c15df7e6a82f15bb186952f1735f17a8b826a8d0f0d247f7748ef2f8740e3b3f06a6213eac42bf7432cb659211e7ecc328fa12616f2584dae9ddbbdd2eb60394d7f6e99fd5dd92ade7eb3902a9ffabda6577edae9e6729041ed0ae5aef5d92db684de80cd5c8eed6115c5c4124ff358d03c8d800584211691af4233f6eb1d5584fd7687d6b0b150f561b5be002b65fa81171ea2f3fe151b444eea88e2cbfa69631bc15ea5dbb905b98943bb17374ea620d6a82eefd52eb7207bcaff037914c8af137566e24e8cbb31549ae91b9df2af90d0be4eb251236325515727857969a26488dc5d2259fa656babe9bc03dee80280c6ca4642c4a2fdba8bbbb0d64be0b961244b2e649b1d7babae0720126d8d5fc79b4a5aae22208076fe670d52b0d466b60d45e57e6219ad89f27bc90daa8f898c1141d12278eee12d968f56a16cdd5342ea4fe12cc39cea85b1272a003e1a8a9b57ec6c016b9598822bdf09dbe295a533e2d2a270bc6d5577229acd1bfaa3e6cb073b023410c48f234118587f3e6146a879b39e7493fd298df1d73c04e57cd9f3923e049fda0ab9eb764b8f1b2d789981d568c17fa949cb0db4dcdd05db42c0908275ab2f28d21c3d1ce33c14c496f205dd8af0febcb967c9044bc51ea730cf6410bb84134da764be717c97b7d078fe51dc84ee4ab264b35f54199c18aa86f3f6f3c9e82f4566a83b53f3d1b43336274debcd97722fbabcf838cddf030e679effd5bf0782e28b6ae887a569a8914568e22a3d7557c416a77b25a750231bd6a2fcf8c79714b1fd1bffbb61ca4b29f8cf759fc2fb3932a9d8bc21f92902fb3c5678bdae9ef7b9a8f0b4746a2b501dafaab0fb1f4eb284c82dfc457c5819ef777792550c46ea7bcda7dcd4b3bed1a3d2ca18e8839296ef35685941760614836cfef499eddc5af68cbbcf8e53f43a857932c5b6866f596bb5269badad4d1ab56af0a2fdd6a295233bbb26fb3444f98a8ac3b93f635f4b8eba2dc17844b001ad2920792d5e366536184e4f4e89a5f5f49188c1149a1481cd2ba41e0735bf210ac3ceca83a58fb6d49bf73a9a824684d48772a98ff262179a051098f135782828ffee17746df4686b557030a85986ea45ecc2d53a84d659acd7a64c61f9281bf69d7403ad462c44c21ab3bfbd5c75d31720aced104162869d6dd07ee475fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018a77d8f23ee64256fa991ecf2ef7cf7b8857750f6db4bc9627fe336859f639c2d4e389c6d1a6d0a76583275e62d08ebf32c42e354a2a85edfda363de767c040292fd36a9fa8e17a8e574bc728fb1d79fd829281f010f7f82fdf56959e0044a21d624952150e449f38351913815f2aeb7debac25ad4f8fbc07167a92ea16ae772abafa7246219c93404b81154d2d0a687c87d4ac2bae76a397a53194eed47daa0a87e8d4d03ef827aec7c2716ad43a9de5021c8cf7087e991072a0ae476bb06b25d5873ed9016c695cf24c6c185bf005103cc7e87a9ad9bc03889ab543c3f08b150d22d7f53df142ef3be602a20cc678c6f27da3bfbe8398b357ea0fbefc65d50133c7a5b7aae3efe5033423c2b4ad96eb26105cfa441c1c9f5f6a296d0e16a605e22fda0af00a7f20c78c43545ea5c07da77eb3a9600ebade3acfbd8d74315a153ffe79767d1648298cd2b302a85df47b1067d3950153c1d5cbea7cb129c5db1ddd768a51e51619cdd9bf31f034c865e27c3e44d5d10dd3d98ff0d63fe6b5e61bde897abd22a714eb37de3342ba4c908bd35980e8d5862326954d18aec22adc1d64e6150213daba54cb5728e8d499343c0934ea40386d2362e415624289f4850fe8a56998dedbf234efdf1747767f47f2db1c51a6bcdf4b384dc3cb2560239d20361949a7651df7046638d720e5bf1285fb04e5673640ba5e00851c2b6e769f15f15d8f0e1d1e1ba2fc0c7033c78b042034d7e55e0708a6b0a6ed48358a126e29571785a35eab92e8ff205c5da10125d1dbf1d43705f1b64d62a8354184bcf0069a69839093a9f66e5d82c48d004927268b02ea653417ba9145ceaac828e23d0198e6935af6e3f27679f3fdf0c33114641acba33630ab08bfbec34ee7695fe408fb33c5dfbfaf3267223f2d529bc74fc7cfcfd837a7cab181e50f2663ddcabd2335fed79b240b3ee6ced1dac179e0a9b680fccf6c73c0bbe52643eaa2789a670a1a4f737a89591623d922b27fad79fd43ea784695c6148975bac44187ad09a302b0f74fce10c370e5fc8508a826135098130ee02190fcd8646b225bd3fadfe021d38d6e3f5748688cb8dc30039fc6309f2b1dd32333b30a72ff9ce166bb4cbc1e506cca82f66b40775e35eb499c9908bd2734b4dc4cf9be5a06373e622aa3992edfcb188e81859a4b8b5f0b710aa6b6a1986b5518da6df241ac4d7e2a8dd3a6225e5806884c0e7d21500da6717473d9a43bf5fcb98f64dfb8e842cd0c3d0d502c5a8841ff4222b86eb4d40b454b2c9adc575b4d8619bbff18b88c32536d698e044d35a0f95a70f7e63a016ccb83f895010d86070e4971b0724662c4593e2f741cc1f28a4b52e577343050d5653928878ad2b394c672a2d229200e592801157d24b9cc15953ad1442969dd3536e6ee260e3b9802569120d47abc24becab782b32902aee2bdc0d2f11573852964c802c31ca004dd84d432c1458acb9b922e86ac00fcb309f0a07f6622023210b2cf52d9cf88f13f3f0b0870590f270ade569de01869a93e1803f199f02c5fdf92cfc9018b163e46acd00347f4a1db7891f44e8827795fcb4e3274c85b8529df5c8e58cfb93283e781da2db6d9d8854a28831eba1e3f58fc4ea59e0e7bdfbba608836e794cf29ab765e21efad0a64acd8dc833e91ff7031857b9372099218b1bf6f6b2b519df1e7668cf3d8ad53e39e08dbf5a4f16180aeeefbc58ff9b2955ee21066967401d54023f0772be26374a9625e32da9291503d5a554d86fc16db84ccb601661abe87b4b9ab757fb698c1edc0132361a0d994607c22141a9e2d2ecf93503aa2fad296a640e3c403f66789089d3a4099c18bde1733c0817b68cacbdb4dc797c7ba2103a881e8e2343426a59f18090844425a378cb6d649068828473e7be18ce85626e3d9be1103aa3923187df498d6a93170d80f45080ef1f43794d533197fe0a31fbcc6de6924563c98b6e53ea4bddf8000000000000000000000000000000b2cedb34b2899f5680c65f0514d1efb77600000000000000000000000000000000001935098d62c5442e2729b3c26a5fcd000000000000000000000000000000b99b81eb0cacaf88e9f6932accd9c4cb48000000000000000000000000000000000023927e0e5fcb969dfe2ea8efbecd920000000000000000000000000000001b9be05ecb77a8b2dd9126839e6ddf6889000000000000000000000000000000000023f281f1583750190b199b590077430000000000000000000000000000002673c9fc59990813cc911976b7bab9197d000000000000000000000000000000000003f1c280f107fd8b4b06b5efb7e78c00000000000000000000000000000082d280869deecd6278d0abe57014132f570000000000000000000000000000000000147b254c325347c0b8bc08440e19bd0000000000000000000000000000003d02ae4f7087893935fb3d6993dceda41200000000000000000000000000000000002e00546c98e5c239ae72edc84d504700000000000000000000000000000045620f83af2c12038310bcd83c366077be000000000000000000000000000000000015f5c058523cb9bf5b82b044278973000000000000000000000000000000107e1f3cf9f08c249be37c22b39d82f03300000000000000000000000000000000000ebec9723151c25dcc7374fff5b55000000000000000000000000000000003cb9b30b753db009b94a41b201543e8ea00000000000000000000000000000000002ab0cd1ff2f1e0dd8e9b27ef90f888000000000000000000000000000000d0fc92522ea6e6ed25a2a835f88618decf000000000000000000000000000000000017a42ba19c2b73009166a8244c399600000000000000000000000000000026804c5925d71dad97ee457de18323708f00000000000000000000000000000000001113b200086b34e30486e6b727c2a000000000000000000000000000000084471adb2cfea0ab7cc8328ea9b0a2621000000000000000000000000000000000001aa76913e57f86fc5119b328271b0a00000000000000000000000000000003777f354ba12d4fee964aaa0a1de9dfcd00000000000000000000000000000000000d99fb85c26eee94d83e5cca238ce20000000000000000000000000000005485b32c57ba643047d320b6813648e8d20000000000000000000000000000000000249056b3fc6c3c9930c0b20e0cfe3800000000000000000000000000000016311301dc139b60f97ace1d47727826e800000000000000000000000000000000002c5f8084e25cdc897608ad7ab4cc990000000000000000000000000000003ce8b4c3ad0b03f3195b682880c486117100000000000000000000000000000000000f52fa2cf65a3e870d9b62b9e686dc000000000000000000000000000000f936d1ad2cbe15971799fd251ff908814f0000000000000000000000000000000000181a4de97296503f3a3489b746e4c5000000000000000000000000000000b7914b231969c164f7bd2ac4ac7921b118000000000000000000000000000000000030444f0670e9baa6936a8adf3690c60000000000000000000000000000003b8f0093b438cff0dcbe555fb3bf70f26b0000000000000000000000000000000000034bd566eeba1a210bed517279aeec000000000000000000000000000000db8775f1ed80415adc114386a18eea9b7a00000000000000000000000000000000000310b48157ba9982bc7700e8660d59000000000000000000000000000000374b0bb0ec6e1c034126b8d2592d290a5100000000000000000000000000000000000d1e8f7fcc970ca5e4671a3d7b27430000000000000000000000000000001d720d610bfe20005eac0be4a2a94709e0000000000000000000000000000000000000517b22ef55ef1b34149ac03b95ed00000000000000000000000000000026c08495a0041161bb65157f43d69ad2700000000000000000000000000000000000107fcdbe5e58af309ce9fe8b525d76000000000000000000000000000000b62a86dc7d30ab2b04a55f198f1c3b76e90000000000000000000000000000000000299b874a8894a011a230af0fae119e000000000000000000000000000000dd50cf37dbb2c1353fe436a91431708fad000000000000000000000000000000000027a1b29d0f910fa8266fea588083fe000000000000000000000000000000a5b38f67140d91b7e5d6f16a9dc9eab4a90000000000000000000000000000000000052e79626c1df766b2a1950a756a52000000000000000000000000000000243a70d7309b2cecaca04bd3f4d1eb4c4e000000000000000000000000000000000006fa44a72f74315cc76979ffbf15b50000000000000000000000000000006c6df0c8866c4d850832fbc660369b141e000000000000000000000000000000000000cbea0b465052ca5025320de4c20500000000000000000000000000000036b3d0e0f45d028e1f0d61616d34d3fe6800000000000000000000000000000000002752a19769d73d7bb0c35431731b30000000000000000000000000000000fa89d8c0bc4ccc0157b5443f7097b58405000000000000000000000000000000000005f05ab75ae3444fb9907b60d3e252000000000000000000000000000000984616597864e26047d7986290d88fb53f00000000000000000000000000000000001c2588a780305a1ac9be3d177452bb00000000000000000000000000000085d0f3b99cfe57a9d74f2bac689f66ca4600000000000000000000000000000000000ceae21e8043357e772b53090200d80000000000000000000000000000001a9ca81dfad27a323b0daf1a18a91651ef00000000000000000000000000000000001f44ca5f270b5b59351517f735002a000000000000000000000000000000eed9e52dab011a4fd1295f53e584a1e49100000000000000000000000000000000000a599af4857cb6fe9613db542429d40000000000000000000000000000001b19efd46df90dad3e0c2457f846534acb00000000000000000000000000000000002bcad869c62ecdcd598b1e4a1d25330000000000000000000000000000003dbfd7cd751739ba633590a71fa94587ab000000000000000000000000000000000009dfd2079e42656ff3afd3e754d51a00000000000000000000000000000066580a75718c82157f79ed62229636310c00000000000000000000000000000000000ac78fd2b40e5dc0ea5b1f549511400000000000000000000000000000007caf6ac302b2b2dd94c636fa61fc14a5760000000000000000000000000000000000251eac68d72c1135fdb1542b9ff54f0000000000000000000000000000002cb2a4a6137c7705631be29aa95b6af73f0000000000000000000000000000000000085ecbc294b9b1047ebcddfea9873f0000000000000000000000000000003b07c3a1951317ae6783d7db78df1f2e0500000000000000000000000000000000002ba3b3ec2731d3c1b15971c512c71f0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000262f475c368407718d383be1fab7bc1516588adedee3d7cf431bb7eee02984db1d36733e9e64f21a16e5d8194a8e27e7641d4a651262da73ffdbc663d1f0f35322c0e2b8822c2ecf60a47bc051c4e515a6acac653a2218f42fccaa37e02da7e009dcce76f4dc093360f7427dd56f7c787a8c11f4c6631f576a04b612531e1e4f275d3106b0e90c0ebd25925ffae0932259b672f882267ff8ad61de864a2517e40984aa1d4c395fc2c928a07af2ee89e7642b2af88785e304d255a3c797346f370e344be29ef35d80675e61625c701fd7f5e681f82eade8f8efc753a65af6c1342be917cb233432533bfb4f17fc1e3fc1c008bfa8bb43bafba8222e2103df40912174cef9b89158b4125e5725271f4a73502fe1769aa67170fd7c73cd2c85c47d1bb5314c16039a869b3e06912708fca87abcb0b672831679dcb2b29570451e8c062f66c895773b48abe886a95bc8c2313a91b849e1e78f2e8f9ecab0d61de5ad21b8dc61d3430e8fb06d7b10e022a9d5fbf216bd14a5a33b3296bb63e3920d3a1a35bb9443526390a0294a764cfdef81742468ad50449f638f903d5626e7537414a196972c71dc18d677239939b38a2532b771dad37c34cfa9c91a2a29c7cf211726d59daa651ac9f68a0c83aaef155e47e93886d649804b1015caaa18b52743265e3c4612a2637074128201a6262dec632e4fbaad2d66f11730433f102e61c221661adbf39ab638709622be11fc6b0e215a591e84657e20258fa2d41386c6d305d15c75900d2a388e8c78ef46e1eb8cd13a6cbed12d05f310054e63c3c4ef8a235637be0e0881ab5fc20ec36c249f0f811a9697733f29bc17fdb79e42d731140d04923074a64e1549d7ce2f7d89f4e24bd1770ab15c7730add96f57b9c611c32f97609508e7a2f7ec54f13eb8b6b5732e9da2d5ddb19c208da9c7147086f34900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002d8095b7de0db38fa041cce794232fd648000000000000000000000000000000000022bf9dcd587e50f241614e94f9cdab00000000000000000000000000000017315e2b91cd284744c8ada06c3fdd2a8b00000000000000000000000000000000002e4027680072a4f13080eed01be18800000000000000000000000000000066a4c3726025049f7cd7f6c511716b179800000000000000000000000000000000000995b17133e48b2ad279020822b6c300000000000000000000000000000004cd92cc17a85b7a22b884bf31386a42ac00000000000000000000000000000000000a7d9776e628dfa9573d75473bb5040000029c","publicInputs":"0x14dbb5ceb242d62d79cdf71705a6e56dfbc7678c4050f694f49d2d37cb6b43250000000224ea389a21363dc394add32d7d09d1d5a6af047848d9f0c756c7af2358f745b40000000408768eaa02a2ea49ecf02c4486e40089e18da9574903f3cd171d2d3fe401222c05a8128b8d55768d8850d24611497beed9bb0e33fc43a2135fcc79f028653002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002f1d59ed909d79632cc0baec79289c060cebe98ab8024bb4259620a96b7c7d0e21055565154d81bf243f21a818fc3265eb3a0fb1564f3a932e8e87808c52da2900000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"} \ No newline at end of file From f5aac252a1379a3b787de9a56127290f034cddf7 Mon Sep 17 00:00:00 2001 From: Miranda Wood Date: Tue, 3 Dec 2024 10:52:03 +0000 Subject: [PATCH 10/39] fix: revert merge changes, compile time down from 90 to 10 mins (#10341) Reverted the noir changes from this merge: https://github.com/AztecProtocol/aztec-packages/commit/fe6fa6888f25a544e4ee5b202540f963fae0b913#diff-44fc1bda823fb66518af03520024bce3369ceb8114807d5ca9cf301d8bfcec7cL563 Bootstrapping protocol circuits went from 90mins to 10mins at the compile stage. (Apologies for lack of formatting) --- .../crates/blob/src/blob.nr | 7 +- .../src/base/private_base_rollup.nr | 2 +- .../rollup-lib/src/base/public_base_rollup.nr | 2 +- .../block_root/block_root_rollup_inputs.nr | 2 +- .../noirc_evaluator/src/ssa/ir/instruction.rs | 27 +- .../src/ssa/ir/instruction/call.rs | 8 +- .../noirc_evaluator/src/ssa/ir/printer.rs | 8 +- .../src/ssa/opt/flatten_cfg.rs | 263 ++++++++++-------- .../src/ssa/opt/flatten_cfg/value_merger.rs | 73 ++--- .../src/ssa/opt/remove_if_else.rs | 10 +- .../fixtures/dumps/epoch_proof_result.json | 2 +- 11 files changed, 230 insertions(+), 174 deletions(-) diff --git a/noir-projects/noir-protocol-circuits/crates/blob/src/blob.nr b/noir-projects/noir-protocol-circuits/crates/blob/src/blob.nr index 3591145f8af..997d254f6a1 100644 --- a/noir-projects/noir-protocol-circuits/crates/blob/src/blob.nr +++ b/noir-projects/noir-protocol-circuits/crates/blob/src/blob.nr @@ -482,11 +482,14 @@ mod tests { assert_eq(lhs, rhs); } + // TODO: After reverting some noir changes (see PR#10341) the below no longer works in unconstrained + // This happened previously in commit 893f1eca422d952d672eec75e3c9ff8f149a9ae8 but a sync fixed it. + // It works and passes in constrained, just takes a min longer. #[test] - unconstrained fn test_base() { + fn test_base() { let mut tx_data = FixtureBuilder::new(); // Add some random bits of state - tx_data.append_note_hashes_with_logs(50); + tx_data.append_note_hashes(50); tx_data.set_first_nullifier(); tx_data.append_nullifiers(50); tx_data.append_l2_to_l1_msgs(5); diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/private_base_rollup.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/private_base_rollup.nr index 05eae7394dc..3aeb7191f62 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/private_base_rollup.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/private_base_rollup.nr @@ -849,7 +849,7 @@ mod tests { array_concat([TX_FEE_PREFIX, 0], (0).to_be_bytes::<29>()), true, ); - tx_effects[2] = field_from_bytes([NOTES_PREFIX, 0, 50 as u8], true); + tx_effects[2] = encode_blob_prefix(NOTES_PREFIX, 50); for i in 0..50 { tx_effects[i + 3] = builder.tube_data.note_hashes.storage()[i].value(); } diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/public_base_rollup.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/public_base_rollup.nr index ac7e8f9ca1c..bf927c8f90c 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/public_base_rollup.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/public_base_rollup.nr @@ -1019,7 +1019,7 @@ mod tests { array_concat([TX_FEE_PREFIX, 0], (0).to_be_bytes::<29>()), true, ); - tx_effects[2] = field_from_bytes([NOTES_PREFIX, 0, 50 as u8], true); + tx_effects[2] = encode_blob_prefix(NOTES_PREFIX, 50); for i in 0..50 { tx_effects[i + 3] = builder.avm_data.note_hashes.storage()[i].value(); } diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_rollup_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_rollup_inputs.nr index 8cfecfe55d8..4f328d31e41 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_rollup_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_rollup_inputs.nr @@ -156,7 +156,7 @@ impl BlockRootRollupInputs { previous_block_hash: self.previous_block_hash, end_block_hash: block_hash, // current newest block hash = this block hash start_global_variables: left.constants.global_variables, // we have asserted that left.constants == right.constants => ... - end_global_variables: left.constants.global_variables, // with a current block range of 1, we only have 1 set of constants + end_global_variables: left.constants.global_variables, // ...with a current block range of 1, we only have 1 set of constants out_hash: content_commitment.out_hash, fees: fee_arr, vk_tree_root: left.constants.vk_tree_root, diff --git a/noir/noir-repo/compiler/noirc_evaluator/src/ssa/ir/instruction.rs b/noir/noir-repo/compiler/noirc_evaluator/src/ssa/ir/instruction.rs index f606fffbf91..2cd6ca543bf 100644 --- a/noir/noir-repo/compiler/noirc_evaluator/src/ssa/ir/instruction.rs +++ b/noir/noir-repo/compiler/noirc_evaluator/src/ssa/ir/instruction.rs @@ -315,7 +315,12 @@ pub(crate) enum Instruction { /// else_value /// } /// ``` - IfElse { then_condition: ValueId, then_value: ValueId, else_value: ValueId }, + IfElse { + then_condition: ValueId, + then_value: ValueId, + else_condition: ValueId, + else_value: ValueId, + }, /// Creates a new array or slice. /// @@ -608,11 +613,14 @@ impl Instruction { assert_message: assert_message.clone(), } } - Instruction::IfElse { then_condition, then_value, else_value } => Instruction::IfElse { - then_condition: f(*then_condition), - then_value: f(*then_value), - else_value: f(*else_value), - }, + Instruction::IfElse { then_condition, then_value, else_condition, else_value } => { + Instruction::IfElse { + then_condition: f(*then_condition), + then_value: f(*then_value), + else_condition: f(*else_condition), + else_value: f(*else_value), + } + } Instruction::MakeArray { elements, typ } => Instruction::MakeArray { elements: elements.iter().copied().map(f).collect(), typ: typ.clone(), @@ -671,9 +679,10 @@ impl Instruction { | Instruction::RangeCheck { value, .. } => { f(*value); } - Instruction::IfElse { then_condition, then_value, else_value } => { + Instruction::IfElse { then_condition, then_value, else_condition, else_value } => { f(*then_condition); f(*then_value); + f(*else_condition); f(*else_value); } Instruction::MakeArray { elements, typ: _ } => { @@ -836,7 +845,7 @@ impl Instruction { None } } - Instruction::IfElse { then_condition, then_value, else_value } => { + Instruction::IfElse { then_condition, then_value, else_condition, else_value } => { let typ = dfg.type_of_value(*then_value); if let Some(constant) = dfg.get_numeric_constant(*then_condition) { @@ -855,11 +864,13 @@ impl Instruction { if matches!(&typ, Type::Numeric(_)) { let then_condition = *then_condition; + let else_condition = *else_condition; let result = ValueMerger::merge_numeric_values( dfg, block, then_condition, + else_condition, then_value, else_value, ); diff --git a/noir/noir-repo/compiler/noirc_evaluator/src/ssa/ir/instruction/call.rs b/noir/noir-repo/compiler/noirc_evaluator/src/ssa/ir/instruction/call.rs index 67222d06ea8..cea10cd3cdf 100644 --- a/noir/noir-repo/compiler/noirc_evaluator/src/ssa/ir/instruction/call.rs +++ b/noir/noir-repo/compiler/noirc_evaluator/src/ssa/ir/instruction/call.rs @@ -455,8 +455,12 @@ fn simplify_slice_push_back( let mut value_merger = ValueMerger::new(dfg, block, &mut slice_sizes, unknown, None, call_stack); - let new_slice = - value_merger.merge_values(len_not_equals_capacity, set_last_slice_value, new_slice); + let new_slice = value_merger.merge_values( + len_not_equals_capacity, + len_equals_capacity, + set_last_slice_value, + new_slice, + ); SimplifyResult::SimplifiedToMultiple(vec![new_slice_length, new_slice]) } diff --git a/noir/noir-repo/compiler/noirc_evaluator/src/ssa/ir/printer.rs b/noir/noir-repo/compiler/noirc_evaluator/src/ssa/ir/printer.rs index 6bebd21fe61..24dc4dc8b7c 100644 --- a/noir/noir-repo/compiler/noirc_evaluator/src/ssa/ir/printer.rs +++ b/noir/noir-repo/compiler/noirc_evaluator/src/ssa/ir/printer.rs @@ -209,11 +209,15 @@ fn display_instruction_inner( Instruction::RangeCheck { value, max_bit_size, .. } => { writeln!(f, "range_check {} to {} bits", show(*value), *max_bit_size,) } - Instruction::IfElse { then_condition, then_value, else_value } => { + Instruction::IfElse { then_condition, then_value, else_condition, else_value } => { let then_condition = show(*then_condition); let then_value = show(*then_value); + let else_condition = show(*else_condition); let else_value = show(*else_value); - writeln!(f, "if {then_condition} then {then_value} else {else_value}") + writeln!( + f, + "if {then_condition} then {then_value} else if {else_condition} then {else_value}" + ) } Instruction::MakeArray { elements, typ } => { write!(f, "make_array [")?; diff --git a/noir/noir-repo/compiler/noirc_evaluator/src/ssa/opt/flatten_cfg.rs b/noir/noir-repo/compiler/noirc_evaluator/src/ssa/opt/flatten_cfg.rs index 5d114672a55..a2b8e20d20f 100644 --- a/noir/noir-repo/compiler/noirc_evaluator/src/ssa/opt/flatten_cfg.rs +++ b/noir/noir-repo/compiler/noirc_evaluator/src/ssa/opt/flatten_cfg.rs @@ -447,16 +447,6 @@ impl<'f> Context<'f> { }; self.condition_stack.push(cond_context); self.insert_current_side_effects_enabled(); - - // We disallow this case as it results in the `else_destination` block - // being inlined before the `then_destination` block due to block deduplication in the work queue. - // - // The `else_destination` block then gets treated as if it were the `then_destination` block - // and has the incorrect condition applied to it. - assert_ne!( - self.branch_ends[if_entry], *then_destination, - "ICE: branches merge inside of `then` branch" - ); vec![self.branch_ends[if_entry], *else_destination, *then_destination] } @@ -570,6 +560,7 @@ impl<'f> Context<'f> { let instruction = Instruction::IfElse { then_condition: cond_context.then_branch.condition, then_value: then_arg, + else_condition: cond_context.else_branch.as_ref().unwrap().condition, else_value: else_arg, }; let call_stack = cond_context.call_stack.clone(); @@ -665,6 +656,11 @@ impl<'f> Context<'f> { } let then_condition = then_branch.condition; + let else_condition = if let Some(branch) = else_branch { + branch.condition + } else { + self.inserter.function.dfg.make_constant(FieldElement::zero(), Type::bool()) + }; let block = self.inserter.function.entry_block(); // Merging must occur in a separate loop as we cannot borrow `self` as mutable while `value_merger` does @@ -673,6 +669,7 @@ impl<'f> Context<'f> { let instruction = Instruction::IfElse { then_condition, then_value: *then_case, + else_condition, else_value: *else_case, }; let dfg = &mut self.inserter.function.dfg; @@ -921,7 +918,7 @@ impl<'f> Context<'f> { mod test { use std::sync::Arc; - use acvm::{acir::AcirField, FieldElement}; + use acvm::acir::AcirField; use crate::ssa::{ function_builder::FunctionBuilder, @@ -961,9 +958,11 @@ mod test { v1 = not v0 enable_side_effects u1 1 v3 = cast v0 as Field - v5 = mul v3, Field -1 - v7 = add Field 4, v5 - return v7 + v4 = cast v1 as Field + v6 = mul v3, Field 3 + v8 = mul v4, Field 4 + v9 = add v6, v8 + return v9 } "; @@ -1028,10 +1027,11 @@ mod test { store v2 at v1 enable_side_effects u1 1 v6 = cast v0 as Field - v7 = sub Field 5, v2 - v8 = mul v6, v7 - v9 = add v2, v8 - store v9 at v1 + v7 = cast v4 as Field + v8 = mul v6, Field 5 + v9 = mul v7, v2 + v10 = add v8, v9 + store v10 at v1 return } "; @@ -1070,9 +1070,11 @@ mod test { store Field 6 at v1 enable_side_effects u1 1 v8 = cast v0 as Field - v10 = mul v8, Field -1 - v11 = add Field 6, v10 - store v11 at v1 + v9 = cast v4 as Field + v10 = mul v8, Field 5 + v11 = mul v9, Field 6 + v12 = add v10, v11 + store v12 at v1 return } "; @@ -1115,84 +1117,123 @@ mod test { // b7 b8 // ↘ ↙ // b9 - let src = " - acir(inline) fn main f0 { - b0(v0: u1, v1: u1): - v2 = allocate -> &mut Field - store Field 0 at v2 - v4 = load v2 -> Field - // call v1(Field 0, v4) - jmp b1() - b1(): - store Field 1 at v2 - v6 = load v2 -> Field - // call v1(Field 1, v6) - jmpif v0 then: b2, else: b3 - b2(): - store Field 2 at v2 - v8 = load v2 -> Field - // call v1(Field 2, v8) - jmp b4() - b4(): - v12 = load v2 -> Field - // call v1(Field 4, v12) - jmpif v1 then: b5, else: b6 - b5(): - store Field 5 at v2 - v14 = load v2 -> Field - // call v1(Field 5, v14) - jmp b7() - b7(): - v18 = load v2 -> Field - // call v1(Field 7, v18) - jmp b9() - b9(): - v22 = load v2 -> Field - // call v1(Field 9, v22) - v23 = load v2 -> Field - return v23 - b6(): - store Field 6 at v2 - v16 = load v2 -> Field - // call v1(Field 6, v16) - jmp b7() - b3(): - store Field 3 at v2 - v10 = load v2 -> Field - // call v1(Field 3, v10) - jmp b8() - b8(): - v20 = load v2 -> Field - // call v1(Field 8, v20) - jmp b9() - } - "; + let main_id = Id::test_new(0); + let mut builder = FunctionBuilder::new("main".into(), main_id); - let ssa = Ssa::from_str(src).unwrap(); - let ssa = ssa.flatten_cfg().mem2reg(); + let b1 = builder.insert_block(); + let b2 = builder.insert_block(); + let b3 = builder.insert_block(); + let b4 = builder.insert_block(); + let b5 = builder.insert_block(); + let b6 = builder.insert_block(); + let b7 = builder.insert_block(); + let b8 = builder.insert_block(); + let b9 = builder.insert_block(); + + let c1 = builder.add_parameter(Type::bool()); + let c4 = builder.add_parameter(Type::bool()); + + let r1 = builder.insert_allocate(Type::field()); + + let store_value = |builder: &mut FunctionBuilder, value: u128| { + let value = builder.field_constant(value); + builder.insert_store(r1, value); + }; + + let test_function = Id::test_new(1); + + let call_test_function = |builder: &mut FunctionBuilder, block: u128| { + let block = builder.field_constant(block); + let load = builder.insert_load(r1, Type::field()); + builder.insert_call(test_function, vec![block, load], Vec::new()); + }; + + let switch_store_and_test_function = + |builder: &mut FunctionBuilder, block, block_number: u128| { + builder.switch_to_block(block); + store_value(builder, block_number); + call_test_function(builder, block_number); + }; + + let switch_and_test_function = + |builder: &mut FunctionBuilder, block, block_number: u128| { + builder.switch_to_block(block); + call_test_function(builder, block_number); + }; + + store_value(&mut builder, 0); + call_test_function(&mut builder, 0); + builder.terminate_with_jmp(b1, vec![]); + + switch_store_and_test_function(&mut builder, b1, 1); + builder.terminate_with_jmpif(c1, b2, b3); + + switch_store_and_test_function(&mut builder, b2, 2); + builder.terminate_with_jmp(b4, vec![]); + + switch_store_and_test_function(&mut builder, b3, 3); + builder.terminate_with_jmp(b8, vec![]); + + switch_and_test_function(&mut builder, b4, 4); + builder.terminate_with_jmpif(c4, b5, b6); + + switch_store_and_test_function(&mut builder, b5, 5); + builder.terminate_with_jmp(b7, vec![]); + + switch_store_and_test_function(&mut builder, b6, 6); + builder.terminate_with_jmp(b7, vec![]); + + switch_and_test_function(&mut builder, b7, 7); + builder.terminate_with_jmp(b9, vec![]); + + switch_and_test_function(&mut builder, b8, 8); + builder.terminate_with_jmp(b9, vec![]); + + switch_and_test_function(&mut builder, b9, 9); + let load = builder.insert_load(r1, Type::field()); + builder.terminate_with_return(vec![load]); + + let ssa = builder.finish().flatten_cfg().mem2reg(); // Expected results after mem2reg removes the allocation and each load and store: - let expected = " - acir(inline) fn main f0 { - b0(v0: u1, v1: u1): - v2 = allocate -> &mut Field - enable_side_effects v0 - v3 = mul v0, v1 - enable_side_effects v3 - v4 = not v1 - v5 = mul v0, v4 - enable_side_effects v0 - v6 = cast v3 as Field - v8 = mul v6, Field -1 - v10 = add Field 6, v8 - v11 = not v0 - enable_side_effects u1 1 - v13 = cast v0 as Field - v15 = sub v10, Field 3 - v16 = mul v13, v15 - v17 = add Field 3, v16 - return v17 - }"; + // + // fn main f0 { + // b0(v0: u1, v1: u1): + // call test_function(Field 0, Field 0) + // call test_function(Field 1, Field 1) + // enable_side_effects v0 + // call test_function(Field 2, Field 2) + // call test_function(Field 4, Field 2) + // v29 = and v0, v1 + // enable_side_effects v29 + // call test_function(Field 5, Field 5) + // v32 = not v1 + // v33 = and v0, v32 + // enable_side_effects v33 + // call test_function(Field 6, Field 6) + // enable_side_effects v0 + // v36 = mul v1, Field 5 + // v37 = mul v32, Field 2 + // v38 = add v36, v37 + // v39 = mul v1, Field 5 + // v40 = mul v32, Field 6 + // v41 = add v39, v40 + // call test_function(Field 7, v42) + // v43 = not v0 + // enable_side_effects v43 + // store Field 3 at v2 + // call test_function(Field 3, Field 3) + // call test_function(Field 8, Field 3) + // enable_side_effects Field 1 + // v47 = mul v0, v41 + // v48 = mul v43, Field 1 + // v49 = add v47, v48 + // v50 = mul v0, v44 + // v51 = mul v43, Field 3 + // v52 = add v50, v51 + // call test_function(Field 9, v53) + // return v54 + // } let main = ssa.main(); let ret = match main.dfg[main.entry_block()].terminator() { @@ -1201,12 +1242,7 @@ mod test { }; let merged_values = get_all_constants_reachable_from_instruction(&main.dfg, ret); - assert_eq!( - merged_values, - vec![FieldElement::from(3u128), FieldElement::from(6u128), -FieldElement::from(1u128)] - ); - - assert_normalized_ssa_equals(ssa, expected); + assert_eq!(merged_values, vec![3, 5, 6]); } #[test] @@ -1287,7 +1323,7 @@ mod test { fn get_all_constants_reachable_from_instruction( dfg: &DataFlowGraph, value: ValueId, - ) -> Vec { + ) -> Vec { match dfg[value] { Value::Instruction { instruction, .. } => { let mut values = vec![]; @@ -1305,7 +1341,7 @@ mod test { values.dedup(); values } - Value::NumericConstant { constant, .. } => vec![constant], + Value::NumericConstant { constant, .. } => vec![constant.to_u128()], _ => Vec::new(), } } @@ -1536,23 +1572,4 @@ mod test { _ => unreachable!("Should have terminator instruction"), } } - - #[test] - #[should_panic = "ICE: branches merge inside of `then` branch"] - fn panics_if_branches_merge_within_then_branch() { - //! This is a regression test for https://github.com/noir-lang/noir/issues/6620 - - let src = " - acir(inline) fn main f0 { - b0(v0: u1): - jmpif v0 then: b2, else: b1 - b2(): - return - b1(): - jmp b2() - } - "; - let merged_ssa = Ssa::from_str(src).unwrap(); - let _ = merged_ssa.flatten_cfg(); - } } diff --git a/noir/noir-repo/compiler/noirc_evaluator/src/ssa/opt/flatten_cfg/value_merger.rs b/noir/noir-repo/compiler/noirc_evaluator/src/ssa/opt/flatten_cfg/value_merger.rs index 8ea26d4e96d..bee58278aa8 100644 --- a/noir/noir-repo/compiler/noirc_evaluator/src/ssa/opt/flatten_cfg/value_merger.rs +++ b/noir/noir-repo/compiler/noirc_evaluator/src/ssa/opt/flatten_cfg/value_merger.rs @@ -45,7 +45,7 @@ impl<'a> ValueMerger<'a> { /// Merge two values a and b from separate basic blocks to a single value. /// If these two values are numeric, the result will be - /// `then_condition * (then_value - else_value) + else_value`. + /// `then_condition * then_value + else_condition * else_value`. /// Otherwise, if the values being merged are arrays, a new array will be made /// recursively from combining each element of both input arrays. /// @@ -54,6 +54,7 @@ impl<'a> ValueMerger<'a> { pub(crate) fn merge_values( &mut self, then_condition: ValueId, + else_condition: ValueId, then_value: ValueId, else_value: ValueId, ) -> ValueId { @@ -69,14 +70,15 @@ impl<'a> ValueMerger<'a> { self.dfg, self.block, then_condition, + else_condition, then_value, else_value, ), typ @ Type::Array(_, _) => { - self.merge_array_values(typ, then_condition, then_value, else_value) + self.merge_array_values(typ, then_condition, else_condition, then_value, else_value) } typ @ Type::Slice(_) => { - self.merge_slice_values(typ, then_condition, then_value, else_value) + self.merge_slice_values(typ, then_condition, else_condition, then_value, else_value) } Type::Reference(_) => panic!("Cannot return references from an if expression"), Type::Function => panic!("Cannot return functions from an if expression"), @@ -84,11 +86,12 @@ impl<'a> ValueMerger<'a> { } /// Merge two numeric values a and b from separate basic blocks to a single value. This - /// function would return the result of `if c { a } else { b }` as `c * (a-b) + b`. + /// function would return the result of `if c { a } else { b }` as `c*a + (!c)*b`. pub(crate) fn merge_numeric_values( dfg: &mut DataFlowGraph, block: BasicBlockId, then_condition: ValueId, + else_condition: ValueId, then_value: ValueId, else_value: ValueId, ) -> ValueId { @@ -111,38 +114,31 @@ impl<'a> ValueMerger<'a> { // We must cast the bool conditions to the actual numeric type used by each value. let then_condition = dfg .insert_instruction_and_results( - Instruction::Cast(then_condition, Type::field()), + Instruction::Cast(then_condition, then_type), block, None, call_stack.clone(), ) .first(); - - let then_field = Instruction::Cast(then_value, Type::field()); - let then_field_value = - dfg.insert_instruction_and_results(then_field, block, None, call_stack.clone()).first(); - - let else_field = Instruction::Cast(else_value, Type::field()); - let else_field_value = - dfg.insert_instruction_and_results(else_field, block, None, call_stack.clone()).first(); - - let diff = Instruction::binary(BinaryOp::Sub, then_field_value, else_field_value); - let diff_value = - dfg.insert_instruction_and_results(diff, block, None, call_stack.clone()).first(); - - let conditional_diff = Instruction::binary(BinaryOp::Mul, then_condition, diff_value); - let conditional_diff_value = dfg - .insert_instruction_and_results(conditional_diff, block, None, call_stack.clone()) + let else_condition = dfg + .insert_instruction_and_results( + Instruction::Cast(else_condition, else_type), + block, + None, + call_stack.clone(), + ) .first(); - let merged_field = - Instruction::binary(BinaryOp::Add, else_field_value, conditional_diff_value); - let merged_field_value = dfg - .insert_instruction_and_results(merged_field, block, None, call_stack.clone()) - .first(); + let mul = Instruction::binary(BinaryOp::Mul, then_condition, then_value); + let then_value = + dfg.insert_instruction_and_results(mul, block, None, call_stack.clone()).first(); + + let mul = Instruction::binary(BinaryOp::Mul, else_condition, else_value); + let else_value = + dfg.insert_instruction_and_results(mul, block, None, call_stack.clone()).first(); - let merged = Instruction::Cast(merged_field_value, then_type); - dfg.insert_instruction_and_results(merged, block, None, call_stack).first() + let add = Instruction::binary(BinaryOp::Add, then_value, else_value); + dfg.insert_instruction_and_results(add, block, None, call_stack).first() } /// Given an if expression that returns an array: `if c { array1 } else { array2 }`, @@ -152,6 +148,7 @@ impl<'a> ValueMerger<'a> { &mut self, typ: Type, then_condition: ValueId, + else_condition: ValueId, then_value: ValueId, else_value: ValueId, ) -> ValueId { @@ -166,6 +163,7 @@ impl<'a> ValueMerger<'a> { if let Some(result) = self.try_merge_only_changed_indices( then_condition, + else_condition, then_value, else_value, actual_length, @@ -195,7 +193,12 @@ impl<'a> ValueMerger<'a> { let then_element = get_element(then_value, typevars.clone()); let else_element = get_element(else_value, typevars); - merged.push_back(self.merge_values(then_condition, then_element, else_element)); + merged.push_back(self.merge_values( + then_condition, + else_condition, + then_element, + else_element, + )); } } @@ -208,6 +211,7 @@ impl<'a> ValueMerger<'a> { &mut self, typ: Type, then_condition: ValueId, + else_condition: ValueId, then_value_id: ValueId, else_value_id: ValueId, ) -> ValueId { @@ -265,7 +269,12 @@ impl<'a> ValueMerger<'a> { let else_element = get_element(else_value_id, typevars, else_len * element_types.len()); - merged.push_back(self.merge_values(then_condition, then_element, else_element)); + merged.push_back(self.merge_values( + then_condition, + else_condition, + then_element, + else_element, + )); } } @@ -314,6 +323,7 @@ impl<'a> ValueMerger<'a> { fn try_merge_only_changed_indices( &mut self, then_condition: ValueId, + else_condition: ValueId, then_value: ValueId, else_value: ValueId, array_length: usize, @@ -397,7 +407,8 @@ impl<'a> ValueMerger<'a> { let then_element = get_element(then_value, typevars.clone()); let else_element = get_element(else_value, typevars); - let value = self.merge_values(then_condition, then_element, else_element); + let value = + self.merge_values(then_condition, else_condition, then_element, else_element); array = self.insert_array_set(array, index, value, Some(condition)).first(); } diff --git a/noir/noir-repo/compiler/noirc_evaluator/src/ssa/opt/remove_if_else.rs b/noir/noir-repo/compiler/noirc_evaluator/src/ssa/opt/remove_if_else.rs index 8e25c3f0a35..e79517b6782 100644 --- a/noir/noir-repo/compiler/noirc_evaluator/src/ssa/opt/remove_if_else.rs +++ b/noir/noir-repo/compiler/noirc_evaluator/src/ssa/opt/remove_if_else.rs @@ -66,9 +66,10 @@ impl Context { for instruction in instructions { match &function.dfg[instruction] { - Instruction::IfElse { then_condition, then_value, else_value } => { + Instruction::IfElse { then_condition, then_value, else_condition, else_value } => { let then_condition = *then_condition; let then_value = *then_value; + let else_condition = *else_condition; let else_value = *else_value; let typ = function.dfg.type_of_value(then_value); @@ -84,7 +85,12 @@ impl Context { call_stack, ); - let value = value_merger.merge_values(then_condition, then_value, else_value); + let value = value_merger.merge_values( + then_condition, + else_condition, + then_value, + else_value, + ); let _typ = function.dfg.type_of_value(value); let results = function.dfg.instruction_results(instruction); diff --git a/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json b/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json index e63211405d3..894bd6b3b79 100644 --- a/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json +++ b/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json @@ -1 +1 @@ -{"proof":"0x00008b640000045b0000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000029c000000000000000000000000000000000000000000000000000000000000000114dbb5ceb242d62d79cdf71705a6e56dfbc7678c4050f694f49d2d37cb6b4325000000000000000000000000000000000000000000000000000000000000000224ea389a21363dc394add32d7d09d1d5a6af047848d9f0c756c7af2358f745b4000000000000000000000000000000000000000000000000000000000000000408768eaa02a2ea49ecf02c4486e40089e18da9574903f3cd171d2d3fe401222c05a8128b8d55768d8850d24611497beed9bb0e33fc43a2135fcc79f028653002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002f1d59ed909d79632cc0baec79289c060cebe98ab8024bb4259620a96b7c7d0e21055565154d81bf243f21a818fc3265eb3a0fb1564f3a932e8e87808c52da2900000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bf4d18b6005ccb3a2000000000000000000000000000000000000000000000000ef9262e09bddf4b0000000000000000000000000000000000000000000000006605e504418ee9f500000000000000000000000000000000000000000000000000001d5432c6f2dba00000000000000000000000000000000000000000000000ef798991ee0c2326300000000000000000000000000000000000000000000000355cec386790a611c00000000000000000000000000000000000000000000000711db5ce013fa95d500000000000000000000000000000000000000000000000000027682aff48e65000000000000000000000000000000000000000000000003e7b506b207827a7b00000000000000000000000000000000000000000000000824a721ca94f7a73e0000000000000000000000000000000000000000000000090adb989409c730c9000000000000000000000000000000000000000000000000000215bb71612c47000000000000000000000000000000000000000000000001aa3d969538df9c5f000000000000000000000000000000000000000000000001af7fc9463eca7d3000000000000000000000000000000000000000000000000d31962aa8daeab74a00000000000000000000000000000000000000000000000000004e60e5ddda600000000000000000000000000000003881e09d48ce069505f5c274f9139a37630000000000000000000000000000000000015dffc6374595fc1268f978430853000000000000000000000000000000b0f90e22b5f89a6ea5ba1769edde0c90d5000000000000000000000000000000000008d897ccd64e66252e7ff214e8510c000000000000000000000000000000c9a9e524481d2353f71f9aa3884d2afb3d0000000000000000000000000000000000152a0a0d10f6ccc8e8cb42dc397cde00000000000000000000000000000019eea60ba36735e6e953685448380b59c6000000000000000000000000000000000013e3f2d8f08a6548f8620263f22a76000000000000000000000000000000b6baa864359e74a2f081c1a9bd38068b8e0000000000000000000000000000000000176c8004fdb73d19aaca9ee5ebcc24000000000000000000000000000000d811da28b24015c0609cd0371b19e4fdda000000000000000000000000000000000004e45d40802f7e8caaf5332af4503500000000000000000000000000000096650cbf350fd79e4e21a3a53f084e5359000000000000000000000000000000000025e86237c45eeb6939f852e4019e10000000000000000000000000000000870ec61adc23bc1294a793de7d329135e300000000000000000000000000000000000d59e4f667228b55d76d57b80cbb4a000000000000000000000000000000dfa123d263c27f5e0a447510bbbf014a24000000000000000000000000000000000014c0e9197abcac09fcca8aa3f56231000000000000000000000000000000693200aaa7a1cf111060bfd9649742812e00000000000000000000000000000000000a64ac6619042e406467e1ef5c7d8000000000000000000000000000000095b549de30dc82f274db63243fba94e243000000000000000000000000000000000014e04c1390602b6d827cd67dfbb50c000000000000000000000000000000c47931eace96522cfca0855a0dcc2d063600000000000000000000000000000000000124dfb4127245da26c767e834b5b5000000000000000000000000000000e281e1087a3aef1ea1ce93da4d22b585eb00000000000000000000000000000000001e22e7394257edb372960c386a8e210000000000000000000000000000001c0af0cd9d8946a3033d650d975877813800000000000000000000000000000000000ec2cf6820125d25214b46ab55dfbc000000000000000000000000000000467905e76a34283a277b9b8dcce71e2c210000000000000000000000000000000000042ed60453407583ebbcfc0b1c208d000000000000000000000000000000b818dbeb8214b760156c4147058f789ed6000000000000000000000000000000000019c726591df8b21de05b78c1dc01890ebf7c2015626f39e22ee0984e9ffd43d474958e46dc3026707c9030e1e89aab21a4d252cbcf30efd621651e32e15b1953bf52ba32dd406ad36565630e1765562d6c83554e7dee09c993a3cf5522f32a471d308aa9377a242d51266463452ff5184df8379db0c24e3fa6db44a230a0ef8c50cc31c786c23eb4f3107acafb2ed302c14ef2963f79fb73ec7a14335b72c5f3a3362ad9fd04f5c03fd112f2688ca31632fe68ff6cbf53f02216388d7400a4c35e94fa428c3ac12bcf31607808eccd2aeb3981606b0de38c361be86f332a5515eadc3a58e0b1e628153159bac15d5f286578cae521e1b324668c7a28565456c4e528044f7dd42e0dc2e84074c5c76420219a06960e0b86c8a29f58068495c0882514774361ddf19db896949371d2b104322bf95dc39248944d18c189bcffea2e9eafdd5592f02a4e2a6469f77e08f5192f890af67ff92cc79e33d6fcf2198c125821442fa0b639e4023bcb42842cb227e35fc6eb976891d5010d30f397097d875b4429f7e324768f41afae275c6bff1a14e5a29a2da7ede94f506e01018c6eee8d51248dd066a0c3e67a0103859809031eeb55792051f00c3c938dded7cfef22ab2436b2b45fb43c380c3fbc373976222daa0102d0701a0a3bddfd896347cd9a27bfd36d68eac931c196b86bd5b80e1a37616d845b6d773b65eb4103779d6aa86456cc52ca3c91f2f8d5ed6603851f04a82221ad1025939a048acb2e9b4b6e65d04046cb6352e32dffcb7b46a21ee0075891c58cae50fe087829032b13a3e4ded5a8465b31c6d81e7250fa2f1bc74809e52d380fa33ddfee9a3afe86f8a8d2a149f7ca466a0a3e481fdeef0bd91b6e1f6098c0cf670e65225994f2be34a8c4ebc1cc1553cfec73f589906bb7147b5d2fddcf937edae310fc23ba11cc5f0359fa520484b794e52fc1c4ec2ac957da1103fdf85477937a9c426ad1aec91426c27ad8118a7db49b9c1057596f841edeb9165df84a7affe038a67aa1c935582084473d516ff4833cb991d224baa2dad2071edfe1626a256f30dd0acf17a0db3ad72f385c671481b48de4dc3c1fda7ad7461632e9699716a7c81460e7e431938d4a9182b483fd7304bc9d74198ac13bd9bb139e6acac639cc6218c7da7ab7aabb2d688c5baf38800b43784e24f054dc9dd91d1b291c25b6fea13b0e5ad769d71f6259d98efc1bd1d143070d815ec8d8e2cb2253b0f66fb893accfce56f8f6e8a1b945b26fa92dce86e6d85a0e821b823e361c1b370474995727b1c7b19c4cc8003c3b39917f2f11617c7d6f7bbaacfbff422010d8d90bf542f08bb8e95bd7f85c25f720355ff92d6d61af0a7ee7e9450fbf0b00f0a4ad1c64a4d19f44530cc7b9da741157725d3cd9ff875051c6b53f6dbd192445d0b96d553d93464421ca24dc02c8c743a40a29f8fa1c8779f6fcbc31b92885197e4635c3522894c2e31c7945636c86cea6c61f664c6ae645901222077625fa8f58f239dfb76df3f174a0ad17c43f5aac24ed79d3b53933ca78134bd5b407f64a634d8c3f43178929a8e0829cb24ca3e9f27b8ff2cded419249edf6aa1c2c07a1ac0a569d5c517831f16a955f554b3686d63ad3efbda024cf159a54d5de0ddc92367e3d90ba1a207b3434973c0cc344120e1b93fdb1110f43b1f5ab3b3b1f75ce2998d2b2af19df12f7b23fac6b72bd5666af45c2d8d7d7a4d4338c01ca07b77d6a79f8eec071d445e2e174e2bf539934cc248e70e46d1092e5d2184d8c2ecb27add0f026b40612ee87cee96091bf1d85401d98f5eaf06f4cdc663d9d432293e53dbc291fc3718626aae099a03c932f28b30ebd46bdcfc381986315d82109674745aa74e8e23cb5bc2678648d4d81bc59f4b73ec32a8dd88925253c9b7e01622987830d9c80972221cde7f1922c5b23195a2afd5e910db191b23d172d1c035e9160dc81bf970d1aea0476ca4c21ad3168e1c0c55336a0fe9ffcddcf2770150f492f7858c0336d0a836e941b6fcafd78c9aaabbb2124d1811234eacd70f226f05a75ba4ef2a9b8ef821bc48048609c9977b743ef128fdc9f95eddd09dbd529269043ea04f89cf7b3b019e97da982fdfa8f8990d8a6ea14c3423e14fa2795092003766b094875f25ffcfd6a18502c9962db38ed571dd68708aea70743e18f1d638e11c6a8ef91c74cd6e5781f87323f77ff1ad99fd68859fb1499d26d23300ee32c7a031bedbb6f00b358f9752c03544b10a6e323cdb2d528abd64ab3c08b23307c8f432383a6cacd20f909c095960c266c9440282469621268885214264d1716398689af521b71b5de0e76936f4541ffa3b8a6586430df95222b2895d65707c1e0df55ad7a1ebfeebe6ccb5d0d3f45759caee877fb6944f907dfb2992c1e15d15146aee835cff72479218c8cbaa8df635ec4ca9eeb0701e3172dba19b88f1d9e401b0ce7832f8b1c497ad28beae79681d99925b8c980c2d9e4a509a777031d737db510005f61bb8d2950e414dc7d18e92b1b112a94dd42ba1f0696d332ba1d54776349272d16a41f80db79f2de041f8539125baad71db7f8b8f47ea7393203abadc7f04bcf4c520b888dccee1ddf0a3efa93052ab7337f1c081743a061bb0f2a01967e92b317e3c7ea9df8edebcbd1a6bce0a55283dd0d47e73a3ecab06d14fe5c6bbd183d3739d5e1776e601dd5f7595d07a8c1731a5e1d6f709c324d13019fd2cb10cf9d032bad466b229601e139b18aed346e9242b46fb557b1e31f3706b6d52c200d82035e3f9ef375cccd0d704703aa6c6722cdf54b25eac522c25123661a4a10dce48b3859e792ebdf6615a85c23284fbd495ed562a5cf5e96fa86216e832085aa56d406e33320b4a4b5321678fba57b704e305b133ca7e388c8e328c293494ae5cd99da731f3daaa6c64b2eaba8b2e9f3916576250a12238bda4c0f5e126a548941abdd3570338b504aaac7360d4e5afc1ed796b94216bfa8c506037b51d45ba9409987b1964b55bc6349641c54d663d8540760ef2f75009d54a922d472d8734705df8d52e1940d8b4cd5aff91bfc0a16c5b97ad7fcd2fb660ad826fb732aa56a6af348599318b3005da2cb16f6d421870a479e7d305d013a7b1d1ba9c3e0aa098337feda0d3dccfc9aceb72989e16f879b94e52efcf10f2fff520b9b37960af6126a493ee8eae8ad4d9ec2f88022b24eb83924014df7fb9825621716a43e80903885fb85ce81dbbe0de4119757bfe02f85846c01dc9dd005c41d18555e69f6413f89eebfdc6b3f4ec5f761f69f0e1ae5d80a8084ddafc1a9001c2128dbbd55afb83e26a4f9b6bf2ed2f73e806ffd6691cf7ec32c5dcb9ca484902e051c2bb3265eb5f8d43a43cbe546e7a5b942bc7dabd333369a71a6f74834412cf1775e9a610b2f590e4bc9c72f6dea39ed0fa4418ef7301c69c1a088e7c79c22f1366e4dfb75c6e420868c05e05e8083eff65c886e060aa2eac6e47371d90b2008941ed16b003229463db9d62debc5921bd99eea329b92ddd9ba3a7cec96900f55528f14355a4041fac36d2067e8bb2a1a230db43a0863bd9d1bf1545c27501b24bbb5bc87de60d5008fb7c548b1ecb3caea56a56eba690f2a8409306489c70eb589d34125f0cbae1189174019dc541ddd8b26b56b00883f9a6127733898b00b534460c0df55ef3374fdb94cc98b6c78aec584c364f985e7333a72e8662f481726b49d1af6722eb0785a76c7398b7a9e0b4438165960e82669377715b99edc11609c6c4de2a03e206a953ce9a409413c413433badb0db86a1534f5e282d6060fd5e6df3a66bb250fb68002e268c0a56d2e8cf88f172642deb574d4cb2362812beb06f823ba4a30762a8abc1681e4f40e95caf7a9e37c0e5a7b6a54780d914f1aa25d18502323cac07f1de6d0f5f6ae752e80813449e7e9c195d896e58b45d82969bc686b5bb5db6e5182ccbd6fc9fb7b729f1b7da4a6a9c58b5b97ac32726428661f62d8c2f75db7780650fb672f5c62b242915815d6457fb74963bbf2cde82492c5cf0f6f359ec16cd0f105f2f004180254d4352130de71b129794b06fb841a781eb84ec75ec2b3b46db37296d129a4e0f559d7536f3c4efd65b92b2a793f139b348ab8bbb357f582ab0e85368179dad3ade6d40410afd59fde8a3c4f36db1786a8775e413a3ed3146650241267bf5dacf4f2eedccfe42a62a02e834550ab03dcc265784b9974ddc9c8c33f01a0ac36923ff07f7ec7ffe251a8e43159a6d9179806af8b63ad7682b57dbbfde3a6d04eba9310e9edbe02dc6d162d8f7716ef0bffbc77681262f6e25c3f7cf4e35aba4c8b634cafcb80bbd0a756831d17bee2027c9be9534da55e57fc6be7d9aa9a17532df06e115b17394b38f9549a8643b51b7413f7a6707a4a50dcbf4d71213f8f73123e4b919a3ffd9584e8ea5a68f06312b80201d1ed155c23af21e79a206ea4b552af4c4a645075fe7f45ea3e4063a52f3cf36b837c595d056cbc9dbce1bb14516288f9e9345db44cc2375c0af8171316fd6dd4e1725fcddafb64c43f75250e7cc93cff4f8eaae2439184a0f68ca9de2255768cfc5b49e8dc08bae43286a51a4040cc195613981f7b001dd8dc7a1cf5233702b3d574c6875590d7f109fbbca491974f5d8020607745956ecdf01d78ef041a29fb300217c9f22b33db2d36ef3fd6a330d877e33991a8fdeea37e7110ed2d750f031539065a24eba3a82da7895121d066eb239031c827e9fb130478a37c0b2cf720f9ce2f15c88c8afe46767f145bdea7e50178121bb3ddca3cf12a64c922360c6799ddee28a08e85d43855792f498779f9f055b5e523239b4aaae41d76080ea3111514b01a63e31ccceeeaec7f8db118bc1abe11a78bc2b98b0319b22f14a4768c9930eb063a35080496d3815cf9f3925213900516048c3a5e96862e2c1caeb3b8638258702134dbaa916b670ac2925968680cd08ea4e47c8f67b20ae5159b1d9acb13d2b82857193dd25bce2e0f68f0d955fb5f618d99cacfa72b591f1dd38aa7aa2caef1dd137658ae07fc8a94cba5e17187e220ab528096e6e627b503d8c7d3efec7bb330483f9c5bc2e67cc64ef733c8c72a8e85fd01c61cc084ba1db48fa6a574411aec4c9df8250b26edebc361ba2ec5a75d44e1f2834745b361080ed8d279cbd05987dfcc71e0dd48a9e57ce074270a8e537f5e3d33199ff038229b72773bfce6c4cb832b9ac7cc18119398beb630d3cee30979092173d38bf32de7601a64bdd94d21545252d17605fee20b12bb46bd063573a5b6dc9f3a930f27447580bd32bdbcdf510d7a2b3d308b52ea92b01abf3064d25d5bdac5f9ccfd06fa482f133a871370e76f57df8cc0432f47cc2d154fe04d21579c5896b394630221675932ad8ef0d97b6705b89c2ba37e4d43611bab2963e540483ae9bebc3b1ff1666f16f45000245a87069b7725e8cbcb949e0960f8dec0502168a315ab34099650c65e377d2fab6fe0d62b21cf15bd766c5da9dfe91349f648b07f7031de0d98b666adf75e8f069940b17969859fe0e030c3fe6d8b2e4325599cbf5157482d5909bebfb5b6476140c00917169967781f1e5e8fed2a1bcb85602451f8a21918849ef9d2a3d0351fa581b93ca39abe903175f389413ddd06e15f109c9647982e13690feb43fef4995dc8cf62f8c395028041df7eb0ff53a5b8bb033ed236bc13dc496016ccb578a8b4b4d1ae9765332099308b0f384f6beff9ef72794cb439207e87fbff3ed6ae9973c706d1cc5065dfff460a3080bd4c27ff8c7f8fa2a23d292054d3843ed224490d1ad2db8c1748ae47eb2e03db5015aac13509ae4a77660547d8985d99242d41db57ce4012fa9979c6e56ad450e53893ca95ae004ee9351f5db5f3b194e83f91592427cdb10323b5e037ccdfaad04783693873b5b09efc14ef7522dce11ce561f34f79f72e3bfaf815dbfa06e854ce9b468064af1be0e51202101cab2017db00bf75ebcf2cacefb8596e5394144952f8e537cc1ce18ac71b1b9e6d6fad81a5e4c7514a3094d1a9256f60e586b79576c0eebf622b1d888e13f379a1d947465b974e33de0d96c698dae6faea4ea0b14839ac973b48b6a4ba1967f00ebb912687d2f0cfbe17007d9fd22a91107d8a67067834fff1858947912a04a3d80b818e0bc8fcd9f6f84c1e05e0a578dcf7389d5cd620d2e3b5eb0d300fa18308b3e162b5dbecb38f8978f84e27f42823cf5d669f4e96e7ec4caabc680a600ca35b16355f5b9fc391360a47bc5b6ab880d487041f7a8b6decbb72b562088f2805e62cfb0109e034a7eee7c2017ce7bd5aea40e60ca04f00d86243a4d907dbdc7c5e09bdaa178a74b7eeb1975069968ea9f82b20253c9556b56f6ca31b0f46d44623bbb48ca54daef6bfee1bf0f52c5a4b8c15df7e6a82f15bb186952f1735f17a8b826a8d0f0d247f7748ef2f8740e3b3f06a6213eac42bf7432cb659211e7ecc328fa12616f2584dae9ddbbdd2eb60394d7f6e99fd5dd92ade7eb3902a9ffabda6577edae9e6729041ed0ae5aef5d92db684de80cd5c8eed6115c5c4124ff358d03c8d800584211691af4233f6eb1d5584fd7687d6b0b150f561b5be002b65fa81171ea2f3fe151b444eea88e2cbfa69631bc15ea5dbb905b98943bb17374ea620d6a82eefd52eb7207bcaff037914c8af137566e24e8cbb31549ae91b9df2af90d0be4eb251236325515727857969a26488dc5d2259fa656babe9bc03dee80280c6ca4642c4a2fdba8bbbb0d64be0b961244b2e649b1d7babae0720126d8d5fc79b4a5aae22208076fe670d52b0d466b60d45e57e6219ad89f27bc90daa8f898c1141d12278eee12d968f56a16cdd5342ea4fe12cc39cea85b1272a003e1a8a9b57ec6c016b9598822bdf09dbe295a533e2d2a270bc6d5577229acd1bfaa3e6cb073b023410c48f234118587f3e6146a879b39e7493fd298df1d73c04e57cd9f3923e049fda0ab9eb764b8f1b2d789981d568c17fa949cb0db4dcdd05db42c0908275ab2f28d21c3d1ce33c14c496f205dd8af0febcb967c9044bc51ea730cf6410bb84134da764be717c97b7d078fe51dc84ee4ab264b35f54199c18aa86f3f6f3c9e82f4566a83b53f3d1b43336274debcd97722fbabcf838cddf030e679effd5bf0782e28b6ae887a569a8914568e22a3d7557c416a77b25a750231bd6a2fcf8c79714b1fd1bffbb61ca4b29f8cf759fc2fb3932a9d8bc21f92902fb3c5678bdae9ef7b9a8f0b4746a2b501dafaab0fb1f4eb284c82dfc457c5819ef777792550c46ea7bcda7dcd4b3bed1a3d2ca18e8839296ef35685941760614836cfef499eddc5af68cbbcf8e53f43a857932c5b6866f596bb5269badad4d1ab56af0a2fdd6a295233bbb26fb3444f98a8ac3b93f635f4b8eba2dc17844b001ad2920792d5e366536184e4f4e89a5f5f49188c1149a1481cd2ba41e0735bf210ac3ceca83a58fb6d49bf73a9a824684d48772a98ff262179a051098f135782828ffee17746df4686b557030a85986ea45ecc2d53a84d659acd7a64c61f9281bf69d7403ad462c44c21ab3bfbd5c75d31720aced104162869d6dd07ee475fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018a77d8f23ee64256fa991ecf2ef7cf7b8857750f6db4bc9627fe336859f639c2d4e389c6d1a6d0a76583275e62d08ebf32c42e354a2a85edfda363de767c040292fd36a9fa8e17a8e574bc728fb1d79fd829281f010f7f82fdf56959e0044a21d624952150e449f38351913815f2aeb7debac25ad4f8fbc07167a92ea16ae772abafa7246219c93404b81154d2d0a687c87d4ac2bae76a397a53194eed47daa0a87e8d4d03ef827aec7c2716ad43a9de5021c8cf7087e991072a0ae476bb06b25d5873ed9016c695cf24c6c185bf005103cc7e87a9ad9bc03889ab543c3f08b150d22d7f53df142ef3be602a20cc678c6f27da3bfbe8398b357ea0fbefc65d50133c7a5b7aae3efe5033423c2b4ad96eb26105cfa441c1c9f5f6a296d0e16a605e22fda0af00a7f20c78c43545ea5c07da77eb3a9600ebade3acfbd8d74315a153ffe79767d1648298cd2b302a85df47b1067d3950153c1d5cbea7cb129c5db1ddd768a51e51619cdd9bf31f034c865e27c3e44d5d10dd3d98ff0d63fe6b5e61bde897abd22a714eb37de3342ba4c908bd35980e8d5862326954d18aec22adc1d64e6150213daba54cb5728e8d499343c0934ea40386d2362e415624289f4850fe8a56998dedbf234efdf1747767f47f2db1c51a6bcdf4b384dc3cb2560239d20361949a7651df7046638d720e5bf1285fb04e5673640ba5e00851c2b6e769f15f15d8f0e1d1e1ba2fc0c7033c78b042034d7e55e0708a6b0a6ed48358a126e29571785a35eab92e8ff205c5da10125d1dbf1d43705f1b64d62a8354184bcf0069a69839093a9f66e5d82c48d004927268b02ea653417ba9145ceaac828e23d0198e6935af6e3f27679f3fdf0c33114641acba33630ab08bfbec34ee7695fe408fb33c5dfbfaf3267223f2d529bc74fc7cfcfd837a7cab181e50f2663ddcabd2335fed79b240b3ee6ced1dac179e0a9b680fccf6c73c0bbe52643eaa2789a670a1a4f737a89591623d922b27fad79fd43ea784695c6148975bac44187ad09a302b0f74fce10c370e5fc8508a826135098130ee02190fcd8646b225bd3fadfe021d38d6e3f5748688cb8dc30039fc6309f2b1dd32333b30a72ff9ce166bb4cbc1e506cca82f66b40775e35eb499c9908bd2734b4dc4cf9be5a06373e622aa3992edfcb188e81859a4b8b5f0b710aa6b6a1986b5518da6df241ac4d7e2a8dd3a6225e5806884c0e7d21500da6717473d9a43bf5fcb98f64dfb8e842cd0c3d0d502c5a8841ff4222b86eb4d40b454b2c9adc575b4d8619bbff18b88c32536d698e044d35a0f95a70f7e63a016ccb83f895010d86070e4971b0724662c4593e2f741cc1f28a4b52e577343050d5653928878ad2b394c672a2d229200e592801157d24b9cc15953ad1442969dd3536e6ee260e3b9802569120d47abc24becab782b32902aee2bdc0d2f11573852964c802c31ca004dd84d432c1458acb9b922e86ac00fcb309f0a07f6622023210b2cf52d9cf88f13f3f0b0870590f270ade569de01869a93e1803f199f02c5fdf92cfc9018b163e46acd00347f4a1db7891f44e8827795fcb4e3274c85b8529df5c8e58cfb93283e781da2db6d9d8854a28831eba1e3f58fc4ea59e0e7bdfbba608836e794cf29ab765e21efad0a64acd8dc833e91ff7031857b9372099218b1bf6f6b2b519df1e7668cf3d8ad53e39e08dbf5a4f16180aeeefbc58ff9b2955ee21066967401d54023f0772be26374a9625e32da9291503d5a554d86fc16db84ccb601661abe87b4b9ab757fb698c1edc0132361a0d994607c22141a9e2d2ecf93503aa2fad296a640e3c403f66789089d3a4099c18bde1733c0817b68cacbdb4dc797c7ba2103a881e8e2343426a59f18090844425a378cb6d649068828473e7be18ce85626e3d9be1103aa3923187df498d6a93170d80f45080ef1f43794d533197fe0a31fbcc6de6924563c98b6e53ea4bddf8000000000000000000000000000000b2cedb34b2899f5680c65f0514d1efb77600000000000000000000000000000000001935098d62c5442e2729b3c26a5fcd000000000000000000000000000000b99b81eb0cacaf88e9f6932accd9c4cb48000000000000000000000000000000000023927e0e5fcb969dfe2ea8efbecd920000000000000000000000000000001b9be05ecb77a8b2dd9126839e6ddf6889000000000000000000000000000000000023f281f1583750190b199b590077430000000000000000000000000000002673c9fc59990813cc911976b7bab9197d000000000000000000000000000000000003f1c280f107fd8b4b06b5efb7e78c00000000000000000000000000000082d280869deecd6278d0abe57014132f570000000000000000000000000000000000147b254c325347c0b8bc08440e19bd0000000000000000000000000000003d02ae4f7087893935fb3d6993dceda41200000000000000000000000000000000002e00546c98e5c239ae72edc84d504700000000000000000000000000000045620f83af2c12038310bcd83c366077be000000000000000000000000000000000015f5c058523cb9bf5b82b044278973000000000000000000000000000000107e1f3cf9f08c249be37c22b39d82f03300000000000000000000000000000000000ebec9723151c25dcc7374fff5b55000000000000000000000000000000003cb9b30b753db009b94a41b201543e8ea00000000000000000000000000000000002ab0cd1ff2f1e0dd8e9b27ef90f888000000000000000000000000000000d0fc92522ea6e6ed25a2a835f88618decf000000000000000000000000000000000017a42ba19c2b73009166a8244c399600000000000000000000000000000026804c5925d71dad97ee457de18323708f00000000000000000000000000000000001113b200086b34e30486e6b727c2a000000000000000000000000000000084471adb2cfea0ab7cc8328ea9b0a2621000000000000000000000000000000000001aa76913e57f86fc5119b328271b0a00000000000000000000000000000003777f354ba12d4fee964aaa0a1de9dfcd00000000000000000000000000000000000d99fb85c26eee94d83e5cca238ce20000000000000000000000000000005485b32c57ba643047d320b6813648e8d20000000000000000000000000000000000249056b3fc6c3c9930c0b20e0cfe3800000000000000000000000000000016311301dc139b60f97ace1d47727826e800000000000000000000000000000000002c5f8084e25cdc897608ad7ab4cc990000000000000000000000000000003ce8b4c3ad0b03f3195b682880c486117100000000000000000000000000000000000f52fa2cf65a3e870d9b62b9e686dc000000000000000000000000000000f936d1ad2cbe15971799fd251ff908814f0000000000000000000000000000000000181a4de97296503f3a3489b746e4c5000000000000000000000000000000b7914b231969c164f7bd2ac4ac7921b118000000000000000000000000000000000030444f0670e9baa6936a8adf3690c60000000000000000000000000000003b8f0093b438cff0dcbe555fb3bf70f26b0000000000000000000000000000000000034bd566eeba1a210bed517279aeec000000000000000000000000000000db8775f1ed80415adc114386a18eea9b7a00000000000000000000000000000000000310b48157ba9982bc7700e8660d59000000000000000000000000000000374b0bb0ec6e1c034126b8d2592d290a5100000000000000000000000000000000000d1e8f7fcc970ca5e4671a3d7b27430000000000000000000000000000001d720d610bfe20005eac0be4a2a94709e0000000000000000000000000000000000000517b22ef55ef1b34149ac03b95ed00000000000000000000000000000026c08495a0041161bb65157f43d69ad2700000000000000000000000000000000000107fcdbe5e58af309ce9fe8b525d76000000000000000000000000000000b62a86dc7d30ab2b04a55f198f1c3b76e90000000000000000000000000000000000299b874a8894a011a230af0fae119e000000000000000000000000000000dd50cf37dbb2c1353fe436a91431708fad000000000000000000000000000000000027a1b29d0f910fa8266fea588083fe000000000000000000000000000000a5b38f67140d91b7e5d6f16a9dc9eab4a90000000000000000000000000000000000052e79626c1df766b2a1950a756a52000000000000000000000000000000243a70d7309b2cecaca04bd3f4d1eb4c4e000000000000000000000000000000000006fa44a72f74315cc76979ffbf15b50000000000000000000000000000006c6df0c8866c4d850832fbc660369b141e000000000000000000000000000000000000cbea0b465052ca5025320de4c20500000000000000000000000000000036b3d0e0f45d028e1f0d61616d34d3fe6800000000000000000000000000000000002752a19769d73d7bb0c35431731b30000000000000000000000000000000fa89d8c0bc4ccc0157b5443f7097b58405000000000000000000000000000000000005f05ab75ae3444fb9907b60d3e252000000000000000000000000000000984616597864e26047d7986290d88fb53f00000000000000000000000000000000001c2588a780305a1ac9be3d177452bb00000000000000000000000000000085d0f3b99cfe57a9d74f2bac689f66ca4600000000000000000000000000000000000ceae21e8043357e772b53090200d80000000000000000000000000000001a9ca81dfad27a323b0daf1a18a91651ef00000000000000000000000000000000001f44ca5f270b5b59351517f735002a000000000000000000000000000000eed9e52dab011a4fd1295f53e584a1e49100000000000000000000000000000000000a599af4857cb6fe9613db542429d40000000000000000000000000000001b19efd46df90dad3e0c2457f846534acb00000000000000000000000000000000002bcad869c62ecdcd598b1e4a1d25330000000000000000000000000000003dbfd7cd751739ba633590a71fa94587ab000000000000000000000000000000000009dfd2079e42656ff3afd3e754d51a00000000000000000000000000000066580a75718c82157f79ed62229636310c00000000000000000000000000000000000ac78fd2b40e5dc0ea5b1f549511400000000000000000000000000000007caf6ac302b2b2dd94c636fa61fc14a5760000000000000000000000000000000000251eac68d72c1135fdb1542b9ff54f0000000000000000000000000000002cb2a4a6137c7705631be29aa95b6af73f0000000000000000000000000000000000085ecbc294b9b1047ebcddfea9873f0000000000000000000000000000003b07c3a1951317ae6783d7db78df1f2e0500000000000000000000000000000000002ba3b3ec2731d3c1b15971c512c71f0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000262f475c368407718d383be1fab7bc1516588adedee3d7cf431bb7eee02984db1d36733e9e64f21a16e5d8194a8e27e7641d4a651262da73ffdbc663d1f0f35322c0e2b8822c2ecf60a47bc051c4e515a6acac653a2218f42fccaa37e02da7e009dcce76f4dc093360f7427dd56f7c787a8c11f4c6631f576a04b612531e1e4f275d3106b0e90c0ebd25925ffae0932259b672f882267ff8ad61de864a2517e40984aa1d4c395fc2c928a07af2ee89e7642b2af88785e304d255a3c797346f370e344be29ef35d80675e61625c701fd7f5e681f82eade8f8efc753a65af6c1342be917cb233432533bfb4f17fc1e3fc1c008bfa8bb43bafba8222e2103df40912174cef9b89158b4125e5725271f4a73502fe1769aa67170fd7c73cd2c85c47d1bb5314c16039a869b3e06912708fca87abcb0b672831679dcb2b29570451e8c062f66c895773b48abe886a95bc8c2313a91b849e1e78f2e8f9ecab0d61de5ad21b8dc61d3430e8fb06d7b10e022a9d5fbf216bd14a5a33b3296bb63e3920d3a1a35bb9443526390a0294a764cfdef81742468ad50449f638f903d5626e7537414a196972c71dc18d677239939b38a2532b771dad37c34cfa9c91a2a29c7cf211726d59daa651ac9f68a0c83aaef155e47e93886d649804b1015caaa18b52743265e3c4612a2637074128201a6262dec632e4fbaad2d66f11730433f102e61c221661adbf39ab638709622be11fc6b0e215a591e84657e20258fa2d41386c6d305d15c75900d2a388e8c78ef46e1eb8cd13a6cbed12d05f310054e63c3c4ef8a235637be0e0881ab5fc20ec36c249f0f811a9697733f29bc17fdb79e42d731140d04923074a64e1549d7ce2f7d89f4e24bd1770ab15c7730add96f57b9c611c32f97609508e7a2f7ec54f13eb8b6b5732e9da2d5ddb19c208da9c7147086f34900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002d8095b7de0db38fa041cce794232fd648000000000000000000000000000000000022bf9dcd587e50f241614e94f9cdab00000000000000000000000000000017315e2b91cd284744c8ada06c3fdd2a8b00000000000000000000000000000000002e4027680072a4f13080eed01be18800000000000000000000000000000066a4c3726025049f7cd7f6c511716b179800000000000000000000000000000000000995b17133e48b2ad279020822b6c300000000000000000000000000000004cd92cc17a85b7a22b884bf31386a42ac00000000000000000000000000000000000a7d9776e628dfa9573d75473bb5040000029c","publicInputs":"0x14dbb5ceb242d62d79cdf71705a6e56dfbc7678c4050f694f49d2d37cb6b43250000000224ea389a21363dc394add32d7d09d1d5a6af047848d9f0c756c7af2358f745b40000000408768eaa02a2ea49ecf02c4486e40089e18da9574903f3cd171d2d3fe401222c05a8128b8d55768d8850d24611497beed9bb0e33fc43a2135fcc79f028653002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002f1d59ed909d79632cc0baec79289c060cebe98ab8024bb4259620a96b7c7d0e21055565154d81bf243f21a818fc3265eb3a0fb1564f3a932e8e87808c52da2900000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"} \ No newline at end of file +{"proof":"0x00008b640000045b0000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000029c00000000000000000000000000000000000000000000000000000000000000011cb6dc9b8c6041726c30d6a662f304689224a8892ad7f74f16c745bf376d804300000000000000000000000000000000000000000000000000000000000000022de2da46306bc0b0e5fdbb6056987d6fc5404cfa5109f44d1b7bf367c55402da00000000000000000000000000000000000000000000000000000000000000041c5492e4dcb2d47218f5e64963e5d6e25bd0a4d60a139d80a9eec6c98a6918eb2c79f28a7380543755cb2c2ebae754a7c5cdc02c57b89e76ccd21b8d83353ebd000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001085acf60fccf9388034ce3753ffc9f4acd347ce11ad60ca76342f5dfa1afce221055565154d81bf243f21a818fc3265eb3a0fb1564f3a932e8e87808c52da2900000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fda971aff682f662000000000000000000000000000000000000000000000008c6e3dd5a1ceadc61000000000000000000000000000000000000000000000001bd66462859a29b61000000000000000000000000000000000000000000000000000206ed7d0535b3000000000000000000000000000000000000000000000000c5402a36a1950cf5000000000000000000000000000000000000000000000006d106e04cdf42146a0000000000000000000000000000000000000000000000073fd9c45c7b90c8c000000000000000000000000000000000000000000000000000008586cbf0077600000000000000000000000000000000000000000000000ec3b531a1f028717e00000000000000000000000000000000000000000000000e25c20594d5d9d7a000000000000000000000000000000000000000000000000554fd7174969c475c0000000000000000000000000000000000000000000000000002d369e6797d0d00000000000000000000000000000000000000000000000bf996eee6e6864dca00000000000000000000000000000000000000000000000b0b1a19598b9fc64300000000000000000000000000000000000000000000000b873cf36fb4b78d730000000000000000000000000000000000000000000000000000f2bb025e6789000000000000000000000000000000d2e1280ea44c5be78e36d57ed2a794aa50000000000000000000000000000000000010897c52c6b538b4f2645cdbedfffb00000000000000000000000000000019beddf9128532f445bf99a1f13f36f94b00000000000000000000000000000000002d0435dbb0d5168de1a9f97e668a84000000000000000000000000000000a3b5a92b9dc2f98d5381de1ad51a5af5f600000000000000000000000000000000000b23e39fcf1c54ed90786eed97fdfc000000000000000000000000000000c0327a29a7471f1fbf50d12d501563d258000000000000000000000000000000000005b891f04e9e7cc14d35ad4a86f3ea0000000000000000000000000000000499f01c296c5ecf2f8c902269770e6231000000000000000000000000000000000002abc47f50c3bf37109395994a14000000000000000000000000000000006924d70a9782f5d8fcef8fd057c2f7c74d00000000000000000000000000000000000ea77916d624997462c1f5d02b3ff900000000000000000000000000000096650cbf350fd79e4e21a3a53f084e5359000000000000000000000000000000000025e86237c45eeb6939f852e4019e10000000000000000000000000000000870ec61adc23bc1294a793de7d329135e300000000000000000000000000000000000d59e4f667228b55d76d57b80cbb4a000000000000000000000000000000dfa123d263c27f5e0a447510bbbf014a24000000000000000000000000000000000014c0e9197abcac09fcca8aa3f56231000000000000000000000000000000693200aaa7a1cf111060bfd9649742812e00000000000000000000000000000000000a64ac6619042e406467e1ef5c7d8000000000000000000000000000000002f887e187a17149cc3840cc54456f0d0b0000000000000000000000000000000000050b6e2e9777314762168eb32828ea0000000000000000000000000000006b7f7a21352bc0d8ae2a09f071660cf408000000000000000000000000000000000022a6d5e2ee7d6256a9ca5b4c5533e4000000000000000000000000000000c007e7c3061827663dac710d8ed656262c00000000000000000000000000000000002029e904eb1c47a33f71100a9089e70000000000000000000000000000005619681483ff29613a2b7baf9b1f75a0c600000000000000000000000000000000001434bd46dc12aa8e7d0533f01d5925000000000000000000000000000000dec477c16948ff2f2ade1cec0f47339a6f00000000000000000000000000000000002271e140e1dbade448bcd1c30076e4000000000000000000000000000000d8949f59a77dc37ed99f3828392d4168c3000000000000000000000000000000000002e0e5f3b1bb40273c6db775f7b72d12697f91862f93255aeb4859c03027e0ee0fdde997272bff99fb814161f45e781dfacee15b020d045d64fd5cc151307c3a240a5ee2924491a9e674528e0ba18911a62e14c5b6bca959fc52707c3201b16090efbc2efddba531fea062318a778911198578801d807c96463268156e760d444fcba91146a196b652ec66584b7312119c3813acc8b9e5bc839b6b32980d9a5f47a3871233531f42b74850e1b12699042ab0e7f2b678f120a6e911bf0d251fc0ce9185b69fbc8596696771601927a021c7dd7f61538674e039a7698eb693eb61507d7f6a00e7d36775f08843cd697f1ed7f3278e40c69f2d4241ec832d8b810054a4d0dccf9635b627e4ef5c981c822d7b49ab18b807253253d3401acf7e055bf2b2f6a5ab61e90b11d4e90326ae901130f4f5b397343e2810dfdc4339ace5e9590063c34db25d7b8a93b702fc5b5c1ae524e652b8bb517fc505f239a6eb6c3ab0c4e77ae6c654e8b7bd556b8b0a0a202b75a4c8ff5d982eedd8f789dd84302c7e7e50d7e3b7439e3520d4cb4572a52d988d63de1e13054d548172deda25206eede6cd83c9f64fd10c24c8724d93da0fa186e12e30d40c553aad642af80004eb0147fb4a850c1359fd6a894e5a1ac701a88a0748e2d025ddf03ed6a0251a71b80c139e49421491370c9f28811775c02dae6c0627cf517a07ac6fdc4709b74c55387fe1d6e0229dc5cce44635e7225e108367903b60e0f57a56b7c31f466afec2aa099092cc527c51ac9b13b8651d1b168a43ba3d5729e73ebe882a65b6ce4f65aae63e346a5bebccc4421af7afbd092a79ab6d58183011bf5e0ed406321535b2ea486d48519624abbdbbe1db80b3d627317aba0383ded867fe52f6f8cab764fc3e4e17641753662293d720b4d10e821b7e50c61cbc1f26d49864b7e078562064baf7ce68d2179a902790a98a4f478b2045790ee2ad663436de67d1efe78bb66dbf2679ee5aa0c502d0980dd1391ddb02c4703dcba0e8d6d77107ec39050f8a27f8dbc82b7c37c92e06f01dd5a1b92c15a217725c4175af821ac105950e1482a5d5d64d7f883fa4e8f09d13a1b0334d0e71d16996788714b5a9dbf460975e4e3d3d261ead72c683dfb2855e79c1066a1905c5cda4070f1bc3e19a238e0cc2427de1e9997f63ec8fec61abf1a0c914952d1b48ea8b03334ca9fc88fd80838ab6bbf443608dc69918d8bc573e72d6b66c0373e57752056f5a004512ae4cdb0162990e5d839d4789bf8d5eb48d625bbb7916a162b386ef2f291fc65e965aa4fd9418619d963f255c1938ac3e4d6f6a60651fec0d60736231b8041eebb1ab39cba319860fbef2b153795d5ea4411bf50c6e0ffc1da7c8a493307694ec14b9cceab90b685455270941758c82d621f62a7bd3096fc4917e1ef910f3c40904a969a0379ce399da9c4ee80ab6ef5bc6eca4bfb42593940120b729847ae45371a0e0e046d20c528d66e41c97b0db38d2a750fba015bf09bbd83b961d481e2801fa1022d3edfe454d5f0ebe5baa80f031bd74abe6236e04203d765b8cede87cad8eb47efcdf8ff4bee8884c041c243b0b82d315281d2710c63775e0249b141f090ccd8db86093793a5dd6818f0ec616e7bf5f77ff2b7aafaac250e2bca749c309bd5c786e340b8e1dee067f2a016d9cf8140fc05a1230498d2fc13ff1488961a1ff27b4694399603b34af6b49fac75d48edd3dada128537d4a8bf3f4526aa70953c1d0da52e03c9af5251f4fbd060f8a29c58e35901b06fed58881864719ca9f565735db2313f04834da4178124c9282cb7eef2b21fce3c744599f3dab25bbbbec78c79f291ec2888a25dc58413dd00e44771b85e0921bbdb428f06317ab06253d9ab5290bd990fbcf1441e7cad9dbba8f04926e0154d639a424bd2a94454ad4361b3eb3b3b364fd56a0930687d093f317a8cf5e4049ffad3c1bac81ab4cdc0342c0de88b02c010679730f9a97d067fcb8bcb0ebc174925e001191a85a4e891e01e46f0172b519e42db3ef950912f95411bbad23f13047685a4713724a8aa619ce6b1b7bcbbc13083700570403c6572ec812004a22278b0341d7a31c19dd4fc19fe0342baecfb9de84388e5ced8196d9ebeaf0a3c287b9400ecc26cb0caac557d28dcd00cca17ee4d3b59551b62b9e722bc9da53a2488f5e528fb82397d6f4bb75a1f8c7a40862675ca5f8e754bc68d6098962a4415590480341e630cf749e33a1f5cb3b73d80f376f886816f2de2a4fe57bf61c50d36f169a36a52ea7ec081eae0535effd7717f917b2509fa5a328c6435491e12213f7f93c80b93edb55d065c34fed804ba2e0cf4e2bdb6c39d67749f87d50de11a1ca3f31b69daa433c865a0bcd5b346de4a5e34e7a840351b3c6d4e8bb33bcf296902682a1fca2415aed340a4b020de814499478f5a03a0446a61ab1cde81f60a869d03c3bb7308dee840e960fff7864326310f0a56973696b72dfb28f92bc4200fe8f7bc4cc7249486b1377769f0516cfc1cb17c94655e4487d3d33d57cf33168ba1d1c6180db4a63fa30b9e9870f70d2f6254c51a5932645f8252605b2dd72bf4eb6467e482fd55fa86f656ac6df5d7cefb39c29baa00ae4e1a9a698b82cb0cfaf93dc3292ba4316fa65c311597314b517ac6ab9c2200887b208e28cd8b7f16e95becba2e54b5a32924c99e87c737f8668169d6bb865d61d166a3a80a07a110e7c67d02220169b619b6d33ad8723ca27915553f11602a610f6a09c0928dec2a8dc9dfea79ca268d1d49103e652d62cf148ba93bfb188d9092bb5a588743b4270e5f6ffccbd315eafad28d2558f9ac73dff67ab8293f9c372809ff2903cb84061c48ff2f8ceaa747077e197f050a3f3b4fd5ce182b687d76f4a98b3204613523ae0e43d834ce7223718bea5605077c9d0aec77aac79ce46a87c35b9bec09eb141d764a9066e3cb3ffd99958819d095e67b89d7829f44a45d6f3f29dda509e62d6bea5e97e618c4dc5ae0439fce8945cb85779bfd95494d3bfe4067076357cc1e67101193a67fa9529b5524eea7c12fc65d2f92d3efd15a3a3231fbb3cd976b0cc5a0b1b66b0e0ee23c7b9347d43fce523d3b37e52bd2962e593ee7e203babf1ed031febfda1f1c937ddfa518ac95f14b2094d2f2333955a28a2d763ff0e5d300c776032ef13ee2c7fea30f15b4998c5a90d6c38811850cd89646de4ddd6c2509f214e93a567692cb300e106343bf2b6fa5eeeb68c9f6b0d7ac4c5fc73aa86409d5e31e6e249425eef86d381c734b49f1ed908f6252f1abfb449972773f425023dee968453943b3a6f288526746ef87f5e084375c4432f46821ffe9428d684e2931afacee292472390de72f91682615570818fef376ffc7ae96ad414a411a2f1d1dcdfe7a597428a7888dd7a380b8669c5d3526a1f3c1dc323ca01578bec79b0ffdf15882fe7b1747d42b716b48de868fe3d434039ba196005de43125b9677613b75c03167ac86e8c1db22afb8f05bcae39030d0da95f6556b5df333c7a4f1529899bace5b4ff2c4c34e76f50e1dd91a33c42ebbca09866b5f86a2066be00160d183860d57c55b97859c83b3486b9183a236825542d5dbf0f4ceb43ddcec78802b900f182c9980a26bca6465fdfbdb1de0d78c12a0b2410c2d117d0340c567c16af5dd9ff8ab7e73717e1a23ebe79ea33b9d7bfe07c4cfc7133431be836b592138b55b9bebbfeb8b73b9d74bab2756be436678f0373660eeab0d4b70028e42a04b31da4dc6e5831862306c0d698c8fba58a08386e1853ae448dfa8e484614f402ff34ac5e214e78c35e67e5446795bf8a2f2e2ce94ebe5acf1e847f53d7f1c81d1e187b99024c9655adfcf5fa454e404133146b40840d3ffb702259a9bf8f962e91ce50780029f8e85008d86f79c16b0efacb4e163e3ee55229f1766b7caf722f0b61405ab1b7c8af5bbb579fb50b1b2a87e3ba2ef78c8f8550d0b3168d6496154043088ec1a28162a2b234bb5f5d6653bf94702abd18be060e9d1c52e2b8cb2ba567b58837924fc23e692de349af7c0fb3a5d668478eb2e03a07f9fb50681102d0f28ef54f2b376e9bd90a7db163d74cc553fe860b424048b3c9bf56f22da022f5eb856d1eec1ceeb5e32da66e8e117b0db76510263326a0d61c9bb6575ae108ab854bc3b7cb2c0df399d57e2621f04740a872ecd19c174f23a94d5311e5990803f1b7a5e055438ab3ab55bf5410d2fa07564234cc01fb21ab605f36fb72c62e847cae3d6214b432a010544b3176676c0125c29692ff97a353568bd43aceea194c7b05fcb449a6fd5bea5cb961dfd9d67a23579d548d40dda96e29a93c0c170e45a1fcb2782f1e091eb01eabe83f8b3817ca58d9edc6c7f8878edb488666d6121cb6fa496488d49c75cb72060cfbb8e9f9eceb8c48dc56319cd0386723b1d41e41ce54c5a64261116a567fa62fef8c1ad4f63b11d3182b0fb449ef956bc5e72578605e66cfe961bd8a5c17b9128347648c89673c6419702f0a04de3f39864a277c484ff702b962ce63e041f0004996860ed1bef1f4a3a9b91afba43438e392256127e3c07997d9c851e86a31d9b95d76531779ca3daf172ce2ebe212bcd61e26c7e1d2cf7ca31acc4c62673e3e1246bd05f08f09ca9126e5208d74d8ffa4781de9f5e0a2306fd9508a27112cebedb7636b1d04dc156befbb6909b086c322141bfd74104af1663111e5920827517172bc0fed4638b0f8f833869d18975fa5f22c0865245a8d5e04b7bfdba0e0ca2ff5f50c398c33e683be51180aa4136eae1306747ec180934b3b98bf3c5200945b44fbfd2519bcbff091a5d044b9d0e44c490fe88d34d6927b2c4e04ed12558c79ea8637d0ba7c150d66ff9b5b60b5d0301325aa52d35f22a64f1c495b4fd891ddb69ccc1915b6ee03a1ae5a0b599fee55b52e5f64a0af51432c50dde50c126f1caf75d7e86a892e8483b14ab6f2ce5a87d9088fde007ff6797ef902406e62e0779c07cad39128a9862591084818fcdeecf607c18316ffa841daf9250ea5d33c36ad36bd207ac5c2ba43c023db239c7a7e621e4c90abd2dd270974e02de06f40fd253570e9a339b3d08bf05c89e1cc861a361cccbb76d0270db3f713f7beb8d6149e2097e71caec775723d1134153590ee970f9e5855f62f801ff625074b5a718285799a66e3f4665b6456927ee5732af80f151e126e4e8538a44ef38f98fa45b0616cb894d92209fb355bb463fa8a65826915ebcbe42bbbd350679a0c36ba9fb53206881d3ee0fbb7e01cffea1a93dbc5b417e23651ee23f22f51646b1b276f38534b7980c5a48832ae2c8873baa083f58526e6d1d0b36c4504c45dc673e126bdd1655d8c3bf9de3bedc505f2f1d67442d00417afa69278796eb6729ad3fa1a1e6a8609279c997c5c7d7a17736be9917cd42abe4e2b2cb6d92f5a4c6661369f7c3f4b2ade580730733313bb23163fa29cba1388fa2bb80ef502b5b2189be1f472ab28b8872652a020f3b517a557d403c4f82a3ac5e3a2152de5287df06cfb15e5be61e4172a3f6a8e3b827f2307d611cdc92378f8789a953039ee4960384cba0bf0502b94bac4696b31dc10f67ee883874217c687bdbc6f3710b0ff11bcc618c000991a4a03805692b8afd5696bde8af14d2257fa9d91e3d72380979ef7aa3b465e306a40f9c536fd40b184c93c874be52a2c5ca890a741e792b9810a3c752b1d9fc4468566f7b30b5e53ca5faa9bc6201712bcf3548110e3c9bfbd1103ba1ded20874b51ddb6359a5b2ee3f51ead3dbb431bd96fb22d058c2b86e09329fc0964e80fd2f4b772a345e35019436b36e532d911a208e05d495275ad116644de47cc5e7047ddc3c58fe34f30016f97e07026a713fac03b6b2fe858405abfb02a9e4ff513668c0913ab08e7261df98d3c4041cf0e17e04c68cc34c6073bc443123b0aa6e30c9c1ae0a4b0709d98f7f8a374f3f42a4caf0c1cfbc8965d6a1f870fcd8be7e644b87829406c4e67fe5ce2fdc4a59f18a3437975458a474d86ccbfea9c84eb1c609cc0db3483879512bec854f8793203dcbb69a04678624cf15dc28bfbb59d877473e6db7a90a0666fb939654d2ec216dfd20c0c059a7e58f4d63f382d97c1f0e718dc8162cccd254635a606f72c571a013189fa06cba96a9372f6373bc67c0d524be969d167f6cb654fc450c079c6211f24fe4eec58b74e01506895dbb38fbc8a64dd3c4b8fb220416ad4f11c61d908435ecd46d2753a3dda90074d57c5249072546a82e0feee0c2540903a54e2ee2a1b38ab686fc78a15f99637e4e06eff3de43a9c2315b04e4ed7fa0b1b68a7591976e2e27b0b5a2a36a32cac0e63d569c9faf09c912eb59e8e011f923f47aa01181bf2cf4ae5aa51881184784585977aed5e8203ce3b357648e703a2f03217450d9533bdeb60011bb80ab8959bdb1ec7129ba5c610d22ccf1b3b282b8a32068010da65ff06abc962d49647f84fe091c883731426a63f1a52ea58b6a8928506cd29b7b18de968cd26d6e5e27fe2106eac8aa5c864ac7ff3409852650ffcb4c9c413e53c1795624b48c110e3ed59389972123bea6f0ef958088068988d537acfba1771ce69cfa3c9aee2cfd4f932319a4ad53a7379096626b897daefde6bff80b001a3af77a1465931da1f5b16ffde6381a94fbd4331395a62ff9815dfbdbcd663094c515f2218541bd1f3df371975cecfffbecae8c30e745eb283a22914b757e71340986d1477bff3de383012b24a359d11e474d400ed5debe040c729796df5d00d94d9d1de42d09f5c5006fe19f2a8bc1b2e4c1d48ea53918a605f319b2198360d6f7881515fb1722eb405c1f6936b80b1f5b54523ba3a2ace7d061f984c724807d744500356db9858b504651eb58750901a648a2393d5e861cb486780b3a9231f808428dc0e97fb780845a8e0adb0741c130d27e7a2abb9df1a632055366a16258d7bc15723853bec85b090d5e019f31977f5ba0bd24379e25481431eb3995c0348a300eeff8c1f00ed64d4f16b944c94b33511974c3fc32eb49c60d97dfc51199a1a190dfa6b6736543ebd58819c99f29b451d277c62a99de72a4877251e881fc2c526a93413aaf903eaf77d67ed24a973fb0873240247e8d26cd7575d3cb1170f6ed4ef4d0bdd6a8c9c55572889c843bb128a3ef6a4adb495ae30450c5ce920ad0d90528bce589f91a7eadc612960b438df52ea567ffb67e7ba232d8f42561d7637a3c5bfa3d69b343ed69dacdb4d27527b8c420dd79e0ba23a19284d7fa41f98d2450b92c0f54c5d3ed74180f2613e46211513d30beef146ff86e850cd290b0d5b8dee41843e5b270e49549985420ca0c292711dac4050c8be9f89788eaa26927efb50fdbc4e3d29db46b8e780646b88bf8157de14b120b9c32901cb9c6d185a36a21360b3f3d8c26d5fa07fb0736a4f72531ec9addc74e422cc017031590191bbbfa9ae4a040e43b104dc5afbbf447e902326c8972c493cc80acda58e371dc71b3d090507d7a4a9989581b90cc846920edd53b281292a264a30a7c767db2df3083fc4f1089651674b9ac5f5902b5596a9ea8002b00b8901d5a46991efd9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001322ecdb755ecbb53b27d1eeb73808129e0f4664d0cbcc8a445f091e118ffd9d16fad2b1347b165cfb679a1c7f19d588ddec571f8787884b8f9ec29f2e2812ea1f35bf47893bc4878005f54d27c13a63cd14ac8390dbb995edfb0096a345d6a3178bb0c62924f8ea19032dfb26fd422520846f999904b1b22035d6dd71c68760219178016c63124230c9176d3ed6c492ffdcba837209b2cb358394eeb71cdd182887284534e30022cac3dce53a3abca979b226e1abb84a7734d61f785814bbfd147033397eccefe4e9ac555593614db19f503448bd4ec9f4ea702ee2f1f0305e04a04b7152914e0dc45ea03986562400cd85d7bc3331ce2fa1f0de432b409dfb0611de5c69b38a665f8ebcab085a8868fb0aeee6689c11c571e4661f91f278752403b7a6f22e7b20550cc96d94589e6e1b4e8786ba803f096e20cbfbfb00cd972001bc0ee95f6b2eff6f4d9242bd8c0303bbf418a4a9c4c58c5fdb4cb629321c268dab1ed18ffe420c220f6717ed21778e2956937cf0075203d33110111d832b2e0b2577a46fab8fccaa27b4d94f2afba2fdb94a14fc183b681eea30d45dd71707706c6cf45d2d205c4827f451fe25a31a8c422cc2bfad7baff413b2d2de6295184ea91e3101edcff27a526874827d848ef3c3e912025c8fae313f06e5ceb7832e141ac9aa2ab186e3cb80f50bfa6cce41ddee9008ea5a774388c0302e31808102deb96fa41de6847909a8aef78a99b12f73d0ed6c51c237872b96bc3fcd3dd107ade012c1c00625c7751009b04d90298dfb675076d1e8c7beea28b29eb444d312c566ba1b05af21d3c15b6fdd209760fb0c9ceac2d0b074a4d6e109f813a5ba07c40e64ae9c26c7c9a4d834dd33293179ffc56c818bc0704b2eef4ef9484af31a36977b7e5204a92c9fa764dd3665daebe5c26142da9ce83824809b31c9d8c9203bbf9e6315689a7275e23ca49187d2fee7ed95007c84c2e05b5ac569e2cc561aa1821d6b7fa9829c8ecd078570a896d6eb792e4925961d3e8ecfb4f7a1149f21e485b0149086ccd86db2fafcd26a22d20cfb858f0b7881894d3b8fbd9fcc7c220dd5f6f02b3c655e73e002a4495a7fc1b6b6e7ebf5a0297edc562b2dcdad16305bd168edd8ae4ccbd146ed7e901248b32e08a729ab10f581de14f0aee5480122e51e55e6fa8ff15a8eac2544b903d5df85d99c889f6c9ca920598100be6d3a11dd9fbc38d87fad13db3d4027aaf6a8bd172ed55c5ea19e7a3fcd51f71e7d87187e2543fe3c87e132df4366f88c40698765f73fecad1b779260dc7ce0f4e9af1998bcae2e1cf071dc3bd5264787dce5b56828860b3c1b5ff4f5dbaa453b37400b0b8771f6f9beabc11adef42f57b0b177e93c22522738e2386c923165fc227e164cc9de544a3c71fdfc88072f6915f7507122d8664cf2b53a32990a997de60110e283d74320cca87003544cf8c58775440cb2e41a3a248eb4ae0d54c4e100ca214805f08d52e2fc4d6d29127f03eeaa7b6545bdcbbbddcd2c0493ee6100a0fe1cdd084c2385d0e93d7758cc2c3efb52a99b975ac396e0a91160f385bc399a16062f7c8f76ab6249dab7636a964edfc9342e488a8969364220a9fc08b25393f516c085909a143e5ad70a07cacb676417fa7e58ccc1f7482c3caedc4e3cc71c9b02290536bcc562342e7cb72eaad3c660a47b86f213168a1887d65e070c9a1bfb254767e637e982ec609743553cb0fff455745be85dab68d4f62982f4c92ebc562e42465017da201e743da4cad5935e45e4a7b418e4583c52bf2285a9f78b80d702ef5cd1306699195678658d548fc82b18d5afd7e1e0a01eb7f03b5ca993a5d02a35679d0212e0f3c73d1021209be2169870ca71dfc779b54a7e8597fb1551bf2b052a9d127df2fcead507d8d81cebf2cf66c6986d2bd92f64a6c3a00fe03eba103eac25065ea0ee0897beebdf6f6537760efabf0295cf91006591d796c59de3000000000000000000000000000000e2626cb0323f6a28b6268b2e92dc5375b1000000000000000000000000000000000009c6d15ecd7c7a880471e4fb1baea300000000000000000000000000000054c23b0ddac08f08bd7e55d3106a924be700000000000000000000000000000000001ad59bfc407d5ca07bbfa82464d33200000000000000000000000000000049cbe927b406a63cadb643f8adc806bda200000000000000000000000000000000000673e222d43cb2149a2f13bf4b76e30000000000000000000000000000004d19ab8acfe4af1a3aec4020a84183c56b00000000000000000000000000000000000e56560bd97323bb4cae377cb9937a00000000000000000000000000000031ca9511a16eaa80ec955423fdd681c1c4000000000000000000000000000000000005534fc172ad5ce4827ca4b746086400000000000000000000000000000054dd52a46d4cfdc1d98b7c6b78d294ad6100000000000000000000000000000000000a8a7f3ccbb7939b6d3552b0cb8c3a000000000000000000000000000000e368c6cecbdbc85b3abf1dbc19705f17a60000000000000000000000000000000000080dc9e251a7e076d5d65b9177e1ea0000000000000000000000000000000e9d2d233628103364f2a55b5406f510f8000000000000000000000000000000000027d58264cf9558c717854016f1154c000000000000000000000000000000734182b8a4b987f749a4a027817a2732d2000000000000000000000000000000000023efd016ddadbd09bec21cbd3b3802000000000000000000000000000000fdabccbbdd25e872092634793a8faf5b8f00000000000000000000000000000000000c418b9db676fcdf8d6c87333f6d60000000000000000000000000000000a581169577917bb2815a2375857658c0d200000000000000000000000000000000001c2b805ffa42ffe1a46f92448eaafa00000000000000000000000000000078aecbdb107f77bf97f6f3a8ad28f65ec70000000000000000000000000000000000005457970c63cfd5ed2a438df2f133000000000000000000000000000000bf27715b2bae2ace82ee12ee3b7ba1255c00000000000000000000000000000000000d63ea13106e0d6349376c9a75b50c000000000000000000000000000000c14bc135398db76af2427a4c0c0188f01d00000000000000000000000000000000002fdf0706210780e71968259037abdf00000000000000000000000000000035aea0398fb8e4b3f60f06c580a4ebd167000000000000000000000000000000000003f8886991c519121032f0c0a9b003000000000000000000000000000000d9c86e6f9ea0502e09e8121d3519c613bd00000000000000000000000000000000001e69ef27810c50e98b67e0ab343b77000000000000000000000000000000c966ae7fdcc25ff83a76aa8a7cce35fc45000000000000000000000000000000000028bb460f3471b7cc877feea861a4e8000000000000000000000000000000bb9242d6d27d47b27211295f13fdb3ed0600000000000000000000000000000000000a9d15606130d0e2377a4da09c324f000000000000000000000000000000c7946c01ecbd3549fbb797cb7d3002404200000000000000000000000000000000002485b0f96d2aef0f339d14e89195cc000000000000000000000000000000155b5d6914f5e824e9cc9c4b8feb5140ee0000000000000000000000000000000000026c8f2ee86717d989415a27eb8de700000000000000000000000000000077fd6a85ef6f7b70f86f03d7b54cbdae92000000000000000000000000000000000027141e3f964fb6ddf0e140647eaa60000000000000000000000000000000047d7f023a0199c8ca239d1eddacd14cc3000000000000000000000000000000000022ac1addcb85d1008f22fcfbfc422c000000000000000000000000000000fbe79ecf3d8c9179c21fa2f0cf442449ab00000000000000000000000000000000000156c0384e866da014ca51ec61c4b30000000000000000000000000000007ce6827458e253edf8da4a33b1586225a900000000000000000000000000000000001bab9d68558bc45e7323bd3e230c85000000000000000000000000000000e3132208b04b9fe8ad58b8fbd32d2cbd5d00000000000000000000000000000000001b309db69080351d0a6a7ef9c12380000000000000000000000000000000dab39aa1911af136d4f3b3d7b55e4ee20b0000000000000000000000000000000000111367e5d48b2924fd0fcec82cf556000000000000000000000000000000787ee109d6b1143228780a4caea6987d9e00000000000000000000000000000000002ad6d31c5935e0530c825b523c32a80000000000000000000000000000006ac41b4e06bddeca7e33ab98835b392f87000000000000000000000000000000000029e28e6a593f7616c2783191e9b8650000000000000000000000000000006228b0f5c29ab99b8b65894e1bea0c849a00000000000000000000000000000000002b4fb1bccf3ef7451248568246f060000000000000000000000000000000e9bbd8ffafb278057441b6bdce77fbf09100000000000000000000000000000000001817e00822b5bb8f6681a24892d1e500000000000000000000000000000031e66c8172b6340c10f1924346b92baa5d00000000000000000000000000000000002c2a63e7ac78f2f4a76d66598aa0300000000000000000000000000000000f516d1a8312b6a69bcfd1aab63c38214c0000000000000000000000000000000000009b25a9522194257de67c70aa46be000000000000000000000000000000149192d38f68bc41c5bbba5c4b258fbbfb000000000000000000000000000000000028cbea8f8d5b8c7f2ca76cd1ff5b040000000000000000000000000000003f3e837166fd34a04baae049c2d56226700000000000000000000000000000000000098690e8c56c24e8404dc12d2d35ae0000000000000000000000000000002dfcde187cfd0a1e5ad8c0afb8efdeb15e000000000000000000000000000000000029bdbb3ddda1f2cd8814dce28913bb000000000000000000000000000000dad43f88b82dd9ca3ca07d8b0b27d12c6300000000000000000000000000000000002a3157130ac2f280c7acdbebf7e14b000000000000000000000000000000529a7292575808abd711164b32eeaa423e000000000000000000000000000000000017440beba4f7128ca9a14990d0ae380000000000000000000000000000005bee7521fd428f7043e8c7d413e7b54865000000000000000000000000000000000005cfb2b1f9ac0410006afaa4f3727d000000000000000000000000000000a57437f40d59b53415ec2b7cc5793f20290000000000000000000000000000000000115a1e7b8f8e9ca658829896d5cb91000000000000000000000000000000413600764f32f34507f6069a5912ed074700000000000000000000000000000000001f2596918873c79b804cf105b991a4000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000027f1bafb0a0a7acaa4723284ac5483e9ecc0f1c7e3fa160b3eb29ddeb2762dfb16ebfe29861c974c5afb55359107e964e6d340230dee8a3f68d1d3a6aad1603a28da221a944ae0b472ace41ce982230732566655cc37c5941c1fce7ca145f6f01c29a1acf6c6a1dd3dde5ddfa46ed8eb05f7c35a0e3704e1eed23cebe26df4c607ac1964550464bdadfe142a43fa6a8cfd2c63be53ae097d3ce63e293b8f0123021812a02447317542da6303b352b6632c53495c494f0bba537e4eecea3eebce2d497e0ff0ce7a82829eb9bee545ba3a0a3efc61dc27d75ae71ba61bd2e902830ff4c137a645efbe95acc264f820ce1dec29244ae18fafeee2dff89c6e18efdb2c44f8340f59fab85b4182fa693ddee38618bbeb4c171b6724db85f57f97383507729338553eabc0a042616a5b7a7b7aee8e8d6d7dd492beee0e5dbf58c4b9c51e825b4ef03df362103e3547f53bf3c258900d773f85e6f30cdd4befef1655260576f17264694064b4a6542ead7f2a74acb17a934ba74168cd7f805cf6463269160374176f2ad3a13691811d82fc4afb2f2da6a55d4bb6c63224aaa33aa170d50381489f318b81a9e8fa7ec880d171b45b0a7a4d8b41cfc1898a04819059fb52116b0b4efe883e11977c5dfada67ff9e05b19051c5f92cef670de3a22c99dd7130592c25968c7785caa85540bc1378a3db0ac6ed7737d619e3cfcbb691b4e62f212bc81d35f3526dbe8289180379bfcc1cf5709cac4dfbaec5c6c1b9ac6a58602d77b3547fa4e79ad367884cdde81f3c1a4730e40e8a76c292fc2d3290d5d35a256218e6c02eff30b897db18a9d8970028f0249071f9d10c15e808750c88b9e02e35ba0767015fe4d5207d223f2b148306891b9806a720d0248046ef3229d3f90baf9527c07f38a3cfa5674b574a57097977cfc72545e65d2d60a17cd0cfbca00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b37b0ae19eef97ede78d41e51ee1fe11f200000000000000000000000000000000000433e135f69793c87cfb404ad2a6b5000000000000000000000000000000abb49b04bc0d360cd1f3487333b95c456600000000000000000000000000000000000b46d3269d654647f452db5d3775fe00000000000000000000000000000059504a5183b9c97f4c5356ba1d81d340410000000000000000000000000000000000249ca92da29d6e057eba0715b87e4a000000000000000000000000000000ecfd9da508a7efc1d8d72f8f99780ccbb800000000000000000000000000000000002be43dc89f51eefafeec2d0a548ace0000029c","publicInputs":"0x1cb6dc9b8c6041726c30d6a662f304689224a8892ad7f74f16c745bf376d8043000000022de2da46306bc0b0e5fdbb6056987d6fc5404cfa5109f44d1b7bf367c55402da000000041c5492e4dcb2d47218f5e64963e5d6e25bd0a4d60a139d80a9eec6c98a6918eb2c79f28a7380543755cb2c2ebae754a7c5cdc02c57b89e76ccd21b8d83353ebd000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001085acf60fccf9388034ce3753ffc9f4acd347ce11ad60ca76342f5dfa1afce221055565154d81bf243f21a818fc3265eb3a0fb1564f3a932e8e87808c52da2900000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"} \ No newline at end of file From 78ca2ab56aba3be0ca80b0b337352b59bc292e5d Mon Sep 17 00:00:00 2001 From: MirandaWood Date: Tue, 3 Dec 2024 14:33:43 +0000 Subject: [PATCH 11/39] chore: post merge fixes, fmt --- .../prover-client/src/block_builder/light.ts | 6 ++--- .../src/orchestrator/block-proving-state.ts | 2 +- .../src/orchestrator/orchestrator.ts | 27 +++++++++++-------- .../orchestrator/orchestrator_errors.test.ts | 13 +-------- .../orchestrator_single_blocks.test.ts | 2 -- .../src/test/bb_prover_base_rollup.test.ts | 7 ++++- 6 files changed, 26 insertions(+), 31 deletions(-) diff --git a/yarn-project/prover-client/src/block_builder/light.ts b/yarn-project/prover-client/src/block_builder/light.ts index 100c872c6d1..dd2252b8319 100644 --- a/yarn-project/prover-client/src/block_builder/light.ts +++ b/yarn-project/prover-client/src/block_builder/light.ts @@ -117,9 +117,7 @@ export async function buildBlock( telemetry: TelemetryClient = new NoopTelemetryClient(), ) { const builder = new LightweightBlockBuilder(db, telemetry); - await builder.startNewBlock(Math.max(txs.length, 2), globalVariables, l1ToL2Messages); - for (const tx of txs) { - await builder.addNewTx(tx); - } + await builder.startNewBlock(globalVariables, l1ToL2Messages); + await builder.addTxs(txs); return await builder.setBlockCompleted(); } diff --git a/yarn-project/prover-client/src/orchestrator/block-proving-state.ts b/yarn-project/prover-client/src/orchestrator/block-proving-state.ts index f375b71c85a..82f099e1634 100644 --- a/yarn-project/prover-client/src/orchestrator/block-proving-state.ts +++ b/yarn-project/prover-client/src/orchestrator/block-proving-state.ts @@ -102,7 +102,7 @@ export class BlockProvingState { public startNewBlock(numTxs: number, numBlobFields: number) { if (this.spongeBlobState) { - throw new Error(`Must end previous block before starting a new one`); + throw new Error(`Block ${this.blockNumber} already initalised.`); } // Initialise the sponge which will eventually absorb all tx effects to be added to the blob. // Like l1 to l2 messages, we need to know beforehand how many effects will be absorbed. diff --git a/yarn-project/prover-client/src/orchestrator/orchestrator.ts b/yarn-project/prover-client/src/orchestrator/orchestrator.ts index 8d03f57672b..5a356f1fc4e 100644 --- a/yarn-project/prover-client/src/orchestrator/orchestrator.ts +++ b/yarn-project/prover-client/src/orchestrator/orchestrator.ts @@ -16,8 +16,8 @@ import { type CircuitName } from '@aztec/circuit-types/stats'; import { AVM_PROOF_LENGTH_IN_FIELDS, AVM_VERIFICATION_KEY_LENGTH_IN_FIELDS, - BLOBS_PER_BLOCK, type AppendOnlyTreeSnapshot, + BLOBS_PER_BLOCK, type BaseOrMergeRollupPublicInputs, BaseParityInputs, type BaseRollupHints, @@ -162,7 +162,7 @@ export class ProvingOrchestrator implements EpochProver { } logger.info( - `Starting block ${globalVariables.blockNumber.toNumber()} for slot ${globalVariables.slotNumber.toNumber()} with ${numTxs} transactions`, + `Starting block ${globalVariables.blockNumber.toNumber()} for slot ${globalVariables.slotNumber.toNumber()}`, ); // Fork world state at the end of the immediately previous block @@ -233,9 +233,8 @@ export class ProvingOrchestrator implements EpochProver { [Attributes.BLOCK_TXS_COUNT]: txs.length, })) public async addTxs(txs: ProcessedTx[]): Promise { - // TODO(Miranda): check block number const blockNumber = txs[0].constants.globalVariables.blockNumber.toNumber(); - const provingState = this.provingState?.getBlockProvingStateByBlockNumber(blockNumber); + const provingState = this.provingState?.getBlockProvingStateByBlockNumber(blockNumber!); if (!provingState) { throw new Error(`Block proving state for ${blockNumber} not found`); } @@ -244,7 +243,7 @@ export class ProvingOrchestrator implements EpochProver { provingState.startNewBlock(Math.max(2, txs.length), numBlobFields); logger.info( - `Adding ${txs.length} transactions with ${numBlobFields} effects to block ${provingState?.blockNumber}`, + `Adding ${txs.length} transactions with ${numBlobFields} blob fields to block ${provingState?.blockNumber}`, ); for (const tx of txs) { try { @@ -263,7 +262,6 @@ export class ProvingOrchestrator implements EpochProver { const [hints, treeSnapshots] = await this.prepareTransaction(tx, provingState); this.enqueueFirstProofs(hints, treeSnapshots, tx, provingState); - } catch (err: any) { throw new Error(`Error adding transaction ${tx.hash.toString()} to block ${blockNumber}: ${err.message}`, { cause: err, @@ -284,18 +282,23 @@ export class ProvingOrchestrator implements EpochProver { })) public async setBlockCompleted(blockNumber: number, expectedHeader?: Header): Promise { const provingState = this.provingState?.getBlockProvingStateByBlockNumber(blockNumber); - // TODO(Miranda): check totalNumTxs - if (!provingState || !provingState.totalNumTxs) { + if (!provingState) { throw new Error(`Block proving state for ${blockNumber} not found`); } + if (provingState.totalNumTxs === undefined) { + // If we are completing an empty block, initialise the provingState. + // We will have 2 padding txs, and => no blob fields. + provingState.startNewBlock(2, 0); + } + if (!provingState.verifyState()) { throw new Error(`Block proving failed: ${provingState.error}`); } // We may need to pad the rollup with empty transactions - const paddingTxCount = provingState.totalNumTxs - provingState.transactionsReceived; - if (paddingTxCount > 0 && provingState.totalNumTxs > 2) { + const paddingTxCount = provingState.totalNumTxs! - provingState.transactionsReceived; + if (paddingTxCount > 0 && provingState.totalNumTxs! > 2) { throw new Error(`Block not ready for completion: expecting ${paddingTxCount} more transactions.`); } @@ -710,7 +713,9 @@ export class ProvingOrchestrator implements EpochProver { // We build the base rollup inputs using a mock proof and verification key. // These will be overwritten later once we have proven the tube circuit and any public kernels - const [ms, hints] = await elapsed(buildBaseRollupHints(tx, provingState.globalVariables, db, provingState.spongeBlobState)); + const [ms, hints] = await elapsed( + buildBaseRollupHints(tx, provingState.globalVariables, db, provingState.spongeBlobState), + ); if (!tx.isEmpty) { this.metrics.recordBaseRollupInputs(ms); diff --git a/yarn-project/prover-client/src/orchestrator/orchestrator_errors.test.ts b/yarn-project/prover-client/src/orchestrator/orchestrator_errors.test.ts index 023fbb88359..fb7977a8424 100644 --- a/yarn-project/prover-client/src/orchestrator/orchestrator_errors.test.ts +++ b/yarn-project/prover-client/src/orchestrator/orchestrator_errors.test.ts @@ -31,7 +31,7 @@ describe('prover/orchestrator/errors', () => { await orchestrator.addTxs(txs); await expect(async () => await orchestrator.addTxs([context.makeProcessedTx()])).rejects.toThrow( - /Rollup not accepting further transactions/, + `Block ${context.blockNumber} already initalised.`, ); const block = await orchestrator.setBlockCompleted(context.blockNumber); @@ -42,8 +42,6 @@ describe('prover/orchestrator/errors', () => { it('throws if adding too many blocks', async () => { orchestrator.startNewEpoch(1, 1); await orchestrator.startNewBlock(context.globalVariables, []); - // TODO(Miranda): check below line required - await orchestrator.addTxs([]); await orchestrator.setBlockCompleted(context.blockNumber); await expect(async () => await orchestrator.startNewBlock(context.globalVariables, [])).rejects.toThrow( @@ -71,15 +69,6 @@ describe('prover/orchestrator/errors', () => { ); }); - it('throws if setting an incomplete block as completed', async () => { - orchestrator.startNewEpoch(1, 1); - await orchestrator.startNewBlock(context.globalVariables, []); - // TODO(Miranda): check err msg below - await expect(async () => await orchestrator.setBlockCompleted(context.blockNumber)).rejects.toThrow( - `Invalid proving state, call startNewBlock before adding transactions or completing the block`, - ); - }); - it('throws if adding to a cancelled block', async () => { orchestrator.startNewEpoch(1, 1); await orchestrator.startNewBlock(context.globalVariables, []); diff --git a/yarn-project/prover-client/src/orchestrator/orchestrator_single_blocks.test.ts b/yarn-project/prover-client/src/orchestrator/orchestrator_single_blocks.test.ts index eeb90f2aeed..b648985c325 100644 --- a/yarn-project/prover-client/src/orchestrator/orchestrator_single_blocks.test.ts +++ b/yarn-project/prover-client/src/orchestrator/orchestrator_single_blocks.test.ts @@ -24,8 +24,6 @@ describe('prover/orchestrator/blocks', () => { context.orchestrator.startNewEpoch(1, 1); await context.orchestrator.startNewBlock(context.globalVariables, []); - await context.orchestrator.addTxs([]); - const block = await context.orchestrator.setBlockCompleted(context.blockNumber); await context.orchestrator.finaliseEpoch(); expect(block.number).toEqual(context.blockNumber); diff --git a/yarn-project/prover-client/src/test/bb_prover_base_rollup.test.ts b/yarn-project/prover-client/src/test/bb_prover_base_rollup.test.ts index eda7244a9ab..74cca52fc0a 100644 --- a/yarn-project/prover-client/src/test/bb_prover_base_rollup.test.ts +++ b/yarn-project/prover-client/src/test/bb_prover_base_rollup.test.ts @@ -61,7 +61,12 @@ describe('prover/bb_prover/base-rollup', () => { const tubeData = new PrivateTubeData(tubeProof.inputs, tubeProof.proof, vkData); - const baseRollupHints = await buildBaseRollupHints(tx, context.globalVariables, await context.getFork(), startSpongeBlob); + const baseRollupHints = await buildBaseRollupHints( + tx, + context.globalVariables, + await context.getFork(), + startSpongeBlob, + ); const baseRollupInputs = new PrivateBaseRollupInputs(tubeData, baseRollupHints as PrivateBaseRollupHints); logger.verbose('Proving base rollups'); From b14a8922e967f73a9f06a78231cc30cd3de27a0c Mon Sep 17 00:00:00 2001 From: MirandaWood Date: Tue, 3 Dec 2024 15:41:14 +0000 Subject: [PATCH 12/39] chore: post merge fixes + update proof fixture --- .../end-to-end/src/fixtures/dumps/epoch_proof_result.json | 2 +- yarn-project/prover-client/src/orchestrator/orchestrator.ts | 6 ++++++ .../src/orchestrator/orchestrator_multiple_blocks.test.ts | 6 ++---- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json b/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json index 894bd6b3b79..d455b3a5db2 100644 --- a/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json +++ b/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json @@ -1 +1 @@ -{"proof":"0x00008b640000045b0000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000029c00000000000000000000000000000000000000000000000000000000000000011cb6dc9b8c6041726c30d6a662f304689224a8892ad7f74f16c745bf376d804300000000000000000000000000000000000000000000000000000000000000022de2da46306bc0b0e5fdbb6056987d6fc5404cfa5109f44d1b7bf367c55402da00000000000000000000000000000000000000000000000000000000000000041c5492e4dcb2d47218f5e64963e5d6e25bd0a4d60a139d80a9eec6c98a6918eb2c79f28a7380543755cb2c2ebae754a7c5cdc02c57b89e76ccd21b8d83353ebd000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001085acf60fccf9388034ce3753ffc9f4acd347ce11ad60ca76342f5dfa1afce221055565154d81bf243f21a818fc3265eb3a0fb1564f3a932e8e87808c52da2900000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fda971aff682f662000000000000000000000000000000000000000000000008c6e3dd5a1ceadc61000000000000000000000000000000000000000000000001bd66462859a29b61000000000000000000000000000000000000000000000000000206ed7d0535b3000000000000000000000000000000000000000000000000c5402a36a1950cf5000000000000000000000000000000000000000000000006d106e04cdf42146a0000000000000000000000000000000000000000000000073fd9c45c7b90c8c000000000000000000000000000000000000000000000000000008586cbf0077600000000000000000000000000000000000000000000000ec3b531a1f028717e00000000000000000000000000000000000000000000000e25c20594d5d9d7a000000000000000000000000000000000000000000000000554fd7174969c475c0000000000000000000000000000000000000000000000000002d369e6797d0d00000000000000000000000000000000000000000000000bf996eee6e6864dca00000000000000000000000000000000000000000000000b0b1a19598b9fc64300000000000000000000000000000000000000000000000b873cf36fb4b78d730000000000000000000000000000000000000000000000000000f2bb025e6789000000000000000000000000000000d2e1280ea44c5be78e36d57ed2a794aa50000000000000000000000000000000000010897c52c6b538b4f2645cdbedfffb00000000000000000000000000000019beddf9128532f445bf99a1f13f36f94b00000000000000000000000000000000002d0435dbb0d5168de1a9f97e668a84000000000000000000000000000000a3b5a92b9dc2f98d5381de1ad51a5af5f600000000000000000000000000000000000b23e39fcf1c54ed90786eed97fdfc000000000000000000000000000000c0327a29a7471f1fbf50d12d501563d258000000000000000000000000000000000005b891f04e9e7cc14d35ad4a86f3ea0000000000000000000000000000000499f01c296c5ecf2f8c902269770e6231000000000000000000000000000000000002abc47f50c3bf37109395994a14000000000000000000000000000000006924d70a9782f5d8fcef8fd057c2f7c74d00000000000000000000000000000000000ea77916d624997462c1f5d02b3ff900000000000000000000000000000096650cbf350fd79e4e21a3a53f084e5359000000000000000000000000000000000025e86237c45eeb6939f852e4019e10000000000000000000000000000000870ec61adc23bc1294a793de7d329135e300000000000000000000000000000000000d59e4f667228b55d76d57b80cbb4a000000000000000000000000000000dfa123d263c27f5e0a447510bbbf014a24000000000000000000000000000000000014c0e9197abcac09fcca8aa3f56231000000000000000000000000000000693200aaa7a1cf111060bfd9649742812e00000000000000000000000000000000000a64ac6619042e406467e1ef5c7d8000000000000000000000000000000002f887e187a17149cc3840cc54456f0d0b0000000000000000000000000000000000050b6e2e9777314762168eb32828ea0000000000000000000000000000006b7f7a21352bc0d8ae2a09f071660cf408000000000000000000000000000000000022a6d5e2ee7d6256a9ca5b4c5533e4000000000000000000000000000000c007e7c3061827663dac710d8ed656262c00000000000000000000000000000000002029e904eb1c47a33f71100a9089e70000000000000000000000000000005619681483ff29613a2b7baf9b1f75a0c600000000000000000000000000000000001434bd46dc12aa8e7d0533f01d5925000000000000000000000000000000dec477c16948ff2f2ade1cec0f47339a6f00000000000000000000000000000000002271e140e1dbade448bcd1c30076e4000000000000000000000000000000d8949f59a77dc37ed99f3828392d4168c3000000000000000000000000000000000002e0e5f3b1bb40273c6db775f7b72d12697f91862f93255aeb4859c03027e0ee0fdde997272bff99fb814161f45e781dfacee15b020d045d64fd5cc151307c3a240a5ee2924491a9e674528e0ba18911a62e14c5b6bca959fc52707c3201b16090efbc2efddba531fea062318a778911198578801d807c96463268156e760d444fcba91146a196b652ec66584b7312119c3813acc8b9e5bc839b6b32980d9a5f47a3871233531f42b74850e1b12699042ab0e7f2b678f120a6e911bf0d251fc0ce9185b69fbc8596696771601927a021c7dd7f61538674e039a7698eb693eb61507d7f6a00e7d36775f08843cd697f1ed7f3278e40c69f2d4241ec832d8b810054a4d0dccf9635b627e4ef5c981c822d7b49ab18b807253253d3401acf7e055bf2b2f6a5ab61e90b11d4e90326ae901130f4f5b397343e2810dfdc4339ace5e9590063c34db25d7b8a93b702fc5b5c1ae524e652b8bb517fc505f239a6eb6c3ab0c4e77ae6c654e8b7bd556b8b0a0a202b75a4c8ff5d982eedd8f789dd84302c7e7e50d7e3b7439e3520d4cb4572a52d988d63de1e13054d548172deda25206eede6cd83c9f64fd10c24c8724d93da0fa186e12e30d40c553aad642af80004eb0147fb4a850c1359fd6a894e5a1ac701a88a0748e2d025ddf03ed6a0251a71b80c139e49421491370c9f28811775c02dae6c0627cf517a07ac6fdc4709b74c55387fe1d6e0229dc5cce44635e7225e108367903b60e0f57a56b7c31f466afec2aa099092cc527c51ac9b13b8651d1b168a43ba3d5729e73ebe882a65b6ce4f65aae63e346a5bebccc4421af7afbd092a79ab6d58183011bf5e0ed406321535b2ea486d48519624abbdbbe1db80b3d627317aba0383ded867fe52f6f8cab764fc3e4e17641753662293d720b4d10e821b7e50c61cbc1f26d49864b7e078562064baf7ce68d2179a902790a98a4f478b2045790ee2ad663436de67d1efe78bb66dbf2679ee5aa0c502d0980dd1391ddb02c4703dcba0e8d6d77107ec39050f8a27f8dbc82b7c37c92e06f01dd5a1b92c15a217725c4175af821ac105950e1482a5d5d64d7f883fa4e8f09d13a1b0334d0e71d16996788714b5a9dbf460975e4e3d3d261ead72c683dfb2855e79c1066a1905c5cda4070f1bc3e19a238e0cc2427de1e9997f63ec8fec61abf1a0c914952d1b48ea8b03334ca9fc88fd80838ab6bbf443608dc69918d8bc573e72d6b66c0373e57752056f5a004512ae4cdb0162990e5d839d4789bf8d5eb48d625bbb7916a162b386ef2f291fc65e965aa4fd9418619d963f255c1938ac3e4d6f6a60651fec0d60736231b8041eebb1ab39cba319860fbef2b153795d5ea4411bf50c6e0ffc1da7c8a493307694ec14b9cceab90b685455270941758c82d621f62a7bd3096fc4917e1ef910f3c40904a969a0379ce399da9c4ee80ab6ef5bc6eca4bfb42593940120b729847ae45371a0e0e046d20c528d66e41c97b0db38d2a750fba015bf09bbd83b961d481e2801fa1022d3edfe454d5f0ebe5baa80f031bd74abe6236e04203d765b8cede87cad8eb47efcdf8ff4bee8884c041c243b0b82d315281d2710c63775e0249b141f090ccd8db86093793a5dd6818f0ec616e7bf5f77ff2b7aafaac250e2bca749c309bd5c786e340b8e1dee067f2a016d9cf8140fc05a1230498d2fc13ff1488961a1ff27b4694399603b34af6b49fac75d48edd3dada128537d4a8bf3f4526aa70953c1d0da52e03c9af5251f4fbd060f8a29c58e35901b06fed58881864719ca9f565735db2313f04834da4178124c9282cb7eef2b21fce3c744599f3dab25bbbbec78c79f291ec2888a25dc58413dd00e44771b85e0921bbdb428f06317ab06253d9ab5290bd990fbcf1441e7cad9dbba8f04926e0154d639a424bd2a94454ad4361b3eb3b3b364fd56a0930687d093f317a8cf5e4049ffad3c1bac81ab4cdc0342c0de88b02c010679730f9a97d067fcb8bcb0ebc174925e001191a85a4e891e01e46f0172b519e42db3ef950912f95411bbad23f13047685a4713724a8aa619ce6b1b7bcbbc13083700570403c6572ec812004a22278b0341d7a31c19dd4fc19fe0342baecfb9de84388e5ced8196d9ebeaf0a3c287b9400ecc26cb0caac557d28dcd00cca17ee4d3b59551b62b9e722bc9da53a2488f5e528fb82397d6f4bb75a1f8c7a40862675ca5f8e754bc68d6098962a4415590480341e630cf749e33a1f5cb3b73d80f376f886816f2de2a4fe57bf61c50d36f169a36a52ea7ec081eae0535effd7717f917b2509fa5a328c6435491e12213f7f93c80b93edb55d065c34fed804ba2e0cf4e2bdb6c39d67749f87d50de11a1ca3f31b69daa433c865a0bcd5b346de4a5e34e7a840351b3c6d4e8bb33bcf296902682a1fca2415aed340a4b020de814499478f5a03a0446a61ab1cde81f60a869d03c3bb7308dee840e960fff7864326310f0a56973696b72dfb28f92bc4200fe8f7bc4cc7249486b1377769f0516cfc1cb17c94655e4487d3d33d57cf33168ba1d1c6180db4a63fa30b9e9870f70d2f6254c51a5932645f8252605b2dd72bf4eb6467e482fd55fa86f656ac6df5d7cefb39c29baa00ae4e1a9a698b82cb0cfaf93dc3292ba4316fa65c311597314b517ac6ab9c2200887b208e28cd8b7f16e95becba2e54b5a32924c99e87c737f8668169d6bb865d61d166a3a80a07a110e7c67d02220169b619b6d33ad8723ca27915553f11602a610f6a09c0928dec2a8dc9dfea79ca268d1d49103e652d62cf148ba93bfb188d9092bb5a588743b4270e5f6ffccbd315eafad28d2558f9ac73dff67ab8293f9c372809ff2903cb84061c48ff2f8ceaa747077e197f050a3f3b4fd5ce182b687d76f4a98b3204613523ae0e43d834ce7223718bea5605077c9d0aec77aac79ce46a87c35b9bec09eb141d764a9066e3cb3ffd99958819d095e67b89d7829f44a45d6f3f29dda509e62d6bea5e97e618c4dc5ae0439fce8945cb85779bfd95494d3bfe4067076357cc1e67101193a67fa9529b5524eea7c12fc65d2f92d3efd15a3a3231fbb3cd976b0cc5a0b1b66b0e0ee23c7b9347d43fce523d3b37e52bd2962e593ee7e203babf1ed031febfda1f1c937ddfa518ac95f14b2094d2f2333955a28a2d763ff0e5d300c776032ef13ee2c7fea30f15b4998c5a90d6c38811850cd89646de4ddd6c2509f214e93a567692cb300e106343bf2b6fa5eeeb68c9f6b0d7ac4c5fc73aa86409d5e31e6e249425eef86d381c734b49f1ed908f6252f1abfb449972773f425023dee968453943b3a6f288526746ef87f5e084375c4432f46821ffe9428d684e2931afacee292472390de72f91682615570818fef376ffc7ae96ad414a411a2f1d1dcdfe7a597428a7888dd7a380b8669c5d3526a1f3c1dc323ca01578bec79b0ffdf15882fe7b1747d42b716b48de868fe3d434039ba196005de43125b9677613b75c03167ac86e8c1db22afb8f05bcae39030d0da95f6556b5df333c7a4f1529899bace5b4ff2c4c34e76f50e1dd91a33c42ebbca09866b5f86a2066be00160d183860d57c55b97859c83b3486b9183a236825542d5dbf0f4ceb43ddcec78802b900f182c9980a26bca6465fdfbdb1de0d78c12a0b2410c2d117d0340c567c16af5dd9ff8ab7e73717e1a23ebe79ea33b9d7bfe07c4cfc7133431be836b592138b55b9bebbfeb8b73b9d74bab2756be436678f0373660eeab0d4b70028e42a04b31da4dc6e5831862306c0d698c8fba58a08386e1853ae448dfa8e484614f402ff34ac5e214e78c35e67e5446795bf8a2f2e2ce94ebe5acf1e847f53d7f1c81d1e187b99024c9655adfcf5fa454e404133146b40840d3ffb702259a9bf8f962e91ce50780029f8e85008d86f79c16b0efacb4e163e3ee55229f1766b7caf722f0b61405ab1b7c8af5bbb579fb50b1b2a87e3ba2ef78c8f8550d0b3168d6496154043088ec1a28162a2b234bb5f5d6653bf94702abd18be060e9d1c52e2b8cb2ba567b58837924fc23e692de349af7c0fb3a5d668478eb2e03a07f9fb50681102d0f28ef54f2b376e9bd90a7db163d74cc553fe860b424048b3c9bf56f22da022f5eb856d1eec1ceeb5e32da66e8e117b0db76510263326a0d61c9bb6575ae108ab854bc3b7cb2c0df399d57e2621f04740a872ecd19c174f23a94d5311e5990803f1b7a5e055438ab3ab55bf5410d2fa07564234cc01fb21ab605f36fb72c62e847cae3d6214b432a010544b3176676c0125c29692ff97a353568bd43aceea194c7b05fcb449a6fd5bea5cb961dfd9d67a23579d548d40dda96e29a93c0c170e45a1fcb2782f1e091eb01eabe83f8b3817ca58d9edc6c7f8878edb488666d6121cb6fa496488d49c75cb72060cfbb8e9f9eceb8c48dc56319cd0386723b1d41e41ce54c5a64261116a567fa62fef8c1ad4f63b11d3182b0fb449ef956bc5e72578605e66cfe961bd8a5c17b9128347648c89673c6419702f0a04de3f39864a277c484ff702b962ce63e041f0004996860ed1bef1f4a3a9b91afba43438e392256127e3c07997d9c851e86a31d9b95d76531779ca3daf172ce2ebe212bcd61e26c7e1d2cf7ca31acc4c62673e3e1246bd05f08f09ca9126e5208d74d8ffa4781de9f5e0a2306fd9508a27112cebedb7636b1d04dc156befbb6909b086c322141bfd74104af1663111e5920827517172bc0fed4638b0f8f833869d18975fa5f22c0865245a8d5e04b7bfdba0e0ca2ff5f50c398c33e683be51180aa4136eae1306747ec180934b3b98bf3c5200945b44fbfd2519bcbff091a5d044b9d0e44c490fe88d34d6927b2c4e04ed12558c79ea8637d0ba7c150d66ff9b5b60b5d0301325aa52d35f22a64f1c495b4fd891ddb69ccc1915b6ee03a1ae5a0b599fee55b52e5f64a0af51432c50dde50c126f1caf75d7e86a892e8483b14ab6f2ce5a87d9088fde007ff6797ef902406e62e0779c07cad39128a9862591084818fcdeecf607c18316ffa841daf9250ea5d33c36ad36bd207ac5c2ba43c023db239c7a7e621e4c90abd2dd270974e02de06f40fd253570e9a339b3d08bf05c89e1cc861a361cccbb76d0270db3f713f7beb8d6149e2097e71caec775723d1134153590ee970f9e5855f62f801ff625074b5a718285799a66e3f4665b6456927ee5732af80f151e126e4e8538a44ef38f98fa45b0616cb894d92209fb355bb463fa8a65826915ebcbe42bbbd350679a0c36ba9fb53206881d3ee0fbb7e01cffea1a93dbc5b417e23651ee23f22f51646b1b276f38534b7980c5a48832ae2c8873baa083f58526e6d1d0b36c4504c45dc673e126bdd1655d8c3bf9de3bedc505f2f1d67442d00417afa69278796eb6729ad3fa1a1e6a8609279c997c5c7d7a17736be9917cd42abe4e2b2cb6d92f5a4c6661369f7c3f4b2ade580730733313bb23163fa29cba1388fa2bb80ef502b5b2189be1f472ab28b8872652a020f3b517a557d403c4f82a3ac5e3a2152de5287df06cfb15e5be61e4172a3f6a8e3b827f2307d611cdc92378f8789a953039ee4960384cba0bf0502b94bac4696b31dc10f67ee883874217c687bdbc6f3710b0ff11bcc618c000991a4a03805692b8afd5696bde8af14d2257fa9d91e3d72380979ef7aa3b465e306a40f9c536fd40b184c93c874be52a2c5ca890a741e792b9810a3c752b1d9fc4468566f7b30b5e53ca5faa9bc6201712bcf3548110e3c9bfbd1103ba1ded20874b51ddb6359a5b2ee3f51ead3dbb431bd96fb22d058c2b86e09329fc0964e80fd2f4b772a345e35019436b36e532d911a208e05d495275ad116644de47cc5e7047ddc3c58fe34f30016f97e07026a713fac03b6b2fe858405abfb02a9e4ff513668c0913ab08e7261df98d3c4041cf0e17e04c68cc34c6073bc443123b0aa6e30c9c1ae0a4b0709d98f7f8a374f3f42a4caf0c1cfbc8965d6a1f870fcd8be7e644b87829406c4e67fe5ce2fdc4a59f18a3437975458a474d86ccbfea9c84eb1c609cc0db3483879512bec854f8793203dcbb69a04678624cf15dc28bfbb59d877473e6db7a90a0666fb939654d2ec216dfd20c0c059a7e58f4d63f382d97c1f0e718dc8162cccd254635a606f72c571a013189fa06cba96a9372f6373bc67c0d524be969d167f6cb654fc450c079c6211f24fe4eec58b74e01506895dbb38fbc8a64dd3c4b8fb220416ad4f11c61d908435ecd46d2753a3dda90074d57c5249072546a82e0feee0c2540903a54e2ee2a1b38ab686fc78a15f99637e4e06eff3de43a9c2315b04e4ed7fa0b1b68a7591976e2e27b0b5a2a36a32cac0e63d569c9faf09c912eb59e8e011f923f47aa01181bf2cf4ae5aa51881184784585977aed5e8203ce3b357648e703a2f03217450d9533bdeb60011bb80ab8959bdb1ec7129ba5c610d22ccf1b3b282b8a32068010da65ff06abc962d49647f84fe091c883731426a63f1a52ea58b6a8928506cd29b7b18de968cd26d6e5e27fe2106eac8aa5c864ac7ff3409852650ffcb4c9c413e53c1795624b48c110e3ed59389972123bea6f0ef958088068988d537acfba1771ce69cfa3c9aee2cfd4f932319a4ad53a7379096626b897daefde6bff80b001a3af77a1465931da1f5b16ffde6381a94fbd4331395a62ff9815dfbdbcd663094c515f2218541bd1f3df371975cecfffbecae8c30e745eb283a22914b757e71340986d1477bff3de383012b24a359d11e474d400ed5debe040c729796df5d00d94d9d1de42d09f5c5006fe19f2a8bc1b2e4c1d48ea53918a605f319b2198360d6f7881515fb1722eb405c1f6936b80b1f5b54523ba3a2ace7d061f984c724807d744500356db9858b504651eb58750901a648a2393d5e861cb486780b3a9231f808428dc0e97fb780845a8e0adb0741c130d27e7a2abb9df1a632055366a16258d7bc15723853bec85b090d5e019f31977f5ba0bd24379e25481431eb3995c0348a300eeff8c1f00ed64d4f16b944c94b33511974c3fc32eb49c60d97dfc51199a1a190dfa6b6736543ebd58819c99f29b451d277c62a99de72a4877251e881fc2c526a93413aaf903eaf77d67ed24a973fb0873240247e8d26cd7575d3cb1170f6ed4ef4d0bdd6a8c9c55572889c843bb128a3ef6a4adb495ae30450c5ce920ad0d90528bce589f91a7eadc612960b438df52ea567ffb67e7ba232d8f42561d7637a3c5bfa3d69b343ed69dacdb4d27527b8c420dd79e0ba23a19284d7fa41f98d2450b92c0f54c5d3ed74180f2613e46211513d30beef146ff86e850cd290b0d5b8dee41843e5b270e49549985420ca0c292711dac4050c8be9f89788eaa26927efb50fdbc4e3d29db46b8e780646b88bf8157de14b120b9c32901cb9c6d185a36a21360b3f3d8c26d5fa07fb0736a4f72531ec9addc74e422cc017031590191bbbfa9ae4a040e43b104dc5afbbf447e902326c8972c493cc80acda58e371dc71b3d090507d7a4a9989581b90cc846920edd53b281292a264a30a7c767db2df3083fc4f1089651674b9ac5f5902b5596a9ea8002b00b8901d5a46991efd9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001322ecdb755ecbb53b27d1eeb73808129e0f4664d0cbcc8a445f091e118ffd9d16fad2b1347b165cfb679a1c7f19d588ddec571f8787884b8f9ec29f2e2812ea1f35bf47893bc4878005f54d27c13a63cd14ac8390dbb995edfb0096a345d6a3178bb0c62924f8ea19032dfb26fd422520846f999904b1b22035d6dd71c68760219178016c63124230c9176d3ed6c492ffdcba837209b2cb358394eeb71cdd182887284534e30022cac3dce53a3abca979b226e1abb84a7734d61f785814bbfd147033397eccefe4e9ac555593614db19f503448bd4ec9f4ea702ee2f1f0305e04a04b7152914e0dc45ea03986562400cd85d7bc3331ce2fa1f0de432b409dfb0611de5c69b38a665f8ebcab085a8868fb0aeee6689c11c571e4661f91f278752403b7a6f22e7b20550cc96d94589e6e1b4e8786ba803f096e20cbfbfb00cd972001bc0ee95f6b2eff6f4d9242bd8c0303bbf418a4a9c4c58c5fdb4cb629321c268dab1ed18ffe420c220f6717ed21778e2956937cf0075203d33110111d832b2e0b2577a46fab8fccaa27b4d94f2afba2fdb94a14fc183b681eea30d45dd71707706c6cf45d2d205c4827f451fe25a31a8c422cc2bfad7baff413b2d2de6295184ea91e3101edcff27a526874827d848ef3c3e912025c8fae313f06e5ceb7832e141ac9aa2ab186e3cb80f50bfa6cce41ddee9008ea5a774388c0302e31808102deb96fa41de6847909a8aef78a99b12f73d0ed6c51c237872b96bc3fcd3dd107ade012c1c00625c7751009b04d90298dfb675076d1e8c7beea28b29eb444d312c566ba1b05af21d3c15b6fdd209760fb0c9ceac2d0b074a4d6e109f813a5ba07c40e64ae9c26c7c9a4d834dd33293179ffc56c818bc0704b2eef4ef9484af31a36977b7e5204a92c9fa764dd3665daebe5c26142da9ce83824809b31c9d8c9203bbf9e6315689a7275e23ca49187d2fee7ed95007c84c2e05b5ac569e2cc561aa1821d6b7fa9829c8ecd078570a896d6eb792e4925961d3e8ecfb4f7a1149f21e485b0149086ccd86db2fafcd26a22d20cfb858f0b7881894d3b8fbd9fcc7c220dd5f6f02b3c655e73e002a4495a7fc1b6b6e7ebf5a0297edc562b2dcdad16305bd168edd8ae4ccbd146ed7e901248b32e08a729ab10f581de14f0aee5480122e51e55e6fa8ff15a8eac2544b903d5df85d99c889f6c9ca920598100be6d3a11dd9fbc38d87fad13db3d4027aaf6a8bd172ed55c5ea19e7a3fcd51f71e7d87187e2543fe3c87e132df4366f88c40698765f73fecad1b779260dc7ce0f4e9af1998bcae2e1cf071dc3bd5264787dce5b56828860b3c1b5ff4f5dbaa453b37400b0b8771f6f9beabc11adef42f57b0b177e93c22522738e2386c923165fc227e164cc9de544a3c71fdfc88072f6915f7507122d8664cf2b53a32990a997de60110e283d74320cca87003544cf8c58775440cb2e41a3a248eb4ae0d54c4e100ca214805f08d52e2fc4d6d29127f03eeaa7b6545bdcbbbddcd2c0493ee6100a0fe1cdd084c2385d0e93d7758cc2c3efb52a99b975ac396e0a91160f385bc399a16062f7c8f76ab6249dab7636a964edfc9342e488a8969364220a9fc08b25393f516c085909a143e5ad70a07cacb676417fa7e58ccc1f7482c3caedc4e3cc71c9b02290536bcc562342e7cb72eaad3c660a47b86f213168a1887d65e070c9a1bfb254767e637e982ec609743553cb0fff455745be85dab68d4f62982f4c92ebc562e42465017da201e743da4cad5935e45e4a7b418e4583c52bf2285a9f78b80d702ef5cd1306699195678658d548fc82b18d5afd7e1e0a01eb7f03b5ca993a5d02a35679d0212e0f3c73d1021209be2169870ca71dfc779b54a7e8597fb1551bf2b052a9d127df2fcead507d8d81cebf2cf66c6986d2bd92f64a6c3a00fe03eba103eac25065ea0ee0897beebdf6f6537760efabf0295cf91006591d796c59de3000000000000000000000000000000e2626cb0323f6a28b6268b2e92dc5375b1000000000000000000000000000000000009c6d15ecd7c7a880471e4fb1baea300000000000000000000000000000054c23b0ddac08f08bd7e55d3106a924be700000000000000000000000000000000001ad59bfc407d5ca07bbfa82464d33200000000000000000000000000000049cbe927b406a63cadb643f8adc806bda200000000000000000000000000000000000673e222d43cb2149a2f13bf4b76e30000000000000000000000000000004d19ab8acfe4af1a3aec4020a84183c56b00000000000000000000000000000000000e56560bd97323bb4cae377cb9937a00000000000000000000000000000031ca9511a16eaa80ec955423fdd681c1c4000000000000000000000000000000000005534fc172ad5ce4827ca4b746086400000000000000000000000000000054dd52a46d4cfdc1d98b7c6b78d294ad6100000000000000000000000000000000000a8a7f3ccbb7939b6d3552b0cb8c3a000000000000000000000000000000e368c6cecbdbc85b3abf1dbc19705f17a60000000000000000000000000000000000080dc9e251a7e076d5d65b9177e1ea0000000000000000000000000000000e9d2d233628103364f2a55b5406f510f8000000000000000000000000000000000027d58264cf9558c717854016f1154c000000000000000000000000000000734182b8a4b987f749a4a027817a2732d2000000000000000000000000000000000023efd016ddadbd09bec21cbd3b3802000000000000000000000000000000fdabccbbdd25e872092634793a8faf5b8f00000000000000000000000000000000000c418b9db676fcdf8d6c87333f6d60000000000000000000000000000000a581169577917bb2815a2375857658c0d200000000000000000000000000000000001c2b805ffa42ffe1a46f92448eaafa00000000000000000000000000000078aecbdb107f77bf97f6f3a8ad28f65ec70000000000000000000000000000000000005457970c63cfd5ed2a438df2f133000000000000000000000000000000bf27715b2bae2ace82ee12ee3b7ba1255c00000000000000000000000000000000000d63ea13106e0d6349376c9a75b50c000000000000000000000000000000c14bc135398db76af2427a4c0c0188f01d00000000000000000000000000000000002fdf0706210780e71968259037abdf00000000000000000000000000000035aea0398fb8e4b3f60f06c580a4ebd167000000000000000000000000000000000003f8886991c519121032f0c0a9b003000000000000000000000000000000d9c86e6f9ea0502e09e8121d3519c613bd00000000000000000000000000000000001e69ef27810c50e98b67e0ab343b77000000000000000000000000000000c966ae7fdcc25ff83a76aa8a7cce35fc45000000000000000000000000000000000028bb460f3471b7cc877feea861a4e8000000000000000000000000000000bb9242d6d27d47b27211295f13fdb3ed0600000000000000000000000000000000000a9d15606130d0e2377a4da09c324f000000000000000000000000000000c7946c01ecbd3549fbb797cb7d3002404200000000000000000000000000000000002485b0f96d2aef0f339d14e89195cc000000000000000000000000000000155b5d6914f5e824e9cc9c4b8feb5140ee0000000000000000000000000000000000026c8f2ee86717d989415a27eb8de700000000000000000000000000000077fd6a85ef6f7b70f86f03d7b54cbdae92000000000000000000000000000000000027141e3f964fb6ddf0e140647eaa60000000000000000000000000000000047d7f023a0199c8ca239d1eddacd14cc3000000000000000000000000000000000022ac1addcb85d1008f22fcfbfc422c000000000000000000000000000000fbe79ecf3d8c9179c21fa2f0cf442449ab00000000000000000000000000000000000156c0384e866da014ca51ec61c4b30000000000000000000000000000007ce6827458e253edf8da4a33b1586225a900000000000000000000000000000000001bab9d68558bc45e7323bd3e230c85000000000000000000000000000000e3132208b04b9fe8ad58b8fbd32d2cbd5d00000000000000000000000000000000001b309db69080351d0a6a7ef9c12380000000000000000000000000000000dab39aa1911af136d4f3b3d7b55e4ee20b0000000000000000000000000000000000111367e5d48b2924fd0fcec82cf556000000000000000000000000000000787ee109d6b1143228780a4caea6987d9e00000000000000000000000000000000002ad6d31c5935e0530c825b523c32a80000000000000000000000000000006ac41b4e06bddeca7e33ab98835b392f87000000000000000000000000000000000029e28e6a593f7616c2783191e9b8650000000000000000000000000000006228b0f5c29ab99b8b65894e1bea0c849a00000000000000000000000000000000002b4fb1bccf3ef7451248568246f060000000000000000000000000000000e9bbd8ffafb278057441b6bdce77fbf09100000000000000000000000000000000001817e00822b5bb8f6681a24892d1e500000000000000000000000000000031e66c8172b6340c10f1924346b92baa5d00000000000000000000000000000000002c2a63e7ac78f2f4a76d66598aa0300000000000000000000000000000000f516d1a8312b6a69bcfd1aab63c38214c0000000000000000000000000000000000009b25a9522194257de67c70aa46be000000000000000000000000000000149192d38f68bc41c5bbba5c4b258fbbfb000000000000000000000000000000000028cbea8f8d5b8c7f2ca76cd1ff5b040000000000000000000000000000003f3e837166fd34a04baae049c2d56226700000000000000000000000000000000000098690e8c56c24e8404dc12d2d35ae0000000000000000000000000000002dfcde187cfd0a1e5ad8c0afb8efdeb15e000000000000000000000000000000000029bdbb3ddda1f2cd8814dce28913bb000000000000000000000000000000dad43f88b82dd9ca3ca07d8b0b27d12c6300000000000000000000000000000000002a3157130ac2f280c7acdbebf7e14b000000000000000000000000000000529a7292575808abd711164b32eeaa423e000000000000000000000000000000000017440beba4f7128ca9a14990d0ae380000000000000000000000000000005bee7521fd428f7043e8c7d413e7b54865000000000000000000000000000000000005cfb2b1f9ac0410006afaa4f3727d000000000000000000000000000000a57437f40d59b53415ec2b7cc5793f20290000000000000000000000000000000000115a1e7b8f8e9ca658829896d5cb91000000000000000000000000000000413600764f32f34507f6069a5912ed074700000000000000000000000000000000001f2596918873c79b804cf105b991a4000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000027f1bafb0a0a7acaa4723284ac5483e9ecc0f1c7e3fa160b3eb29ddeb2762dfb16ebfe29861c974c5afb55359107e964e6d340230dee8a3f68d1d3a6aad1603a28da221a944ae0b472ace41ce982230732566655cc37c5941c1fce7ca145f6f01c29a1acf6c6a1dd3dde5ddfa46ed8eb05f7c35a0e3704e1eed23cebe26df4c607ac1964550464bdadfe142a43fa6a8cfd2c63be53ae097d3ce63e293b8f0123021812a02447317542da6303b352b6632c53495c494f0bba537e4eecea3eebce2d497e0ff0ce7a82829eb9bee545ba3a0a3efc61dc27d75ae71ba61bd2e902830ff4c137a645efbe95acc264f820ce1dec29244ae18fafeee2dff89c6e18efdb2c44f8340f59fab85b4182fa693ddee38618bbeb4c171b6724db85f57f97383507729338553eabc0a042616a5b7a7b7aee8e8d6d7dd492beee0e5dbf58c4b9c51e825b4ef03df362103e3547f53bf3c258900d773f85e6f30cdd4befef1655260576f17264694064b4a6542ead7f2a74acb17a934ba74168cd7f805cf6463269160374176f2ad3a13691811d82fc4afb2f2da6a55d4bb6c63224aaa33aa170d50381489f318b81a9e8fa7ec880d171b45b0a7a4d8b41cfc1898a04819059fb52116b0b4efe883e11977c5dfada67ff9e05b19051c5f92cef670de3a22c99dd7130592c25968c7785caa85540bc1378a3db0ac6ed7737d619e3cfcbb691b4e62f212bc81d35f3526dbe8289180379bfcc1cf5709cac4dfbaec5c6c1b9ac6a58602d77b3547fa4e79ad367884cdde81f3c1a4730e40e8a76c292fc2d3290d5d35a256218e6c02eff30b897db18a9d8970028f0249071f9d10c15e808750c88b9e02e35ba0767015fe4d5207d223f2b148306891b9806a720d0248046ef3229d3f90baf9527c07f38a3cfa5674b574a57097977cfc72545e65d2d60a17cd0cfbca00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b37b0ae19eef97ede78d41e51ee1fe11f200000000000000000000000000000000000433e135f69793c87cfb404ad2a6b5000000000000000000000000000000abb49b04bc0d360cd1f3487333b95c456600000000000000000000000000000000000b46d3269d654647f452db5d3775fe00000000000000000000000000000059504a5183b9c97f4c5356ba1d81d340410000000000000000000000000000000000249ca92da29d6e057eba0715b87e4a000000000000000000000000000000ecfd9da508a7efc1d8d72f8f99780ccbb800000000000000000000000000000000002be43dc89f51eefafeec2d0a548ace0000029c","publicInputs":"0x1cb6dc9b8c6041726c30d6a662f304689224a8892ad7f74f16c745bf376d8043000000022de2da46306bc0b0e5fdbb6056987d6fc5404cfa5109f44d1b7bf367c55402da000000041c5492e4dcb2d47218f5e64963e5d6e25bd0a4d60a139d80a9eec6c98a6918eb2c79f28a7380543755cb2c2ebae754a7c5cdc02c57b89e76ccd21b8d83353ebd000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001085acf60fccf9388034ce3753ffc9f4acd347ce11ad60ca76342f5dfa1afce221055565154d81bf243f21a818fc3265eb3a0fb1564f3a932e8e87808c52da2900000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"} \ No newline at end of file +{"proof":"0x00008b640000045b0000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000029c00000000000000000000000000000000000000000000000000000000000000010237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae00000000000000000000000000000000000000000000000000000000000000010e431a24eaa7a481adb087b6ae8790630f93d642e55991c48481f8b68d3cf18700000000000000000000000000000000000000000000000000000000000000032da55666630fdf8594065c377958c827dc1c130dac91f17c6699b53dce60ef750412972e58711f59a09ecb8420cf3193db944871cb6eb26b10c00c2f77150d77000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ac134ea3f9c61917bdf62507c89da98f3059d7caf13f2dff291591d4c03977823b36a2766961427b99fd8e7ced7b1615a71cde1e6c42114a6396bed32ad43bb00000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a8cddf6e42670bd400000000000000000000000000000000000000000000000094c5c11f5447612830000000000000000000000000000000000000000000000067bb01d76840d03e00000000000000000000000000000000000000000000000000000dd098d79c1d200000000000000000000000000000000000000000000000afc86d8bc4d6f8baf00000000000000000000000000000000000000000000000b13d312899d52b2ae000000000000000000000000000000000000000000000009e12895203e1b0486000000000000000000000000000000000000000000000000000046db9cd8adfa000000000000000000000000000000000000000000000009fe7450c302cf1ee000000000000000000000000000000000000000000000000246b4b3a293544af1000000000000000000000000000000000000000000000006a57dd79f57f0ec890000000000000000000000000000000000000000000000000001a377c6fccb7f0000000000000000000000000000000000000000000000007541ffa33c2be424000000000000000000000000000000000000000000000003dbb5d300faa6a1200000000000000000000000000000000000000000000000045e0a485bc408a8750000000000000000000000000000000000000000000000000002744a822272120000000000000000000000000000000dba466228387a25fee04fb7e6a9146e3d00000000000000000000000000000000000b81cfd1e70f8c410ae48eb81dabd9000000000000000000000000000000257959ad4884b6da0b3f45bec7488a51f8000000000000000000000000000000000028c2dcec19775f9cf985e7dd0cbc6e0000000000000000000000000000000000ef79918eb1c7c50ad310ed0d97cca600000000000000000000000000000000000ce248f1544ab1e463639c1265cf8b00000000000000000000000000000099d777fc741065f1d4ec1858aac035779a0000000000000000000000000000000000195650325a83a04d1ac455043984de000000000000000000000000000000053471442ef505f3e961766d79f8d1d85600000000000000000000000000000000002c1bb7c050f25affd3889183fe889a00000000000000000000000000000028c487f76b17c67589d639a13502bf4ad4000000000000000000000000000000000007b9856e4c6ccc6fbe1e533d6b4f9f00000000000000000000000000000096650cbf350fd79e4e21a3a53f084e5359000000000000000000000000000000000025e86237c45eeb6939f852e4019e10000000000000000000000000000000870ec61adc23bc1294a793de7d329135e300000000000000000000000000000000000d59e4f667228b55d76d57b80cbb4a000000000000000000000000000000dfa123d263c27f5e0a447510bbbf014a24000000000000000000000000000000000014c0e9197abcac09fcca8aa3f56231000000000000000000000000000000693200aaa7a1cf111060bfd9649742812e00000000000000000000000000000000000a64ac6619042e406467e1ef5c7d80000000000000000000000000000000abff6610c4d6c38aa40a1be31f41f675e8000000000000000000000000000000000007d121d6635780bb6f2a2258b6c116000000000000000000000000000000f475a16ab4b4a5c1530ca0b82bd846440300000000000000000000000000000000002fc5e95583abbcac18b48ed9102694000000000000000000000000000000c1130e5111743963619a62ec7474feae2900000000000000000000000000000000000d3c93d9d8d688da290e03cd5c6f83000000000000000000000000000000a7e22837c27e7e54bb0b10cacdeb73c0e2000000000000000000000000000000000015e045c2c1b7d761709cbcf3e53a31000000000000000000000000000000e67ae2b1a576a157edd5102d7c1e29e1e300000000000000000000000000000000001d59797a0ef0ac1cb3fef38264d206000000000000000000000000000000f0ee5bcaa5e5524f0c892e8154a8725ade000000000000000000000000000000000011526d67b2c76032d854b18e2da2e229ad04ba20ad2f249c9783010ef5f8b3dbaee88f14c92cf93dfd4de71c35ace706b749b8c08471051bb8c2b5728b5fa94c84ffb964f0439805e4a7acd3ca531a1a5be6f0c80f93c73154afc798a8213152bf352b7864ca997721032d5e6ba3461977f825457052cd9e36346e61f388b5779caac7a31949bd850a703243647a4c194094e9c5adae32f41886b679a0ce6eeab2547d530c70427a3bb0fe506a17eb2f963150ad0ed04a5f676879daa4feb5168bc5b36a74232deae64252fa100afd1baaabc1b292f60820e9d0549493579054a9ce56d680c2f02a50c98c7193f11d013689f01fede068adc2ee216a510c6a7947e5ec6ce54b7f9de5cea6b08642af1a5cdf073e294a117e2532d79acca44d2a7b158ab10e963dba82942ebd1fc2f7099f0f2255dd1c3c3396545845de1763d9ab55f52f5ff931497f6c6d5ab80724263c05160e473019e43830887a8234af5df46cc88390c320787189ec338380b32d7afd1991dc779b97b4cb7960cc188dc860b47486ee0bbc29349306bf570cc601915e2d7a57704479834f9173bea121391679e6fb76966a804a82aafa5b579a08d0167b18d8e7738579a115a3dcff846b5dde319976ea2efac9fc1abfd45db029e72adfebecbfc98b3f522effbbbf5d179cfc4e2a8cf89e3daa155c7b943d5300ffbd8d7e87ccb52ef9e91b39af09c63c79292b3433fb78ae28758ea9b3d2330c4c964f7c2b378254436467d8b5dff7cf02ab0c19c0fa896c5ea9ed8076f99c220b65a78787abcf163b7268e0f7321e4a0e20ac427a2b586d6a31d8241a53ef0760a5d05fb02454f891cd3b9de4e95698d6b9f0a6d61aaf7a8d84c3d7d70c5a0bba6bb5719d4af717aa105eacdd3985a9bf3810982dd02dc7912ff7a386f32c256ec9922de1525388457dee0202dd16ec6843279757c7adf5798ade7a7bc0b0296bf63832383b726bbd0b0c3fd9b6465c630c37be84b933fae3404189cf50a906ed4b4a6a058a6a64021824ee857598dcb6942509701bef33f2a284b8b72b5528da019b575ae54097a6dd2229d29b26b63931c1b8f381bfa191cabe61e1f69322d77a1ed9b38dc2e1c1189bf8bb4cf96be86a9aed29ff0deb61c919edbae04b291760956ce0d8c0aae97af57c177102bbf158a1717938dce92a91155cf3ffd408f30883c08ccc575393225a1a6882f3d2f31fcb77c7e7be11b28be3b7425d982bf1ca76a1b6c986978fe860c82eb1b366d059d25caf6339ed8c880a7b96ee871ed89f8bd0bdd68f35bce07d0a6d84d6cf8db084ce94b55f44e0415f60e2085a10d686e4a93b5ce44d09590005d57c154bee327c81a8ed79cead4e925807dd4322f2bb5b0abfc89ca2fee40c2922b7d772a71d0e120b6d6422d0631b1f4178702faa4e654043d79deeea81895dde157d0594b638d4fddcc7c3c63aa1b293691527cdd5ac5e21145d5bfb2b36bf8fc6003e9c241eda9a73a487fdbca6fa9ec05929e0f65b825eedf854278007f3e1d531c3608bdca0dbfc092669d4b23d07af8b0b90da2c0ba0417e09b3e4daae22bafc5a1ae67cd4a90b61bfe4ec59f6f6ae332437f062c7351a78ed2b675c7958d991337f82ab0718939697e61fddfba255022c4aef05025b724e4f423e9b5abcf4598e0ea8ef0c6b5bea11e951113d4e759517ddcd9e30fbd7b6000a71c4f6f7365d7ff434e69f80147656bdb718f5c832ad1a975c62e3c4606e2dc3ca4ad5be4653d797d9d26278160ff7ef8f8058d1e1aa2c6aba42e8f486acd7a497e886a7cf116a5bff005167c175ceaa7217f2e479200e9be562a1e73032a1277b0b0bd0c8b7dbb661148dd0020b568dfa8acc0ee544061df0508ab74e6517539f29bc712ba77690fc8e0487604a28fde5e83c161b152214bf90f2f3f812d6b6ebb91d2c3f8e97aa345c5b44c136f8c34644f4a25e6d23aa39e0e41b32f4b89b95d959796a6558b293b2dac8d36cfa61e0df0f0f52da23eefdf4cfdeb56b4a288ebe2cf4d4aa18dfb4c53c6eef5f31bbdc0ef952eeae00741792c4d68c83a391db75bd9408ecce36471acdb6677d0dcf9a555df6a7d2100572ac845a766baa665fc0a3e3e8f2f7e191be0ca2256146fed7c91f25f1a2090abe744d532894b7dd3f67641b1587ab7146a783436b803fdeeb61b2649098193874a8f949fa52f4c8ef3930eabc6706b735f1bd869efef018fb2f91b3b3d91a1227a488fb61eeceeead632a9582ccbe6fb5102ad8f660898955903188467914690c23f571c4bbef069f64ba8f4c8318fe83a28afa1db72361d4231dd16839084d8ff0da144b5a971cbb8af21743a08ff1a4980841dcf7f55063fa76a513040769e27c38c547e86bdf27ad14be4b8ec3dfc379fdc37995845e68d6da31bcfd2918d3999976814ede358ad290cbb07173bf527ad0b510798e8ddd829f098d560b75b7ea250288ed2c8f62eff398413fc8fdba8be5f85580f0e2ef27bd03707e248db38f3e645f84655bbc71e71d98729940e759bbc7668b248f8c4d087cf36e2ea43279a7277375090ab8d658496b4754f0b090529f61523c28aff6e0492d8a23ca475aa020c5388e88ca5da03f12bfb6203eabf81f154669c2e83cc85088f2167e8c3a3fd25e142228509e0fe539c6f59abca4744df693e495efe45160d7030713b3edaf8602073e829a928ed3ef9887fe594c4139d0bdac3eae0ae2ded90124bb361454f83dc032dd1dce20e38fbe35d02fcc7726951a7745af82d5d45d1029791b6c98ee0dfd2deea2392c244b48cc2145c60e1dcf9e29851f5282cf8ab422a2ef1b8c2c0e33110ecc464bfea2c8c5be725bb8279bc0bcd1bf18cdcaab00265fea80fd36a22b6e6bdddc5c90690d23555f0a777ffddeac1bba2b262503402f3e6ad2d672c1be8c876bd70aee1a4f13f3b58d58387cb5f110753079f6d707181b2aa793c4794127c29f3d762f3de659400bf989b6154e3d795223e75ebfcb093e846099c5ce95ae3ab8945191d1bbaa213490611a2970129e8fc189aee85f10a8a239959be44aa2ced0f2a45213de3f73eb8fb88505b46390f48ae2180e0b207d4d60012860cc532673ed8568080f2181674dd2124fca33dac1f26ed15e9f21508302e86b8b82ea2e8a33c24e48d86c33c6dfdc29d4880ee544225d28fdd92837cb2138d15ce2f793f4b91b1b94c3f91db985a5ed62d75f31c7f6d7b964b709244a285fdf59bf8bcef25f283e8ec2626deb742eb2f7347af3c4edd480502915a8612fec9463c198715e833e6ccab321e1c404d24ee2883634c124b10e5d8e0905a1635180d3f9c6fbd3cba0ccc03705ccfb92238d87579ac98b65fb910fd91e57c201726d02b95adca502b4a5eb1573fdc3ed54aa22a0941e9d118a764ec8137f1276e13f4627ec360b8a20742cd262040885761edb9b71c7ce37ddd732f12e2763849db5d320486104dfdc6970fd79152300fff7c276700a6d376f4874432eff69563ce0d99c31799703285d6638eff168f5e85a565b1c013ddde35d3c7c151a108ce599782ed1806226fb0e9a4c7f35a7926fb6b7d92227996157bab3b9004beb7c2a7dfe01b0a209f229a69e7ee393540d4ff3d86b0d09497c5559f1a322656e666846f93fb948dfd26113a2c12fbb4c81c298ef99ec312c05d3f5805708c5e9a4ef4b61f9741a59e53fc0dd9c6a53febec5e292fe71e91ef48859337b14aaa867d5b073834e0a086c9720b7819ec49b7f3c3dc0f76b5c831f95db810c116393a35471597774d63b76018ac7c9dcca721909cfc11898920017d3ba2f030e3e6332d10a70a3ea43e02a3ad0a1cf8a1111559db1ceed89ca1bd918053762037cce97009fbf3d5db5b37c735a7b59d6b0e9fd3b35941615db1da6055a222702ac9b87e32d714a9d9e97fde61caa3491e182229f6351282817987df99b1387018f3766a3edd9a93c8a1e4afc3bf13a2896161f4fc25e6dc9e9a9533266dfeb1cdb0802b05334ff2532a6966e02e4af4ef31b0618408a783a15c6915a54da2d1101ae5e31ef4ceb69acad713ad63ab4329f85f847ba92a58e06b65b7733e45a1fb0cd33d3de3905ca4083d6380a1e10683051bc53638b97014c7c9a0e97eebe1b38885bb8613f5b948aed0f8f8444522076d82365eb78a95a5e18e7196b456c1a4cd9039f2a8f6e02887d3ee1430137ac615393c1b94f19f5fa604a31c225c02723222fea62c38d6d3771700148f5a2528dcc53fb31c2bc069242e7656ef3571e28de852f2686ed5a7e58e8f6c707c147a4d44beb3b94a5adee4e148ebcdb1129955cd2b4efb471998e0e88f0a2f85f1539becf5f3bac7eec95f9ecc36dd982156f9a5379ce3105a0bfcdfe4ee4fbe0f5bdd884b137d2e2e3c096071665efa201511e65f423060ed4cb92146b3d08b4a36ccc6b07fcefd0e0b3474301a0e88b0a8c2c29a947164ec2646a6592f2c6f2a374a55ae5667cb8befd9d23e7cdcba91ea3b750d6165741905e8d072235668bc527c49a4060c91579b65a0a47688f9c074f47edae686e1c3e845cb225b73ae776bf42977ff31bb26fe1583b6e7835ce2f074bef97d82e126045ec2aef64973a71962e2f5161aa26866aec30ce54e7db1c56476ec7ce5ca6786fce5eb8652dc398cff5eb66ea0f7465b7d24f95e54e6c05c7c9a5976a210d6bb5c42885f7c216d50c4a621c0890db9cfb15115e7ccb47185b7f1878974253e93edd6e8ba3b684db7c8f938ffa549dd396db294bae0d4c28de156ffb5612036df87d76bde5e8ace0cfe15c1db7a7be3f938302ebb6eb2c10eb5eab53db2b28c8c7bf10f5d4c5c7bb149bcc56531df1487d6f9fa23cc88c098414cd851a15f3a193de0422f5edb663a2172da802fbe079543feced4f6b2c1d7c0598c2c9a8d8ab3b83aede55a08a26be0290651e124d93a6fd56c89cde1612b9a0917806c7f53f8a27acda32e4317da77def26684eb542184e943079e2c903c7f3910ca804fd088ae9ecafe778fb05c61761d62a5b419c15bb3d45b6af722fd85b50d9cbf4a0975c8a94e169db4c273ff3c3f33a06cc7a0e65c4cce0018d251ceb29e91854ad0c3192e4ca47bdb94e62d3b5a4bf85df37e5422c630b03160ea18535f8481ca2221ec18a0c3ffbbd8eae096d6c755029eeada6a0a13aa03e266a4abcbaa92245dbf3930dcf4e85bb14ff25918d662d398281591abc23403d2506d422201209c6fa02ccd4a3e4506aa54217bdd526d15b898d5118d10b56b517e722896cf5e09c5ad63ad3ce52e5fd4141107c045123c30aaac366b137046910a81110a691d56da5ed7f98d5ab02b87ace8ee967d547e9ed9fdbe484adfb5122a904904332e3f45834932222c82df77c8c44e153de943a03cbfa98b479972604be93f910c8cf9b74af4c33d1c06c8f06d6bfacc75987772da9cd7eec5599a015da6bbed2d1f783d002ed572958f1fa56618a18cef5763e43459267a361428a214e8c5663695b7c7e220a071dd5d4d7e6b6a4900de1a177db3621dafb53b5e41a3376f842938705c60ef3926ca1233c5e2a8d47e1188ac1290f5bd8cb3f849312ae81c9eee8386e3385a4612d18c8d220d61e905e7b4976ea4b9ffbbd7e3cdc18f6a06732f80776f204a366fc7dfef5a7e602d962725524b85d14e53b8f98f82b911cd81e788623678c7435c49c5d27e83ff5a7388459abfc409ca1c492ca6b20101778415ee06a5df51237d8c2979927dd8f4d2b95fca52ba8bd51b9c8cddc2f3746c9703df5724bc56f16f2a9b1daaf06c9febc79bea01e543984e5195bfb19c84f9bb585096e1a78dff9fc4dbc5e45f1e48c538f1d74a1fb5a74854b4ae820552a76446f39df5b74281c2f4ffc2bc37824046507f5892c4796adb31414f01139c2cf1d89d12fe0c32942a8c9684d443faee10fbcfae36a94c9a65437e7641beb1d3221ccb014bebae6214ab194c972393a66efb71c899940be132e6aebf41d8fd6033f5193b3687d41e64a5b9e21feaaf10615fe7bdbc4bf028ed343e64a1d7e1fee0309170d8e686f54e88735ca98eecaf9997f962b129bf77c780196ab0c3ac807c05e1f682b48fd690a7a4ee1bdda6500655cc7f9e03d7c0407d8d2f713b10c6d8ece4dc8bfc82b6f770f453d127ff50705cd69848bbba2a9df05af9e1502239766a8cd78dcb0c9c633b748221a36dda6c2035257b541318e7db690d41fb38363b5575428d3d3443b2f79996db1cc57e333af415c862c98627f2969a80d697ba5220f481cf316bab6396d6db0ae48b97d1e8f42b8111e5a7c5a53469d27ad9d5ee3192fe14dcace27ed68afb2a2ed6ac9ba8a648e2bebdff6db0a960a145dac86b2da2b2e326f0159c23e9a09ed3c672dc54128d3e4f5c97e18ee8d6e0b7aa642258adf6e3296281f9bdb61cd9d99ec33e7cf5a398828aa866c77f4be0dac2984e8e6b0c28307e384532d222937d788e26621df963611983b22a0a38815384e081714154f72e0167e14d6f9248ff788486ddccb9d4e6f40ba2dc458f50626ce1da6e8c2616af914a23189e7c11ab998d4e66d9599b85293ef4b84bc5826d2979da195234ab4ddb5ae051afa7de2c8a33ced626be79e055f4cd633c9880abd42709a2d49c1d2a28528a91bb0f8eb2446395c584fe51a209ef6d658c479205895c57d566f6f8c8f8bc9731279dc2bef2edef105009d4a84755daf3fc3930bc3c20c4c62071c6e56cc81884e45dd4bf36f7c74de9648e9dc56e004b57dda07c3a670586563ebfcdf54989ed08791b77ac8ead852f55fb19de88eac32283d1189c3820951e21c0ff4ab531f8fc0ff8397325b3053ed3d3d42fc7b1e94fcb22c857899d285c160b13d22470785c14f8740417cf5b0dadd05c096325f237ed22bda8ad110621e3795738e1cd1113b20297f440826b85f251f61a0323f9139670b46d0dca992526a399cc19e8accd6f0c7bb21109a7eca48ee3ecc287c721243137be0639255779afa59aedb36804ae5a97d26ee0c02d8823e05d50c30bac8161b28dcd8b477c26837215dd836e3c8ecd1e16ac39b23d44fe0f9041e58df8e0115967223aec008a97b2c7ed83ada803b0ec2f5da5dc58466fd515006efc07dc10a3cd7b646c93b12473f086abe954bf998f6bff5940935963adc6c86430eac0422e301bdb0fdf90d24b744fa115706256e465c4d7cfd8c713825a9dc778fd19c14012897918b2d256e16ad3384ee8601a6170c6c37887803a10fa2b831a5744d2699141c5db5af02854adbc90fa4417f4ae4bf4a2241a71c4e41ac24d3e369d31d9c72dff94bb1e429dbe611d1a239994e0beb57bc417f14c7222ba8e87d44af1c8e5f899bf1b022fe64524e4810fcca8aed7951ac74935818f563d853ca2bf31a620ec720a849b8e9dc5e6026733e0a9aa26792cba339c778e818864f8d9599098390949fcc08bc2dbbd27d398744072e80df530673c75216d5ca840e7d625606457bd7b2da10e52df911c57a7f8707fa1cfc92868e04dbd4e13a609ce0d4c0013aa6a6d0d73b1a73958907e68ed1e7e31321b578f83b4a0a0b4d92240f5d231debfc0d837ef972408bb82d3a1d902bbaf51745def1fdeeff2e6076b7987afc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000217d090006057d2f17f3bf563497a41c8c2cbf2aa73f3f7b42e0a728ba0f343a0de52b459f3125c21f64198c7c703131d88dfae189e12814c1a1988afc1031fe0375ba956d6b4c8b23a79daaef4dc65e755d80c6715821b5b428a10e7830911a24d50d95e427a32c491fc885e06f5972981e62d66cb71b9a4ecc1f9aec68d81107d802cfde1c2e8cea102f0cc1030cd947a5b4dc33a41cc354ed5bb5f802decc16acedf1fee5768e23752b915bb1c851f62354f36cb49e17c54c5a698fcf281e04c30546719e37f48fb1663b59d19c32d25733b5dc7374a7f34a17cbe57d9f73161164a23be214b3a270800b72479e03420a6c145d8bec1f08236eedcc271b5d2d97b7155ea77127c9043e2a41fc7b6b691f623a8d05396ec341228f70201c8905d946b3fe04f5677f97b942ef82745cf27785661bd8fa0fd8ce0f587e87eb502fdf04cc3a365b06385b130c8ec2938ac8fc09d364e228eccb482c9b0f8f92181fefa6a07b140469d24d20f3f23318888704470954e596875d048e76fbec60b70058fbb9db7977ed9bbb7a5ada08454a7eb24f3df5cf147342d82f2c3937cfde2fb82318be76d34a7327343c1aa3492587fc62f8d58974aa2fb99d71f72ecb870f88f14d7958a51718dcd71620810ea1c5921fa2ca2edf0e06f845f6c72f9ab301849a9306d8c2ebdf94c933e754038adbe0cf04ef56c75828640655adaf661623a237a561ee452239036fed1db82153f2f2d41c59dafc61e0370facdcc0a7850afafa2864067903c2363bad29d88c47658784ec3a878969bdd41c79cea8bc64168078c955f00c0539b29515e1b8fb79b7a1addf6912d222abe098844ed536b50d864c662c8d714de9ed44fbba92df5cf3bbf60b6b2e1fc4e138e9aa32fb747804add0c83217ec9faf776698ace0893b60e8707bf7b6c69afcfc90ff0429185c12e62983058bb00d1bc144ac9942773ba4252c413d61c711b8ae909298eafc1b1143037ee0ae04acd5a53e45e09a495e4df018bc7ea546f42207d32b0b7f4660145c596438add23f0addeeba9bc1bef60ca7c0ff5f0df3efb99311a1c4f5ab2829088928dd8c06bf6ee6d580e1586aa8b04babe70975c73b6229c252214deb7b0944b279b0fbb328c1f9d261ab7c56e32d8979e2301ea037acdbf17b793d043d0f050322e608b3545f28b745950162c372a8bdf0b8b0693dd1875b2afe2c53ca13f6060c9ad9adeda03b549d05b4b7ee336aa5f25f212dccab70e1502e63c95b14e1de8f229555aff7b667f42d50ecb7d52a338edb8df636666cc14784860bd225c1ce3c571d3c240e7016108112a28e3b1bffa5fc2424d00ca0e4d1a9c360c01960f7c4f073530b59c1e9f89c282c151d05e23604768ad829b28cabb163fdcf237b96beac6b0a675150d14dc21cc9a340ddf46b293adbf343d084288d42af1b0075fe1bb20dff0a56cb76d1af5a4dda60fda8ce22b9d84946731dfb7d2644041be388d3724b29c832194c3b06672706b6335c8f6edfba61784eb682600cf310068ea745b0a2b6f694f9927f4ee96666fc59979b3fda124447285a6c25f9545c0d31a02b61312b5357ab009e2234c289d31a7c19462fb19f8600bdc3bc014ef5109a9caff0cec3f69292ba97a5523140f9c8b6fd6a93541a6aab98d69afc3a15142632a2fa30ce84a222bc54c2f1609e1343504120033d0fc6d9d0f1e89e4b162438101598cd1dcc7a6adf437aef68ce7eee2d59bda1cfb523727913ccf708790d1c8176031aa54b27395072a5da3f019fb70f004daf26a6b3cf8199bfe2d910129c687d3fcfc915078be6795a62fec1ee3840a082e6799f425b4dba4fceece004610f5c5dec41d77a5f219fa545d9289bc4fbd4d343131fecdc08f51b70b5bf20fce0853b79a92a3020b24d8d30b9590ba7aeb5d21ea073ca06e7561759309c125443cc0e388a6817854164e53343790acd3fca09b4fe63551e36962d5e6b6d000000000000000000000000000000138c653ebd38b9541a7730797b67378fbb000000000000000000000000000000000022b5f6833e2feba197186871395f1a0000000000000000000000000000004195360eb5b2e8919f33ffd24ec45667ae00000000000000000000000000000000002e0759b4290e26bb367a255f71c37400000000000000000000000000000048f087e08a32dd5902ad77e8b63c0ce1aa000000000000000000000000000000000011bd3029deb0eea78dea69032e0fe10000000000000000000000000000000d8940cba561266eb68fd1819e9ccf266600000000000000000000000000000000001606f452f63b1503faa557385172cc000000000000000000000000000000a940e4c1fdedb86c855ff3f65f8c435c53000000000000000000000000000000000029279bc3313d0baab6f75285681d470000000000000000000000000000000db509d7d83caa9e6688a005bfdc39acc3000000000000000000000000000000000003150eaa4c36badcbd90d57eb4d4f1000000000000000000000000000000e30527693922131c7e1537df4147b4f20800000000000000000000000000000000001f231b0ad4e8ec95c699529c508992000000000000000000000000000000753fdea41f8da556cc31d6a55a088a10000000000000000000000000000000000000084093e15d78f4ff2d9362b8b0383c0000000000000000000000000000000210f8e1150ef8245c2d589e65c835cbe100000000000000000000000000000000002391c37fbb9dc83ff4f7194a7cb17b000000000000000000000000000000c7639db25c5ac60439bcf7bc25b817a68000000000000000000000000000000000002c535eed75edb75e8974c15d032db30000000000000000000000000000008f155fe1476a55576f6d9f435a098676fa00000000000000000000000000000000001899d2d288c84b70624837281353b60000000000000000000000000000003a936ec8831a5593a9bfa9ed8e3806af440000000000000000000000000000000000088f4bdfea48defb5977c3bce4c39d0000000000000000000000000000003d9ad5655d8f771652777d1f6314d108850000000000000000000000000000000000176ebb121345a61f92469e24ffe68f000000000000000000000000000000e50a7f1928a606b64700e6400c725f53f600000000000000000000000000000000001b10f8c2b99b86473f67266530976a000000000000000000000000000000f6487a261957cb0ec4f57875b92e077a6900000000000000000000000000000000000c77cc441e640cc0b82b3df6852a3e00000000000000000000000000000001916a21bd6d799bf03c726b580dddeda600000000000000000000000000000000002cbd6c91b9f28d7fe47f2622deec96000000000000000000000000000000060cbe8889babd29c557479c810d2d1bdf00000000000000000000000000000000000969755c5cafc0fc665743bd7f241c00000000000000000000000000000072bf6f29799cc4d1eed05613ec5eb0798b0000000000000000000000000000000000034097fe5a73fd30d13d4121efe9c10000000000000000000000000000001ed3a0ee6810867752e6bc20b85e021940000000000000000000000000000000000008c127efdb0ab1dd65d1fc997844640000000000000000000000000000009e3233984b592dec7ffbc03227f688ed2f00000000000000000000000000000000000718cbfbf4bff592d05c952c250e1b0000000000000000000000000000008e8d294d63051568d7b0088479c94922d5000000000000000000000000000000000009c457d5eb88cee5a6ef359f5c895100000000000000000000000000000046f03a5c0346c52ed39fce1ccb7d7fb5090000000000000000000000000000000000134a72d4e77f70b43f17ded1ee6a2d0000000000000000000000000000006589122e3f7896001610bd2b0820a0b84200000000000000000000000000000000001b6fe2895aff8263bda92ece36fcd4000000000000000000000000000000e456e87de8e398a3507e05ecdd5a89c6f000000000000000000000000000000000001427f1d2609ab79a697ab4f56f37da000000000000000000000000000000d4c54a6b65089fc6dc9ae06e9364cbeb47000000000000000000000000000000000029c07cc5d4ab5fcfb38e020e448c330000000000000000000000000000007ce247b72d215e0582b82648290620f5e600000000000000000000000000000000002cbf2b40b096e74574140b13b6e4ad0000000000000000000000000000003df1038894a9771f077d66a84894e46713000000000000000000000000000000000002769d3f95dc454e1eae83905bf75d00000000000000000000000000000075a62def0df696b147de3f12a8384aa25c0000000000000000000000000000000000053708284ab7c38cf5b5fed11ed23600000000000000000000000000000074b3fa2ee592f690a65f38027b9aa000a9000000000000000000000000000000000017888420e0e8828431083af194f8790000000000000000000000000000006680f430c808167ac0b10cbf97f4f10b1200000000000000000000000000000000002b1ccaf0084f8cacf6c6b91e290680000000000000000000000000000000cdde26be3c1b5310dc06ca011e233b528500000000000000000000000000000000001645f815cfc63452960f31022d72760000000000000000000000000000004299d6a3bf9f5832428459cbbcc0f889a700000000000000000000000000000000000d4fb8b83b6c3ede9c0998ee518a92000000000000000000000000000000eb550d4dd31a34fafd3e61bac4b8d7bbb100000000000000000000000000000000002d11f7ea6c6724be3a5b9019096758000000000000000000000000000000b833657ad1ce1dd0ac6e9de215eabaf9a6000000000000000000000000000000000029cc12530d21966a74e472e7e478c1000000000000000000000000000000b9c59114de63d9b7a4957199768a4bfb720000000000000000000000000000000000038b0ab10c641a1296cf00008b9fd70000000000000000000000000000001b7aba1112411382b8e4b810b67ec66cb5000000000000000000000000000000000020e31e966bf10387e298942d6a95c60000000000000000000000000000006d89917352bfa326bbf31b5a6fec80d2d200000000000000000000000000000000002570d649093c70410fdb32f69ed35b0000000000000000000000000000005776b03b18ec60a00245887f4be5798a8c000000000000000000000000000000000024f63b7efe7319dc180a37053e39dd000000000000000000000000000000bba286620620c1eafb586ff17a58a95db70000000000000000000000000000000000147c6c72a3a20e951bd2a40c525285000000000000000000000000000000f017df9329116e22df5af4b3be9cf8556900000000000000000000000000000000000dd2399a12001f293929d5cb6454b300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001dae9b5039bc89682a7c7583eac591cd952f8c4d7828246e8b4937d37225e1c616a6232888c39746961e2c7e7ef18e9f063b6271f6ad6d5ca575390ba0f432f4006741f4047f222e8b3cb819a7403566c6ceca8b5bbf4042272f90ad2ff7be2318a720e45c3632fa1421c4a8c9ee85db4f4bcfed589bd02e1d6c592738712425022fa69d94f07bb5cc1bb9ad117b5c0be4bdf1a406f306cbdcc6c543954008d31f673ad0c655a076b6004dd53031c197b93f96bfd16255e06dac12dd77ef183a25ae6837173f7d87b52c3bbda7ffbb5c90a1859c8480e7d2f1bbed25031b20cd2395ea7531828edc4cfbf25812e0fca4c0e45e893bbf3a88412c714e6704ca7f1e32db8f941e74de39a66e084e6312226bc0d4e48afa093d72531e5c69401c000270bd63e9369fa2c2ae26e295ce27b9df79edc522ea434f7d1772d9347793a41d77f2fee11dbc26787f355553e19d865c787082ab0c5b5b67508b2a5b7472aa1ac3c9b6a3943088c73602492a2f162b4a4c4c409c966f3131e5e39bd7e0c462299a93824e10c7db019d2c4b4ae5d19c1689f3eacd614d47d6e6706635c97c2f02279fb193cbf25416a850b4f2d0ec283514433ed267e7d60153c7f3eb03f1760831a824ddac8247f7a8d4127f0af7c8a1278b24ef947a4668e9202d9d17d2f628f6f6cb695d9eb3ac83ccea7cd92624e9e8ad875c4ff2f0726d499b3146db6f0127fa2189dde32863fe7c0f06aac90d04de2e99827ef2248ffe87c525f9ebdf274993ec7e4c7c375763110a52f19b7cc552c3be26654089b32b34207cb2855d15f0c3aca53f0e911f72c852ec892c7bcd9e6a6a1d2dd4ffcbf02499e8d50eae1a351843b516404e567c86ba5bffe6b1e12d03c226241cd990d57388dfbf70cb2e89d3215daf05b19e5bdc5a03893b84ceb3db11b50487958609d29f015a84c60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000156b210105ff8966b0ce42a53240ba1218000000000000000000000000000000000015bb855e9ee5085dabc2529bab707a0000000000000000000000000000008302060469ba3e66b50a6a6b004548bc3b0000000000000000000000000000000000099cc27777ab563adf5f313da1749a000000000000000000000000000000702811751682c1794e2def833fa6135f8900000000000000000000000000000000002b47fe446639d6440dee6e712b6cdf000000000000000000000000000000d296d53e3cfe890b95196148b61c987c77000000000000000000000000000000000019c6dba2c8e95658cf09a73331ddbd0000029c","publicInputs":"0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae000000010e431a24eaa7a481adb087b6ae8790630f93d642e55991c48481f8b68d3cf187000000032da55666630fdf8594065c377958c827dc1c130dac91f17c6699b53dce60ef750412972e58711f59a09ecb8420cf3193db944871cb6eb26b10c00c2f77150d77000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ac134ea3f9c61917bdf62507c89da98f3059d7caf13f2dff291591d4c03977823b36a2766961427b99fd8e7ced7b1615a71cde1e6c42114a6396bed32ad43bb00000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"} \ No newline at end of file diff --git a/yarn-project/prover-client/src/orchestrator/orchestrator.ts b/yarn-project/prover-client/src/orchestrator/orchestrator.ts index b9ebbed3571..175aa4233e8 100644 --- a/yarn-project/prover-client/src/orchestrator/orchestrator.ts +++ b/yarn-project/prover-client/src/orchestrator/orchestrator.ts @@ -233,6 +233,12 @@ export class ProvingOrchestrator implements EpochProver { [Attributes.BLOCK_TXS_COUNT]: txs.length, })) public async addTxs(txs: ProcessedTx[]): Promise { + if (!txs.length) { + // To avoid an ugly throw below. If we require an empty block, we can just call setBlockCompleted + // on a block with no txs. We cannot do that here because we cannot find the blockNumber without any txs. + logger.warn(`Provided no txs to orchestrator addTxs.`); + return; + } const blockNumber = txs[0].constants.globalVariables.blockNumber.toNumber(); const provingState = this.provingState?.getBlockProvingStateByBlockNumber(blockNumber!); if (!provingState) { diff --git a/yarn-project/prover-client/src/orchestrator/orchestrator_multiple_blocks.test.ts b/yarn-project/prover-client/src/orchestrator/orchestrator_multiple_blocks.test.ts index 81542252790..aec3c5d7f91 100644 --- a/yarn-project/prover-client/src/orchestrator/orchestrator_multiple_blocks.test.ts +++ b/yarn-project/prover-client/src/orchestrator/orchestrator_multiple_blocks.test.ts @@ -70,10 +70,8 @@ describe('prover/orchestrator/multi-block', () => { context.orchestrator.startNewEpoch(epochIndex + 1, epochIndex * numBlocks + 1, numBlocks); await Promise.all( blocks.slice(epochIndex * numBlocks, (epochIndex + 1) * numBlocks).map(async ({ block, txs }) => { - await context.orchestrator.startNewBlock(Math.max(txCount, 2), block.header.globalVariables, []); - for (const tx of txs) { - await context.orchestrator.addNewTx(tx); - } + await context.orchestrator.startNewBlock(block.header.globalVariables, []); + await context.orchestrator.addTxs(txs); await context.orchestrator.setBlockCompleted(block.number); }), ); From 25d5ba07a2ae62572e57b554f7a3d340e55e2254 Mon Sep 17 00:00:00 2001 From: MirandaWood Date: Tue, 3 Dec 2024 18:27:15 +0000 Subject: [PATCH 13/39] chore: some orch cleanup --- .../src/orchestrator/block-proving-state.ts | 9 +++++---- .../prover-client/src/orchestrator/orchestrator.ts | 8 ++++---- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/yarn-project/prover-client/src/orchestrator/block-proving-state.ts b/yarn-project/prover-client/src/orchestrator/block-proving-state.ts index 82f099e1634..0c22fe718f5 100644 --- a/yarn-project/prover-client/src/orchestrator/block-proving-state.ts +++ b/yarn-project/prover-client/src/orchestrator/block-proving-state.ts @@ -45,8 +45,8 @@ export class BlockProvingState { public blockRootRollupStarted: boolean = false; public finalProof: Proof | undefined; public block: L2Block | undefined; - public spongeBlobState: SpongeBlob | undefined = undefined; - public totalNumTxs: number | undefined; + public spongeBlobState: SpongeBlob | undefined; + public totalNumTxs: number; private txs: TxProvingState[] = []; public error: string | undefined; @@ -63,6 +63,7 @@ export class BlockProvingState { private readonly parentEpoch: EpochProvingState, ) { this.rootParityInputs = Array.from({ length: NUM_BASE_PARITY_PER_ROOT_PARITY }).map(_ => undefined); + this.totalNumTxs = 0; } public get blockNumber() { @@ -71,7 +72,7 @@ export class BlockProvingState { // Returns the number of levels of merge rollups public get numMergeLevels() { - return BigInt(Math.ceil(Math.log2(this.totalNumTxs!)) - 1); + return BigInt(Math.ceil(Math.log2(this.totalNumTxs)) - 1); } // Calculates the index and level of the parent rollup circuit @@ -85,7 +86,7 @@ export class BlockProvingState { index >>= 1n; return { thisLevelSize: levelSize, thisIndex: index, shiftUp: nodeToShift }; }; - let [thisLevelSize, shiftUp] = this.totalNumTxs! & 1 ? [this.totalNumTxs! - 1, true] : [this.totalNumTxs!, false]; + let [thisLevelSize, shiftUp] = this.totalNumTxs & 1 ? [this.totalNumTxs - 1, true] : [this.totalNumTxs, false]; const maxLevel = this.numMergeLevels + 1n; let placeholder = currentIndex; for (let i = 0; i < maxLevel - currentLevel; i++) { diff --git a/yarn-project/prover-client/src/orchestrator/orchestrator.ts b/yarn-project/prover-client/src/orchestrator/orchestrator.ts index 175aa4233e8..301c501783e 100644 --- a/yarn-project/prover-client/src/orchestrator/orchestrator.ts +++ b/yarn-project/prover-client/src/orchestrator/orchestrator.ts @@ -263,7 +263,7 @@ export class ProvingOrchestrator implements EpochProver { if (tx.isEmpty) { logger.warn(`Ignoring empty transaction ${tx.hash} - it will not be added to this block`); - return; + continue; } const [hints, treeSnapshots] = await this.prepareTransaction(tx, provingState); @@ -292,7 +292,7 @@ export class ProvingOrchestrator implements EpochProver { throw new Error(`Block proving state for ${blockNumber} not found`); } - if (provingState.totalNumTxs === undefined) { + if (!provingState.spongeBlobState) { // If we are completing an empty block, initialise the provingState. // We will have 2 padding txs, and => no blob fields. provingState.startNewBlock(2, 0); @@ -303,8 +303,8 @@ export class ProvingOrchestrator implements EpochProver { } // We may need to pad the rollup with empty transactions - const paddingTxCount = provingState.totalNumTxs! - provingState.transactionsReceived; - if (paddingTxCount > 0 && provingState.totalNumTxs! > 2) { + const paddingTxCount = provingState.totalNumTxs - provingState.transactionsReceived; + if (paddingTxCount > 0 && provingState.totalNumTxs > 2) { throw new Error(`Block not ready for completion: expecting ${paddingTxCount} more transactions.`); } From 933191bdee5c5be7625ffd16448bdda1b815368c Mon Sep 17 00:00:00 2001 From: MirandaWood Date: Tue, 3 Dec 2024 18:28:55 +0000 Subject: [PATCH 14/39] chore: remake consts after merge --- l1-contracts/src/core/libraries/ConstantsGen.sol | 2 +- yarn-project/circuits.js/src/constants.gen.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/l1-contracts/src/core/libraries/ConstantsGen.sol b/l1-contracts/src/core/libraries/ConstantsGen.sol index e436165c6a5..9784ee777bb 100644 --- a/l1-contracts/src/core/libraries/ConstantsGen.sol +++ b/l1-contracts/src/core/libraries/ConstantsGen.sol @@ -205,7 +205,7 @@ library Constants { uint256 internal constant TOTAL_MANA_USED_LENGTH = 1; uint256 internal constant HEADER_LENGTH = 25; uint256 internal constant HEADER_LENGTH_BYTES = 648; - uint256 internal constant PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 731; + uint256 internal constant PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 739; uint256 internal constant PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 867; uint256 internal constant PRIVATE_CONTEXT_INPUTS_LENGTH = 38; uint256 internal constant FEE_RECIPIENT_LENGTH = 2; diff --git a/yarn-project/circuits.js/src/constants.gen.ts b/yarn-project/circuits.js/src/constants.gen.ts index 71280349206..e38b9b4e615 100644 --- a/yarn-project/circuits.js/src/constants.gen.ts +++ b/yarn-project/circuits.js/src/constants.gen.ts @@ -183,7 +183,7 @@ export const TOTAL_FEES_LENGTH = 1; export const TOTAL_MANA_USED_LENGTH = 1; export const HEADER_LENGTH = 25; export const HEADER_LENGTH_BYTES = 648; -export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 731; +export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 739; export const PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 867; export const PRIVATE_CONTEXT_INPUTS_LENGTH = 38; export const FEE_RECIPIENT_LENGTH = 2; From 5dd97e3f7430c6393385cc3dbe59401fb78d71e6 Mon Sep 17 00:00:00 2001 From: MirandaWood Date: Wed, 4 Dec 2024 20:06:42 +0000 Subject: [PATCH 15/39] feat: redo blob publishing --- yarn-project/ethereum/src/l1_tx_utils.ts | 17 +- .../src/publisher/l1-publisher.test.ts | 19 ++- .../src/publisher/l1-publisher.ts | 152 ++++++++++-------- 3 files changed, 108 insertions(+), 80 deletions(-) diff --git a/yarn-project/ethereum/src/l1_tx_utils.ts b/yarn-project/ethereum/src/l1_tx_utils.ts index f95610303b7..c8c0c3b3d90 100644 --- a/yarn-project/ethereum/src/l1_tx_utils.ts +++ b/yarn-project/ethereum/src/l1_tx_utils.ts @@ -129,6 +129,12 @@ export interface L1TxRequest { value?: bigint; } +export interface L1BlobInputs { + blobs: Uint8Array[]; + kzg: any; + maxFeePerBlobGas: bigint; +} + interface GasPrice { maxFeePerGas: bigint; maxPriorityFeePerGas: bigint; @@ -158,6 +164,7 @@ export class L1TxUtils { public async sendTransaction( request: L1TxRequest, _gasConfig?: Partial & { fixedGas?: bigint }, + _blobInputs?: L1BlobInputs, ): Promise<{ txHash: Hex; gasLimit: bigint; gasPrice: GasPrice }> { const gasConfig = { ...this.config, ..._gasConfig }; const account = this.walletClient.account; @@ -171,8 +178,10 @@ export class L1TxUtils { const gasPrice = await this.getGasPrice(gasConfig); + const blobInputs = _blobInputs || {}; const txHash = await this.walletClient.sendTransaction({ ...request, + ...blobInputs, gas: gasLimit, maxFeePerGas: gasPrice.maxFeePerGas, maxPriorityFeePerGas: gasPrice.maxPriorityFeePerGas, @@ -197,9 +206,11 @@ export class L1TxUtils { initialTxHash: Hex, params: { gasLimit: bigint }, _gasConfig?: Partial, + _blobInputs?: L1BlobInputs, ): Promise { const gasConfig = { ...this.config, ..._gasConfig }; const account = this.walletClient.account; + const blobInputs = _blobInputs || {}; // Retry a few times, in case the tx is not yet propagated. const tx = await retry( @@ -286,6 +297,7 @@ export class L1TxUtils { currentTxHash = await this.walletClient.sendTransaction({ ...request, + ...blobInputs, nonce, gas: params.gasLimit, maxFeePerGas: newGasPrice.maxFeePerGas, @@ -320,9 +332,10 @@ export class L1TxUtils { public async sendAndMonitorTransaction( request: L1TxRequest, gasConfig?: Partial & { fixedGas?: bigint }, + blobInputs?: L1BlobInputs, ): Promise { - const { txHash, gasLimit } = await this.sendTransaction(request, gasConfig); - return this.monitorTransaction(request, txHash, { gasLimit }, gasConfig); + const { txHash, gasLimit } = await this.sendTransaction(request, gasConfig, blobInputs); + return this.monitorTransaction(request, txHash, { gasLimit }, gasConfig, blobInputs); } /** diff --git a/yarn-project/sequencer-client/src/publisher/l1-publisher.test.ts b/yarn-project/sequencer-client/src/publisher/l1-publisher.test.ts index 58cd4051064..64ac88119d5 100644 --- a/yarn-project/sequencer-client/src/publisher/l1-publisher.test.ts +++ b/yarn-project/sequencer-client/src/publisher/l1-publisher.test.ts @@ -1,5 +1,5 @@ import { L2Block } from '@aztec/circuit-types'; -import { EthAddress, Fr } from '@aztec/circuits.js'; +import { EthAddress } from '@aztec/circuits.js'; import { type L1ContractsConfig, type L1TxRequest, @@ -16,7 +16,6 @@ import { NoopTelemetryClient } from '@aztec/telemetry-client/noop'; import { type MockProxy, mock } from 'jest-mock-extended'; import { type GetTransactionReceiptReturnType, - type Kzg, type PrivateKeyAccount, type TransactionReceipt, encodeFunctionData, @@ -31,6 +30,7 @@ interface MockPublicClient { getTransactionReceipt: ({ hash }: { hash: '0x${string}' }) => Promise; getBlock(): Promise<{ timestamp: bigint }>; getTransaction: ({ hash }: { hash: '0x${string}' }) => Promise<{ input: `0x${string}`; hash: `0x${string}` }>; + estimateGas: ({ to, data }: { to: '0x${string}'; data: '0x${string}' }) => Promise; } interface MockL1TxUtils { @@ -70,6 +70,7 @@ class MockRollupContract { describe('L1Publisher', () => { let rollupContractRead: MockProxy; + let rollupContractWrite: MockProxy; let rollupContract: MockRollupContract; let publicClient: MockProxy; @@ -86,6 +87,8 @@ describe('L1Publisher', () => { let publisher: L1Publisher; + const GAS_GUESS = 300_000n; + beforeEach(() => { l2Block = L2Block.random(42); @@ -102,8 +105,9 @@ describe('L1Publisher', () => { logs: [], } as unknown as GetTransactionReceiptReturnType; + rollupContractWrite = mock(); rollupContractRead = mock(); - rollupContract = new MockRollupContract(rollupContractRead); + rollupContract = new MockRollupContract(rollupContractWrite, rollupContractRead); publicClient = mock(); l1TxUtils = mock(); @@ -111,9 +115,7 @@ describe('L1Publisher', () => { l1RpcUrl: `http://127.0.0.1:8545`, l1ChainId: 1, publisherPrivateKey: `0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80`, - l1Contracts: { - rollupAddress: rollupContract.address, - }, + l1Contracts: { rollupAddress: EthAddress.ZERO.toString() }, l1PublishRetryIntervalMS: 1, ethereumSlotDuration: getL1ContractsConfigEnvVars().ethereumSlotDuration, ...defaultL1TxUtilsConfig, @@ -138,12 +140,14 @@ describe('L1Publisher', () => { it('publishes and propose l2 block to l1', async () => { rollupContractRead.archive.mockResolvedValue(l2Block.header.lastArchive.root.toString() as `0x${string}`); - walletClient.sendTransaction.mockResolvedValueOnce(proposeTxHash); + rollupContractWrite.propose.mockResolvedValueOnce(proposeTxHash); const result = await publisher.proposeL2Block(l2Block); expect(result).toEqual(true); + const kzg = Blob.getViemKzgInstance(); + const blobs = Blob.getBlobs(l2Block.body.toBlobFields()); const blobInput = Blob.getEthBlobEvaluationInputs(blobs); @@ -169,6 +173,7 @@ describe('L1Publisher', () => { data: encodeFunctionData({ abi: rollupContract.abi, functionName: 'propose', args }), }, { fixedGas: GAS_GUESS + L1Publisher.PROPOSE_GAS_GUESS }, + { blobs: blobs.map(b => b.data), kzg, maxFeePerBlobGas: 10000000000n }, ); }); diff --git a/yarn-project/sequencer-client/src/publisher/l1-publisher.ts b/yarn-project/sequencer-client/src/publisher/l1-publisher.ts index c986f60f6bc..1d0e1db4381 100644 --- a/yarn-project/sequencer-client/src/publisher/l1-publisher.ts +++ b/yarn-project/sequencer-client/src/publisher/l1-publisher.ts @@ -34,13 +34,13 @@ import { createDebugLogger } from '@aztec/foundation/log'; import { type Tuple, serializeToBuffer } from '@aztec/foundation/serialize'; import { InterruptibleSleep } from '@aztec/foundation/sleep'; import { Timer } from '@aztec/foundation/timer'; -import { GovernanceProposerAbi, RollupAbi } from '@aztec/l1-artifacts'; +import { BlobLibAbi, GovernanceProposerAbi, RollupAbi } from '@aztec/l1-artifacts'; import { type TelemetryClient } from '@aztec/telemetry-client'; import pick from 'lodash.pick'; import { inspect } from 'util'; import { - BaseError, + type BaseError, type Chain, type Client, type ContractFunctionExecutionError, @@ -71,7 +71,7 @@ import { privateKeyToAccount } from 'viem/accounts'; import { type PublisherConfig, type TxSenderConfig } from './config.js'; import { L1PublisherMetrics } from './l1-publisher-metrics.js'; -import { prettyLogViemErrorMsg } from './utils.js'; +import { prettyLogViemError, prettyLogViemErrorMsg } from './utils.js'; /** * Stats for a sent transaction. @@ -531,7 +531,7 @@ export class L1Publisher { return false; } - const { receipt, args, functionName, err } = result; + const { receipt, args, functionName, data } = result; // Tx was mined successfully if (receipt.status === 'success') { @@ -550,34 +550,44 @@ export class L1Publisher { } this.metrics.recordFailedTx('process'); - - if (err instanceof BaseError) { - const errorMsg = await this.tryGetErrorFromRevertedTx(txHash, { + const kzg = Blob.getViemKzgInstance(); + const errorMsg = await this.tryGetErrorFromRevertedTx( + data, + { args, functionName, abi: RollupAbi, address: this.rollupContract.address, - }); - this.log.error(`Rollup process tx reverted. ${errorMsg}`, undefined, { - ...ctx, - }); - this.metrics.recordFailedTx('process'); - return false; - } + }, + { + blobs: proposeTxArgs.blobs.map(b => b.data), + kzg, + maxFeePerBlobGas: 10000000000n, + }, + ); + this.log.error(`Rollup process tx reverted. ${errorMsg}`, undefined, { + ...ctx, + txHash: receipt.transactionHash, + }); await this.sleepOrInterrupted(); return false; } private async tryGetErrorFromRevertedTx( - err: any, + data: Hex, args: { args: any[]; functionName: string; abi: any; address: Hex; }, + _blobInputs?: { + blobs: Uint8Array[]; + kzg: any; + maxFeePerBlobGas: bigint; + }, ) { - // We keep the input err since the below is not able to catch blob errors + const blobInputs = _blobInputs || {}; try { // NB: If this fn starts unexpectedly giving incorrect blob hash errors, it may be because the checkBlob // bool is no longer at the slot below. To find the slot, run: forge inspect src/core/Rollup.sol:Rollup storage @@ -597,22 +607,35 @@ export class L1Publisher { }, ], }); - // If the above passes, then the original error was due to blobs, and we throw it here: - throw err; + // If the above passes, we have a blob error. We cannot simulate blob txs, and failed txs no longer throw errors, + // and viem provides no way to get the revert reason from a given tx. + // Strangely, the only way to throw the revert reason as an error and provide blobs is prepareTransactionRequest. + // See: https://github.com/wevm/viem/issues/2075 + // This throws a EstimateGasExecutionError with the custom error information: + await this.walletClient.prepareTransactionRequest({ + account: this.walletClient.account, + to: this.rollupContract.address, + data, + ...blobInputs, + }); + return undefined; } catch (simulationErr: any) { + // If we don't have a ContractFunctionExecutionError, we have a blob related error => use BlobLibAbi to get the error msg. const contractErr = simulationErr.name === 'ContractFunctionExecutionError' ? simulationErr : getContractError(simulationErr as BaseError, { - ...args, + args: [], + abi: BlobLibAbi, + functionName: args.functionName, + address: args.address, sender: this.account.address, - docsPath: '/docs/contract/simulateContract', }); if (contractErr.name === 'ContractFunctionExecutionError') { const execErr = contractErr as ContractFunctionExecutionError; return tryGetCustomErrorNameContractFunction(execErr); } - this.log.error(`Error getting error from viem`, err); + this.log.error(`Error getting error from simulation`, simulationErr); } } @@ -786,7 +809,7 @@ export class L1Publisher { // we will fail estimation in the case where we are simulating for the // first ethereum block within our slot (as current time is not in the // slot yet). - const gasGuesstimate = proposeGas + gasGuess; + const gasGuesstimate = proposeGas + L1Publisher.PROPOSE_GAS_GUESS; const attestations = encodedData.attestations ? encodedData.attestations.map(attest => attest.toViemSignature()) : []; @@ -844,101 +867,88 @@ export class L1Publisher { private async sendProposeTx( encodedData: L1ProcessArgs, - ): Promise<{ receipt: TransactionReceipt; args: any; functionName: string; err: any | undefined } | undefined> { + ): Promise<{ receipt: TransactionReceipt | undefined; args: any; functionName: string; data: Hex } | undefined> { if (this.interrupted) { return undefined; } - const { args } = this.prepareProposeTx(encodedData, L1Publisher.PROPOSE_GAS_GUESS); try { - const { args, gas } = await this.prepareProposeTx(encodedData); - // const kzg = Blob.getViemKzgInstance(); - // hash: await this.walletClient.sendTransaction({ - // data, - // account: this.account, - // to: this.rollupContract.address, - // blobs: encodedData.blobs.map(b => b.data), - // kzg, - // maxFeePerBlobGas: 10000000000n, //This is 10 gwei, taken from DEFAULT_MAX_FEE_PER_GAS + const kzg = Blob.getViemKzgInstance(); + const { args, gas } = this.prepareProposeTx(encodedData); + const data = encodeFunctionData({ + abi: this.rollupContract.abi, + functionName: 'propose', + args, + }); const receipt = await this.l1TxUtils.sendAndMonitorTransaction( { to: this.rollupContract.address, - data: encodeFunctionData({ - abi: this.rollupContract.abi, - functionName: 'propose', - args, - }), + data, }, { fixedGas: gas, }, + { + blobs: encodedData.blobs.map(b => b.data), + kzg, + maxFeePerBlobGas: 10000000000n, //This is 10 gwei, taken from DEFAULT_MAX_FEE_PER_GAS} + }, ); return { receipt, args, functionName: 'propose', - err: undefined, + data, }; } catch (err) { prettyLogViemError(err, this.log); - return { - hash: `0x00`, - args, - functionName: 'propose', - err, - }; + const errorMessage = err instanceof Error ? err.message : String(err); + this.log.error(`Rollup publish failed`, errorMessage); + return undefined; } } private async sendProposeAndClaimTx( encodedData: L1ProcessArgs, quote: EpochProofQuote, - ): Promise<{ receipt: TransactionReceipt; args: any; functionName: string; err: any | undefined } | undefined> { + ): Promise<{ receipt: TransactionReceipt | undefined; args: any; functionName: string; data: Hex } | undefined> { if (this.interrupted) { return undefined; } - const { args } = this.prepareProposeTx(encodedData, L1Publisher.PROPOSE_AND_CLAIM_GAS_GUESS); try { this.log.info(`ProposeAndClaim`); this.log.info(inspect(quote.payload)); - const { args, gas } = await this.prepareProposeTx(encodedData); const kzg = Blob.getViemKzgInstance(); - - // // Viem does not allow sending a blob via contract.write() - // return { - // hash: await this.walletClient.sendTransaction({ - // data, - // account: this.account, - // to: this.rollupContract.address, - // blobs: encodedData.blobs.map(b => b.data), - // kzg, - // maxFeePerBlobGas: 10000000000n, //This is 10 gwei, taken from DEFAULT_MAX_FEE_PER_GAS - // }), + const { args, gas } = this.prepareProposeTx(encodedData); + const data = encodeFunctionData({ + abi: this.rollupContract.abi, + functionName: 'proposeAndClaim', + args: [...args, quote.toViemArgs()], + }); const receipt = await this.l1TxUtils.sendAndMonitorTransaction( { to: this.rollupContract.address, - data: encodeFunctionData({ - abi: this.rollupContract.abi, - functionName: 'proposeAndClaim', - args: [...args, quote.toViemArgs()], - }), + data, }, { fixedGas: gas }, + { + blobs: encodedData.blobs.map(b => b.data), + kzg, + maxFeePerBlobGas: 10000000000n, //This is 10 gwei, taken from DEFAULT_MAX_FEE_PER_GAS} + }, ); return { receipt, - args, + args: [...args, quote.toViemArgs()], functionName: 'proposeAndClaim', + data, }; } catch (err) { prettyLogViemError(err, this.log); - return { - hash: `0x00`, - args: [...args, quote.toViemArgs()], - functionName: 'proposeAndClaim', - err, - }; + const errorMessage = err instanceof Error ? err.message : String(err); + this.log.error(`Rollup publish failed`, errorMessage); + return undefined; } } From 6c0a22a88d523efb27c73fdd9800eae3d20a201a Mon Sep 17 00:00:00 2001 From: MirandaWood Date: Thu, 5 Dec 2024 09:31:38 +0000 Subject: [PATCH 16/39] feat: rearrange all blob l1 logic, replicate in ts --- l1-contracts/src/core/Rollup.sol | 41 ++++--- l1-contracts/src/core/interfaces/IRollup.sol | 5 + .../src/core/libraries/ConstantsGen.sol | 1 + .../libraries/{ => RollupLibs}/BlobLib.sol | 30 ++--- .../libraries/RollupLibs/EpochProofLib.sol | 108 ++++++++++++++++-- .../libraries/RollupLibs/ExtRollupLib.sol | 21 +++- .../core/libraries/RollupLibs/HeaderLib.sol | 2 +- .../libraries/RollupLibs/ValidationLib.sol | 6 +- .../src/core/libraries/crypto/MerkleLib.sol | 78 ++++++------- l1-contracts/test/Rollup.t.sol | 18 ++- l1-contracts/test/base/Base.sol | 4 +- l1-contracts/test/decoders/Decoders.t.sol | 3 +- l1-contracts/test/portals/UniswapPortal.t.sol | 2 +- .../crates/types/src/constants.nr | 1 + yarn-project/circuits.js/src/constants.gen.ts | 1 + .../composed/integration_l1_publisher.test.ts | 4 +- .../ethereum/src/deploy_l1_contracts.ts | 16 --- .../src/publisher/l1-publisher.ts | 9 +- 18 files changed, 223 insertions(+), 127 deletions(-) rename l1-contracts/src/core/libraries/{ => RollupLibs}/BlobLib.sol (78%) diff --git a/l1-contracts/src/core/Rollup.sol b/l1-contracts/src/core/Rollup.sol index 2b72fb567a0..947f04c206f 100644 --- a/l1-contracts/src/core/Rollup.sol +++ b/l1-contracts/src/core/Rollup.sol @@ -20,7 +20,6 @@ import {IVerifier} from "@aztec/core/interfaces/IVerifier.sol"; import {IInbox} from "@aztec/core/interfaces/messagebridge/IInbox.sol"; import {IOutbox} from "@aztec/core/interfaces/messagebridge/IOutbox.sol"; import {Leonidas} from "@aztec/core/Leonidas.sol"; -import {BlobLib} from "@aztec/core/libraries/BlobLib.sol"; import {Constants} from "@aztec/core/libraries/ConstantsGen.sol"; import {MerkleLib} from "@aztec/core/libraries/crypto/MerkleLib.sol"; import {Signature} from "@aztec/core/libraries/crypto/SignatureLib.sol"; @@ -78,6 +77,8 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { address public constant VM_ADDRESS = address(uint160(uint256(keccak256("hevm cheat code")))); bool public immutable IS_FOUNDRY_TEST; + // @note Always true, exists to override to false for testing only + bool public checkBlob = true; uint256 public immutable CLAIM_DURATION_IN_L2_SLOTS; uint256 public immutable L1_BLOCK_AT_GENESIS; @@ -89,13 +90,6 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { IRewardDistributor public immutable REWARD_DISTRIBUTOR; IERC20 public immutable ASSET; - // The below public inputs are filled when proposing a block, then used to verify an epoch proof. - // TODO(#8955): When implementing batched kzg proofs, store one instance per epoch rather than block - // TODO(Miranda): move to rollupstore - mapping(uint256 blockNumber => bytes32) public blobPublicInputsHashes; - // @note Always true, exists to override to false for testing only - bool public checkBlob = true; - RollupStore internal rollupStore; // @note Assume that all blocks up to this value (inclusive) are automatically proven. Speeds up bootstrapping. @@ -150,7 +144,7 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { }); rollupStore.l1GasOracleValues = L1GasOracleValues({ pre: L1FeeData({baseFee: 1 gwei, blobFee: 1}), - post: L1FeeData({baseFee: block.basefee, blobFee: BlobLib.getBlobBaseFee(VM_ADDRESS)}), + post: L1FeeData({baseFee: block.basefee, blobFee: ExtRollupLib.getBlobBaseFee(VM_ADDRESS)}), slotOfChange: LIFETIME }); for (uint256 i = 0; i < _validators.length; i++) { @@ -233,6 +227,7 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { ProposeArgs calldata _args, Signature[] memory _signatures, bytes calldata _body, + bytes calldata _blobInput, SignedEpochProofQuote calldata _quote ) external override(IRollup) { propose(_args, _signatures, _body, _blobInput); @@ -344,10 +339,11 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { uint256 _epochSize, bytes32[7] calldata _args, bytes32[] calldata _fees, + bytes calldata _blobPublicInputs, bytes calldata _aggregationObject ) external view override(IRollup) returns (bytes32[] memory) { return ExtRollupLib.getEpochProofPublicInputs( - rollupStore, _epochSize, _args, _fees, _aggregationObject + rollupStore, _epochSize, _args, _fees, _blobPublicInputs, _aggregationObject ); } @@ -487,7 +483,8 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { // Since an invalid blob hash here would fail the consensus checks of // the header, the `blobInput` is implicitly accepted by consensus as well. - (bytes32 blobsHash, bytes32 blobPublicInputsHash) = BlobLib.validateBlobs(_blobInput, checkBlob); + (bytes32 blobsHash, bytes32 blobPublicInputsHash) = + ExtRollupLib.validateBlobs(_blobInput, checkBlob); // Decode and validate header Header memory header = ExtRollupLib.decodeHeader(_args.header); @@ -512,7 +509,7 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { rollupStore.blocks[blockNumber] = _toBlockLog(_args, blockNumber, components.congestionCost); } - blobPublicInputsHashes[blockNumber] = blobPublicInputsHash; + rollupStore.blobPublicInputsHashes[blockNumber] = blobPublicInputsHash; // @note The block number here will always be >=1 as the genesis block is at 0 { @@ -566,7 +563,7 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { rollupStore.l1GasOracleValues.pre = rollupStore.l1GasOracleValues.post; rollupStore.l1GasOracleValues.post = - L1FeeData({baseFee: block.basefee, blobFee: BlobLib.getBlobBaseFee(VM_ADDRESS)}); + L1FeeData({baseFee: block.basefee, blobFee: ExtRollupLib.getBlobBaseFee(VM_ADDRESS)}); rollupStore.l1GasOracleValues.slotOfChange = slot + LAG; } @@ -587,7 +584,9 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { override(IRollup) returns (L1FeeData memory) { - return getSlotAt(_timestamp) < rollupStore.l1GasOracleValues.slotOfChange ? rollupStore.l1GasOracleValues.pre : rollupStore.l1GasOracleValues.post; + return getSlotAt(_timestamp) < rollupStore.l1GasOracleValues.slotOfChange + ? rollupStore.l1GasOracleValues.pre + : rollupStore.l1GasOracleValues.post; } /** @@ -696,6 +695,15 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { return rollupStore.blocks[_blockNumber]; } + function getBlobPublicInputsHash(uint256 _blockNumber) + public + view + override(IRollup) + returns (bytes32) + { + return rollupStore.blobPublicInputsHashes[_blockNumber]; + } + function getEpochForBlock(uint256 _blockNumber) public view override(IRollup) returns (Epoch) { require( _blockNumber <= rollupStore.tips.pendingBlockNumber, @@ -729,7 +737,9 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { * @return bytes32 - The archive root of the block */ function archiveAt(uint256 _blockNumber) public view override(IRollup) returns (bytes32) { - return _blockNumber <= rollupStore.tips.pendingBlockNumber ? rollupStore.blocks[_blockNumber].archive : bytes32(0); + return _blockNumber <= rollupStore.tips.pendingBlockNumber + ? rollupStore.blocks[_blockNumber].archive + : bytes32(0); } function canPrune() public view override(IRollup) returns (bool) { @@ -864,7 +874,6 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { } // Helper to avoid stack too deep - // TODO(Miranda) move to lib function _toBlockLog(ProposeArgs calldata _args, uint256 _blockNumber, uint256 _congestionCost) internal view diff --git a/l1-contracts/src/core/interfaces/IRollup.sol b/l1-contracts/src/core/interfaces/IRollup.sol index f488c94d970..cf24aba3be3 100644 --- a/l1-contracts/src/core/interfaces/IRollup.sol +++ b/l1-contracts/src/core/interfaces/IRollup.sol @@ -44,8 +44,11 @@ struct L1GasOracleValues { Slot slotOfChange; } +// The below blobPublicInputsHashes are filled when proposing a block, then used to verify an epoch proof. +// TODO(#8955): When implementing batched kzg proofs, store one instance per epoch rather than block struct RollupStore { mapping(uint256 blockNumber => BlockLog log) blocks; + mapping(uint256 blockNumber => bytes32) blobPublicInputsHashes; ChainTips tips; bytes32 vkTreeRoot; bytes32 protocolContractTreeRoot; @@ -93,6 +96,7 @@ interface IRollup { ProposeArgs calldata _args, Signature[] memory _signatures, bytes calldata _body, + bytes calldata _blobInput, SignedEpochProofQuote calldata _quote ) external; @@ -145,6 +149,7 @@ interface IRollup { function canPruneAtTime(Timestamp _ts) external view returns (bool); function getProvenBlockNumber() external view returns (uint256); function getPendingBlockNumber() external view returns (uint256); + function getBlobPublicInputsHash(uint256 _blockNumber) external view returns (bytes32); function getEpochToProve() external view returns (Epoch); function getClaimableEpoch() external view returns (Epoch); function validateEpochProofRightClaimAtTime(Timestamp _ts, SignedEpochProofQuote calldata _quote) diff --git a/l1-contracts/src/core/libraries/ConstantsGen.sol b/l1-contracts/src/core/libraries/ConstantsGen.sol index 9784ee777bb..9677a5cf27a 100644 --- a/l1-contracts/src/core/libraries/ConstantsGen.sol +++ b/l1-contracts/src/core/libraries/ConstantsGen.sol @@ -172,6 +172,7 @@ library Constants { uint256 internal constant APPEND_ONLY_TREE_SNAPSHOT_LENGTH_BYTES = 36; uint256 internal constant SPONGE_BLOB_LENGTH = 11; uint256 internal constant BLOB_PUBLIC_INPUTS = 6; + uint256 internal constant BLOB_PUBLIC_INPUTS_BYTES = 112; uint256 internal constant L1_TO_L2_MESSAGE_LENGTH = 6; uint256 internal constant L2_TO_L1_MESSAGE_LENGTH = 3; uint256 internal constant SCOPED_L2_TO_L1_MESSAGE_LENGTH = 4; diff --git a/l1-contracts/src/core/libraries/BlobLib.sol b/l1-contracts/src/core/libraries/RollupLibs/BlobLib.sol similarity index 78% rename from l1-contracts/src/core/libraries/BlobLib.sol rename to l1-contracts/src/core/libraries/RollupLibs/BlobLib.sol index bee1cf89b3c..0c1cec8f503 100644 --- a/l1-contracts/src/core/libraries/BlobLib.sol +++ b/l1-contracts/src/core/libraries/RollupLibs/BlobLib.sol @@ -2,6 +2,7 @@ // Copyright 2024 Aztec Labs. pragma solidity >=0.8.27; +import {Constants} from "@aztec/core/libraries/ConstantsGen.sol"; import {Hash} from "@aztec/core/libraries/crypto/Hash.sol"; import {Errors} from "@aztec/core/libraries/Errors.sol"; import {Vm} from "forge-std/Vm.sol"; @@ -15,7 +16,7 @@ library BlobLib { * * @return uint256 - The blob base fee */ - function getBlobBaseFee(address _vmAddress) public view returns (uint256) { + function getBlobBaseFee(address _vmAddress) internal view returns (uint256) { if (_vmAddress.code.length > 0) { return Vm(_vmAddress).getBlobBaseFee(); } @@ -31,7 +32,7 @@ library BlobLib { * @param _blobsInput - The above bytes to verify a blob */ function validateBlobs(bytes calldata _blobsInput, bool _checkBlob) - public + internal view returns (bytes32 blobsHash, bytes32 blobPublicInputsHash) { @@ -51,8 +52,10 @@ library BlobLib { // * input[64:96] - y // * input[96:144] - commitment C // Out of 192 bytes per blob. - blobPublicInputs = - abi.encodePacked(blobPublicInputs, _blobsInput[blobInputStart + 32:blobInputStart + 144]); + blobPublicInputs = abi.encodePacked( + blobPublicInputs, + _blobsInput[blobInputStart + 32:blobInputStart + 32 + Constants.BLOB_PUBLIC_INPUTS_BYTES] + ); } // Return the hash of all z, y, and Cs, so we can use them in proof verification later blobPublicInputsHash = sha256(blobPublicInputs); @@ -90,23 +93,4 @@ library BlobLib { (bool success,) = address(0x0a).staticcall(_blobInput); require(success, Errors.Rollup__InvalidBlobProof(blobHash)); } - - /** - * @notice Converts a BLS12 field element from bytes32 to a nr BigNum type - * The nr bignum type for BLS12 fields is encoded as 3 nr fields - see blob_public_inputs.ts: - * firstLimb = last 15 bytes; - * secondLimb = bytes 2 -> 17; - * thirdLimb = first 2 bytes; - * Used when verifying epoch proofs to gather blob specific public inputs. - * @param _input - The field in bytes32 - */ - function bytes32ToBigNum(bytes32 _input) - internal - pure - returns (bytes32 firstLimb, bytes32 secondLimb, bytes32 thirdLimb) - { - firstLimb = bytes32(uint256(uint120(bytes15(_input << 136)))); - secondLimb = bytes32(uint256(uint120(bytes15(_input << 16)))); - thirdLimb = bytes32(uint256(uint16(bytes2(_input)))); - } } diff --git a/l1-contracts/src/core/libraries/RollupLibs/EpochProofLib.sol b/l1-contracts/src/core/libraries/RollupLibs/EpochProofLib.sol index 6920c00cb4e..826afdb09ff 100644 --- a/l1-contracts/src/core/libraries/RollupLibs/EpochProofLib.sol +++ b/l1-contracts/src/core/libraries/RollupLibs/EpochProofLib.sol @@ -49,8 +49,25 @@ library EpochProofLib { Errors.Rollup__InvalidEpoch(_interimValues.startEpoch, _interimValues.epochToProve) ); + for (uint256 i = 0; i < _args.epochSize; i++) { + // This was moved from getEpochProofPublicInputs() due to stack too deep + uint256 blobOffset = i * Constants.BLOB_PUBLIC_INPUTS_BYTES + i; + uint8 blobsInBlock = uint8(_args.blobPublicInputs[blobOffset++]); + checkBlobPublicInputsHashes( + _args.blobPublicInputs, + _rollupStore.blobPublicInputsHashes[_interimValues.previousBlockNumber + i + 1], + blobOffset, + blobsInBlock + ); + } + bytes32[] memory publicInputs = getEpochProofPublicInputs( - _rollupStore, _args.epochSize, _args.args, _args.fees, _args.aggregationObject + _rollupStore, + _args.epochSize, + _args.args, + _args.fees, + _args.blobPublicInputs, + _args.aggregationObject ); require( @@ -144,6 +161,7 @@ library EpochProofLib { * @param _epochSize - The size of the epoch (to be promoted to a constant) * @param _args - Array of public inputs to the proof (previousArchive, endArchive, previousBlockHash, endBlockHash, endTimestamp, outHash, proverId) * @param _fees - Array of recipient-value pairs with fees to be distributed for the epoch + * @param _blobPublicInputs- The blob public inputs for the proof * @param _aggregationObject - The aggregation object for the proof */ function getEpochProofPublicInputs( @@ -151,6 +169,7 @@ library EpochProofLib { uint256 _epochSize, bytes32[7] calldata _args, bytes32[] calldata _fees, + bytes calldata _blobPublicInputs, bytes calldata _aggregationObject ) internal view returns (bytes32[] memory) { uint256 previousBlockNumber = _rollupStore.tips.provenBlockNumber; @@ -208,10 +227,11 @@ library EpochProofLib { // end_timestamp: u64, // end_block_number: Field, // out_hash: Field, - // fees: [FeeRecipient; Constants.AZTEC_EPOCH_DURATION], + // fees: [FeeRecipient; Constants.AZTEC_MAX_EPOCH_DURATION], // vk_tree_root: Field, // protocol_contract_tree_root: Field, - // prover_id: Field + // prover_id: Field, + // blob_public_inputs: [BlockBlobPublicInputs; Constants.AZTEC_MAX_EPOCH_DURATION], // <--This will be reduced to 1 if/when we implement multi-opening for blob verification // } // previous_archive.root: the previous archive tree root @@ -248,16 +268,45 @@ library EpochProofLib { for (uint256 i = 0; i < feesLength; i++) { publicInputs[9 + i] = _fees[i]; } - uint256 feesEnd = 9 + feesLength; + uint256 offset = 9 + feesLength; // vk_tree_root - publicInputs[feesEnd] = _rollupStore.vkTreeRoot; + publicInputs[offset] = _rollupStore.vkTreeRoot; + offset += 1; // protocol_contract_tree_root - publicInputs[feesEnd + 1] = _rollupStore.protocolContractTreeRoot; + publicInputs[offset] = _rollupStore.protocolContractTreeRoot; + offset += 1; // prover_id: id of current epoch's prover - publicInputs[feesEnd + 2] = _args[6]; + publicInputs[offset] = _args[6]; + offset += 1; + + // blob_public_inputs + uint256 blobOffset = 0; + for (uint256 i = 0; i < _epochSize; i++) { + uint8 blobsInBlock = uint8(_blobPublicInputs[blobOffset++]); + for (uint256 j = 0; j < Constants.BLOBS_PER_BLOCK; j++) { + if (j < blobsInBlock) { + // z + publicInputs[offset++] = bytes32(_blobPublicInputs[blobOffset:blobOffset += 32]); + // y + (publicInputs[offset++], publicInputs[offset++], publicInputs[offset++]) = + bytes32ToBigNum(bytes32(_blobPublicInputs[blobOffset:blobOffset += 32])); + // To fit into 2 fields, the commitment is split into 31 and 17 byte numbers + // See yarn-project/foundation/src/blob/index.ts -> commitmentToFields() + // TODO: The below left pads, possibly inefficiently + // c[0] + publicInputs[offset++] = + bytes32(uint256(uint248(bytes31(_blobPublicInputs[blobOffset:blobOffset += 31])))); + // c[1] + publicInputs[offset++] = + bytes32(uint256(uint136(bytes17(_blobPublicInputs[blobOffset:blobOffset += 17])))); + } else { + offset += Constants.BLOB_PUBLIC_INPUTS; + } + } + } // the block proof is recursive, which means it comes with an aggregation object // this snippet copies it into the public inputs needed for verification @@ -268,9 +317,52 @@ library EpochProofLib { assembly { part := calldataload(add(_aggregationObject.offset, mul(i, 32))) } - publicInputs[i + feesEnd + 3] = part; + publicInputs[i + Constants.ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH] = part; } return publicInputs; } + + /** + * Helper fn to prevent stack too deep. Checks blob public input hashes match for a block: + * @param _blobPublicInputs - The provided blob public inputs bytes array + * @param _blobPublicInputsHash - The stored blob public inputs hash + * @param _index - The index to start in _blobPublicInputs + * @param _blobsInBlock - The number of blobs in this block + */ + function checkBlobPublicInputsHashes( + bytes calldata _blobPublicInputs, + bytes32 _blobPublicInputsHash, + uint256 _index, + uint8 _blobsInBlock + ) internal pure { + bytes32 calcBlobPublicInputsHash = sha256( + abi.encodePacked( + _blobPublicInputs[_index:_index + Constants.BLOB_PUBLIC_INPUTS_BYTES * _blobsInBlock] + ) + ); + require( + calcBlobPublicInputsHash == _blobPublicInputsHash, + Errors.Rollup__InvalidBlobPublicInputsHash(_blobPublicInputsHash, calcBlobPublicInputsHash) + ); + } + + /** + * @notice Converts a BLS12 field element from bytes32 to a nr BigNum type + * The nr bignum type for BLS12 fields is encoded as 3 nr fields - see blob_public_inputs.ts: + * firstLimb = last 15 bytes; + * secondLimb = bytes 2 -> 17; + * thirdLimb = first 2 bytes; + * Used when verifying epoch proofs to gather blob specific public inputs. + * @param _input - The field in bytes32 + */ + function bytes32ToBigNum(bytes32 _input) + internal + pure + returns (bytes32 firstLimb, bytes32 secondLimb, bytes32 thirdLimb) + { + firstLimb = bytes32(uint256(uint120(bytes15(_input << 136)))); + secondLimb = bytes32(uint256(uint120(bytes15(_input << 16)))); + thirdLimb = bytes32(uint256(uint16(bytes2(_input)))); + } } diff --git a/l1-contracts/src/core/libraries/RollupLibs/ExtRollupLib.sol b/l1-contracts/src/core/libraries/RollupLibs/ExtRollupLib.sol index 4b51f8efef0..6100defd339 100644 --- a/l1-contracts/src/core/libraries/RollupLibs/ExtRollupLib.sol +++ b/l1-contracts/src/core/libraries/RollupLibs/ExtRollupLib.sol @@ -10,6 +10,7 @@ import {IRewardDistributor} from "@aztec/governance/interfaces/IRewardDistributo import {IERC20} from "@oz/token/ERC20/IERC20.sol"; import {DataStructures} from "./../DataStructures.sol"; import {Slot, Epoch} from "./../TimeMath.sol"; +import {BlobLib} from "./BlobLib.sol"; import { EpochProofLib, SubmitEpochRootProofAddresses, @@ -18,7 +19,6 @@ import { import {SignedEpochProofQuote} from "./EpochProofQuoteLib.sol"; import {FeeMath, ManaBaseFeeComponents, FeeHeader, L1FeeData} from "./FeeMath.sol"; import {HeaderLib, Header} from "./HeaderLib.sol"; -import {TxsDecoder} from "./TxsDecoder.sol"; import {ValidationLib, ValidateHeaderArgs} from "./ValidationLib.sol"; // We are using this library such that we can more easily "link" just a larger external library // instead of a few smaller ones. @@ -96,18 +96,27 @@ library ExtRollupLib { uint256 _epochSize, bytes32[7] calldata _args, bytes32[] calldata _fees, + bytes calldata _blobPublicInputs, bytes calldata _aggregationObject ) external view returns (bytes32[] memory) { return EpochProofLib.getEpochProofPublicInputs( - _rollupStore, _epochSize, _args, _fees, _aggregationObject + _rollupStore, _epochSize, _args, _fees, _blobPublicInputs, _aggregationObject ); } - function decodeHeader(bytes calldata _header) external pure returns (Header memory) { - return HeaderLib.decode(_header); + function validateBlobs(bytes calldata _blobsInput, bool _checkBlob) + external + view + returns (bytes32 blobsHash, bytes32 blobPublicInputsHash) + { + return BlobLib.validateBlobs(_blobsInput, _checkBlob); + } + + function getBlobBaseFee(address _vmAddress) external view returns (uint256) { + return BlobLib.getBlobBaseFee(_vmAddress); } - function computeTxsEffectsHash(bytes calldata _body) external pure returns (bytes32) { - return TxsDecoder.decode(_body); + function decodeHeader(bytes calldata _header) external pure returns (Header memory) { + return HeaderLib.decode(_header); } } diff --git a/l1-contracts/src/core/libraries/RollupLibs/HeaderLib.sol b/l1-contracts/src/core/libraries/RollupLibs/HeaderLib.sol index 808c517788e..56e36c1211b 100644 --- a/l1-contracts/src/core/libraries/RollupLibs/HeaderLib.sol +++ b/l1-contracts/src/core/libraries/RollupLibs/HeaderLib.sol @@ -114,7 +114,7 @@ library HeaderLib { * @param _header - The header calldata * @return The decoded header */ - function decode(bytes calldata _header) public pure returns (Header memory) { + function decode(bytes calldata _header) internal pure returns (Header memory) { require( _header.length == HEADER_LENGTH, Errors.HeaderLib__InvalidHeaderSize(HEADER_LENGTH, _header.length) diff --git a/l1-contracts/src/core/libraries/RollupLibs/ValidationLib.sol b/l1-contracts/src/core/libraries/RollupLibs/ValidationLib.sol index 5db4c00b5a1..8aa6b4e34e4 100644 --- a/l1-contracts/src/core/libraries/RollupLibs/ValidationLib.sol +++ b/l1-contracts/src/core/libraries/RollupLibs/ValidationLib.sol @@ -16,7 +16,7 @@ struct ValidateHeaderArgs { Header header; Timestamp currentTime; uint256 manaBaseFee; - bytes32 txsEffectsHash; + bytes32 blobsHash; uint256 pendingBlockNumber; DataStructures.ExecutionFlags flags; uint256 version; @@ -76,8 +76,8 @@ library ValidationLib { // Check if the data is available require( - _args.flags.ignoreDA || _args.header.contentCommitment.txsEffectsHash == _args.txsEffectsHash, - Errors.Rollup__UnavailableTxs(_args.header.contentCommitment.txsEffectsHash) + _args.flags.ignoreDA || _args.header.contentCommitment.blobsHash == _args.blobsHash, + Errors.Rollup__UnavailableTxs(_args.header.contentCommitment.blobsHash) ); // If not canonical rollup, require that the fees are zero diff --git a/l1-contracts/src/core/libraries/crypto/MerkleLib.sol b/l1-contracts/src/core/libraries/crypto/MerkleLib.sol index 79a20f89f04..1094135747f 100644 --- a/l1-contracts/src/core/libraries/crypto/MerkleLib.sol +++ b/l1-contracts/src/core/libraries/crypto/MerkleLib.sol @@ -11,45 +11,6 @@ import {Errors} from "@aztec/core/libraries/Errors.sol"; * @notice Library that contains functions useful when interacting with Merkle Trees */ library MerkleLib { - /** - * @notice Computes the minimum and maximum path size of an unbalanced tree. - * @dev Follows structure of rollup circuits by greedy filling subtrees. - * @dev Marked as public to reduce Rollup.sol contract size - * @param _numTxs - The number of txs to form into subtrees. - * @return (min, max) - The min and max path sizes. - */ - function computeMinMaxPathLength(uint256 _numTxs) public pure returns (uint256, uint256) { - uint256 numTxs = _numTxs < 2 ? 2 : _numTxs; - uint256 numSubtrees = 0; - uint256 currentSubtreeSize = 1; - uint256 currentSubtreeHeight = 0; - uint256 firstSubtreeHeight; - uint256 finalSubtreeHeight; - while (numTxs != 0) { - // If size & txs == 0, the subtree doesn't exist for this number of txs - if (currentSubtreeSize & numTxs == 0) { - currentSubtreeSize <<= 1; - currentSubtreeHeight++; - continue; - } - // Assign the smallest rightmost subtree height - if (numSubtrees == 0) finalSubtreeHeight = currentSubtreeHeight; - // Assign the largest leftmost subtree height - if (numTxs - currentSubtreeSize == 0) firstSubtreeHeight = currentSubtreeHeight; - numTxs -= currentSubtreeSize; - currentSubtreeSize <<= 1; - currentSubtreeHeight++; - numSubtrees++; - } - if (numSubtrees == 1) { - // We have a balanced tree - return (firstSubtreeHeight, firstSubtreeHeight); - } - uint256 min = finalSubtreeHeight + numSubtrees - 1; - uint256 max = firstSubtreeHeight + 1; - return (min, max); - } - /** * @notice Verifies the membership of a leaf and path against an expected root. * @dev In the case of a mismatched root, and subsequent inability to verify membership, this function throws. @@ -92,6 +53,45 @@ library MerkleLib { ); } + /** + * @notice Computes the minimum and maximum path size of an unbalanced tree. + * @dev Follows structure of rollup circuits by greedy filling subtrees. + * @dev Marked as public to reduce Rollup.sol contract size + * @param _numTxs - The number of txs to form into subtrees. + * @return (min, max) - The min and max path sizes. + */ + function computeMinMaxPathLength(uint256 _numTxs) internal pure returns (uint256, uint256) { + uint256 numTxs = _numTxs < 2 ? 2 : _numTxs; + uint256 numSubtrees = 0; + uint256 currentSubtreeSize = 1; + uint256 currentSubtreeHeight = 0; + uint256 firstSubtreeHeight; + uint256 finalSubtreeHeight; + while (numTxs != 0) { + // If size & txs == 0, the subtree doesn't exist for this number of txs + if (currentSubtreeSize & numTxs == 0) { + currentSubtreeSize <<= 1; + currentSubtreeHeight++; + continue; + } + // Assign the smallest rightmost subtree height + if (numSubtrees == 0) finalSubtreeHeight = currentSubtreeHeight; + // Assign the largest leftmost subtree height + if (numTxs - currentSubtreeSize == 0) firstSubtreeHeight = currentSubtreeHeight; + numTxs -= currentSubtreeSize; + currentSubtreeSize <<= 1; + currentSubtreeHeight++; + numSubtrees++; + } + if (numSubtrees == 1) { + // We have a balanced tree + return (firstSubtreeHeight, firstSubtreeHeight); + } + uint256 min = finalSubtreeHeight + numSubtrees - 1; + uint256 max = firstSubtreeHeight + 1; + return (min, max); + } + /** * @notice Calculates a tree height from the amount of elements in the tree * @dev - This mirrors the function in TestUtil, but assumes _size is an exact power of 2 or = 1 diff --git a/l1-contracts/test/Rollup.t.sol b/l1-contracts/test/Rollup.t.sol index 8e0b7c25543..1199c3f01b0 100644 --- a/l1-contracts/test/Rollup.t.sol +++ b/l1-contracts/test/Rollup.t.sol @@ -1090,6 +1090,7 @@ contract RollupTest is DecoderBase, TimeFns { function testSubmitProofNonExistantBlock() public setUpFor("empty_block_1") { _testBlock("empty_block_1", false); DecoderBase.Data memory data = load("empty_block_1").block; + bytes memory blobPublicInputs = this.getBlobPublicInputs(data.blobInputs); BlockLog memory blockLog = rollup.getBlock(0); bytes32 wrong = bytes32(uint256(0xdeadbeef)); @@ -1099,7 +1100,14 @@ contract RollupTest is DecoderBase, TimeFns { ) ); _submitEpochProof( - rollup, 1, wrong, data.archive, blockLog.blockHash, data.blockHash, bytes32(0), new bytes(112) + rollup, + 1, + wrong, + data.archive, + blockLog.blockHash, + data.blockHash, + bytes32(0), + blobPublicInputs ); // TODO: Reenable when we setup proper initial block hash @@ -1113,6 +1121,7 @@ contract RollupTest is DecoderBase, TimeFns { _testBlock("empty_block_1", false); DecoderBase.Data memory data = load("empty_block_1").block; + bytes memory blobPublicInputs = this.getBlobPublicInputs(data.blobInputs); bytes32 wrongArchive = bytes32(uint256(0xdeadbeef)); BlockLog memory blockLog = rollup.getBlock(0); @@ -1127,7 +1136,7 @@ contract RollupTest is DecoderBase, TimeFns { blockLog.blockHash, data.blockHash, bytes32(0), - new bytes(112) + blobPublicInputs ); } @@ -1135,6 +1144,7 @@ contract RollupTest is DecoderBase, TimeFns { _testBlock("empty_block_1", false); DecoderBase.Data memory data = load("empty_block_1").block; + bytes memory blobPublicInputs = this.getBlobPublicInputs(data.blobInputs); bytes32 wrongBlockHash = bytes32(uint256(0xdeadbeef)); BlockLog memory blockLog = rollup.getBlock(0); @@ -1151,7 +1161,7 @@ contract RollupTest is DecoderBase, TimeFns { blockLog.blockHash, wrongBlockHash, bytes32(0), - new bytes(112) + blobPublicInputs ); } @@ -1165,7 +1175,7 @@ contract RollupTest is DecoderBase, TimeFns { BlockLog memory blockLog = rollup.getBlock(0); bytes32 actualBlobPublicInputsHash = - rollup.blobPublicInputsHashes(data.decodedHeader.globalVariables.blockNumber); + rollup.getBlobPublicInputsHash(data.decodedHeader.globalVariables.blockNumber); bytes32 wrongBlobPublicInputsHash = this.getBlobPublicInputsHash(blobPublicInputs); vm.expectRevert( abi.encodeWithSelector( diff --git a/l1-contracts/test/base/Base.sol b/l1-contracts/test/base/Base.sol index a157869a57d..8dedc8da935 100644 --- a/l1-contracts/test/base/Base.sol +++ b/l1-contracts/test/base/Base.sol @@ -223,8 +223,8 @@ contract TestBase is Test { // Blobs function skipBlobCheck(address rollup) internal { - // 20 is the slot of checkBlob. We force it to be false (=0): + // 7 is the slot of checkBlob. We force it to be false (=0): // Slot number can be checked by running forge inspect src/core/Rollup.sol:Rollup storage - vm.store(rollup, bytes32(uint256(20)), 0); + vm.store(rollup, bytes32(uint256(7)), 0); } } diff --git a/l1-contracts/test/decoders/Decoders.t.sol b/l1-contracts/test/decoders/Decoders.t.sol index 42988d08149..6a276be885a 100644 --- a/l1-contracts/test/decoders/Decoders.t.sol +++ b/l1-contracts/test/decoders/Decoders.t.sol @@ -5,8 +5,7 @@ pragma solidity >=0.8.27; import {DecoderBase} from "./Base.sol"; import {HeaderLibHelper} from "./helpers/HeaderLibHelper.sol"; -import {HeaderLib, Header} from "@aztec/core/libraries/RollupLibs/HeaderLib.sol"; -import {Constants} from "@aztec/core/libraries/ConstantsGen.sol"; +import {Header} from "@aztec/core/libraries/RollupLibs/HeaderLib.sol"; /** * Blocks are generated using the `integration_l1_publisher.test.ts` tests. diff --git a/l1-contracts/test/portals/UniswapPortal.t.sol b/l1-contracts/test/portals/UniswapPortal.t.sol index ac646e17bac..ab30acfebf4 100644 --- a/l1-contracts/test/portals/UniswapPortal.t.sol +++ b/l1-contracts/test/portals/UniswapPortal.t.sol @@ -74,7 +74,7 @@ contract UniswapPortalTest is Test { uniswapPortal.initialize(address(registry), l2UniswapAddress); // Modify the proven block count - vm.store(address(rollup), bytes32(uint256(9)), bytes32(l2BlockNumber + 1)); + vm.store(address(rollup), bytes32(uint256(11)), bytes32(l2BlockNumber + 1)); assertEq(rollup.getProvenBlockNumber(), l2BlockNumber + 1); // have DAI locked in portal that can be moved when funds are withdrawn diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr index e9467a39801..cf1a0351aae 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr @@ -270,6 +270,7 @@ pub global APPEND_ONLY_TREE_SNAPSHOT_LENGTH: u32 = 2; pub global APPEND_ONLY_TREE_SNAPSHOT_LENGTH_BYTES: u32 = 36; pub global SPONGE_BLOB_LENGTH: u32 = 11; pub global BLOB_PUBLIC_INPUTS: u32 = 6; +pub global BLOB_PUBLIC_INPUTS_BYTES: u32 = 112; // = commitment (48) + z (32) + y (32) pub global L1_TO_L2_MESSAGE_LENGTH: u32 = 6; pub global L2_TO_L1_MESSAGE_LENGTH: u32 = 3; pub global SCOPED_L2_TO_L1_MESSAGE_LENGTH: u32 = L2_TO_L1_MESSAGE_LENGTH + 1; diff --git a/yarn-project/circuits.js/src/constants.gen.ts b/yarn-project/circuits.js/src/constants.gen.ts index e38b9b4e615..162798c1938 100644 --- a/yarn-project/circuits.js/src/constants.gen.ts +++ b/yarn-project/circuits.js/src/constants.gen.ts @@ -150,6 +150,7 @@ export const APPEND_ONLY_TREE_SNAPSHOT_LENGTH = 2; export const APPEND_ONLY_TREE_SNAPSHOT_LENGTH_BYTES = 36; export const SPONGE_BLOB_LENGTH = 11; export const BLOB_PUBLIC_INPUTS = 6; +export const BLOB_PUBLIC_INPUTS_BYTES = 112; export const L1_TO_L2_MESSAGE_LENGTH = 6; export const L2_TO_L1_MESSAGE_LENGTH = 3; export const SCOPED_L2_TO_L1_MESSAGE_LENGTH = 4; diff --git a/yarn-project/end-to-end/src/composed/integration_l1_publisher.test.ts b/yarn-project/end-to-end/src/composed/integration_l1_publisher.test.ts index f309e05e508..2beb7f57ae0 100644 --- a/yarn-project/end-to-end/src/composed/integration_l1_publisher.test.ts +++ b/yarn-project/end-to-end/src/composed/integration_l1_publisher.test.ts @@ -435,7 +435,7 @@ describe('L1Publisher integration', () => { hash: logs[i].transactionHash!, }); - const blobPublicInputsHash = await rollup.read.blobPublicInputsHashes([BigInt(i + 1)]); + const blobPublicInputsHash = await rollup.read.getBlobPublicInputsHash([BigInt(i + 1)]); const expectedHash = sha256(Buffer.from(BlockBlobPublicInputs.fromBlobs(blobs).toString().substring(2), 'hex')); expect(blobPublicInputsHash).toEqual(`0x${expectedHash.toString('hex')}`); @@ -547,7 +547,7 @@ describe('L1Publisher integration', () => { hash: logs[i].transactionHash!, }); - const blobPublicInputsHash = await rollup.read.blobPublicInputsHashes([BigInt(i + 1)]); + const blobPublicInputsHash = await rollup.read.getBlobPublicInputsHash([BigInt(i + 1)]); const expectedHash = sha256(Buffer.from(BlockBlobPublicInputs.fromBlobs(blobs).toString().substring(2), 'hex')); expect(blobPublicInputsHash).toEqual(`0x${expectedHash.toString('hex')}`); diff --git a/yarn-project/ethereum/src/deploy_l1_contracts.ts b/yarn-project/ethereum/src/deploy_l1_contracts.ts index 7baaa183df0..32832708c2a 100644 --- a/yarn-project/ethereum/src/deploy_l1_contracts.ts +++ b/yarn-project/ethereum/src/deploy_l1_contracts.ts @@ -3,8 +3,6 @@ import { EthAddress } from '@aztec/foundation/eth-address'; import { type Fr } from '@aztec/foundation/fields'; import { type DebugLogger } from '@aztec/foundation/log'; import { - BlobLibAbi, - BlobLibBytecode, CoinIssuerAbi, CoinIssuerBytecode, ExtRollupLibAbi, @@ -15,8 +13,6 @@ import { GovernanceBytecode, GovernanceProposerAbi, GovernanceProposerBytecode, - HeaderLibAbi, - HeaderLibBytecode, InboxAbi, InboxBytecode, LeonidasLibAbi, @@ -184,18 +180,6 @@ export const l1Artifacts: L1ContractArtifactsForDeployment = { contractAbi: ExtRollupLibAbi, contractBytecode: ExtRollupLibBytecode, }, - BlobLib: { - contractAbi: BlobLibAbi, - contractBytecode: BlobLibBytecode, - }, - HeaderLib: { - contractAbi: HeaderLibAbi, - contractBytecode: HeaderLibBytecode, - }, - MerkleLib: { - contractAbi: MerkleLibAbi, - contractBytecode: MerkleLibBytecode, - }, }, }, }, diff --git a/yarn-project/sequencer-client/src/publisher/l1-publisher.ts b/yarn-project/sequencer-client/src/publisher/l1-publisher.ts index 43003c6992a..23028ae5554 100644 --- a/yarn-project/sequencer-client/src/publisher/l1-publisher.ts +++ b/yarn-project/sequencer-client/src/publisher/l1-publisher.ts @@ -34,7 +34,7 @@ import { createDebugLogger } from '@aztec/foundation/log'; import { type Tuple, serializeToBuffer } from '@aztec/foundation/serialize'; import { InterruptibleSleep } from '@aztec/foundation/sleep'; import { Timer } from '@aztec/foundation/timer'; -import { BlobLibAbi, GovernanceProposerAbi, RollupAbi } from '@aztec/l1-artifacts'; +import { ExtRollupLibAbi, GovernanceProposerAbi, RollupAbi } from '@aztec/l1-artifacts'; import { type TelemetryClient } from '@aztec/telemetry-client'; import pick from 'lodash.pick'; @@ -596,7 +596,7 @@ export class L1Publisher { try { // NB: If this fn starts unexpectedly giving incorrect blob hash errors, it may be because the checkBlob // bool is no longer at the slot below. To find the slot, run: forge inspect src/core/Rollup.sol:Rollup storage - const checkBlobSlot = 20n; + const checkBlobSlot = 7n; await this.publicClient.simulateContract({ ...args, account: this.walletClient.account, @@ -625,13 +625,13 @@ export class L1Publisher { }); return undefined; } catch (simulationErr: any) { - // If we don't have a ContractFunctionExecutionError, we have a blob related error => use BlobLibAbi to get the error msg. + // If we don't have a ContractFunctionExecutionError, we have a blob related error => use ExtRollupLibAbi to get the error msg. const contractErr = simulationErr.name === 'ContractFunctionExecutionError' ? simulationErr : getContractError(simulationErr as BaseError, { args: [], - abi: BlobLibAbi, + abi: ExtRollupLibAbi, functionName: args.functionName, address: args.address, sender: this.account.address, @@ -807,6 +807,7 @@ export class L1Publisher { private prepareProposeTx(encodedData: L1ProcessArgs) { // NB: Viem does not allow state overrides or blobs in estimate gas calls, so any est gas call will fail + // TODO(Miranda): as of the most recent version, viem now allows state overrides. TODO: incoporate const proposeGas = 300000n; // @note We perform this guesstimate instead of the usual `gasEstimate` since From 681b53ac9c7f2cc9a7f0699234cb927f9b19a15c Mon Sep 17 00:00:00 2001 From: MirandaWood Date: Thu, 5 Dec 2024 10:43:08 +0000 Subject: [PATCH 17/39] feat: add gas estimation for blob txs, cleanup contracts, increase helm timeout --- l1-contracts/src/core/Rollup.sol | 13 +++++++ l1-contracts/src/core/interfaces/IRollup.sol | 1 + .../src/core/libraries/RollupLibs/BlobLib.sol | 1 - .../core/libraries/RollupLibs/HeaderLib.sol | 1 - .../src/core/libraries/crypto/MerkleLib.sol | 1 - yarn-project/end-to-end/src/spartan/utils.ts | 2 +- yarn-project/ethereum/src/l1_tx_utils.ts | 18 ++++++++-- .../src/publisher/l1-publisher.ts | 36 ++++++++++++++----- 8 files changed, 58 insertions(+), 15 deletions(-) diff --git a/l1-contracts/src/core/Rollup.sol b/l1-contracts/src/core/Rollup.sol index 947f04c206f..56cedfa0e39 100644 --- a/l1-contracts/src/core/Rollup.sol +++ b/l1-contracts/src/core/Rollup.sol @@ -416,6 +416,19 @@ contract Rollup is EIP712("Aztec Rollup", "1"), Leonidas, IRollup, ITestRollup { ); } + /** + * @notice Validate blob transactions against given inputs. + * @dev Only exists here for gas estimation. + */ + function validateBlobs(bytes calldata _blobsInput) + external + view + override(IRollup) + returns (bytes32, bytes32) + { + return ExtRollupLib.validateBlobs(_blobsInput, checkBlob); + } + /** * @notice Get the next epoch that can be claimed * @dev Will revert if the epoch has already been claimed or if there is no epoch to prove diff --git a/l1-contracts/src/core/interfaces/IRollup.sol b/l1-contracts/src/core/interfaces/IRollup.sol index cf24aba3be3..c9a145dcd8d 100644 --- a/l1-contracts/src/core/interfaces/IRollup.sol +++ b/l1-contracts/src/core/interfaces/IRollup.sol @@ -163,4 +163,5 @@ interface IRollup { bytes calldata _blobPublicInputs, bytes calldata _aggregationObject ) external view returns (bytes32[] memory); + function validateBlobs(bytes calldata _blobsInputs) external view returns (bytes32, bytes32); } diff --git a/l1-contracts/src/core/libraries/RollupLibs/BlobLib.sol b/l1-contracts/src/core/libraries/RollupLibs/BlobLib.sol index 0c1cec8f503..26fa02529f6 100644 --- a/l1-contracts/src/core/libraries/RollupLibs/BlobLib.sol +++ b/l1-contracts/src/core/libraries/RollupLibs/BlobLib.sol @@ -28,7 +28,6 @@ library BlobLib { * Input bytes: * input[:1] - num blobs in block * input[1:] - 192 * num blobs of the above _blobInput - * @dev Marked as public to reduce Rollup.sol contract size * @param _blobsInput - The above bytes to verify a blob */ function validateBlobs(bytes calldata _blobsInput, bool _checkBlob) diff --git a/l1-contracts/src/core/libraries/RollupLibs/HeaderLib.sol b/l1-contracts/src/core/libraries/RollupLibs/HeaderLib.sol index 56e36c1211b..000b71cfe71 100644 --- a/l1-contracts/src/core/libraries/RollupLibs/HeaderLib.sol +++ b/l1-contracts/src/core/libraries/RollupLibs/HeaderLib.sol @@ -110,7 +110,6 @@ library HeaderLib { /** * @notice Decodes the header - * @dev Marked as public to reduce Rollup.sol contract size * @param _header - The header calldata * @return The decoded header */ diff --git a/l1-contracts/src/core/libraries/crypto/MerkleLib.sol b/l1-contracts/src/core/libraries/crypto/MerkleLib.sol index 1094135747f..b363338e17c 100644 --- a/l1-contracts/src/core/libraries/crypto/MerkleLib.sol +++ b/l1-contracts/src/core/libraries/crypto/MerkleLib.sol @@ -56,7 +56,6 @@ library MerkleLib { /** * @notice Computes the minimum and maximum path size of an unbalanced tree. * @dev Follows structure of rollup circuits by greedy filling subtrees. - * @dev Marked as public to reduce Rollup.sol contract size * @param _numTxs - The number of txs to form into subtrees. * @return (min, max) - The min and max path sizes. */ diff --git a/yarn-project/end-to-end/src/spartan/utils.ts b/yarn-project/end-to-end/src/spartan/utils.ts index 120b3b3adcd..871944c3bdc 100644 --- a/yarn-project/end-to-end/src/spartan/utils.ts +++ b/yarn-project/end-to-end/src/spartan/utils.ts @@ -401,7 +401,7 @@ export async function enableValidatorDynamicBootNode( 'validator.dynamicBootNode': 'true', }, valuesFile: undefined, - timeout: '10m', + timeout: '15m', reuseValues: true, }); diff --git a/yarn-project/ethereum/src/l1_tx_utils.ts b/yarn-project/ethereum/src/l1_tx_utils.ts index c8c0c3b3d90..8a96281624c 100644 --- a/yarn-project/ethereum/src/l1_tx_utils.ts +++ b/yarn-project/ethereum/src/l1_tx_utils.ts @@ -401,9 +401,23 @@ export class L1TxUtils { /** * Estimates gas and adds buffer */ - public async estimateGas(account: Account, request: L1TxRequest, _gasConfig?: L1TxUtilsConfig): Promise { + public async estimateGas( + account: Account, + request: L1TxRequest, + _gasConfig?: L1TxUtilsConfig, + _blobInputs?: L1BlobInputs, + ): Promise { const gasConfig = { ...this.config, ..._gasConfig }; - const initialEstimate = await this.publicClient.estimateGas({ account, ...request }); + let initialEstimate = 0n; + // Viem does not allow blobs to be sent via public client's estimate gas, so any estimation will fail. + // Strangely, the only way to get gas and send blobs is prepareTransactionRequest(). + // See: https://github.com/wevm/viem/issues/2075 + if (_blobInputs) { + initialEstimate = (await this.walletClient.prepareTransactionRequest({ account, ...request, ..._blobInputs })) + .gas; + } else { + initialEstimate = await this.publicClient.estimateGas({ account, ...request }); + } // Add buffer based on either fixed amount or percentage const withBuffer = initialEstimate + (initialEstimate * (gasConfig.gasLimitBufferPercentage ?? 0n)) / 100n; diff --git a/yarn-project/sequencer-client/src/publisher/l1-publisher.ts b/yarn-project/sequencer-client/src/publisher/l1-publisher.ts index 23028ae5554..6c00a1a4fd8 100644 --- a/yarn-project/sequencer-client/src/publisher/l1-publisher.ts +++ b/yarn-project/sequencer-client/src/publisher/l1-publisher.ts @@ -170,6 +170,9 @@ export class L1Publisher { protected account: PrivateKeyAccount; protected ethereumSlotDuration: bigint; + // @note - with blobs, the below estimate seems too large. + // Total used for full block from int_l1_pub e2e test: 1m (of which 86k is 1x blob) + // Total used for emptier block from above test: 429k (of which 84k is 1x blob) public static PROPOSE_GAS_GUESS: bigint = 12_000_000n; public static PROPOSE_AND_CLAIM_GAS_GUESS: bigint = this.PROPOSE_GAS_GUESS + 100_000n; @@ -805,17 +808,32 @@ export class L1Publisher { } } - private prepareProposeTx(encodedData: L1ProcessArgs) { - // NB: Viem does not allow state overrides or blobs in estimate gas calls, so any est gas call will fail - // TODO(Miranda): as of the most recent version, viem now allows state overrides. TODO: incoporate - const proposeGas = 300000n; + private async prepareProposeTx(encodedData: L1ProcessArgs) { + const kzg = Blob.getViemKzgInstance(); + const blobEvaluationGas = await this.l1TxUtils.estimateGas( + this.account, + { + to: this.rollupContract.address, + data: encodeFunctionData({ + abi: this.rollupContract.abi, + functionName: 'validateBlobs', + args: [Blob.getEthBlobEvaluationInputs(encodedData.blobs)], + }), + }, + {}, + { + blobs: encodedData.blobs.map(b => b.data), + kzg, + maxFeePerBlobGas: 10000000000n, //This is 10 gwei, taken from DEFAULT_MAX_FEE_PER_GAS + }, + ); // @note We perform this guesstimate instead of the usual `gasEstimate` since // viem will use the current state to simulate against, which means that // we will fail estimation in the case where we are simulating for the // first ethereum block within our slot (as current time is not in the // slot yet). - const gasGuesstimate = proposeGas + L1Publisher.PROPOSE_GAS_GUESS; + const gasGuesstimate = blobEvaluationGas + L1Publisher.PROPOSE_GAS_GUESS; const attestations = encodedData.attestations ? encodedData.attestations.map(attest => attest.toViemSignature()) : []; @@ -879,7 +897,7 @@ export class L1Publisher { } try { const kzg = Blob.getViemKzgInstance(); - const { args, gas } = this.prepareProposeTx(encodedData); + const { args, gas } = await this.prepareProposeTx(encodedData); const data = encodeFunctionData({ abi: this.rollupContract.abi, functionName: 'propose', @@ -896,7 +914,7 @@ export class L1Publisher { { blobs: encodedData.blobs.map(b => b.data), kzg, - maxFeePerBlobGas: 10000000000n, //This is 10 gwei, taken from DEFAULT_MAX_FEE_PER_GAS} + maxFeePerBlobGas: 10000000000n, //This is 10 gwei, taken from DEFAULT_MAX_FEE_PER_GAS }, ); return { @@ -925,7 +943,7 @@ export class L1Publisher { this.log.info(inspect(quote.payload)); const kzg = Blob.getViemKzgInstance(); - const { args, gas } = this.prepareProposeTx(encodedData); + const { args, gas } = await this.prepareProposeTx(encodedData); const data = encodeFunctionData({ abi: this.rollupContract.abi, functionName: 'proposeAndClaim', @@ -940,7 +958,7 @@ export class L1Publisher { { blobs: encodedData.blobs.map(b => b.data), kzg, - maxFeePerBlobGas: 10000000000n, //This is 10 gwei, taken from DEFAULT_MAX_FEE_PER_GAS} + maxFeePerBlobGas: 10000000000n, //This is 10 gwei, taken from DEFAULT_MAX_FEE_PER_GAS }, ); From 8511d521840a97828695b45efe25d59ec3c1706a Mon Sep 17 00:00:00 2001 From: MirandaWood Date: Thu, 5 Dec 2024 15:36:47 +0000 Subject: [PATCH 18/39] chore: typos, comments clarifications --- .../noir-protocol-circuits/crates/blob/src/blob.nr | 11 ++--------- .../src/abis/base_or_merge_rollup_public_inputs.nr | 2 +- .../crates/rollup-lib/src/base/private_base_rollup.nr | 2 +- .../crates/rollup-lib/src/base/public_base_rollup.nr | 2 +- .../src/block_root/block_root_rollup_inputs.nr | 4 ++-- .../crates/rollup-lib/src/components.nr | 2 +- .../crates/types/src/abis/sponge_blob.nr | 4 ++-- .../crates/types/src/constants.nr | 2 +- 8 files changed, 11 insertions(+), 18 deletions(-) diff --git a/noir-projects/noir-protocol-circuits/crates/blob/src/blob.nr b/noir-projects/noir-protocol-circuits/crates/blob/src/blob.nr index 997d254f6a1..7a7d47eae88 100644 --- a/noir-projects/noir-protocol-circuits/crates/blob/src/blob.nr +++ b/noir-projects/noir-protocol-circuits/crates/blob/src/blob.nr @@ -121,11 +121,8 @@ fn compute_challenge(hashed_blobs_fields: Field, kzg_commitment: BlobCommitment) challenge } -// ~500k constraints. 30 MINUTES TO COMPILE (due to all the brillig)! -// // Note: the kzg_commitment is technically a BLS12-381 point in (Fq, Fq), but -// we haven't implemented Fq; only Fr, and we don't actually need to operate on it; -// we just need the bits of data. So we've simply encoded it as fitting inside a +// we don't actually need to operate on it so we've simply encoded it as fitting inside a // [Field; 2], since two 254-bit fields more-than covers 381+1=382 bits. // See yarn-project/foundation/src/blob/index.ts -> commitmentToFields() for encoding fn evaluate_blob( @@ -138,11 +135,7 @@ fn evaluate_blob( let blob = convert_blob_fields(blob_as_fields); let y: F = barycentric_evaluate_blob_at_z(challenge_z_as_bignum, blob); - // TODO(Miranda): Since we are verifying a root proof, the below doesn't apply. We should be hashing ALL root public inputs, including the blob ones. - // In future, when we do hash PIs, the below will apply. - // TODO: this return data needs to be TIGHTLY PACKED into bytes. - // TODO: then those bytes need to be sha256-hashed, to produce a single value that can be sent to ethereum for cheap snark verification. - // On ethereum, the bytes will be sent along with the sha256-hash of the bytes. The bytes will be used in the point evaluation precompile. The sha256-hash will form a part of the public inputs of the zk-snark proof. + BlobPublicInputs { z: challenge_z, y, kzg_commitment } } diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/base_or_merge_rollup_public_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/base_or_merge_rollup_public_inputs.nr index 729512e4f3f..b84e2ef1201 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/base_or_merge_rollup_public_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/base_or_merge_rollup_public_inputs.nr @@ -20,7 +20,7 @@ pub struct BaseOrMergeRollupPublicInputs { start: PartialStateReference, end: PartialStateReference, - // A poseidon sponge of all tx effects to be unpacked in block root, then added to a blob + // A poseidon sponge of all tx effects to be unpacked in block root, then added to blob(s) // In sponge form so we can check left.end == right.start, rather than recreate a tree later start_sponge_blob: SpongeBlob, end_sponge_blob: SpongeBlob, diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/private_base_rollup.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/private_base_rollup.nr index 3aeb7191f62..52530e0011d 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/private_base_rollup.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/private_base_rollup.nr @@ -104,7 +104,7 @@ impl PrivateBaseRollupInputs { [PublicDataWrite::empty(); MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX]; all_public_data_update_requests[0] = fee_public_data_write; - // Calculate the tx effects hash of the transaction + // Append the tx effects for blob(s) let siloed_l2_to_l1_msgs = self.tube_data.public_inputs.end.l2_to_l1_msgs.map( |message: ScopedL2ToL1Message| silo_l2_to_l1_message( message, diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/public_base_rollup.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/public_base_rollup.nr index 2e831c3e021..94450a624b3 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/public_base_rollup.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/public_base_rollup.nr @@ -160,7 +160,7 @@ impl PublicBaseRollupInputs { let end_public_data_tree_snapshot = self.validate_and_process_public_state(all_public_data_update_requests); - // Calculate the tx effects hash of the transaction + // Append the tx effects for blob(s) let siloed_l2_to_l1_msgs = combined_accumulated_data.l2_to_l1_msgs.map( |message: ScopedL2ToL1Message| silo_l2_to_l1_message( message, diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_rollup_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_rollup_inputs.nr index 4f328d31e41..71bba0bb871 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_rollup_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_rollup_inputs.nr @@ -50,9 +50,9 @@ pub struct BlockRootRollupInputs { // Fields for blob verification made of all tx effects in this block // (will likely change to be accumulated and sent up to the final root) blobs_fields: [Field; FIELDS_PER_BLOB * BLOBS_PER_BLOCK], - // see blob/src/main.nr -> main() - these are used for creating the challenge z + // see blob/src/blob.nr -> evaluate_blob() - these are used for creating the challenge z blob_commitments: [BlobCommitment; BLOBS_PER_BLOCK], - // Flat sha256 hash of the EVM blob hashes, can be injected here as the contract check its validity vs the blob_public_inputs below + // Flat sha256 hash of the EVM blob hashes, can be injected here as the contract checks its validity vs the blob_public_inputs below // NB: to fit it into a field, we truncate to 31 bytes blobs_hash: Field, } diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/components.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/components.nr index 368d222b803..9193c214e2a 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/components.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/components.nr @@ -310,7 +310,7 @@ pub fn append_tx_effects_for_blob( offset += 1; // NB: The array_length function does NOT constrain we have a sorted left-packed array. - // We can use it because all inputs here come from the kernels which DO contrain left-packing. + // We can use it because all inputs here come from the kernels which DO constrain left-packing. // If that ever changes, we will have to constrain it by counting items differently. // NOTE HASHES array_len = array_length(note_hashes); diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/sponge_blob.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/sponge_blob.nr index fc65d14e083..df652f0d4f1 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/sponge_blob.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/sponge_blob.nr @@ -5,7 +5,7 @@ use crate::{ }; use std::hash::poseidon2::Poseidon2; -// A Poseidon2 sponge used to accumulate data that will be added to a blob +// A Poseidon2 sponge used to accumulate data that will be added to blob(s) // (More accurately called BlobSponge, but that's not as fun) // Each base rollup circuit has a start and end SpongeBlob instance, like a PartialStateReference. @@ -16,7 +16,7 @@ use std::hash::poseidon2::Poseidon2; // Finally, the block_root is given the list of all fields to be included in the blob. // We hash these ^ and check that the hash matches the one given by the block_root's right input's end SpongeBlob.squeeze(). -// The hash is used as part of the blob challenge, as we've proven it encompasses all elts of the blob. +// The hash is used as part of the blob challenge, as we've proven it encompasses all elts of the blob(s). // Init is given by input len * 2^64 (see noir/noir-repo/noir_stdlib/src/hash/poseidon2.nr -> hash_internal) global IV: Field = (FIELDS_PER_BLOB * BLOBS_PER_BLOCK) as Field * 18446744073709551616; diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr index cf1a0351aae..4a19bd5f256 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr @@ -462,7 +462,7 @@ pub global CONSTANT_ROLLUP_DATA_LENGTH: u32 = APPEND_ONLY_TREE_SNAPSHOT_LENGTH + 1 /* protocol_contract_tree_root */ + GLOBAL_VARIABLES_LENGTH; -// + 4 for rollup_type, num_txs, out_hash, accumulated_fees, accumulated_mana_used +// + 5 for rollup_type, num_txs, out_hash, accumulated_fees, accumulated_mana_used pub global BASE_OR_MERGE_PUBLIC_INPUTS_LENGTH: u32 = CONSTANT_ROLLUP_DATA_LENGTH + PARTIAL_STATE_REFERENCE_LENGTH + PARTIAL_STATE_REFERENCE_LENGTH From 5506aa25645e3f2feff841f2670503f8c3bf95ea Mon Sep 17 00:00:00 2001 From: MirandaWood Date: Fri, 6 Dec 2024 10:40:37 +0000 Subject: [PATCH 19/39] chore: fix bad noir merge formatting --- .../noirc_evaluator/src/ssa/opt/flatten_cfg.rs | 10 ++++++++++ .../src/ssa/opt/flatten_cfg/value_merger.rs | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/noir/noir-repo/compiler/noirc_evaluator/src/ssa/opt/flatten_cfg.rs b/noir/noir-repo/compiler/noirc_evaluator/src/ssa/opt/flatten_cfg.rs index ffc418174de..152bae5a0c1 100644 --- a/noir/noir-repo/compiler/noirc_evaluator/src/ssa/opt/flatten_cfg.rs +++ b/noir/noir-repo/compiler/noirc_evaluator/src/ssa/opt/flatten_cfg.rs @@ -431,6 +431,16 @@ impl<'f> Context<'f> { }; self.condition_stack.push(cond_context); self.insert_current_side_effects_enabled(); + + // We disallow this case as it results in the `else_destination` block + // being inlined before the `then_destination` block due to block deduplication in the work queue. + // + // The `else_destination` block then gets treated as if it were the `then_destination` block + // and has the incorrect condition applied to it. + assert_ne!( + self.branch_ends[if_entry], *then_destination, + "ICE: branches merge inside of `then` branch" + ); vec![self.branch_ends[if_entry], *else_destination, *then_destination] } diff --git a/noir/noir-repo/compiler/noirc_evaluator/src/ssa/opt/flatten_cfg/value_merger.rs b/noir/noir-repo/compiler/noirc_evaluator/src/ssa/opt/flatten_cfg/value_merger.rs index a7180cff66d..6ea235b9414 100644 --- a/noir/noir-repo/compiler/noirc_evaluator/src/ssa/opt/flatten_cfg/value_merger.rs +++ b/noir/noir-repo/compiler/noirc_evaluator/src/ssa/opt/flatten_cfg/value_merger.rs @@ -45,7 +45,7 @@ impl<'a> ValueMerger<'a> { /// Merge two values a and b from separate basic blocks to a single value. /// If these two values are numeric, the result will be - /// `then_condition * then_value + else_condition * else_value`. + /// `then_condition * (then_value - else_value) + else_value`. /// Otherwise, if the values being merged are arrays, a new array will be made /// recursively from combining each element of both input arrays. /// From f71874b56d27dae2160d97034f531fdf18636aaf Mon Sep 17 00:00:00 2001 From: MirandaWood Date: Fri, 6 Dec 2024 10:54:10 +0000 Subject: [PATCH 20/39] fix: change slot overrides after merge --- l1-contracts/test/base/Base.sol | 2 +- l1-contracts/test/portals/UniswapPortal.t.sol | 2 +- yarn-project/sequencer-client/src/publisher/l1-publisher.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/l1-contracts/test/base/Base.sol b/l1-contracts/test/base/Base.sol index 8dedc8da935..d0f8d2923fc 100644 --- a/l1-contracts/test/base/Base.sol +++ b/l1-contracts/test/base/Base.sol @@ -225,6 +225,6 @@ contract TestBase is Test { function skipBlobCheck(address rollup) internal { // 7 is the slot of checkBlob. We force it to be false (=0): // Slot number can be checked by running forge inspect src/core/Rollup.sol:Rollup storage - vm.store(rollup, bytes32(uint256(7)), 0); + vm.store(rollup, bytes32(uint256(9)), 0); } } diff --git a/l1-contracts/test/portals/UniswapPortal.t.sol b/l1-contracts/test/portals/UniswapPortal.t.sol index 1d073194b42..7f4060be639 100644 --- a/l1-contracts/test/portals/UniswapPortal.t.sol +++ b/l1-contracts/test/portals/UniswapPortal.t.sol @@ -69,7 +69,7 @@ contract UniswapPortalTest is Test { uniswapPortal.initialize(address(registry), l2UniswapAddress); // Modify the proven block count - vm.store(address(rollup), bytes32(uint256(11)), bytes32(l2BlockNumber + 1)); + vm.store(address(rollup), bytes32(uint256(13)), bytes32(l2BlockNumber + 1)); assertEq(rollup.getProvenBlockNumber(), l2BlockNumber + 1); // have DAI locked in portal that can be moved when funds are withdrawn diff --git a/yarn-project/sequencer-client/src/publisher/l1-publisher.ts b/yarn-project/sequencer-client/src/publisher/l1-publisher.ts index 6c00a1a4fd8..ef24c7c75fe 100644 --- a/yarn-project/sequencer-client/src/publisher/l1-publisher.ts +++ b/yarn-project/sequencer-client/src/publisher/l1-publisher.ts @@ -599,7 +599,7 @@ export class L1Publisher { try { // NB: If this fn starts unexpectedly giving incorrect blob hash errors, it may be because the checkBlob // bool is no longer at the slot below. To find the slot, run: forge inspect src/core/Rollup.sol:Rollup storage - const checkBlobSlot = 7n; + const checkBlobSlot = 9n; await this.publicClient.simulateContract({ ...args, account: this.walletClient.account, From 110692f50568dfca0f1a8ddb4b8e8e285e17b108 Mon Sep 17 00:00:00 2001 From: MirandaWood Date: Fri, 6 Dec 2024 16:09:34 +0000 Subject: [PATCH 21/39] chore: update timeouts, comment, grab custom error from ext lib --- .github/workflows/ci.yml | 4 +-- l1-contracts/test/base/Base.sol | 2 +- .../src/publisher/l1-publisher.ts | 28 ++++++++++++++++++- 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 45f7e332f9e..76bafa4272a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -157,7 +157,7 @@ jobs: concurrency_key: build-x86 # prepare images locally, tagged by commit hash - name: "Build E2E Image" - timeout-minutes: 90 + timeout-minutes: 40 if: (needs.configure.outputs.non-docs == 'true' && needs.configure.outputs.non-barretenberg-cpp == 'true') || github.ref_name == 'master' run: | earthly-ci ./yarn-project+export-e2e-test-images @@ -635,7 +635,7 @@ jobs: with: concurrency_key: prover-client-test-x86 - name: "Prover Client Tests" - timeout-minutes: 40 + timeout-minutes: 60 run: earthly-ci --no-output ./yarn-project/+prover-client-test # proving disabled diff --git a/l1-contracts/test/base/Base.sol b/l1-contracts/test/base/Base.sol index d0f8d2923fc..1f975efb96a 100644 --- a/l1-contracts/test/base/Base.sol +++ b/l1-contracts/test/base/Base.sol @@ -223,7 +223,7 @@ contract TestBase is Test { // Blobs function skipBlobCheck(address rollup) internal { - // 7 is the slot of checkBlob. We force it to be false (=0): + // 9 is the slot of checkBlob. We force it to be false (=0): // Slot number can be checked by running forge inspect src/core/Rollup.sol:Rollup storage vm.store(rollup, bytes32(uint256(9)), 0); } diff --git a/yarn-project/sequencer-client/src/publisher/l1-publisher.ts b/yarn-project/sequencer-client/src/publisher/l1-publisher.ts index ef24c7c75fe..f970c71d8d4 100644 --- a/yarn-project/sequencer-client/src/publisher/l1-publisher.ts +++ b/yarn-project/sequencer-client/src/publisher/l1-publisher.ts @@ -43,7 +43,7 @@ import { type BaseError, type Chain, type Client, - type ContractFunctionExecutionError, + ContractFunctionExecutionError, ContractFunctionRevertedError, type GetContractReturnType, type Hex, @@ -392,6 +392,32 @@ export class L1Publisher { if (error instanceof ContractFunctionRevertedError) { const err = error as ContractFunctionRevertedError; this.log.debug(`Validation failed: ${err.message}`, err.data); + } else if (error instanceof ContractFunctionExecutionError) { + let err = error as ContractFunctionRevertedError; + if (!tryGetCustomErrorName(err)) { + // If we get here, it's because the custom error no longer exists in Rollup.sol, + // but in another lib. The below reconstructs the error message. + try { + await this.publicClient.estimateGas({ + data: encodeFunctionData({ + abi: this.rollupContract.abi, + functionName: 'validateHeader', + args, + }), + account: this.account, + to: this.rollupContract.address, + }); + } catch (estGasErr: unknown) { + err = getContractError(estGasErr as BaseError, { + args: [], + abi: ExtRollupLibAbi, + functionName: 'validateHeader', + address: this.rollupContract.address, + sender: this.account.address, + }); + } + throw err; + } } else { this.log.debug(`Unexpected error during validation: ${error}`); } From dff8962d38bc47226d224c57fdd5294ac2093b3c Mon Sep 17 00:00:00 2001 From: MirandaWood Date: Fri, 6 Dec 2024 17:50:52 +0000 Subject: [PATCH 22/39] chore: post merge formatting --- yarn-project/archiver/src/archiver/data_retrieval.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yarn-project/archiver/src/archiver/data_retrieval.ts b/yarn-project/archiver/src/archiver/data_retrieval.ts index c0dac4924c7..1ae87bf3174 100644 --- a/yarn-project/archiver/src/archiver/data_retrieval.ts +++ b/yarn-project/archiver/src/archiver/data_retrieval.ts @@ -1,7 +1,7 @@ import { Body, InboxLeaf, L2Block } from '@aztec/circuit-types'; import { AppendOnlyTreeSnapshot, Fr, Header, Proof } from '@aztec/circuits.js'; -import { Blob } from '@aztec/foundation/blob'; import { asyncPool } from '@aztec/foundation/async-pool'; +import { Blob } from '@aztec/foundation/blob'; import { type EthAddress } from '@aztec/foundation/eth-address'; import { type ViemSignature } from '@aztec/foundation/eth-signature'; import { type DebugLogger, createDebugLogger } from '@aztec/foundation/log'; From a01595d98dfca738306f108a74aa477b5444126f Mon Sep 17 00:00:00 2001 From: MirandaWood Date: Fri, 6 Dec 2024 19:23:22 +0000 Subject: [PATCH 23/39] chore: add leolib abi to error handling --- .../src/publisher/l1-publisher.ts | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/yarn-project/sequencer-client/src/publisher/l1-publisher.ts b/yarn-project/sequencer-client/src/publisher/l1-publisher.ts index f970c71d8d4..25ea115ba6d 100644 --- a/yarn-project/sequencer-client/src/publisher/l1-publisher.ts +++ b/yarn-project/sequencer-client/src/publisher/l1-publisher.ts @@ -34,7 +34,7 @@ import { createDebugLogger } from '@aztec/foundation/log'; import { type Tuple, serializeToBuffer } from '@aztec/foundation/serialize'; import { InterruptibleSleep } from '@aztec/foundation/sleep'; import { Timer } from '@aztec/foundation/timer'; -import { ExtRollupLibAbi, GovernanceProposerAbi, RollupAbi } from '@aztec/l1-artifacts'; +import { ExtRollupLibAbi, GovernanceProposerAbi, LeonidasLibAbi, RollupAbi } from '@aztec/l1-artifacts'; import { type TelemetryClient } from '@aztec/telemetry-client'; import pick from 'lodash.pick'; @@ -408,12 +408,16 @@ export class L1Publisher { to: this.rollupContract.address, }); } catch (estGasErr: unknown) { - err = getContractError(estGasErr as BaseError, { - args: [], - abi: ExtRollupLibAbi, - functionName: 'validateHeader', - address: this.rollupContract.address, - sender: this.account.address, + const possibleAbis = [ExtRollupLibAbi, LeonidasLibAbi]; + possibleAbis.forEach(abi => { + const possibleErr = getContractError(estGasErr as BaseError, { + args: [], + abi: abi, + functionName: 'validateHeader', + address: this.rollupContract.address, + sender: this.account.address, + }); + err = tryGetCustomErrorName(possibleErr) ? possibleErr : err; }); } throw err; From 5f5a10d290d222699293edb44502bae4145eb70b Mon Sep 17 00:00:00 2001 From: MirandaWood Date: Sat, 7 Dec 2024 14:43:22 +0000 Subject: [PATCH 24/39] chore: inc test timeout after sync --- yarn-project/prover-client/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yarn-project/prover-client/package.json b/yarn-project/prover-client/package.json index 2c01d5617c0..dda20f46836 100644 --- a/yarn-project/prover-client/package.json +++ b/yarn-project/prover-client/package.json @@ -28,7 +28,7 @@ "formatting": "run -T prettier --check ./src && run -T eslint ./src", "formatting:fix": "run -T eslint --fix ./src && run -T prettier -w ./src", "bb": "node --no-warnings ./dest/bb/index.js", - "test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --testTimeout=1500000 --forceExit", + "test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --testTimeout=3500000 --forceExit", "test:debug": "LOG_LEVEL=debug NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --testTimeout=1500000 --forceExit --testNamePattern prover/bb_prover/parity" }, "jest": { From 03f4ce19624d141862d81f2daac54be4fbc826de Mon Sep 17 00:00:00 2001 From: MirandaWood Date: Sat, 7 Dec 2024 14:56:47 +0000 Subject: [PATCH 25/39] chore: inc timeout --- yarn-project/prover-client/package.local.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yarn-project/prover-client/package.local.json b/yarn-project/prover-client/package.local.json index 754bb34cec9..2eba56b3b39 100644 --- a/yarn-project/prover-client/package.local.json +++ b/yarn-project/prover-client/package.local.json @@ -1,5 +1,5 @@ { "scripts": { - "test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --testTimeout=1500000 --forceExit" + "test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --testTimeout=3500000 --forceExit" } } \ No newline at end of file From 7fd775f1dd66e8575b20c9a71ed0a7960e75fd6b Mon Sep 17 00:00:00 2001 From: MirandaWood Date: Sat, 7 Dec 2024 18:19:23 +0000 Subject: [PATCH 26/39] chore: increase! those! timeouts! --- yarn-project/end-to-end/src/e2e_prover/full.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/yarn-project/end-to-end/src/e2e_prover/full.test.ts b/yarn-project/end-to-end/src/e2e_prover/full.test.ts index 6e6c197d66e..6a002c5ab8f 100644 --- a/yarn-project/end-to-end/src/e2e_prover/full.test.ts +++ b/yarn-project/end-to-end/src/e2e_prover/full.test.ts @@ -6,7 +6,7 @@ import { type Chain, type GetContractReturnType, type HttpTransport, type Public import { FullProverTest } from './e2e_prover_test.js'; -const TIMEOUT = 3_000_000; +const TIMEOUT = 5_000_000; // This makes AVM proving throw if there's a failure. process.env.AVM_PROVING_STRICT = '1'; @@ -135,7 +135,7 @@ describe('full_prover', () => { // And wait for the first pair of txs to be proven logger.info(`Awaiting proof for the previous epoch`); - await Promise.all(txs.map(tx => tx.wait({ timeout: 300, interval: 10, proven: true, provenTimeout: 1500 }))); + await Promise.all(txs.map(tx => tx.wait({ timeout: 300, interval: 10, proven: true, provenTimeout: 3000 }))); const provenBn = await rollup.read.getProvenBlockNumber(); const balanceAfterCoinbase = await feeJuice.read.balanceOf([COINBASE_ADDRESS.toString()]); From ba713cdae09fb00d71dc9f91afc74ea32a1755b8 Mon Sep 17 00:00:00 2001 From: MirandaWood Date: Sat, 7 Dec 2024 22:15:13 +0000 Subject: [PATCH 27/39] chore: header -> block_header to match merge --- l1-contracts/src/core/libraries/ConstantsGen.sol | 2 +- l1-contracts/src/core/libraries/RollupLibs/HeaderLib.sol | 2 +- .../noir-protocol-circuits/crates/types/src/constants.nr | 2 +- yarn-project/circuits.js/src/constants.gen.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/l1-contracts/src/core/libraries/ConstantsGen.sol b/l1-contracts/src/core/libraries/ConstantsGen.sol index 884280db2ab..a1cd1419a2a 100644 --- a/l1-contracts/src/core/libraries/ConstantsGen.sol +++ b/l1-contracts/src/core/libraries/ConstantsGen.sol @@ -205,7 +205,7 @@ library Constants { uint256 internal constant TOTAL_FEES_LENGTH = 1; uint256 internal constant TOTAL_MANA_USED_LENGTH = 1; uint256 internal constant BLOCK_HEADER_LENGTH = 25; - uint256 internal constant HEADER_LENGTH_BYTES = 648; + uint256 internal constant BLOCK_HEADER_LENGTH_BYTES = 648; uint256 internal constant PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 739; uint256 internal constant PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 867; uint256 internal constant PRIVATE_CONTEXT_INPUTS_LENGTH = 38; diff --git a/l1-contracts/src/core/libraries/RollupLibs/HeaderLib.sol b/l1-contracts/src/core/libraries/RollupLibs/HeaderLib.sol index 000b71cfe71..4749622b992 100644 --- a/l1-contracts/src/core/libraries/RollupLibs/HeaderLib.sol +++ b/l1-contracts/src/core/libraries/RollupLibs/HeaderLib.sol @@ -106,7 +106,7 @@ struct Header { * | --- | --- | --- */ library HeaderLib { - uint256 private constant HEADER_LENGTH = Constants.HEADER_LENGTH_BYTES; // Header byte length + uint256 private constant HEADER_LENGTH = Constants.BLOCK_HEADER_LENGTH_BYTES; // Header byte length /** * @notice Decodes the header diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr index 6dab1c30b9f..17aceef450e 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr @@ -319,7 +319,7 @@ pub global BLOCK_HEADER_LENGTH: u32 = APPEND_ONLY_TREE_SNAPSHOT_LENGTH + TOTAL_FEES_LENGTH + TOTAL_MANA_USED_LENGTH; // Global variables are all 32 bytes, apart from coinbase which is 20, hence -12. A state reference is just 4 snapshots. -pub global HEADER_LENGTH_BYTES: u32 = APPEND_ONLY_TREE_SNAPSHOT_LENGTH_BYTES +pub global BLOCK_HEADER_LENGTH_BYTES: u32 = APPEND_ONLY_TREE_SNAPSHOT_LENGTH_BYTES + 32 * CONTENT_COMMITMENT_LENGTH + 4 * APPEND_ONLY_TREE_SNAPSHOT_LENGTH_BYTES + 32 * GLOBAL_VARIABLES_LENGTH diff --git a/yarn-project/circuits.js/src/constants.gen.ts b/yarn-project/circuits.js/src/constants.gen.ts index 4627550fd12..2c97f24acbc 100644 --- a/yarn-project/circuits.js/src/constants.gen.ts +++ b/yarn-project/circuits.js/src/constants.gen.ts @@ -183,7 +183,7 @@ export const TX_REQUEST_LENGTH = 12; export const TOTAL_FEES_LENGTH = 1; export const TOTAL_MANA_USED_LENGTH = 1; export const BLOCK_HEADER_LENGTH = 25; -export const HEADER_LENGTH_BYTES = 648; +export const BLOCK_HEADER_LENGTH_BYTES = 648; export const PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH = 739; export const PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH = 867; export const PRIVATE_CONTEXT_INPUTS_LENGTH = 38; From 2daaa4817240d4bc9b90dcb18b6ae9029e37c005 Mon Sep 17 00:00:00 2001 From: MirandaWood Date: Sun, 8 Dec 2024 17:17:19 +0000 Subject: [PATCH 28/39] chore: guess what. --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 76bafa4272a..93a3aedfbaa 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -204,7 +204,7 @@ jobs: runner=$(./scripts/ci/select_runner.sh ${{ matrix.test }}) echo "type=$runner" >> $GITHUB_OUTPUT - name: Setup and Test - timeout-minutes: 40 + timeout-minutes: 50 uses: ./.github/ensure-tester-with-images env: USERNAME: ${{ needs.configure.outputs.username }} From ec0d50da20834ec4f2e1bcd18d403cbf80eed7d6 Mon Sep 17 00:00:00 2001 From: MirandaWood Date: Mon, 9 Dec 2024 18:45:39 +0000 Subject: [PATCH 29/39] chore: fixture + comment out slower test --- .../end-to-end/src/fixtures/dumps/epoch_proof_result.json | 2 +- .../prover-client/src/test/bb_prover_full_rollup.test.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json b/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json index d455b3a5db2..330bb0370e3 100644 --- a/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json +++ b/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json @@ -1 +1 @@ -{"proof":"0x00008b640000045b0000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000029c00000000000000000000000000000000000000000000000000000000000000010237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae00000000000000000000000000000000000000000000000000000000000000010e431a24eaa7a481adb087b6ae8790630f93d642e55991c48481f8b68d3cf18700000000000000000000000000000000000000000000000000000000000000032da55666630fdf8594065c377958c827dc1c130dac91f17c6699b53dce60ef750412972e58711f59a09ecb8420cf3193db944871cb6eb26b10c00c2f77150d77000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ac134ea3f9c61917bdf62507c89da98f3059d7caf13f2dff291591d4c03977823b36a2766961427b99fd8e7ced7b1615a71cde1e6c42114a6396bed32ad43bb00000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a8cddf6e42670bd400000000000000000000000000000000000000000000000094c5c11f5447612830000000000000000000000000000000000000000000000067bb01d76840d03e00000000000000000000000000000000000000000000000000000dd098d79c1d200000000000000000000000000000000000000000000000afc86d8bc4d6f8baf00000000000000000000000000000000000000000000000b13d312899d52b2ae000000000000000000000000000000000000000000000009e12895203e1b0486000000000000000000000000000000000000000000000000000046db9cd8adfa000000000000000000000000000000000000000000000009fe7450c302cf1ee000000000000000000000000000000000000000000000000246b4b3a293544af1000000000000000000000000000000000000000000000006a57dd79f57f0ec890000000000000000000000000000000000000000000000000001a377c6fccb7f0000000000000000000000000000000000000000000000007541ffa33c2be424000000000000000000000000000000000000000000000003dbb5d300faa6a1200000000000000000000000000000000000000000000000045e0a485bc408a8750000000000000000000000000000000000000000000000000002744a822272120000000000000000000000000000000dba466228387a25fee04fb7e6a9146e3d00000000000000000000000000000000000b81cfd1e70f8c410ae48eb81dabd9000000000000000000000000000000257959ad4884b6da0b3f45bec7488a51f8000000000000000000000000000000000028c2dcec19775f9cf985e7dd0cbc6e0000000000000000000000000000000000ef79918eb1c7c50ad310ed0d97cca600000000000000000000000000000000000ce248f1544ab1e463639c1265cf8b00000000000000000000000000000099d777fc741065f1d4ec1858aac035779a0000000000000000000000000000000000195650325a83a04d1ac455043984de000000000000000000000000000000053471442ef505f3e961766d79f8d1d85600000000000000000000000000000000002c1bb7c050f25affd3889183fe889a00000000000000000000000000000028c487f76b17c67589d639a13502bf4ad4000000000000000000000000000000000007b9856e4c6ccc6fbe1e533d6b4f9f00000000000000000000000000000096650cbf350fd79e4e21a3a53f084e5359000000000000000000000000000000000025e86237c45eeb6939f852e4019e10000000000000000000000000000000870ec61adc23bc1294a793de7d329135e300000000000000000000000000000000000d59e4f667228b55d76d57b80cbb4a000000000000000000000000000000dfa123d263c27f5e0a447510bbbf014a24000000000000000000000000000000000014c0e9197abcac09fcca8aa3f56231000000000000000000000000000000693200aaa7a1cf111060bfd9649742812e00000000000000000000000000000000000a64ac6619042e406467e1ef5c7d80000000000000000000000000000000abff6610c4d6c38aa40a1be31f41f675e8000000000000000000000000000000000007d121d6635780bb6f2a2258b6c116000000000000000000000000000000f475a16ab4b4a5c1530ca0b82bd846440300000000000000000000000000000000002fc5e95583abbcac18b48ed9102694000000000000000000000000000000c1130e5111743963619a62ec7474feae2900000000000000000000000000000000000d3c93d9d8d688da290e03cd5c6f83000000000000000000000000000000a7e22837c27e7e54bb0b10cacdeb73c0e2000000000000000000000000000000000015e045c2c1b7d761709cbcf3e53a31000000000000000000000000000000e67ae2b1a576a157edd5102d7c1e29e1e300000000000000000000000000000000001d59797a0ef0ac1cb3fef38264d206000000000000000000000000000000f0ee5bcaa5e5524f0c892e8154a8725ade000000000000000000000000000000000011526d67b2c76032d854b18e2da2e229ad04ba20ad2f249c9783010ef5f8b3dbaee88f14c92cf93dfd4de71c35ace706b749b8c08471051bb8c2b5728b5fa94c84ffb964f0439805e4a7acd3ca531a1a5be6f0c80f93c73154afc798a8213152bf352b7864ca997721032d5e6ba3461977f825457052cd9e36346e61f388b5779caac7a31949bd850a703243647a4c194094e9c5adae32f41886b679a0ce6eeab2547d530c70427a3bb0fe506a17eb2f963150ad0ed04a5f676879daa4feb5168bc5b36a74232deae64252fa100afd1baaabc1b292f60820e9d0549493579054a9ce56d680c2f02a50c98c7193f11d013689f01fede068adc2ee216a510c6a7947e5ec6ce54b7f9de5cea6b08642af1a5cdf073e294a117e2532d79acca44d2a7b158ab10e963dba82942ebd1fc2f7099f0f2255dd1c3c3396545845de1763d9ab55f52f5ff931497f6c6d5ab80724263c05160e473019e43830887a8234af5df46cc88390c320787189ec338380b32d7afd1991dc779b97b4cb7960cc188dc860b47486ee0bbc29349306bf570cc601915e2d7a57704479834f9173bea121391679e6fb76966a804a82aafa5b579a08d0167b18d8e7738579a115a3dcff846b5dde319976ea2efac9fc1abfd45db029e72adfebecbfc98b3f522effbbbf5d179cfc4e2a8cf89e3daa155c7b943d5300ffbd8d7e87ccb52ef9e91b39af09c63c79292b3433fb78ae28758ea9b3d2330c4c964f7c2b378254436467d8b5dff7cf02ab0c19c0fa896c5ea9ed8076f99c220b65a78787abcf163b7268e0f7321e4a0e20ac427a2b586d6a31d8241a53ef0760a5d05fb02454f891cd3b9de4e95698d6b9f0a6d61aaf7a8d84c3d7d70c5a0bba6bb5719d4af717aa105eacdd3985a9bf3810982dd02dc7912ff7a386f32c256ec9922de1525388457dee0202dd16ec6843279757c7adf5798ade7a7bc0b0296bf63832383b726bbd0b0c3fd9b6465c630c37be84b933fae3404189cf50a906ed4b4a6a058a6a64021824ee857598dcb6942509701bef33f2a284b8b72b5528da019b575ae54097a6dd2229d29b26b63931c1b8f381bfa191cabe61e1f69322d77a1ed9b38dc2e1c1189bf8bb4cf96be86a9aed29ff0deb61c919edbae04b291760956ce0d8c0aae97af57c177102bbf158a1717938dce92a91155cf3ffd408f30883c08ccc575393225a1a6882f3d2f31fcb77c7e7be11b28be3b7425d982bf1ca76a1b6c986978fe860c82eb1b366d059d25caf6339ed8c880a7b96ee871ed89f8bd0bdd68f35bce07d0a6d84d6cf8db084ce94b55f44e0415f60e2085a10d686e4a93b5ce44d09590005d57c154bee327c81a8ed79cead4e925807dd4322f2bb5b0abfc89ca2fee40c2922b7d772a71d0e120b6d6422d0631b1f4178702faa4e654043d79deeea81895dde157d0594b638d4fddcc7c3c63aa1b293691527cdd5ac5e21145d5bfb2b36bf8fc6003e9c241eda9a73a487fdbca6fa9ec05929e0f65b825eedf854278007f3e1d531c3608bdca0dbfc092669d4b23d07af8b0b90da2c0ba0417e09b3e4daae22bafc5a1ae67cd4a90b61bfe4ec59f6f6ae332437f062c7351a78ed2b675c7958d991337f82ab0718939697e61fddfba255022c4aef05025b724e4f423e9b5abcf4598e0ea8ef0c6b5bea11e951113d4e759517ddcd9e30fbd7b6000a71c4f6f7365d7ff434e69f80147656bdb718f5c832ad1a975c62e3c4606e2dc3ca4ad5be4653d797d9d26278160ff7ef8f8058d1e1aa2c6aba42e8f486acd7a497e886a7cf116a5bff005167c175ceaa7217f2e479200e9be562a1e73032a1277b0b0bd0c8b7dbb661148dd0020b568dfa8acc0ee544061df0508ab74e6517539f29bc712ba77690fc8e0487604a28fde5e83c161b152214bf90f2f3f812d6b6ebb91d2c3f8e97aa345c5b44c136f8c34644f4a25e6d23aa39e0e41b32f4b89b95d959796a6558b293b2dac8d36cfa61e0df0f0f52da23eefdf4cfdeb56b4a288ebe2cf4d4aa18dfb4c53c6eef5f31bbdc0ef952eeae00741792c4d68c83a391db75bd9408ecce36471acdb6677d0dcf9a555df6a7d2100572ac845a766baa665fc0a3e3e8f2f7e191be0ca2256146fed7c91f25f1a2090abe744d532894b7dd3f67641b1587ab7146a783436b803fdeeb61b2649098193874a8f949fa52f4c8ef3930eabc6706b735f1bd869efef018fb2f91b3b3d91a1227a488fb61eeceeead632a9582ccbe6fb5102ad8f660898955903188467914690c23f571c4bbef069f64ba8f4c8318fe83a28afa1db72361d4231dd16839084d8ff0da144b5a971cbb8af21743a08ff1a4980841dcf7f55063fa76a513040769e27c38c547e86bdf27ad14be4b8ec3dfc379fdc37995845e68d6da31bcfd2918d3999976814ede358ad290cbb07173bf527ad0b510798e8ddd829f098d560b75b7ea250288ed2c8f62eff398413fc8fdba8be5f85580f0e2ef27bd03707e248db38f3e645f84655bbc71e71d98729940e759bbc7668b248f8c4d087cf36e2ea43279a7277375090ab8d658496b4754f0b090529f61523c28aff6e0492d8a23ca475aa020c5388e88ca5da03f12bfb6203eabf81f154669c2e83cc85088f2167e8c3a3fd25e142228509e0fe539c6f59abca4744df693e495efe45160d7030713b3edaf8602073e829a928ed3ef9887fe594c4139d0bdac3eae0ae2ded90124bb361454f83dc032dd1dce20e38fbe35d02fcc7726951a7745af82d5d45d1029791b6c98ee0dfd2deea2392c244b48cc2145c60e1dcf9e29851f5282cf8ab422a2ef1b8c2c0e33110ecc464bfea2c8c5be725bb8279bc0bcd1bf18cdcaab00265fea80fd36a22b6e6bdddc5c90690d23555f0a777ffddeac1bba2b262503402f3e6ad2d672c1be8c876bd70aee1a4f13f3b58d58387cb5f110753079f6d707181b2aa793c4794127c29f3d762f3de659400bf989b6154e3d795223e75ebfcb093e846099c5ce95ae3ab8945191d1bbaa213490611a2970129e8fc189aee85f10a8a239959be44aa2ced0f2a45213de3f73eb8fb88505b46390f48ae2180e0b207d4d60012860cc532673ed8568080f2181674dd2124fca33dac1f26ed15e9f21508302e86b8b82ea2e8a33c24e48d86c33c6dfdc29d4880ee544225d28fdd92837cb2138d15ce2f793f4b91b1b94c3f91db985a5ed62d75f31c7f6d7b964b709244a285fdf59bf8bcef25f283e8ec2626deb742eb2f7347af3c4edd480502915a8612fec9463c198715e833e6ccab321e1c404d24ee2883634c124b10e5d8e0905a1635180d3f9c6fbd3cba0ccc03705ccfb92238d87579ac98b65fb910fd91e57c201726d02b95adca502b4a5eb1573fdc3ed54aa22a0941e9d118a764ec8137f1276e13f4627ec360b8a20742cd262040885761edb9b71c7ce37ddd732f12e2763849db5d320486104dfdc6970fd79152300fff7c276700a6d376f4874432eff69563ce0d99c31799703285d6638eff168f5e85a565b1c013ddde35d3c7c151a108ce599782ed1806226fb0e9a4c7f35a7926fb6b7d92227996157bab3b9004beb7c2a7dfe01b0a209f229a69e7ee393540d4ff3d86b0d09497c5559f1a322656e666846f93fb948dfd26113a2c12fbb4c81c298ef99ec312c05d3f5805708c5e9a4ef4b61f9741a59e53fc0dd9c6a53febec5e292fe71e91ef48859337b14aaa867d5b073834e0a086c9720b7819ec49b7f3c3dc0f76b5c831f95db810c116393a35471597774d63b76018ac7c9dcca721909cfc11898920017d3ba2f030e3e6332d10a70a3ea43e02a3ad0a1cf8a1111559db1ceed89ca1bd918053762037cce97009fbf3d5db5b37c735a7b59d6b0e9fd3b35941615db1da6055a222702ac9b87e32d714a9d9e97fde61caa3491e182229f6351282817987df99b1387018f3766a3edd9a93c8a1e4afc3bf13a2896161f4fc25e6dc9e9a9533266dfeb1cdb0802b05334ff2532a6966e02e4af4ef31b0618408a783a15c6915a54da2d1101ae5e31ef4ceb69acad713ad63ab4329f85f847ba92a58e06b65b7733e45a1fb0cd33d3de3905ca4083d6380a1e10683051bc53638b97014c7c9a0e97eebe1b38885bb8613f5b948aed0f8f8444522076d82365eb78a95a5e18e7196b456c1a4cd9039f2a8f6e02887d3ee1430137ac615393c1b94f19f5fa604a31c225c02723222fea62c38d6d3771700148f5a2528dcc53fb31c2bc069242e7656ef3571e28de852f2686ed5a7e58e8f6c707c147a4d44beb3b94a5adee4e148ebcdb1129955cd2b4efb471998e0e88f0a2f85f1539becf5f3bac7eec95f9ecc36dd982156f9a5379ce3105a0bfcdfe4ee4fbe0f5bdd884b137d2e2e3c096071665efa201511e65f423060ed4cb92146b3d08b4a36ccc6b07fcefd0e0b3474301a0e88b0a8c2c29a947164ec2646a6592f2c6f2a374a55ae5667cb8befd9d23e7cdcba91ea3b750d6165741905e8d072235668bc527c49a4060c91579b65a0a47688f9c074f47edae686e1c3e845cb225b73ae776bf42977ff31bb26fe1583b6e7835ce2f074bef97d82e126045ec2aef64973a71962e2f5161aa26866aec30ce54e7db1c56476ec7ce5ca6786fce5eb8652dc398cff5eb66ea0f7465b7d24f95e54e6c05c7c9a5976a210d6bb5c42885f7c216d50c4a621c0890db9cfb15115e7ccb47185b7f1878974253e93edd6e8ba3b684db7c8f938ffa549dd396db294bae0d4c28de156ffb5612036df87d76bde5e8ace0cfe15c1db7a7be3f938302ebb6eb2c10eb5eab53db2b28c8c7bf10f5d4c5c7bb149bcc56531df1487d6f9fa23cc88c098414cd851a15f3a193de0422f5edb663a2172da802fbe079543feced4f6b2c1d7c0598c2c9a8d8ab3b83aede55a08a26be0290651e124d93a6fd56c89cde1612b9a0917806c7f53f8a27acda32e4317da77def26684eb542184e943079e2c903c7f3910ca804fd088ae9ecafe778fb05c61761d62a5b419c15bb3d45b6af722fd85b50d9cbf4a0975c8a94e169db4c273ff3c3f33a06cc7a0e65c4cce0018d251ceb29e91854ad0c3192e4ca47bdb94e62d3b5a4bf85df37e5422c630b03160ea18535f8481ca2221ec18a0c3ffbbd8eae096d6c755029eeada6a0a13aa03e266a4abcbaa92245dbf3930dcf4e85bb14ff25918d662d398281591abc23403d2506d422201209c6fa02ccd4a3e4506aa54217bdd526d15b898d5118d10b56b517e722896cf5e09c5ad63ad3ce52e5fd4141107c045123c30aaac366b137046910a81110a691d56da5ed7f98d5ab02b87ace8ee967d547e9ed9fdbe484adfb5122a904904332e3f45834932222c82df77c8c44e153de943a03cbfa98b479972604be93f910c8cf9b74af4c33d1c06c8f06d6bfacc75987772da9cd7eec5599a015da6bbed2d1f783d002ed572958f1fa56618a18cef5763e43459267a361428a214e8c5663695b7c7e220a071dd5d4d7e6b6a4900de1a177db3621dafb53b5e41a3376f842938705c60ef3926ca1233c5e2a8d47e1188ac1290f5bd8cb3f849312ae81c9eee8386e3385a4612d18c8d220d61e905e7b4976ea4b9ffbbd7e3cdc18f6a06732f80776f204a366fc7dfef5a7e602d962725524b85d14e53b8f98f82b911cd81e788623678c7435c49c5d27e83ff5a7388459abfc409ca1c492ca6b20101778415ee06a5df51237d8c2979927dd8f4d2b95fca52ba8bd51b9c8cddc2f3746c9703df5724bc56f16f2a9b1daaf06c9febc79bea01e543984e5195bfb19c84f9bb585096e1a78dff9fc4dbc5e45f1e48c538f1d74a1fb5a74854b4ae820552a76446f39df5b74281c2f4ffc2bc37824046507f5892c4796adb31414f01139c2cf1d89d12fe0c32942a8c9684d443faee10fbcfae36a94c9a65437e7641beb1d3221ccb014bebae6214ab194c972393a66efb71c899940be132e6aebf41d8fd6033f5193b3687d41e64a5b9e21feaaf10615fe7bdbc4bf028ed343e64a1d7e1fee0309170d8e686f54e88735ca98eecaf9997f962b129bf77c780196ab0c3ac807c05e1f682b48fd690a7a4ee1bdda6500655cc7f9e03d7c0407d8d2f713b10c6d8ece4dc8bfc82b6f770f453d127ff50705cd69848bbba2a9df05af9e1502239766a8cd78dcb0c9c633b748221a36dda6c2035257b541318e7db690d41fb38363b5575428d3d3443b2f79996db1cc57e333af415c862c98627f2969a80d697ba5220f481cf316bab6396d6db0ae48b97d1e8f42b8111e5a7c5a53469d27ad9d5ee3192fe14dcace27ed68afb2a2ed6ac9ba8a648e2bebdff6db0a960a145dac86b2da2b2e326f0159c23e9a09ed3c672dc54128d3e4f5c97e18ee8d6e0b7aa642258adf6e3296281f9bdb61cd9d99ec33e7cf5a398828aa866c77f4be0dac2984e8e6b0c28307e384532d222937d788e26621df963611983b22a0a38815384e081714154f72e0167e14d6f9248ff788486ddccb9d4e6f40ba2dc458f50626ce1da6e8c2616af914a23189e7c11ab998d4e66d9599b85293ef4b84bc5826d2979da195234ab4ddb5ae051afa7de2c8a33ced626be79e055f4cd633c9880abd42709a2d49c1d2a28528a91bb0f8eb2446395c584fe51a209ef6d658c479205895c57d566f6f8c8f8bc9731279dc2bef2edef105009d4a84755daf3fc3930bc3c20c4c62071c6e56cc81884e45dd4bf36f7c74de9648e9dc56e004b57dda07c3a670586563ebfcdf54989ed08791b77ac8ead852f55fb19de88eac32283d1189c3820951e21c0ff4ab531f8fc0ff8397325b3053ed3d3d42fc7b1e94fcb22c857899d285c160b13d22470785c14f8740417cf5b0dadd05c096325f237ed22bda8ad110621e3795738e1cd1113b20297f440826b85f251f61a0323f9139670b46d0dca992526a399cc19e8accd6f0c7bb21109a7eca48ee3ecc287c721243137be0639255779afa59aedb36804ae5a97d26ee0c02d8823e05d50c30bac8161b28dcd8b477c26837215dd836e3c8ecd1e16ac39b23d44fe0f9041e58df8e0115967223aec008a97b2c7ed83ada803b0ec2f5da5dc58466fd515006efc07dc10a3cd7b646c93b12473f086abe954bf998f6bff5940935963adc6c86430eac0422e301bdb0fdf90d24b744fa115706256e465c4d7cfd8c713825a9dc778fd19c14012897918b2d256e16ad3384ee8601a6170c6c37887803a10fa2b831a5744d2699141c5db5af02854adbc90fa4417f4ae4bf4a2241a71c4e41ac24d3e369d31d9c72dff94bb1e429dbe611d1a239994e0beb57bc417f14c7222ba8e87d44af1c8e5f899bf1b022fe64524e4810fcca8aed7951ac74935818f563d853ca2bf31a620ec720a849b8e9dc5e6026733e0a9aa26792cba339c778e818864f8d9599098390949fcc08bc2dbbd27d398744072e80df530673c75216d5ca840e7d625606457bd7b2da10e52df911c57a7f8707fa1cfc92868e04dbd4e13a609ce0d4c0013aa6a6d0d73b1a73958907e68ed1e7e31321b578f83b4a0a0b4d92240f5d231debfc0d837ef972408bb82d3a1d902bbaf51745def1fdeeff2e6076b7987afc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000217d090006057d2f17f3bf563497a41c8c2cbf2aa73f3f7b42e0a728ba0f343a0de52b459f3125c21f64198c7c703131d88dfae189e12814c1a1988afc1031fe0375ba956d6b4c8b23a79daaef4dc65e755d80c6715821b5b428a10e7830911a24d50d95e427a32c491fc885e06f5972981e62d66cb71b9a4ecc1f9aec68d81107d802cfde1c2e8cea102f0cc1030cd947a5b4dc33a41cc354ed5bb5f802decc16acedf1fee5768e23752b915bb1c851f62354f36cb49e17c54c5a698fcf281e04c30546719e37f48fb1663b59d19c32d25733b5dc7374a7f34a17cbe57d9f73161164a23be214b3a270800b72479e03420a6c145d8bec1f08236eedcc271b5d2d97b7155ea77127c9043e2a41fc7b6b691f623a8d05396ec341228f70201c8905d946b3fe04f5677f97b942ef82745cf27785661bd8fa0fd8ce0f587e87eb502fdf04cc3a365b06385b130c8ec2938ac8fc09d364e228eccb482c9b0f8f92181fefa6a07b140469d24d20f3f23318888704470954e596875d048e76fbec60b70058fbb9db7977ed9bbb7a5ada08454a7eb24f3df5cf147342d82f2c3937cfde2fb82318be76d34a7327343c1aa3492587fc62f8d58974aa2fb99d71f72ecb870f88f14d7958a51718dcd71620810ea1c5921fa2ca2edf0e06f845f6c72f9ab301849a9306d8c2ebdf94c933e754038adbe0cf04ef56c75828640655adaf661623a237a561ee452239036fed1db82153f2f2d41c59dafc61e0370facdcc0a7850afafa2864067903c2363bad29d88c47658784ec3a878969bdd41c79cea8bc64168078c955f00c0539b29515e1b8fb79b7a1addf6912d222abe098844ed536b50d864c662c8d714de9ed44fbba92df5cf3bbf60b6b2e1fc4e138e9aa32fb747804add0c83217ec9faf776698ace0893b60e8707bf7b6c69afcfc90ff0429185c12e62983058bb00d1bc144ac9942773ba4252c413d61c711b8ae909298eafc1b1143037ee0ae04acd5a53e45e09a495e4df018bc7ea546f42207d32b0b7f4660145c596438add23f0addeeba9bc1bef60ca7c0ff5f0df3efb99311a1c4f5ab2829088928dd8c06bf6ee6d580e1586aa8b04babe70975c73b6229c252214deb7b0944b279b0fbb328c1f9d261ab7c56e32d8979e2301ea037acdbf17b793d043d0f050322e608b3545f28b745950162c372a8bdf0b8b0693dd1875b2afe2c53ca13f6060c9ad9adeda03b549d05b4b7ee336aa5f25f212dccab70e1502e63c95b14e1de8f229555aff7b667f42d50ecb7d52a338edb8df636666cc14784860bd225c1ce3c571d3c240e7016108112a28e3b1bffa5fc2424d00ca0e4d1a9c360c01960f7c4f073530b59c1e9f89c282c151d05e23604768ad829b28cabb163fdcf237b96beac6b0a675150d14dc21cc9a340ddf46b293adbf343d084288d42af1b0075fe1bb20dff0a56cb76d1af5a4dda60fda8ce22b9d84946731dfb7d2644041be388d3724b29c832194c3b06672706b6335c8f6edfba61784eb682600cf310068ea745b0a2b6f694f9927f4ee96666fc59979b3fda124447285a6c25f9545c0d31a02b61312b5357ab009e2234c289d31a7c19462fb19f8600bdc3bc014ef5109a9caff0cec3f69292ba97a5523140f9c8b6fd6a93541a6aab98d69afc3a15142632a2fa30ce84a222bc54c2f1609e1343504120033d0fc6d9d0f1e89e4b162438101598cd1dcc7a6adf437aef68ce7eee2d59bda1cfb523727913ccf708790d1c8176031aa54b27395072a5da3f019fb70f004daf26a6b3cf8199bfe2d910129c687d3fcfc915078be6795a62fec1ee3840a082e6799f425b4dba4fceece004610f5c5dec41d77a5f219fa545d9289bc4fbd4d343131fecdc08f51b70b5bf20fce0853b79a92a3020b24d8d30b9590ba7aeb5d21ea073ca06e7561759309c125443cc0e388a6817854164e53343790acd3fca09b4fe63551e36962d5e6b6d000000000000000000000000000000138c653ebd38b9541a7730797b67378fbb000000000000000000000000000000000022b5f6833e2feba197186871395f1a0000000000000000000000000000004195360eb5b2e8919f33ffd24ec45667ae00000000000000000000000000000000002e0759b4290e26bb367a255f71c37400000000000000000000000000000048f087e08a32dd5902ad77e8b63c0ce1aa000000000000000000000000000000000011bd3029deb0eea78dea69032e0fe10000000000000000000000000000000d8940cba561266eb68fd1819e9ccf266600000000000000000000000000000000001606f452f63b1503faa557385172cc000000000000000000000000000000a940e4c1fdedb86c855ff3f65f8c435c53000000000000000000000000000000000029279bc3313d0baab6f75285681d470000000000000000000000000000000db509d7d83caa9e6688a005bfdc39acc3000000000000000000000000000000000003150eaa4c36badcbd90d57eb4d4f1000000000000000000000000000000e30527693922131c7e1537df4147b4f20800000000000000000000000000000000001f231b0ad4e8ec95c699529c508992000000000000000000000000000000753fdea41f8da556cc31d6a55a088a10000000000000000000000000000000000000084093e15d78f4ff2d9362b8b0383c0000000000000000000000000000000210f8e1150ef8245c2d589e65c835cbe100000000000000000000000000000000002391c37fbb9dc83ff4f7194a7cb17b000000000000000000000000000000c7639db25c5ac60439bcf7bc25b817a68000000000000000000000000000000000002c535eed75edb75e8974c15d032db30000000000000000000000000000008f155fe1476a55576f6d9f435a098676fa00000000000000000000000000000000001899d2d288c84b70624837281353b60000000000000000000000000000003a936ec8831a5593a9bfa9ed8e3806af440000000000000000000000000000000000088f4bdfea48defb5977c3bce4c39d0000000000000000000000000000003d9ad5655d8f771652777d1f6314d108850000000000000000000000000000000000176ebb121345a61f92469e24ffe68f000000000000000000000000000000e50a7f1928a606b64700e6400c725f53f600000000000000000000000000000000001b10f8c2b99b86473f67266530976a000000000000000000000000000000f6487a261957cb0ec4f57875b92e077a6900000000000000000000000000000000000c77cc441e640cc0b82b3df6852a3e00000000000000000000000000000001916a21bd6d799bf03c726b580dddeda600000000000000000000000000000000002cbd6c91b9f28d7fe47f2622deec96000000000000000000000000000000060cbe8889babd29c557479c810d2d1bdf00000000000000000000000000000000000969755c5cafc0fc665743bd7f241c00000000000000000000000000000072bf6f29799cc4d1eed05613ec5eb0798b0000000000000000000000000000000000034097fe5a73fd30d13d4121efe9c10000000000000000000000000000001ed3a0ee6810867752e6bc20b85e021940000000000000000000000000000000000008c127efdb0ab1dd65d1fc997844640000000000000000000000000000009e3233984b592dec7ffbc03227f688ed2f00000000000000000000000000000000000718cbfbf4bff592d05c952c250e1b0000000000000000000000000000008e8d294d63051568d7b0088479c94922d5000000000000000000000000000000000009c457d5eb88cee5a6ef359f5c895100000000000000000000000000000046f03a5c0346c52ed39fce1ccb7d7fb5090000000000000000000000000000000000134a72d4e77f70b43f17ded1ee6a2d0000000000000000000000000000006589122e3f7896001610bd2b0820a0b84200000000000000000000000000000000001b6fe2895aff8263bda92ece36fcd4000000000000000000000000000000e456e87de8e398a3507e05ecdd5a89c6f000000000000000000000000000000000001427f1d2609ab79a697ab4f56f37da000000000000000000000000000000d4c54a6b65089fc6dc9ae06e9364cbeb47000000000000000000000000000000000029c07cc5d4ab5fcfb38e020e448c330000000000000000000000000000007ce247b72d215e0582b82648290620f5e600000000000000000000000000000000002cbf2b40b096e74574140b13b6e4ad0000000000000000000000000000003df1038894a9771f077d66a84894e46713000000000000000000000000000000000002769d3f95dc454e1eae83905bf75d00000000000000000000000000000075a62def0df696b147de3f12a8384aa25c0000000000000000000000000000000000053708284ab7c38cf5b5fed11ed23600000000000000000000000000000074b3fa2ee592f690a65f38027b9aa000a9000000000000000000000000000000000017888420e0e8828431083af194f8790000000000000000000000000000006680f430c808167ac0b10cbf97f4f10b1200000000000000000000000000000000002b1ccaf0084f8cacf6c6b91e290680000000000000000000000000000000cdde26be3c1b5310dc06ca011e233b528500000000000000000000000000000000001645f815cfc63452960f31022d72760000000000000000000000000000004299d6a3bf9f5832428459cbbcc0f889a700000000000000000000000000000000000d4fb8b83b6c3ede9c0998ee518a92000000000000000000000000000000eb550d4dd31a34fafd3e61bac4b8d7bbb100000000000000000000000000000000002d11f7ea6c6724be3a5b9019096758000000000000000000000000000000b833657ad1ce1dd0ac6e9de215eabaf9a6000000000000000000000000000000000029cc12530d21966a74e472e7e478c1000000000000000000000000000000b9c59114de63d9b7a4957199768a4bfb720000000000000000000000000000000000038b0ab10c641a1296cf00008b9fd70000000000000000000000000000001b7aba1112411382b8e4b810b67ec66cb5000000000000000000000000000000000020e31e966bf10387e298942d6a95c60000000000000000000000000000006d89917352bfa326bbf31b5a6fec80d2d200000000000000000000000000000000002570d649093c70410fdb32f69ed35b0000000000000000000000000000005776b03b18ec60a00245887f4be5798a8c000000000000000000000000000000000024f63b7efe7319dc180a37053e39dd000000000000000000000000000000bba286620620c1eafb586ff17a58a95db70000000000000000000000000000000000147c6c72a3a20e951bd2a40c525285000000000000000000000000000000f017df9329116e22df5af4b3be9cf8556900000000000000000000000000000000000dd2399a12001f293929d5cb6454b300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001dae9b5039bc89682a7c7583eac591cd952f8c4d7828246e8b4937d37225e1c616a6232888c39746961e2c7e7ef18e9f063b6271f6ad6d5ca575390ba0f432f4006741f4047f222e8b3cb819a7403566c6ceca8b5bbf4042272f90ad2ff7be2318a720e45c3632fa1421c4a8c9ee85db4f4bcfed589bd02e1d6c592738712425022fa69d94f07bb5cc1bb9ad117b5c0be4bdf1a406f306cbdcc6c543954008d31f673ad0c655a076b6004dd53031c197b93f96bfd16255e06dac12dd77ef183a25ae6837173f7d87b52c3bbda7ffbb5c90a1859c8480e7d2f1bbed25031b20cd2395ea7531828edc4cfbf25812e0fca4c0e45e893bbf3a88412c714e6704ca7f1e32db8f941e74de39a66e084e6312226bc0d4e48afa093d72531e5c69401c000270bd63e9369fa2c2ae26e295ce27b9df79edc522ea434f7d1772d9347793a41d77f2fee11dbc26787f355553e19d865c787082ab0c5b5b67508b2a5b7472aa1ac3c9b6a3943088c73602492a2f162b4a4c4c409c966f3131e5e39bd7e0c462299a93824e10c7db019d2c4b4ae5d19c1689f3eacd614d47d6e6706635c97c2f02279fb193cbf25416a850b4f2d0ec283514433ed267e7d60153c7f3eb03f1760831a824ddac8247f7a8d4127f0af7c8a1278b24ef947a4668e9202d9d17d2f628f6f6cb695d9eb3ac83ccea7cd92624e9e8ad875c4ff2f0726d499b3146db6f0127fa2189dde32863fe7c0f06aac90d04de2e99827ef2248ffe87c525f9ebdf274993ec7e4c7c375763110a52f19b7cc552c3be26654089b32b34207cb2855d15f0c3aca53f0e911f72c852ec892c7bcd9e6a6a1d2dd4ffcbf02499e8d50eae1a351843b516404e567c86ba5bffe6b1e12d03c226241cd990d57388dfbf70cb2e89d3215daf05b19e5bdc5a03893b84ceb3db11b50487958609d29f015a84c60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000156b210105ff8966b0ce42a53240ba1218000000000000000000000000000000000015bb855e9ee5085dabc2529bab707a0000000000000000000000000000008302060469ba3e66b50a6a6b004548bc3b0000000000000000000000000000000000099cc27777ab563adf5f313da1749a000000000000000000000000000000702811751682c1794e2def833fa6135f8900000000000000000000000000000000002b47fe446639d6440dee6e712b6cdf000000000000000000000000000000d296d53e3cfe890b95196148b61c987c77000000000000000000000000000000000019c6dba2c8e95658cf09a73331ddbd0000029c","publicInputs":"0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae000000010e431a24eaa7a481adb087b6ae8790630f93d642e55991c48481f8b68d3cf187000000032da55666630fdf8594065c377958c827dc1c130dac91f17c6699b53dce60ef750412972e58711f59a09ecb8420cf3193db944871cb6eb26b10c00c2f77150d77000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ac134ea3f9c61917bdf62507c89da98f3059d7caf13f2dff291591d4c03977823b36a2766961427b99fd8e7ced7b1615a71cde1e6c42114a6396bed32ad43bb00000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"} \ No newline at end of file +{"proof":"0x00008b640000045b0000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000029c00000000000000000000000000000000000000000000000000000000000000010237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae00000000000000000000000000000000000000000000000000000000000000012c0cbc4f994a261e78892627234ba92e95e9cd863ded5ea7ca8d0975ebb1adae00000000000000000000000000000000000000000000000000000000000000032da55666630fdf8594065c377958c827dc1c130dac91f17c6699b53dce60ef751064772c6309282d899f80168941f37d38f5659b75101162c63567e16426dee1000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002e8528cd15c5f78926f9807dc97cb9eab9dd979a89c5270a68a9cbf4eec3bb2d25627e775fc518fddb8a38d853c0d2e743f6f2f98cca5e0d65b0c6da843d6ac700000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000052d66fd04e03c9099000000000000000000000000000000000000000000000001ed96d0605c1530fe00000000000000000000000000000000000000000000000d1af5d1e917d024530000000000000000000000000000000000000000000000000000bfd17c82ac6e0000000000000000000000000000000000000000000000043757c6cfe0d83f8000000000000000000000000000000000000000000000000bd38ab4b22b660ee7000000000000000000000000000000000000000000000007c2d0b2b13c5f30a40000000000000000000000000000000000000000000000000001e469eb19d4da000000000000000000000000000000000000000000000001835f35ac276a67ba00000000000000000000000000000000000000000000000a76d5b31be7c0649300000000000000000000000000000000000000000000000557bf95e4c6dd39f7000000000000000000000000000000000000000000000000000021bfe40c7fee00000000000000000000000000000000000000000000000360bc1530494c29fc00000000000000000000000000000000000000000000000b8e74f007fe1466fb00000000000000000000000000000000000000000000000efc7fb40fa587bec9000000000000000000000000000000000000000000000000000027650c30315700000000000000000000000000000015b81ba3baf6dcb791f205217615384b69000000000000000000000000000000000012a1664bc9515eebeabd3d7d9330670000000000000000000000000000004ef0bc0b71efc7b73386206dd51bac74060000000000000000000000000000000000033bbee58a978ac8b36d41bf4fd7f5000000000000000000000000000000b912afbcd4323b43c677160faf5e54e25a000000000000000000000000000000000002bacbfa92c00af9f3cd486bbf33b20000000000000000000000000000006bc783dfd7177bf2451d5c62d7b8801d83000000000000000000000000000000000006980389afe4418e5746f2eb7932d9000000000000000000000000000000f03378eea0c72c52fc45bf1021e1175e090000000000000000000000000000000000129c6221572d1e04c5a3ce19589bbf0000000000000000000000000000000a40b0d25886b9fb1d31697ae5519d847200000000000000000000000000000000002cd1a3dca9b7916361bd8c0c308f7c00000000000000000000000000000096650cbf350fd79e4e21a3a53f084e5359000000000000000000000000000000000025e86237c45eeb6939f852e4019e10000000000000000000000000000000870ec61adc23bc1294a793de7d329135e300000000000000000000000000000000000d59e4f667228b55d76d57b80cbb4a000000000000000000000000000000dfa123d263c27f5e0a447510bbbf014a24000000000000000000000000000000000014c0e9197abcac09fcca8aa3f56231000000000000000000000000000000693200aaa7a1cf111060bfd9649742812e00000000000000000000000000000000000a64ac6619042e406467e1ef5c7d80000000000000000000000000000000c7e4a1ad17cae2b81b7c92f1d3d45192150000000000000000000000000000000000037462330634f368580225c8bfd41e00000000000000000000000000000009925be1bf9db860792d1e971e1a3fbf15000000000000000000000000000000000014adf1b000b921b9d254dbeb9510c3000000000000000000000000000000360bb8d1c46b5a072a9080d1ac09275186000000000000000000000000000000000003059900fbc6c2ed9edebb4fa138f1000000000000000000000000000000e479202591c9504d142756fbf106c6cbba00000000000000000000000000000000001e98431d7f878cdaf548512d276d00000000000000000000000000000000a7b99bb4732b5e2cdc87cbb100f82b7a53000000000000000000000000000000000015cec70ccee4cffe243b5fee8de1720000000000000000000000000000005193e795cf3af20e00ff67d692208e3fc300000000000000000000000000000000001dd23c4e3d685b3a4e84e360ea057e29a5383c5abac5a1aae803e4a43c49cb80642be82d43338ce4c9120ecce7f0f206bf16368676da880d6841d1dd450e91a7cfbc604c763d045f18e38523180f0f2f8e1d184b6e3f47c0dbd337639c461f7eb5cb15737467b74e185ae0fcb1c17f0fa0fe68d615be37e03d3c9cb6992688a879543d888fdcfe811df14409f85c9a1eb6c4846e802d5d565886af06e9f0ff67b4eb6690ff6ee6ad7b60d6e2ec9b831afa886312eaf27fda40b175698d46c24fcb73f70c431601f597182fa1ab7a2e2f442522b1e50983fcdca5595d8608d65f2f59d88e0b7ed1f67bd651f696802d23f48eebbc1a7fa1bb31fd1bdbbfc9d119cbdd7cd4ac5019a71700d18cc69c6e21164b795c55bd0b6375217b4d812f43cb624ae2355270ee16d2bb83a65dfab1099ac02aacd610b17267ff7b9f2014696f29aaeed2e1b352bc23e15b5b41dcd318d76aa2394cea19a2f230c23631b8cfd9fafa3b1b1ea10ed51e4fcf6848240d1ea61dc1bb35dac32cf6bfeace67e80f7abe2ba9a84ca6ed51ed920c3a0727a72f1641b5b32423e88e9d8801b3c47fbb6ad60fb52b3004d3a358b4a2a35c0af02dbfeb449eb4f803174301c25219d74ac67d0e55d163aab00ebb8a659a28abb2183ee87df48014c4b44b190cc5f3b94ef477f4e585e08ac3887a19d2328e952e2d37b1bfdee6609a3e430416ce9d24f6b721e9eebfb2e135854d748e70cb170001b4c4dd433b1895d85e6121d93cd56b36c595a1a496043a03c9ec17c92ac5e202bf699e5ee0e86fbfea2767cbc3fcbff6903c5f48a23bf9f31124c608ef7e4008b65fdc7357716ace633351076ae3da9c9fb62f6465bd6948830bda0bb8c6d20b98d246773d436fad47ad49cf0065bc6de12c7783ae6207d983c278f6b13f3d134329c7820c76467b9529fcc02cbeb336432749759eb1910337728df636672c22a39877bb92159e2e51b1444765d6b839bcbfab9d19501f00f476d66a10cfe90e945e8a7f44107647941fcecc462240458e06beb44316c45fc3d1ecfe3474af1154b8e5b08da9253ae3012ca8f6d024acc245307fa76a029ce1107e29624bc32c824c1f904fbb7ece9c06b3153f49a652a9e8601f615964dd92758610761bad244f8e8105815abdb71f5df0a87b1446fff846f8223f2a5969376fc6a19006ff200ff29a5c43524cce70f29b5d1f92c714df63cf02815d95c46f8fd12ea5247b139470d6025bee4c9eb3d44a0f6c7b58a30b52bb17c15cf0aac063558a90a95d22eb65a18f33f1e1c05d87a3eff6accfa9e1a0291813db359c7f631da2119cc3262fc5bf24b7db2bd159b09fcb2a8a4fdbe4d9b34a6a8bbed6fee433a1181f19068bdf1bdc7498ee64944081f8ff7fa8a2708664d2b53c8e251bc38d1e2d98ef0cdf901e0af0ef901f6313b836c208015e4e18a83bafa26cf3d6cf08919096971d6ef0c2adf614b656e59f6d43350236dab9d40d7ba295451ff2576f4cd34fc42796ec2153cac60217f2908a3dc608a09d71ed00e84aa403507f807262e0d55f2ab76d90623694d745549ce3a17a34a03a60de4169cf5020dc98f928e0fb30de0b7b8f836730be863923db4ec92fe0ed4c8e905cd9e476eee12698da5e66c1740df7a2047147599578b37693aadcc4918da2bcbcb68fb935f42779d26ddefff21308e8d33f8f51277ce1807deb7c44e137b0be131da7a44dc37160365e24bdf32f4a611a5d60bcf2af187c462da855ed0e201947a45ac3219e01798195c54fb629918bbc4f099fad96fed64c19cf695f85dd57ff7c582e5be1cc88d0bc5be01311e614e59b316c0f71a8eee2cf22796fe1289680e4c2840620e10607bc133f74023ef7a84fca3ed96de30c7bf807d7a1938cfbeec3803da303a3acb0afed8c241d3f6a93ea100e4c5f92b37b666b1667abc4b4380229ee25d3bd36d31d32272d2cfd6c0607ff80bcbd0cf89e00f0b3230a416205e08c913db255d0024e24349b1eec778a57be99a30271705140e732bbb8fa537f40a84a8bb638a8b374bc3c3f0587e5704829e10e584c423634e6cc2fee780b25ba846fd146feb228603ae1ad2f43f757fcea795c5d392d051caeb8a0533585c71a85a67358f1e1a0fefead8d06738099644c8fc16d50af578a9b9a10244d4973e4e9ccc8e0ce4af498f5a5e62f92d1ef232a31896b93abebd711ec129e8cc4290c33cce09fc0d4fdb829209518e315c0576becd145cce1e9da0c31ed27052acece8ec62989011f5d6c6cf51a07db5ba9d38a8f0dc5291c2270778a31681763d671fefe4a86ba961fba4b1f8107ab3aaa717df75977aaedb84227429371d4fe10698369c4993bae069b5ddd7402a4808299560238cde081b5e4274f38b6d0b54d9a35efc69aea17168aa01c680f5e72ca0b3f4799abe48c586e6b2c32b66f866122d5411f4e1f192bc3b8d734172c12242209694483d6238709273c588b4898e4d355ad7f348baa657f9ff6f02ab693e77ddcb010f425cdab6f2dc5c5cad4141c8abb73cb8ad0aa5ea47c11e01d5dcf282601e8e7f75ed6d1826059820020c3bbd4b0a7b082b25c5e444268f41057c679493c099ebcd34d9cd18af0092ed3d0f3d257deeac4c4b982aae1d9c90c86a0c1fed041ea1be79b00ba8584a23f716aaa20e59227e398cbee0660c08514cd780d987e08d616947f3cce091e4074419d972a6bdfd3159d92fadc53e2741cde804b06f2920401e9836929fddd98b5cece8f1016e04e846443326499af901872053128acc5a7bf990e03a47a54b94e19d575e66be3bd3296688ef75e13670b59a8d62ed731c941ba0d8a30a42a128e07a9e6a665a7fb4ab07953acc507d02984ccb343801751f5808ac495449bf5f4801707fdabc8955eef82b228b9692112cbd8b7bd6723b46e0948b79185754fb60db174587c0d3ce166b6bedbf2233b1cdc25f4baa532abc71bc1ecbb6266da90717f6781c876e4418d7d43691c9c8e0683bbae0a09dd4b7171058604af42eaee973c514e6e334bede15fd41ea560151bd8305f27c6f3a5384bdbed0349d1f6459aa600121cdaec4ac5baa7f0b76a1b134643ac4716657756b77eed1d102309754ee63e53e0de5d3e664b5f1e443f36268fad79414fc3291d76e155c1b28b60f2ece857181c9f9c34ba24dc4b41a05c1a8e3dbad4982369f257d1a95f0f175faa4cc8fded24c4c5dd0a574a8be71ccd1125a985f25a98bcd0e6e79738de159ee9e15e979d480f90a51097f6605249f4012045a508a2be9237b0f213b25d3b428b86607c67b1f71100321042e5d03bd31d1c8a9883c4e32b464a20983b8851b6f3f86b8156c088bc411acada4ece4f520d6952442755a842747f73be95127c305094558ea5e93719cfce4938a7d3f559291635fe72d8fcec34dad45812fa1fd375c071ebdfa720c36cc66de8f9b230321534506f3f3ae8cedaebaa7f8aac001994b9629e45a6b855eefe4cf000119a261a7316b520f68a98954411e2232f1e865bc31248b45ad1da35a19404c098c4240f4fb24b623a31add1047bed006b14ca0f45761f646fd2f98c6ec56d254de2eb2d6e9b2fcdbade1a2cde3dd0ba9e0f73b34bc7be69585886a1d76c49fde57ae512024842be6b58e851ef16899aaa569de6bda76eb9a32d0d903d5383e807e3740aebc9956807e0232addbc69f747fab0d143fd246593fdf543bfe796ae29e5d223a06d5dffb73b86b39514db2119d0993a994634dea98587764aa18e0cb947622008d7e249053963e15f57a8dae816d612efeb6c2aa17a4dd90f349f4259cd3b02bc5a417ab43b84573b439365beaea9f52149fec44743a0af899e3b97c46ae628e84185fd578dbb187d6fa884b6c00a5026becdaf87ce3adab05897a314848a2a5ef3bfd5a8c68ba394162a206f3efce37a593a8217282df9c55f31210bc8e804bab90189485b4e5073cdb01895f930a904b061355ce3b25bce09ac843ca1271206eb8090903702e7b8fe46860caf71b1471ca66b5678733dd887e48cc196e303d49cd7aec2279e7a59269fb04f8048f48503f5d85ba610432828451ea239d0232a41eed64939a0a362fabab512c5290fb5ac049b0c7e47ca625d67c0e36fa6247422380a9699982dd58d8394bd118d4f50bc9553e3911302f144d0e394b04a2a0d664b93876faaf485a7fd42fa20fe7986437d279e34eb153da21a1b622e880a9445788c0300360aad26ae4c29a9e9e300c0c8cbdebb4919cafb9da9a1cf9a27e5ee71ff17eb79cdefc583394ea828a344e89e7e28f4e6ce1c64714034865705871eb15a2fc6da5ca86398f56c98824a377e1f26e47f956a724e320416748c1b92b0084efe5907b7d3d2e6654619a77b060c7c2430a5c8c4d26cb0b2e6d0bd0937d08e6ef255d030d647edb4859fca863927767d9455c21f76593bbc73cf3408cc79be539fe107952a092513abdc05e3ff6a79ae6782b133f4027729e306d60311ed6ccd716065893683e8553396831d6b83f346a503c731d148ebcddb4109229fa71b19e4b22900df6382cbcdd631213bf3cdb4ac37659ca7de192a7b979119b7aae3c6001ee18d9106f1824aa229656a2f5c1f5f67073cd57da6e46b0a8b177412ace5e514ba3822c3b0bd8125a63fd38ce5f9ce2f3fdf80f31e82df2074033663b06ea7fc1785e13069cf81fb1a0b041f07a84890ba203f229e5fcb60c32a9f562890dae3129e00024cc9514554ca86fa216806cab6f97bc36130ca937e024b0802f4f4ecee19d568aa5253159ab92844fa9b03d732d70dc948bd73466506f0d1837a91e17125bc69c0ecff1c536bb1e4a86111518fc6b161518af76bd719cefd79b4d76d10a72c1e48a715ae0fc969b955f87e17c0dfa000d9d07d6bd4066ffdd652472c0cc985a504ece83a7803f3cddc7266beb55b4a4715309697d7015e8064102a06c0585c0b9fefb270481213dca8f159d724e802fbdbb863b75010fd26cd8ff112d5f6b129546ad4dece91663c8d727946d1f75ca94fcd22470512665de4feb79fb46ca9fcc091809df0d5704695a627c01cb04a28eb00246a4e2f3d86d784dfc2f34dafc801afda9b14cf4154d27ccf53e4e17de9672c1d012a16932510dced02ee70405a0d8e12bff8ec5c91b0a710ccb4045594cf33089d69169b300f118c3f684febe3011072544b503dee565dc04af7224b85a788993ebf0a9044bab5d7ebf1ec635b4d592be2c251e60557f9d2e68423df8eec0d27b50609e6f79bd9ba4f083dee71e161ef9c2dbb664f54d99f0098e41bd337b47b005e26d1fdbdd81e41b6d2c7a4012f2d2e370775368a229988177525f18309534bdf00409245aff080a482b4546b5200ae17839b6bba6bdd2d530e3af97b6c4364dd2a1d344b1b0738a5061de0038253cbb64d0db5f1bf17cd31748074749ccdce8618182e27bd83300a2d888ecc4a7c9a1d96bc711b42d6eda690a5bd58f5b969a71d365e253fc31d520510dd39e1012a1ada898dbc815accbdbe5814ae8c8dd12f0ada1adc271d61ecb69368b8f7a28b5814a6b8f54ede38df5345c6344f8427bb17ca8c594591e880257dab460415b35d12bffc874f0093e57e4fd05c4032cadb15b777b2811cd062ea20305c3064da7c27bf1dc2a2253298aa276b3421caef701b1d9a1d457228b0b7239e205d2dfc83e07a6833657df57c9228b182174f54161920833883f85f99087a27ad0881df3fc943b4a6edede38086a594d968ced46414ecaa93fcdf392244b993dc656299628f191473b854eaecb142679773e57d7d2c96c872af42c29135bd8ba52d1227978f60c29365be034e4a190472937ac9ce2ed90569862e633220a4e24e2714afda5daf0480b1ce305d94e0568ce964e79d022c84362a9291f8623636989cee6f6e08d146a9fe290d8437c357c8e633a0752962de323e8587f031cf8b514c9527d5858246b0b04d45892a5342c609cdfd840e40ed85e822d4d59b332e8a5b30980d38cbf406d1e2d681502bff2f65301a550d104dbf264971089c27c1643638f01dba6573d1a45579cc4564ec36fb129fe413832bf9e3b85aa83a5969a9288982e45e2908dfb8e178c3c26b1e3b16e3978f1d94b1af640eac190967f5e12388da434d521052344e39291dd9251a18c7286e1bb96db24e5ef54e57755b82274f88aed5033e7c3a39caee49de45d6007b0b2e22a5b3552530b1b1133ac91d11f8ec6098e83aa082996a703775ba381d32e7120ac29f6448337965bf4f84ed8ee888aa17a31f41200e8713b279ee52d61d0f470efb0a4b75bea3a4a2bc412caa768efd5c4183f7781885d9320ca38b2a910726087a15c8440b461776df5682d599708741fffa1960e52bf1fb7a30b3279c0cba15cbf40b9a7b7ea976f2924fb8bf2815bfeefb054dfc9378ce16d361959a2e810608bf60debf8ddd33f6ce1a150b73a8e76569ff11959954b5a16e363a9cf1681daec4e9274e3f104de256aa2720eea66fcf55bae954319c4a942b00c5c1ca811ff7c9add5b7e7a5d7f69796e6182cc1b3846575cf95770ea49baf1a9fb3f72917a293d9656a548f132eefa3bed6678bb1e3529705a3a1e69fb6e433108ef49e0c4509790b038044f2822480d982b641461cb927936c0f0e1b39bed3a295cefa11f98a88c712bfd2edd41dc5df0f259d0c1961372d030934b0a0baf127d3272e1ce3254d0d7e2a64a5b66a033b88e33b4bd1dc38ff2f24fc84f84694dbe8ad58023721613a30fe296d7f5b11156bf067c43a72fec2b36697493214675fa04a121202c575e511decef3112977b19b36c992992fc54bc192b0c7eedd3b7f1c981624de8e4def90dfa1686896caf78a7bfe8c76d249f8171e4fbd3a33d7b021ddce2e60df7eb68bafb608b5ef0950f975e275796d9b5c5134c9e176a48328f5f20f0395b0932677440cbbb5ba15939dfc0ca344ffb5701a084e8f34d5bfff588edf1072409ebb185addba96f4446f7604027838595d6cc84f247682c602e0fe762d0ac71fcc6952eb902b6da73c42d0d5f17a4a7352cc98b48f214361157434c73a17f57ef53a1d2fae5a8c47b810e70bd9100b940599fbe3448506b465c018b06a01d39e56516ec275a27723b545d2b1b0492dd80d723941b7857d0e9ca6b692c9051f0b4177e3a6ed76c96161a63b4ea0140ef05913ad7e45989de3efbd1f981807a8eac6252fdb70b019692adb01e6f5d350cee6d6adc4bee3ac2e895daea4a81dabe2c8158c7d8a4940be7e3ed0eddf6bdd25dcac630b69dd77780a986f0f9c2b1df4d6398ca3eec323e57eeb94cac47a6b8c7ec0bc8a43a3fe01a9bd746f5d20da34851e0d2f5ad78953ff423dd3956eda446821d289f793d92395668c5d1d1597eae744871e1cfa79d35eeca595c20994baa61f723c8af2c414be80b726640f9de7edc1ae4ff41925156770dfcf4f7d7aac5e7ea81ff02241f6045e73f63a1e365934048c34c14005b4a28d9d5a3864ede696a72396bd2c269a759e4d3f4709cd7f64f6e718aa8e84673996b08e0476c15211d2623b9a3a9641b794ea114a04f7b9444395b8fa5441b2322d0b2428c44b23d2c15ddeca322049780bc4c638000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001cb00fc9b3444b88f75c866a225dff6f2851628e802064a4c3cff7983424d8500c75894da16c44abf4ed8425c4d80da33cbcf3130a1bd152381c4d9bdf6015b106356414819b09017be41bec2cc7f4d8a768e6a1b27fcd5e2a3cc261c32eede617eaa03e0f5fb202b2715997aafca64e56193da202c2c8cb79f37dd0e735437a2b00aa56c5fdddb13a7b7fd8777a92812ca622676f562bcef4bccade598a94ee0aa913e8488dc0880bcaedd7d5359f0d86f5322753ccd03ca01dd7336a6153621fed6a700fa3dd8207dcf8866360327e256a96932732bb999f2024f43f34a96225d7976de0c3c028e99fd162381d12a34195447dfa68787db7f066880474849306109a4663e63e346e514906ee04a4b7806b4e3c9b27d9ce2c6c58a445384ed22bf984a7f8be55aaa326532d1e1929b26326025a05269b9b66b5d805280ceed61eafb1dca350a3b8c8c2138a0e9ff40638db0a4d39fdfff73eab52af520c1d4707c23e878c784c66062ec30f57930d900fd6281fb93f13d0015d73ed22bcbb812077e4a45a615ab0d1c57bf8ba55a97dd3a936eda40451e2701d847d4d4a3cb92f6089113b8d8d803e351684af391f2c06467aed56261703cc5bf72e7b8ae2112ee8751153bad6b0319afe74d55b235ffe35ec40ddc64294737fd4becf106ef319fca2fef7e977cecbd4c25647fee8020be3bc68a8b6f88cc7a885ca2b8ed1360456e491e6743528194caf394b6decfc5145cc93c26bd19325ec1927bc626a55020ac796745fa6ffd207ecf07e16b6a505572a03bfab0918adb26c26d0b970af0caab556711a315a5a392002633f282d38efbb6815dc98cefa65591169feba241a95ea9147ddc02fec52965410444da9910b544fc39b4f6f573699d1fe6217c31a8f1807704d6b4da6717c959bb877146e0de4f7d08e6ddadc1bd66f2c6c7af218b07552f4adba58407461ab831726a40f793e91926c585fcb825562eea464432606d5ceb59fee09ac2ce91b5737d54c11c1f2a61162e5e4ebb196dfabda1ae102e5237d29898c93106cd04a8a9f8e79f96f087b28576619a1d5696d72c649a615aff46988dedfa6bbf50a989fdb08cfb3e243c68e1733942f4d8de1a2d567672b36d2f96867e43c488f9418956102779e75ef11eb64db96562726b773159f491491d825e61dfaadc57c4d1e454438cc8be4cd44342e8cd0a412c1589db45b5825d06821688c467dc6c6d73a80c570f3a3cee25c3f23dfbf2eba027deef6cdcb25c943758367b07fcd52bf45dfe0e4fb6fe092a2840c30c0a53e39791a8d83582ae3b703c4ab5c933823128285ee36893702ccb3854ca98155fe588894ded2072a65a33ecd3d2d28613e384531b287b36979cefe7e3736218e7a22ae92c78f571184f2bd0d8dbe7a70d22714ba4a31e3238da7fa725f91de08783c7df1d0e23404219d525a82f98f63d55c15bbd3d1f11fa141b985d657ea99b9ba872ca6377e2d0a3ec4ad6553d5b5d3529565005f02adf8bb89b76c48c779ca3d1433d7e9d201b9a869db28a8fee83d9b061a14be53d2a4ae2e825ddca47ef43d7916a1c0d3268ed10889a6ab8c1c52041a2313eaa303407c01c659648f585c5c3c02ad124e1890fe9e04d74bb15ebc87386c6a269600e588aab22705d7c6e58965e244ce132a6f0281356ee643850f6f530ae32a6ca7141d31a07644a92ac2441ec9f924fb17635dc449f93650216c6b9d374b6374f7a6643dde80d3d4dbdb701405e8c4852af1c76841008121782036504f58f9ca3166356684da22fad8073738e60f39d4001b49f2213def5ccfd1a7947adf948531239b9c6ba2faa228dd0d8d162b39bd246425a24bb6a39676b0f9f8f413b934bb53d859bc6f15eb1e43b19a6ec6c5af1f22edeb59bd56febb47b16796164bfed86a7554aaeea69e22c4b204efd3ab4f1ae997420c52c85e97ed6f4c71fe14f5ffb6a3219101461d62b25d311c52b24a000000000000000000000000000000faf46a0cc45943d510329d4758422486fa00000000000000000000000000000000002f22b969b42d7863aa8e8d39a60967000000000000000000000000000000089e0f5ea75bc736cd50facb07f056932100000000000000000000000000000000000c51879b4ba54b8625cb734e49d949000000000000000000000000000000f178098be3091ab95994ac8c51fe1fe79200000000000000000000000000000000000c4b2211bcf7a0ca06f1f31833f157000000000000000000000000000000feeeb7fb191b92b2e9a4b119dbfe2f440b000000000000000000000000000000000021e06e7dba7c4dba23ed0ac0490eb4000000000000000000000000000000f74db3a8fb7c19172d0eeb32a6e9ac07a00000000000000000000000000000000000277cf646af8714a1c17426981f937d00000000000000000000000000000093c32f80c6308b12cded2a1fe6f7c257e2000000000000000000000000000000000016c61b693d2db5acfbdec440fe870a000000000000000000000000000000e28beba97501d8499eff8415bcd65a52f3000000000000000000000000000000000018960aca8d1c5a837825cb48e2bbd6000000000000000000000000000000d3a52de3c63ed8ea4ca9391db2767860780000000000000000000000000000000000179d0967bfee98ee34c013d298978300000000000000000000000000000060d01f5ea85f2d17b6536328a3cd6db955000000000000000000000000000000000018fbd304dfc5b02df09a26004bae7f0000000000000000000000000000008a4e513928373683290d94bffa87fa868b000000000000000000000000000000000005c34bb81b62b8476074e86a9164a10000000000000000000000000000009286bdf68b18320eef3723ccc74d376faf000000000000000000000000000000000007a9d6d08b9116841b06e14e616a1b000000000000000000000000000000e4552f3963eaad2a8d7265652e01fc4c0d00000000000000000000000000000000002bf659a5adf100abdc5e85dd8eea1500000000000000000000000000000034e8e3dc152f68ea99e7bac0ffa1f3675e000000000000000000000000000000000028c7d746c83f3c2562e327fba9bd4d000000000000000000000000000000064e0a5af4a16f24780faf357dd41d018300000000000000000000000000000000000dec160b5ca60f4cca067fc8675fd600000000000000000000000000000011b7a07d7c2be9761402ace0f3946444f700000000000000000000000000000000000c1923234c73bb863c9aadd6a7765100000000000000000000000000000027fd27baa37bdfc2b399c5defc1db1aca0000000000000000000000000000000000018f264ee712c9136845935a6baf7ac000000000000000000000000000000be110b03336102a0cc2e506ea1130d2893000000000000000000000000000000000029075299f9869d399f1c5eb2d5c713000000000000000000000000000000dfa4063d70859d7987fe3fbb70d3e7743d00000000000000000000000000000000001d9933d5934c92414255c8feee1b2800000000000000000000000000000098245f6eb34c6336f70e990b555450b12000000000000000000000000000000000000438be85ff350ff8d25a66a2b391eb00000000000000000000000000000070df95cdaf5df4e5958f109c30de06ad9c00000000000000000000000000000000000755d3384b2647285af4c5ed6a2302000000000000000000000000000000863a674a850fecdf737dabe901d0dab89c00000000000000000000000000000000000e8a467e6b81797cde2914b1fc2b0b0000000000000000000000000000003a5fcc0609b049a803837ddbb452d5ffca000000000000000000000000000000000028a932d8ed9c46a41f913ae97b09f700000000000000000000000000000073636267570a775a69519a7835bca4b9cd000000000000000000000000000000000018eb1e0c95d4aba3349857d5cc29c5000000000000000000000000000000862505333c01a361cb8a727505c4cea329000000000000000000000000000000000004d998226e760738a941cfcfd92a210000000000000000000000000000006ca99bafaefeac2dcbb665825b87366ce3000000000000000000000000000000000012e6b344c14f0d73887a3eca6479a80000000000000000000000000000001e03a6c657c74735001dff2d272f7e1d710000000000000000000000000000000000199838a8cf9c3c33aece5f7610edd50000000000000000000000000000001b0a4d17eea4e7729dc942d04527b9ea74000000000000000000000000000000000005760bd566a20f7cc751c43404d2eb000000000000000000000000000000741ed626633e80c705e83a0614bd8f5cf300000000000000000000000000000000002624d78b52e19ed8990d41f16f322e0000000000000000000000000000004e36475eb3406eefcc2095a6186b21f484000000000000000000000000000000000022d6ee383e5da5987583f21ffaed9d0000000000000000000000000000007244f8bf04d10872b639db0feff81f6fb2000000000000000000000000000000000015f2efb0233dd3dbc24ed9756107c50000000000000000000000000000005152428c19fc298512cec17f63e58a351000000000000000000000000000000000002a578ab7af465d72864c8a65839f78000000000000000000000000000000550b1ba321c11350fa3b4d20098699a5d2000000000000000000000000000000000006ca233a3af88b5d6b101cfb8eae12000000000000000000000000000000542ba5f9de03f8c85ec1035827eeaa52430000000000000000000000000000000000154461e84aca6d7e06526682d2321a000000000000000000000000000000db7397f53f5d5092dd10fbb41b868ee5ff00000000000000000000000000000000000d22cd7a6887a4cd13546ec733c7f7000000000000000000000000000000f6631b65b21ee6354b54501f512471ecd50000000000000000000000000000000000176aad51256f815c50ac47eaa1df2a000000000000000000000000000000809413813cc80ab8aa2211d5f35ce75279000000000000000000000000000000000017657767e3ac7893c7493bf43c368f00000000000000000000000000000012f620edf862d27d52d78663e8b06563cc00000000000000000000000000000000002d8f300bd8a95ea3fff02ecfd51ef9000000000000000000000000000000bac0e5ef22df4c270d37ec737d8f477a2f00000000000000000000000000000000000423c35325182ea763d93353d467a900000000000000000000000000000099179366a9bd4b8e0836b2d70587af662a000000000000000000000000000000000000aa58b97a7bae5022dd41afa42e0f0000000000000000000000000000007e2f0be736927d56371dc7aa56a9cd9ecd000000000000000000000000000000000008c9cf022c1725f1beac5bdf7c3d9300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001f002aeeed31b98a560f35882c295326b22a2f43fae873baa3ae2ec0271678ed21cd1ae90dfdc172189240181df6e5ccf1f21ec7a1a94ffeef67c78a484182340657d9d3c4c06a806dc4ef46301e5ef53ac533eb5a258cc1b603502820a4a6b9103a03a2555b44e2a6c610e57a8f7beec22ca1ecaeb40c39eb04d24f4411e1e3186dff8ac23d675b992c89f41f5bbdd1934591150ff40152c7b939ade1643bd8173d44bf3a863ad490d4458332226560f24b4bfecdf314c039fc6f620839af40163ffac791214a34e4382140bbb28975f07e5da6aa6e6bdd33cfa3cfdba3451620473c9603c77b72446d5eeb9d49a07614239feca6e2a480301ea1056c22194c030d4eae65b7d7c9534b24cdaceed03db729bfd252e3d91499933d95f602fe231f9ed3593d29b9fc9e4c3be4fbdd70a22df4b962c9ac7bbae5e20ad21fb97f7115d17b5dc185c3cdbbe7257245aaa4df2301d42191b771bcbe5667896d03473b071f8c1f6f4ce111cb76bee810e43ffe5beac3fc7bc26e1f0ae38e8eaac628d52b482e13bfba963d2b47c3e8b2247b136f271e71ecdef13a2c3c39b3564b49862c66c86b5c29d8abd41d0bfe11832a1413e70e45344600013afbe813c60f46850f81cf7db2a2cff0e712f805b60b51e7aa1ff5e9551acda40975434ae1da3c1a219d5ca20e1a5fdc73963e9fa583df1883e6bf5c969c7a423ba7d119ea5613a6085057e5d9848180f629af994d859af9902087b78cb5126f24ef07b46f2c0f511e903f287545cd7120b6203dcc3e4a6cda74fdff48c6f0c046b42ed51ebec9e806a480195dc3b8f881582dc2f326aaa56befca68ca45f364ebb4bfff8a5a9c5529772c1fdf7e9994d6fd8ae61bf8ce408f5ebe6a941b9c6cc2e714c8d2a9a9e62668df15fb9268e2712ef90f0593b205132792326d8c74bf529ede861359502e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e34fb27b3b6285165d62f69763cad040ac0000000000000000000000000000000000273f922586667f277a366f156c194c00000000000000000000000000000070e7c8146bf1dc4b1f7212e1e6a35058d00000000000000000000000000000000000048d13bd04c9004cf1c633d6dac9ce000000000000000000000000000000524bde66a3cc04a9a01c5463ff2b65279800000000000000000000000000000000002712d136c5dcb6465235ac594cd49400000000000000000000000000000042745a2172b44a1313e511fd2b39ad01d6000000000000000000000000000000000017b3f350b0d1d37d3bae021dc222190000029c","publicInputs":"0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae000000012c0cbc4f994a261e78892627234ba92e95e9cd863ded5ea7ca8d0975ebb1adae000000032da55666630fdf8594065c377958c827dc1c130dac91f17c6699b53dce60ef751064772c6309282d899f80168941f37d38f5659b75101162c63567e16426dee1000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002e8528cd15c5f78926f9807dc97cb9eab9dd979a89c5270a68a9cbf4eec3bb2d25627e775fc518fddb8a38d853c0d2e743f6f2f98cca5e0d65b0c6da843d6ac700000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"} \ No newline at end of file diff --git a/yarn-project/prover-client/src/test/bb_prover_full_rollup.test.ts b/yarn-project/prover-client/src/test/bb_prover_full_rollup.test.ts index 1834d01e1b4..dfa960d6e63 100644 --- a/yarn-project/prover-client/src/test/bb_prover_full_rollup.test.ts +++ b/yarn-project/prover-client/src/test/bb_prover_full_rollup.test.ts @@ -31,7 +31,7 @@ describe('prover/bb_prover/full-rollup', () => { }); it.each([ - [1, 1, 0, 2], // Epoch with a single block, requires one padding block proof + // [1, 1, 0, 2], // Epoch with a single block, requires one padding block proof; commented out to reduce running time [2, 2, 0, 2], // Full epoch with two blocks // [2, 3, 0, 2], // Epoch with two blocks but the block merge tree was assembled as with 3 leaves, requires one padding block proof; commented out to reduce running time ])( From a74377bc10f164dd751fa45f1eae456997da430c Mon Sep 17 00:00:00 2001 From: MirandaWood Date: Wed, 11 Dec 2024 09:59:15 +0000 Subject: [PATCH 30/39] chore: remove some warnings from blob code --- .../crates/blob/src/blob.nr | 40 ++++++++----------- .../crates/blob/src/blob_public_inputs.nr | 4 +- .../crates/blob/src/config.nr | 16 ++++---- .../crates/blob/src/unconstrained_config.nr | 14 +++---- .../base_or_merge_rollup_public_inputs.nr | 4 +- .../crates/types/src/abis/sponge_blob.nr | 2 +- 6 files changed, 37 insertions(+), 43 deletions(-) diff --git a/noir-projects/noir-protocol-circuits/crates/blob/src/blob.nr b/noir-projects/noir-protocol-circuits/crates/blob/src/blob.nr index 7a7d47eae88..c1390f7aa8a 100644 --- a/noir-projects/noir-protocol-circuits/crates/blob/src/blob.nr +++ b/noir-projects/noir-protocol-circuits/crates/blob/src/blob.nr @@ -1,10 +1,7 @@ // TODO(#9982): Replace unconstrained_config with config and import ROOTS - calculating ROOTS in unconstrained is insecure. use crate::{ blob_public_inputs::{BlobCommitment, BlobPublicInputs, BlockBlobPublicInputs}, - unconstrained_config::{ - compute_roots_of_unity, D, D_INV, F, FIELDS_CARRYING_AN_EXTRA_BIT_PER_BLOB, - LOG_FIELDS_PER_BLOB, NOIR_FIELDS_PER_BLOB, - }, + unconstrained_config::{compute_roots_of_unity, D_INV, F, LOG_FIELDS_PER_BLOB}, }; use bigint::BigNum; @@ -190,13 +187,13 @@ fn barycentric_evaluate_blob_at_z(z: F, ys: [F; FIELDS_PER_BLOB]) -> F { // TODO(#9982): Delete below and go back to using config.nr - calculating ROOTS in unconstrained is insecure. let ROOTS = unsafe { compute_roots_of_unity() }; // z ^ D: - let mut t1 = z.__mul(z); + let mut t1 = unsafe { z.__mul(z) }; BigNum::evaluate_quadratic_expression([[z]], [[false]], [[z]], [[false]], [t1], [true]); let mut t2: F = BigNum::new(); for _i in 0..LOG_FIELDS_PER_BLOB - 1 { - t2 = t1.__mul(t1); + t2 = unsafe { t1.__mul(t1) }; // GRATUITOUS USAGE OF as_witness, LIKE THROWING DARTS AT A DARTBOARD AND HOPING THIS HELPS std::as_witness(t2.limbs[0]); @@ -216,12 +213,12 @@ fn barycentric_evaluate_blob_at_z(z: F, ys: [F; FIELDS_PER_BLOB]) -> F { // factor: let one: F = BigNum::one(); - t1 = z_pow_d.__sub(one); + t1 = unsafe { z_pow_d.__sub(one) }; std::as_witness(t1.limbs[0]); std::as_witness(t1.limbs[1]); std::as_witness(t1.limbs[2]); - let factor = t1.__mul(D_INV); + let factor = unsafe { t1.__mul(D_INV) }; // (z_pow_d - one) * (D_INV) - factor = 0 // z_pow_d * D_INV - D_INV - factor = 0 @@ -271,16 +268,16 @@ fn barycentric_evaluate_blob_at_z(z: F, ys: [F; FIELDS_PER_BLOB]) -> F { let mut fracs: [F; FIELDS_PER_BLOB] = [BigNum::new(); FIELDS_PER_BLOB]; // y_i / (z - omega^i), for all i let mut denoms = [BigNum::new(); FIELDS_PER_BLOB]; for i in 0..FIELDS_PER_BLOB { - denoms[i] = z.__sub(ROOTS[i]); // (z - omega^i) + denoms[i] = unsafe { z.__sub(ROOTS[i]) }; // (z - omega^i) } // If you're seeing a `bug` warning for this line, I think it's fine. // Ideally, we'd be using `__compute_fracs`, anyway, but we're getting a "stack too deep" error. - let inv_denoms = __batch_invert_impl(denoms); // 1 / (z - omega^i), for all i + let inv_denoms = unsafe { __batch_invert_impl(denoms) }; // 1 / (z - omega^i), for all i for i in 0..FIELDS_PER_BLOB { let num = ys[i]; let inv_denom = inv_denoms[i]; // 1 / (z - omega^i) - let frac = num.__mul(inv_denom); // y_i * (1 / (z - omega^i)) + let frac = unsafe { num.__mul(inv_denom) }; // y_i * (1 / (z - omega^i)) fracs[i] = frac; // y_i / (z - omega^i) std::as_witness(fracs[i].limbs[0]); std::as_witness(fracs[i].limbs[1]); @@ -339,10 +336,10 @@ fn barycentric_evaluate_blob_at_z(z: F, ys: [F; FIELDS_PER_BLOB]) -> F { std::as_witness(rhs[j].limbs[2]); // y_k * ( omega^k / (z - omega^k) ) - let summand = ROOTS[k].__mul(fracs[k]); + let summand = unsafe { ROOTS[k].__mul(fracs[k]) }; // partial_sum + ( y_k * ( omega^k / (z - omega^k) ) -> partial_sum - partial_sum = partial_sum.__add(summand); + partial_sum = unsafe { partial_sum.__add(summand) }; std::as_witness(partial_sum.limbs[0]); std::as_witness(partial_sum.limbs[1]); std::as_witness(partial_sum.limbs[2]); @@ -367,7 +364,7 @@ fn barycentric_evaluate_blob_at_z(z: F, ys: [F; FIELDS_PER_BLOB]) -> F { // ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ // sum partial_sum // - let mut sum_out = sum.__add(partial_sum); + let mut sum_out = unsafe { sum.__add(partial_sum) }; std::as_witness(sum_out.limbs[0]); std::as_witness(sum_out.limbs[1]); @@ -391,7 +388,7 @@ fn barycentric_evaluate_blob_at_z(z: F, ys: [F; FIELDS_PER_BLOB]) -> F { } // y: - let y = factor.__mul(sum); + let y = unsafe { factor.__mul(sum) }; // y <- factor * sum // => factor * sum - y == 0 @@ -408,10 +405,7 @@ mod tests { field_to_bignum, }, blob_public_inputs::BlobCommitment, - unconstrained_config::{ - D, D_INV, F, FIELDS_CARRYING_AN_EXTRA_BIT_PER_BLOB, LOG_FIELDS_PER_BLOB, - NOIR_FIELDS_PER_BLOB, - }, + unconstrained_config::{D, D_INV, F, LOG_FIELDS_PER_BLOB}, }; use bigint::{BigNum, fields::bls12_381Fr::BLS12_381_Fr_Params}; use types::{ @@ -422,10 +416,10 @@ mod tests { // Helper to return (z^d - 1)/d (unsafe - test only) fn z_d_helper(challenge_z: F) -> F { - let mut t1 = challenge_z.__mul(challenge_z); + let mut t1 = unsafe { challenge_z.__mul(challenge_z) }; let mut t2: F = BigNum::new(); for _i in 0..LOG_FIELDS_PER_BLOB - 1 { - t2 = t1.__mul(t1); + t2 = unsafe { t1.__mul(t1) }; t1 = t2; } @@ -433,8 +427,8 @@ mod tests { let one: F = BigNum::one(); - t1 = z_pow_d.__sub(one); - let factor = t1.__mul(D_INV); + t1 = unsafe { z_pow_d.__sub(one) }; + let factor = unsafe { t1.__mul(D_INV) }; factor } diff --git a/noir-projects/noir-protocol-circuits/crates/blob/src/blob_public_inputs.nr b/noir-projects/noir-protocol-circuits/crates/blob/src/blob_public_inputs.nr index ce3c00068c6..a318fd00ed9 100644 --- a/noir-projects/noir-protocol-circuits/crates/blob/src/blob_public_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/blob/src/blob_public_inputs.nr @@ -33,7 +33,7 @@ pub struct BlobPublicInputs { } impl BlobPublicInputs { - fn accumulate(self, other: Self) -> Self { + pub fn accumulate(self, other: Self) -> Self { // TODO: When we verify root, rather than block root, on L1 we need to accumulate many blob openings // @Mike this may be where we calculate z_acc, y_acc, C_acc, etc. // WARNING: unimplemented, below is nonsense to get noir to compile @@ -42,7 +42,7 @@ impl BlobPublicInputs { // This checks whether the blob public inputs represent data of all 0s // This is not equivalent to being empty, since the challenge point z is a hash and won't have 0 value. - fn is_zero(self) -> bool { + pub fn is_zero(self) -> bool { // Note: there is no constrained is_zero in bignum (self.y == BigNum { limbs: [0, 0, 0] }) & (self.kzg_commitment.inner == [0, 0]) } diff --git a/noir-projects/noir-protocol-circuits/crates/blob/src/config.nr b/noir-projects/noir-protocol-circuits/crates/blob/src/config.nr index 9fd051426c0..53f72447e2b 100644 --- a/noir-projects/noir-protocol-circuits/crates/blob/src/config.nr +++ b/noir-projects/noir-protocol-circuits/crates/blob/src/config.nr @@ -1,19 +1,19 @@ use bigint::{BigNum, fields::bls12_381Fr::BLS12_381_Fr_Params}; use types::constants::FIELDS_PER_BLOB; -type F = BigNum<3, 255, BLS12_381_Fr_Params>; +pub type F = BigNum<3, 255, BLS12_381_Fr_Params>; // TODO(#9982): Delete unconstrained_config.nr and go back to using this file - calculating ROOTS in unconstrained is insecure. -global LOG_FIELDS_PER_BLOB: u32 = 12; -global EXTRA_FIELDS_PER_BLOB: u32 = 16; // 16 = floor(4096 FIELDS_PER_BLOB / 254 noir_field_bits), wasting only 32 bits. -global NOIR_FIELDS_PER_BLOB: u32 = FIELDS_PER_BLOB + EXTRA_FIELDS_PER_BLOB; -global FIELDS_CARRYING_AN_EXTRA_BIT_PER_BLOB: u32 = EXTRA_FIELDS_PER_BLOB * 254; // EXTRA_FIELDS_PER_BLOB * 254 = 4064. So the first 4064 bls Fr fields in the blob will carry an extra bit in their 255th bit position, that will be used to reconstitute 16 extra fields. -global D: F = BigNum { limbs: [4096, 0, 0] }; -global D_INV: F = +pub global LOG_FIELDS_PER_BLOB: u32 = 12; +pub global EXTRA_FIELDS_PER_BLOB: u32 = 16; // 16 = floor(4096 FIELDS_PER_BLOB / 254 noir_field_bits), wasting only 32 bits. +pub global NOIR_FIELDS_PER_BLOB: u32 = FIELDS_PER_BLOB + EXTRA_FIELDS_PER_BLOB; +pub global FIELDS_CARRYING_AN_EXTRA_BIT_PER_BLOB: u32 = EXTRA_FIELDS_PER_BLOB * 254; // EXTRA_FIELDS_PER_BLOB * 254 = 4064. So the first 4064 bls Fr fields in the blob will carry an extra bit in their 255th bit position, that will be used to reconstitute 16 extra fields. +pub global D: F = BigNum { limbs: [4096, 0, 0] }; +pub global D_INV: F = BigNum { limbs: [0x686828bfce5c19400fffff00100001, 0x6878b46ae3705eb6a46a89213de7d3, 0x73e6] }; -global ROOTS: [F; FIELDS_PER_BLOB] = [ +pub global ROOTS: [F; FIELDS_PER_BLOB] = [ BigNum { limbs: [0x000000000000000000000000000001, 0x000000000000000000000000000000, 0x000000], }, diff --git a/noir-projects/noir-protocol-circuits/crates/blob/src/unconstrained_config.nr b/noir-projects/noir-protocol-circuits/crates/blob/src/unconstrained_config.nr index 34c2f6811ca..0a794453d0a 100644 --- a/noir-projects/noir-protocol-circuits/crates/blob/src/unconstrained_config.nr +++ b/noir-projects/noir-protocol-circuits/crates/blob/src/unconstrained_config.nr @@ -3,14 +3,14 @@ use types::constants::FIELDS_PER_BLOB; // TODO(#9982): Delete this file and go back to using config.nr - calculating ROOTS in unconstrained is insecure. -type F = BigNum<3, 255, BLS12_381_Fr_Params>; +pub type F = BigNum<3, 255, BLS12_381_Fr_Params>; -global LOG_FIELDS_PER_BLOB: u32 = 12; -global EXTRA_FIELDS_PER_BLOB: u32 = 16; // 16 = floor(4096 FIELDS_PER_BLOB / 254 noir_field_bits), wasting only 32 bits. -global NOIR_FIELDS_PER_BLOB: u32 = FIELDS_PER_BLOB + EXTRA_FIELDS_PER_BLOB; -global FIELDS_CARRYING_AN_EXTRA_BIT_PER_BLOB: u32 = EXTRA_FIELDS_PER_BLOB * 254; // EXTRA_FIELDS_PER_BLOB * 254 = 4064. So the first 4064 bls Fr fields in the blob will carry an extra bit in their 255th bit position, that will be used to reconstitute 16 extra fields. -global D: F = BigNum { limbs: [4096, 0, 0] }; -global D_INV: F = +pub global LOG_FIELDS_PER_BLOB: u32 = 12; +pub global EXTRA_FIELDS_PER_BLOB: u32 = 16; // 16 = floor(4096 FIELDS_PER_BLOB / 254 noir_field_bits), wasting only 32 bits. +pub global NOIR_FIELDS_PER_BLOB: u32 = FIELDS_PER_BLOB + EXTRA_FIELDS_PER_BLOB; +pub global FIELDS_CARRYING_AN_EXTRA_BIT_PER_BLOB: u32 = EXTRA_FIELDS_PER_BLOB * 254; // EXTRA_FIELDS_PER_BLOB * 254 = 4064. So the first 4064 bls Fr fields in the blob will carry an extra bit in their 255th bit position, that will be used to reconstitute 16 extra fields. +pub global D: F = BigNum { limbs: [4096, 0, 0] }; +pub global D_INV: F = BigNum { limbs: [0x686828bfce5c19400fffff00100001, 0x6878b46ae3705eb6a46a89213de7d3, 0x73e6] }; unconstrained fn compute_level(idx_: u32) -> u32 { diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/base_or_merge_rollup_public_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/base_or_merge_rollup_public_inputs.nr index 8d52ec5c4fe..0a73c5e4561 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/base_or_merge_rollup_public_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/base_or_merge_rollup_public_inputs.nr @@ -22,8 +22,8 @@ pub struct BaseOrMergeRollupPublicInputs { // A poseidon sponge of all tx effects to be unpacked in block root, then added to blob(s) // In sponge form so we can check left.end == right.start, rather than recreate a tree later - start_sponge_blob: SpongeBlob, - end_sponge_blob: SpongeBlob, + pub start_sponge_blob: SpongeBlob, + pub end_sponge_blob: SpongeBlob, // We hash public inputs to make them constant-sized (to then be unpacked on-chain) // U128 isn't safe if it's an input to the circuit (it won't automatically constrain the witness) diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/abis/sponge_blob.nr b/noir-projects/noir-protocol-circuits/crates/types/src/abis/sponge_blob.nr index df652f0d4f1..8eacb125310 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/abis/sponge_blob.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/abis/sponge_blob.nr @@ -80,7 +80,7 @@ impl Serialize for SpongeBlob { fields.push(self.fields as Field); fields.push(self.expected_fields as Field); - fields.storage + fields.storage() } } From dc2955fe86263f52a51a8cfe65ef949174499bce Mon Sep 17 00:00:00 2001 From: MirandaWood Date: Wed, 11 Dec 2024 16:33:38 +0000 Subject: [PATCH 31/39] chore: post merge formatting --- .../abis/base_or_merge_rollup_public_inputs.nr | 4 ++-- .../rollup-lib/src/base/public_base_rollup.nr | 15 +++++++-------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/base_or_merge_rollup_public_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/base_or_merge_rollup_public_inputs.nr index f68cca38644..7dc56ab336a 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/base_or_merge_rollup_public_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/base_or_merge_rollup_public_inputs.nr @@ -22,8 +22,8 @@ pub struct BaseOrMergeRollupPublicInputs { // A poseidon sponge of all tx effects to be unpacked in block root, then added to blob(s) // In sponge form so we can check left.end == right.start, rather than recreate a tree later - pub start_sponge_blob: SpongeBlob, - pub end_sponge_blob: SpongeBlob, + pub(crate) start_sponge_blob: SpongeBlob, + pub(crate) end_sponge_blob: SpongeBlob, // We hash public inputs to make them constant-sized (to then be unpacked on-chain) // U128 isn't safe if it's an input to the circuit (it won't automatically constrain the witness) diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/public_base_rollup.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/public_base_rollup.nr index 08a733a6221..c1baeebdfdd 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/public_base_rollup.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/public_base_rollup.nr @@ -285,14 +285,13 @@ mod tests { constants::{ ARCHIVE_HEIGHT, AVM_VK_INDEX, CONTRACT_CLASS_LOGS_PREFIX, L2_L1_MSGS_PREFIX, MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, - MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, - NOTE_HASH_SUBTREE_HEIGHT, NOTE_HASH_SUBTREE_SIBLING_PATH_LENGTH, NOTE_HASH_TREE_HEIGHT, - NOTES_PREFIX, NULLIFIER_SUBTREE_HEIGHT, NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH, - NULLIFIER_TREE_HEIGHT, NULLIFIERS_PREFIX, PRIVATE_KERNEL_EMPTY_INDEX, - PRIVATE_LOG_SIZE_IN_FIELDS, PRIVATE_LOGS_PREFIX, - PROTOCOL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, PUBLIC_DATA_TREE_HEIGHT, - PUBLIC_DATA_UPDATE_REQUESTS_PREFIX, REVERT_CODE_PREFIX, TUBE_VK_INDEX, TX_FEE_PREFIX, - TX_START_PREFIX, UNENCRYPTED_LOGS_PREFIX, + MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, NOTE_HASH_SUBTREE_HEIGHT, + NOTE_HASH_SUBTREE_SIBLING_PATH_LENGTH, NOTE_HASH_TREE_HEIGHT, NOTES_PREFIX, + NULLIFIER_SUBTREE_HEIGHT, NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH, NULLIFIER_TREE_HEIGHT, + NULLIFIERS_PREFIX, PRIVATE_KERNEL_EMPTY_INDEX, PRIVATE_LOG_SIZE_IN_FIELDS, + PRIVATE_LOGS_PREFIX, PUBLIC_DATA_TREE_HEIGHT, PUBLIC_DATA_UPDATE_REQUESTS_PREFIX, + REVERT_CODE_PREFIX, TUBE_VK_INDEX, TX_FEE_PREFIX, TX_START_PREFIX, + UNENCRYPTED_LOGS_PREFIX, }, data::{PublicDataTreeLeaf, PublicDataTreeLeafPreimage}, hash::silo_l2_to_l1_message, From 728d784e74469a6a84f60279502abb64ae0a9ab6 Mon Sep 17 00:00:00 2001 From: MirandaWood Date: Thu, 12 Dec 2024 09:46:45 +0000 Subject: [PATCH 32/39] chore: remake constants after merge --- .../src/core/libraries/ConstantsGen.sol | 24 +++++++++---------- yarn-project/circuits.js/src/constants.gen.ts | 4 ++-- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/l1-contracts/src/core/libraries/ConstantsGen.sol b/l1-contracts/src/core/libraries/ConstantsGen.sol index 4c9df22bc3c..4962db414a3 100644 --- a/l1-contracts/src/core/libraries/ConstantsGen.sol +++ b/l1-contracts/src/core/libraries/ConstantsGen.sol @@ -206,8 +206,8 @@ library Constants { uint256 internal constant KERNEL_CIRCUIT_PUBLIC_INPUTS_LENGTH = 958; uint256 internal constant CONSTANT_ROLLUP_DATA_LENGTH = 13; uint256 internal constant BASE_OR_MERGE_PUBLIC_INPUTS_LENGTH = 52; - uint256 internal constant BLOCK_ROOT_OR_BLOCK_MERGE_PUBLIC_INPUTS_LENGTH = 666; - uint256 internal constant ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH = 652; + uint256 internal constant BLOCK_ROOT_OR_BLOCK_MERGE_PUBLIC_INPUTS_LENGTH = 986; + uint256 internal constant ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH = 972; uint256 internal constant GET_NOTES_ORACLE_RETURN_LENGTH = 674; uint256 internal constant NOTE_HASHES_NUM_BYTES_PER_BASE_ROLLUP = 2048; uint256 internal constant NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP = 2048; @@ -256,16 +256,6 @@ library Constants { uint256 internal constant START_EMIT_NULLIFIER_WRITE_OFFSET = 208; uint256 internal constant START_EMIT_L2_TO_L1_MSG_WRITE_OFFSET = 224; uint256 internal constant START_EMIT_UNENCRYPTED_LOG_WRITE_OFFSET = 226; - uint256 internal constant TX_START_PREFIX = 8392562855083340404; - uint256 internal constant REVERT_CODE_PREFIX = 1; - uint256 internal constant TX_FEE_PREFIX = 2; - uint256 internal constant NOTES_PREFIX = 3; - uint256 internal constant NULLIFIERS_PREFIX = 4; - uint256 internal constant L2_L1_MSGS_PREFIX = 5; - uint256 internal constant PUBLIC_DATA_UPDATE_REQUESTS_PREFIX = 6; - uint256 internal constant PRIVATE_LOGS_PREFIX = 7; - uint256 internal constant UNENCRYPTED_LOGS_PREFIX = 8; - uint256 internal constant CONTRACT_CLASS_LOGS_PREFIX = 9; uint256 internal constant DEFAULT_GAS_LIMIT = 1000000000; uint256 internal constant MAX_L2_GAS_PER_TX_PUBLIC_PORTION = 6000000; uint256 internal constant DEFAULT_TEARDOWN_GAS_LIMIT = 6000000; @@ -287,6 +277,16 @@ library Constants { uint256 internal constant L2_GAS_PER_LOG_BYTE = 4; uint256 internal constant L2_GAS_PER_PRIVATE_LOG = 0; uint256 internal constant L2_GAS_PER_L2_TO_L1_MSG = 200; + uint256 internal constant TX_START_PREFIX = 8392562855083340404; + uint256 internal constant REVERT_CODE_PREFIX = 1; + uint256 internal constant TX_FEE_PREFIX = 2; + uint256 internal constant NOTES_PREFIX = 3; + uint256 internal constant NULLIFIERS_PREFIX = 4; + uint256 internal constant L2_L1_MSGS_PREFIX = 5; + uint256 internal constant PUBLIC_DATA_UPDATE_REQUESTS_PREFIX = 6; + uint256 internal constant PRIVATE_LOGS_PREFIX = 7; + uint256 internal constant UNENCRYPTED_LOGS_PREFIX = 8; + uint256 internal constant CONTRACT_CLASS_LOGS_PREFIX = 9; uint256 internal constant PROOF_TYPE_PLONK = 0; uint256 internal constant PROOF_TYPE_HONK = 1; uint256 internal constant PROOF_TYPE_OINK = 2; diff --git a/yarn-project/circuits.js/src/constants.gen.ts b/yarn-project/circuits.js/src/constants.gen.ts index aeba9ee2cd5..35750f2ba8f 100644 --- a/yarn-project/circuits.js/src/constants.gen.ts +++ b/yarn-project/circuits.js/src/constants.gen.ts @@ -186,8 +186,8 @@ export const KERNEL_CIRCUIT_PUBLIC_INPUTS_LENGTH = 958; export const AVM_CIRCUIT_PUBLIC_INPUTS_LENGTH = 1009; export const CONSTANT_ROLLUP_DATA_LENGTH = 13; export const BASE_OR_MERGE_PUBLIC_INPUTS_LENGTH = 52; -export const BLOCK_ROOT_OR_BLOCK_MERGE_PUBLIC_INPUTS_LENGTH = 666; -export const ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH = 652; +export const BLOCK_ROOT_OR_BLOCK_MERGE_PUBLIC_INPUTS_LENGTH = 986; +export const ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH = 972; export const GET_NOTES_ORACLE_RETURN_LENGTH = 674; export const NOTE_HASHES_NUM_BYTES_PER_BASE_ROLLUP = 2048; export const NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP = 2048; From 0332bb8893a880e3c05869b26ae45699ac3876c7 Mon Sep 17 00:00:00 2001 From: MirandaWood Date: Thu, 12 Dec 2024 11:53:59 +0000 Subject: [PATCH 33/39] fix: bad merge --- yarn-project/circuits.js/src/structs/content_commitment.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yarn-project/circuits.js/src/structs/content_commitment.ts b/yarn-project/circuits.js/src/structs/content_commitment.ts index c1041b0889d..5fe9a58a8c8 100644 --- a/yarn-project/circuits.js/src/structs/content_commitment.ts +++ b/yarn-project/circuits.js/src/structs/content_commitment.ts @@ -54,7 +54,7 @@ export class ContentCommitment { toInspect() { return { numTxs: this.numTxs.toNumber(), - txsEffectsHash: bufferToHex(this.txsEffectsHash), + blobsHash: bufferToHex(this.blobsHash), inHash: bufferToHex(this.inHash), outHash: bufferToHex(this.outHash), }; From 59148e2dc8741fcbbe243e92a33b841fab9d3ab9 Mon Sep 17 00:00:00 2001 From: MirandaWood Date: Thu, 12 Dec 2024 12:57:32 +0000 Subject: [PATCH 34/39] chore: proof fixture --- .../end-to-end/src/fixtures/dumps/epoch_proof_result.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json b/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json index 330bb0370e3..0bd70d4dde7 100644 --- a/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json +++ b/yarn-project/end-to-end/src/fixtures/dumps/epoch_proof_result.json @@ -1 +1 @@ -{"proof":"0x00008b640000045b0000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000029c00000000000000000000000000000000000000000000000000000000000000010237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae00000000000000000000000000000000000000000000000000000000000000012c0cbc4f994a261e78892627234ba92e95e9cd863ded5ea7ca8d0975ebb1adae00000000000000000000000000000000000000000000000000000000000000032da55666630fdf8594065c377958c827dc1c130dac91f17c6699b53dce60ef751064772c6309282d899f80168941f37d38f5659b75101162c63567e16426dee1000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002e8528cd15c5f78926f9807dc97cb9eab9dd979a89c5270a68a9cbf4eec3bb2d25627e775fc518fddb8a38d853c0d2e743f6f2f98cca5e0d65b0c6da843d6ac700000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000052d66fd04e03c9099000000000000000000000000000000000000000000000001ed96d0605c1530fe00000000000000000000000000000000000000000000000d1af5d1e917d024530000000000000000000000000000000000000000000000000000bfd17c82ac6e0000000000000000000000000000000000000000000000043757c6cfe0d83f8000000000000000000000000000000000000000000000000bd38ab4b22b660ee7000000000000000000000000000000000000000000000007c2d0b2b13c5f30a40000000000000000000000000000000000000000000000000001e469eb19d4da000000000000000000000000000000000000000000000001835f35ac276a67ba00000000000000000000000000000000000000000000000a76d5b31be7c0649300000000000000000000000000000000000000000000000557bf95e4c6dd39f7000000000000000000000000000000000000000000000000000021bfe40c7fee00000000000000000000000000000000000000000000000360bc1530494c29fc00000000000000000000000000000000000000000000000b8e74f007fe1466fb00000000000000000000000000000000000000000000000efc7fb40fa587bec9000000000000000000000000000000000000000000000000000027650c30315700000000000000000000000000000015b81ba3baf6dcb791f205217615384b69000000000000000000000000000000000012a1664bc9515eebeabd3d7d9330670000000000000000000000000000004ef0bc0b71efc7b73386206dd51bac74060000000000000000000000000000000000033bbee58a978ac8b36d41bf4fd7f5000000000000000000000000000000b912afbcd4323b43c677160faf5e54e25a000000000000000000000000000000000002bacbfa92c00af9f3cd486bbf33b20000000000000000000000000000006bc783dfd7177bf2451d5c62d7b8801d83000000000000000000000000000000000006980389afe4418e5746f2eb7932d9000000000000000000000000000000f03378eea0c72c52fc45bf1021e1175e090000000000000000000000000000000000129c6221572d1e04c5a3ce19589bbf0000000000000000000000000000000a40b0d25886b9fb1d31697ae5519d847200000000000000000000000000000000002cd1a3dca9b7916361bd8c0c308f7c00000000000000000000000000000096650cbf350fd79e4e21a3a53f084e5359000000000000000000000000000000000025e86237c45eeb6939f852e4019e10000000000000000000000000000000870ec61adc23bc1294a793de7d329135e300000000000000000000000000000000000d59e4f667228b55d76d57b80cbb4a000000000000000000000000000000dfa123d263c27f5e0a447510bbbf014a24000000000000000000000000000000000014c0e9197abcac09fcca8aa3f56231000000000000000000000000000000693200aaa7a1cf111060bfd9649742812e00000000000000000000000000000000000a64ac6619042e406467e1ef5c7d80000000000000000000000000000000c7e4a1ad17cae2b81b7c92f1d3d45192150000000000000000000000000000000000037462330634f368580225c8bfd41e00000000000000000000000000000009925be1bf9db860792d1e971e1a3fbf15000000000000000000000000000000000014adf1b000b921b9d254dbeb9510c3000000000000000000000000000000360bb8d1c46b5a072a9080d1ac09275186000000000000000000000000000000000003059900fbc6c2ed9edebb4fa138f1000000000000000000000000000000e479202591c9504d142756fbf106c6cbba00000000000000000000000000000000001e98431d7f878cdaf548512d276d00000000000000000000000000000000a7b99bb4732b5e2cdc87cbb100f82b7a53000000000000000000000000000000000015cec70ccee4cffe243b5fee8de1720000000000000000000000000000005193e795cf3af20e00ff67d692208e3fc300000000000000000000000000000000001dd23c4e3d685b3a4e84e360ea057e29a5383c5abac5a1aae803e4a43c49cb80642be82d43338ce4c9120ecce7f0f206bf16368676da880d6841d1dd450e91a7cfbc604c763d045f18e38523180f0f2f8e1d184b6e3f47c0dbd337639c461f7eb5cb15737467b74e185ae0fcb1c17f0fa0fe68d615be37e03d3c9cb6992688a879543d888fdcfe811df14409f85c9a1eb6c4846e802d5d565886af06e9f0ff67b4eb6690ff6ee6ad7b60d6e2ec9b831afa886312eaf27fda40b175698d46c24fcb73f70c431601f597182fa1ab7a2e2f442522b1e50983fcdca5595d8608d65f2f59d88e0b7ed1f67bd651f696802d23f48eebbc1a7fa1bb31fd1bdbbfc9d119cbdd7cd4ac5019a71700d18cc69c6e21164b795c55bd0b6375217b4d812f43cb624ae2355270ee16d2bb83a65dfab1099ac02aacd610b17267ff7b9f2014696f29aaeed2e1b352bc23e15b5b41dcd318d76aa2394cea19a2f230c23631b8cfd9fafa3b1b1ea10ed51e4fcf6848240d1ea61dc1bb35dac32cf6bfeace67e80f7abe2ba9a84ca6ed51ed920c3a0727a72f1641b5b32423e88e9d8801b3c47fbb6ad60fb52b3004d3a358b4a2a35c0af02dbfeb449eb4f803174301c25219d74ac67d0e55d163aab00ebb8a659a28abb2183ee87df48014c4b44b190cc5f3b94ef477f4e585e08ac3887a19d2328e952e2d37b1bfdee6609a3e430416ce9d24f6b721e9eebfb2e135854d748e70cb170001b4c4dd433b1895d85e6121d93cd56b36c595a1a496043a03c9ec17c92ac5e202bf699e5ee0e86fbfea2767cbc3fcbff6903c5f48a23bf9f31124c608ef7e4008b65fdc7357716ace633351076ae3da9c9fb62f6465bd6948830bda0bb8c6d20b98d246773d436fad47ad49cf0065bc6de12c7783ae6207d983c278f6b13f3d134329c7820c76467b9529fcc02cbeb336432749759eb1910337728df636672c22a39877bb92159e2e51b1444765d6b839bcbfab9d19501f00f476d66a10cfe90e945e8a7f44107647941fcecc462240458e06beb44316c45fc3d1ecfe3474af1154b8e5b08da9253ae3012ca8f6d024acc245307fa76a029ce1107e29624bc32c824c1f904fbb7ece9c06b3153f49a652a9e8601f615964dd92758610761bad244f8e8105815abdb71f5df0a87b1446fff846f8223f2a5969376fc6a19006ff200ff29a5c43524cce70f29b5d1f92c714df63cf02815d95c46f8fd12ea5247b139470d6025bee4c9eb3d44a0f6c7b58a30b52bb17c15cf0aac063558a90a95d22eb65a18f33f1e1c05d87a3eff6accfa9e1a0291813db359c7f631da2119cc3262fc5bf24b7db2bd159b09fcb2a8a4fdbe4d9b34a6a8bbed6fee433a1181f19068bdf1bdc7498ee64944081f8ff7fa8a2708664d2b53c8e251bc38d1e2d98ef0cdf901e0af0ef901f6313b836c208015e4e18a83bafa26cf3d6cf08919096971d6ef0c2adf614b656e59f6d43350236dab9d40d7ba295451ff2576f4cd34fc42796ec2153cac60217f2908a3dc608a09d71ed00e84aa403507f807262e0d55f2ab76d90623694d745549ce3a17a34a03a60de4169cf5020dc98f928e0fb30de0b7b8f836730be863923db4ec92fe0ed4c8e905cd9e476eee12698da5e66c1740df7a2047147599578b37693aadcc4918da2bcbcb68fb935f42779d26ddefff21308e8d33f8f51277ce1807deb7c44e137b0be131da7a44dc37160365e24bdf32f4a611a5d60bcf2af187c462da855ed0e201947a45ac3219e01798195c54fb629918bbc4f099fad96fed64c19cf695f85dd57ff7c582e5be1cc88d0bc5be01311e614e59b316c0f71a8eee2cf22796fe1289680e4c2840620e10607bc133f74023ef7a84fca3ed96de30c7bf807d7a1938cfbeec3803da303a3acb0afed8c241d3f6a93ea100e4c5f92b37b666b1667abc4b4380229ee25d3bd36d31d32272d2cfd6c0607ff80bcbd0cf89e00f0b3230a416205e08c913db255d0024e24349b1eec778a57be99a30271705140e732bbb8fa537f40a84a8bb638a8b374bc3c3f0587e5704829e10e584c423634e6cc2fee780b25ba846fd146feb228603ae1ad2f43f757fcea795c5d392d051caeb8a0533585c71a85a67358f1e1a0fefead8d06738099644c8fc16d50af578a9b9a10244d4973e4e9ccc8e0ce4af498f5a5e62f92d1ef232a31896b93abebd711ec129e8cc4290c33cce09fc0d4fdb829209518e315c0576becd145cce1e9da0c31ed27052acece8ec62989011f5d6c6cf51a07db5ba9d38a8f0dc5291c2270778a31681763d671fefe4a86ba961fba4b1f8107ab3aaa717df75977aaedb84227429371d4fe10698369c4993bae069b5ddd7402a4808299560238cde081b5e4274f38b6d0b54d9a35efc69aea17168aa01c680f5e72ca0b3f4799abe48c586e6b2c32b66f866122d5411f4e1f192bc3b8d734172c12242209694483d6238709273c588b4898e4d355ad7f348baa657f9ff6f02ab693e77ddcb010f425cdab6f2dc5c5cad4141c8abb73cb8ad0aa5ea47c11e01d5dcf282601e8e7f75ed6d1826059820020c3bbd4b0a7b082b25c5e444268f41057c679493c099ebcd34d9cd18af0092ed3d0f3d257deeac4c4b982aae1d9c90c86a0c1fed041ea1be79b00ba8584a23f716aaa20e59227e398cbee0660c08514cd780d987e08d616947f3cce091e4074419d972a6bdfd3159d92fadc53e2741cde804b06f2920401e9836929fddd98b5cece8f1016e04e846443326499af901872053128acc5a7bf990e03a47a54b94e19d575e66be3bd3296688ef75e13670b59a8d62ed731c941ba0d8a30a42a128e07a9e6a665a7fb4ab07953acc507d02984ccb343801751f5808ac495449bf5f4801707fdabc8955eef82b228b9692112cbd8b7bd6723b46e0948b79185754fb60db174587c0d3ce166b6bedbf2233b1cdc25f4baa532abc71bc1ecbb6266da90717f6781c876e4418d7d43691c9c8e0683bbae0a09dd4b7171058604af42eaee973c514e6e334bede15fd41ea560151bd8305f27c6f3a5384bdbed0349d1f6459aa600121cdaec4ac5baa7f0b76a1b134643ac4716657756b77eed1d102309754ee63e53e0de5d3e664b5f1e443f36268fad79414fc3291d76e155c1b28b60f2ece857181c9f9c34ba24dc4b41a05c1a8e3dbad4982369f257d1a95f0f175faa4cc8fded24c4c5dd0a574a8be71ccd1125a985f25a98bcd0e6e79738de159ee9e15e979d480f90a51097f6605249f4012045a508a2be9237b0f213b25d3b428b86607c67b1f71100321042e5d03bd31d1c8a9883c4e32b464a20983b8851b6f3f86b8156c088bc411acada4ece4f520d6952442755a842747f73be95127c305094558ea5e93719cfce4938a7d3f559291635fe72d8fcec34dad45812fa1fd375c071ebdfa720c36cc66de8f9b230321534506f3f3ae8cedaebaa7f8aac001994b9629e45a6b855eefe4cf000119a261a7316b520f68a98954411e2232f1e865bc31248b45ad1da35a19404c098c4240f4fb24b623a31add1047bed006b14ca0f45761f646fd2f98c6ec56d254de2eb2d6e9b2fcdbade1a2cde3dd0ba9e0f73b34bc7be69585886a1d76c49fde57ae512024842be6b58e851ef16899aaa569de6bda76eb9a32d0d903d5383e807e3740aebc9956807e0232addbc69f747fab0d143fd246593fdf543bfe796ae29e5d223a06d5dffb73b86b39514db2119d0993a994634dea98587764aa18e0cb947622008d7e249053963e15f57a8dae816d612efeb6c2aa17a4dd90f349f4259cd3b02bc5a417ab43b84573b439365beaea9f52149fec44743a0af899e3b97c46ae628e84185fd578dbb187d6fa884b6c00a5026becdaf87ce3adab05897a314848a2a5ef3bfd5a8c68ba394162a206f3efce37a593a8217282df9c55f31210bc8e804bab90189485b4e5073cdb01895f930a904b061355ce3b25bce09ac843ca1271206eb8090903702e7b8fe46860caf71b1471ca66b5678733dd887e48cc196e303d49cd7aec2279e7a59269fb04f8048f48503f5d85ba610432828451ea239d0232a41eed64939a0a362fabab512c5290fb5ac049b0c7e47ca625d67c0e36fa6247422380a9699982dd58d8394bd118d4f50bc9553e3911302f144d0e394b04a2a0d664b93876faaf485a7fd42fa20fe7986437d279e34eb153da21a1b622e880a9445788c0300360aad26ae4c29a9e9e300c0c8cbdebb4919cafb9da9a1cf9a27e5ee71ff17eb79cdefc583394ea828a344e89e7e28f4e6ce1c64714034865705871eb15a2fc6da5ca86398f56c98824a377e1f26e47f956a724e320416748c1b92b0084efe5907b7d3d2e6654619a77b060c7c2430a5c8c4d26cb0b2e6d0bd0937d08e6ef255d030d647edb4859fca863927767d9455c21f76593bbc73cf3408cc79be539fe107952a092513abdc05e3ff6a79ae6782b133f4027729e306d60311ed6ccd716065893683e8553396831d6b83f346a503c731d148ebcddb4109229fa71b19e4b22900df6382cbcdd631213bf3cdb4ac37659ca7de192a7b979119b7aae3c6001ee18d9106f1824aa229656a2f5c1f5f67073cd57da6e46b0a8b177412ace5e514ba3822c3b0bd8125a63fd38ce5f9ce2f3fdf80f31e82df2074033663b06ea7fc1785e13069cf81fb1a0b041f07a84890ba203f229e5fcb60c32a9f562890dae3129e00024cc9514554ca86fa216806cab6f97bc36130ca937e024b0802f4f4ecee19d568aa5253159ab92844fa9b03d732d70dc948bd73466506f0d1837a91e17125bc69c0ecff1c536bb1e4a86111518fc6b161518af76bd719cefd79b4d76d10a72c1e48a715ae0fc969b955f87e17c0dfa000d9d07d6bd4066ffdd652472c0cc985a504ece83a7803f3cddc7266beb55b4a4715309697d7015e8064102a06c0585c0b9fefb270481213dca8f159d724e802fbdbb863b75010fd26cd8ff112d5f6b129546ad4dece91663c8d727946d1f75ca94fcd22470512665de4feb79fb46ca9fcc091809df0d5704695a627c01cb04a28eb00246a4e2f3d86d784dfc2f34dafc801afda9b14cf4154d27ccf53e4e17de9672c1d012a16932510dced02ee70405a0d8e12bff8ec5c91b0a710ccb4045594cf33089d69169b300f118c3f684febe3011072544b503dee565dc04af7224b85a788993ebf0a9044bab5d7ebf1ec635b4d592be2c251e60557f9d2e68423df8eec0d27b50609e6f79bd9ba4f083dee71e161ef9c2dbb664f54d99f0098e41bd337b47b005e26d1fdbdd81e41b6d2c7a4012f2d2e370775368a229988177525f18309534bdf00409245aff080a482b4546b5200ae17839b6bba6bdd2d530e3af97b6c4364dd2a1d344b1b0738a5061de0038253cbb64d0db5f1bf17cd31748074749ccdce8618182e27bd83300a2d888ecc4a7c9a1d96bc711b42d6eda690a5bd58f5b969a71d365e253fc31d520510dd39e1012a1ada898dbc815accbdbe5814ae8c8dd12f0ada1adc271d61ecb69368b8f7a28b5814a6b8f54ede38df5345c6344f8427bb17ca8c594591e880257dab460415b35d12bffc874f0093e57e4fd05c4032cadb15b777b2811cd062ea20305c3064da7c27bf1dc2a2253298aa276b3421caef701b1d9a1d457228b0b7239e205d2dfc83e07a6833657df57c9228b182174f54161920833883f85f99087a27ad0881df3fc943b4a6edede38086a594d968ced46414ecaa93fcdf392244b993dc656299628f191473b854eaecb142679773e57d7d2c96c872af42c29135bd8ba52d1227978f60c29365be034e4a190472937ac9ce2ed90569862e633220a4e24e2714afda5daf0480b1ce305d94e0568ce964e79d022c84362a9291f8623636989cee6f6e08d146a9fe290d8437c357c8e633a0752962de323e8587f031cf8b514c9527d5858246b0b04d45892a5342c609cdfd840e40ed85e822d4d59b332e8a5b30980d38cbf406d1e2d681502bff2f65301a550d104dbf264971089c27c1643638f01dba6573d1a45579cc4564ec36fb129fe413832bf9e3b85aa83a5969a9288982e45e2908dfb8e178c3c26b1e3b16e3978f1d94b1af640eac190967f5e12388da434d521052344e39291dd9251a18c7286e1bb96db24e5ef54e57755b82274f88aed5033e7c3a39caee49de45d6007b0b2e22a5b3552530b1b1133ac91d11f8ec6098e83aa082996a703775ba381d32e7120ac29f6448337965bf4f84ed8ee888aa17a31f41200e8713b279ee52d61d0f470efb0a4b75bea3a4a2bc412caa768efd5c4183f7781885d9320ca38b2a910726087a15c8440b461776df5682d599708741fffa1960e52bf1fb7a30b3279c0cba15cbf40b9a7b7ea976f2924fb8bf2815bfeefb054dfc9378ce16d361959a2e810608bf60debf8ddd33f6ce1a150b73a8e76569ff11959954b5a16e363a9cf1681daec4e9274e3f104de256aa2720eea66fcf55bae954319c4a942b00c5c1ca811ff7c9add5b7e7a5d7f69796e6182cc1b3846575cf95770ea49baf1a9fb3f72917a293d9656a548f132eefa3bed6678bb1e3529705a3a1e69fb6e433108ef49e0c4509790b038044f2822480d982b641461cb927936c0f0e1b39bed3a295cefa11f98a88c712bfd2edd41dc5df0f259d0c1961372d030934b0a0baf127d3272e1ce3254d0d7e2a64a5b66a033b88e33b4bd1dc38ff2f24fc84f84694dbe8ad58023721613a30fe296d7f5b11156bf067c43a72fec2b36697493214675fa04a121202c575e511decef3112977b19b36c992992fc54bc192b0c7eedd3b7f1c981624de8e4def90dfa1686896caf78a7bfe8c76d249f8171e4fbd3a33d7b021ddce2e60df7eb68bafb608b5ef0950f975e275796d9b5c5134c9e176a48328f5f20f0395b0932677440cbbb5ba15939dfc0ca344ffb5701a084e8f34d5bfff588edf1072409ebb185addba96f4446f7604027838595d6cc84f247682c602e0fe762d0ac71fcc6952eb902b6da73c42d0d5f17a4a7352cc98b48f214361157434c73a17f57ef53a1d2fae5a8c47b810e70bd9100b940599fbe3448506b465c018b06a01d39e56516ec275a27723b545d2b1b0492dd80d723941b7857d0e9ca6b692c9051f0b4177e3a6ed76c96161a63b4ea0140ef05913ad7e45989de3efbd1f981807a8eac6252fdb70b019692adb01e6f5d350cee6d6adc4bee3ac2e895daea4a81dabe2c8158c7d8a4940be7e3ed0eddf6bdd25dcac630b69dd77780a986f0f9c2b1df4d6398ca3eec323e57eeb94cac47a6b8c7ec0bc8a43a3fe01a9bd746f5d20da34851e0d2f5ad78953ff423dd3956eda446821d289f793d92395668c5d1d1597eae744871e1cfa79d35eeca595c20994baa61f723c8af2c414be80b726640f9de7edc1ae4ff41925156770dfcf4f7d7aac5e7ea81ff02241f6045e73f63a1e365934048c34c14005b4a28d9d5a3864ede696a72396bd2c269a759e4d3f4709cd7f64f6e718aa8e84673996b08e0476c15211d2623b9a3a9641b794ea114a04f7b9444395b8fa5441b2322d0b2428c44b23d2c15ddeca322049780bc4c638000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001cb00fc9b3444b88f75c866a225dff6f2851628e802064a4c3cff7983424d8500c75894da16c44abf4ed8425c4d80da33cbcf3130a1bd152381c4d9bdf6015b106356414819b09017be41bec2cc7f4d8a768e6a1b27fcd5e2a3cc261c32eede617eaa03e0f5fb202b2715997aafca64e56193da202c2c8cb79f37dd0e735437a2b00aa56c5fdddb13a7b7fd8777a92812ca622676f562bcef4bccade598a94ee0aa913e8488dc0880bcaedd7d5359f0d86f5322753ccd03ca01dd7336a6153621fed6a700fa3dd8207dcf8866360327e256a96932732bb999f2024f43f34a96225d7976de0c3c028e99fd162381d12a34195447dfa68787db7f066880474849306109a4663e63e346e514906ee04a4b7806b4e3c9b27d9ce2c6c58a445384ed22bf984a7f8be55aaa326532d1e1929b26326025a05269b9b66b5d805280ceed61eafb1dca350a3b8c8c2138a0e9ff40638db0a4d39fdfff73eab52af520c1d4707c23e878c784c66062ec30f57930d900fd6281fb93f13d0015d73ed22bcbb812077e4a45a615ab0d1c57bf8ba55a97dd3a936eda40451e2701d847d4d4a3cb92f6089113b8d8d803e351684af391f2c06467aed56261703cc5bf72e7b8ae2112ee8751153bad6b0319afe74d55b235ffe35ec40ddc64294737fd4becf106ef319fca2fef7e977cecbd4c25647fee8020be3bc68a8b6f88cc7a885ca2b8ed1360456e491e6743528194caf394b6decfc5145cc93c26bd19325ec1927bc626a55020ac796745fa6ffd207ecf07e16b6a505572a03bfab0918adb26c26d0b970af0caab556711a315a5a392002633f282d38efbb6815dc98cefa65591169feba241a95ea9147ddc02fec52965410444da9910b544fc39b4f6f573699d1fe6217c31a8f1807704d6b4da6717c959bb877146e0de4f7d08e6ddadc1bd66f2c6c7af218b07552f4adba58407461ab831726a40f793e91926c585fcb825562eea464432606d5ceb59fee09ac2ce91b5737d54c11c1f2a61162e5e4ebb196dfabda1ae102e5237d29898c93106cd04a8a9f8e79f96f087b28576619a1d5696d72c649a615aff46988dedfa6bbf50a989fdb08cfb3e243c68e1733942f4d8de1a2d567672b36d2f96867e43c488f9418956102779e75ef11eb64db96562726b773159f491491d825e61dfaadc57c4d1e454438cc8be4cd44342e8cd0a412c1589db45b5825d06821688c467dc6c6d73a80c570f3a3cee25c3f23dfbf2eba027deef6cdcb25c943758367b07fcd52bf45dfe0e4fb6fe092a2840c30c0a53e39791a8d83582ae3b703c4ab5c933823128285ee36893702ccb3854ca98155fe588894ded2072a65a33ecd3d2d28613e384531b287b36979cefe7e3736218e7a22ae92c78f571184f2bd0d8dbe7a70d22714ba4a31e3238da7fa725f91de08783c7df1d0e23404219d525a82f98f63d55c15bbd3d1f11fa141b985d657ea99b9ba872ca6377e2d0a3ec4ad6553d5b5d3529565005f02adf8bb89b76c48c779ca3d1433d7e9d201b9a869db28a8fee83d9b061a14be53d2a4ae2e825ddca47ef43d7916a1c0d3268ed10889a6ab8c1c52041a2313eaa303407c01c659648f585c5c3c02ad124e1890fe9e04d74bb15ebc87386c6a269600e588aab22705d7c6e58965e244ce132a6f0281356ee643850f6f530ae32a6ca7141d31a07644a92ac2441ec9f924fb17635dc449f93650216c6b9d374b6374f7a6643dde80d3d4dbdb701405e8c4852af1c76841008121782036504f58f9ca3166356684da22fad8073738e60f39d4001b49f2213def5ccfd1a7947adf948531239b9c6ba2faa228dd0d8d162b39bd246425a24bb6a39676b0f9f8f413b934bb53d859bc6f15eb1e43b19a6ec6c5af1f22edeb59bd56febb47b16796164bfed86a7554aaeea69e22c4b204efd3ab4f1ae997420c52c85e97ed6f4c71fe14f5ffb6a3219101461d62b25d311c52b24a000000000000000000000000000000faf46a0cc45943d510329d4758422486fa00000000000000000000000000000000002f22b969b42d7863aa8e8d39a60967000000000000000000000000000000089e0f5ea75bc736cd50facb07f056932100000000000000000000000000000000000c51879b4ba54b8625cb734e49d949000000000000000000000000000000f178098be3091ab95994ac8c51fe1fe79200000000000000000000000000000000000c4b2211bcf7a0ca06f1f31833f157000000000000000000000000000000feeeb7fb191b92b2e9a4b119dbfe2f440b000000000000000000000000000000000021e06e7dba7c4dba23ed0ac0490eb4000000000000000000000000000000f74db3a8fb7c19172d0eeb32a6e9ac07a00000000000000000000000000000000000277cf646af8714a1c17426981f937d00000000000000000000000000000093c32f80c6308b12cded2a1fe6f7c257e2000000000000000000000000000000000016c61b693d2db5acfbdec440fe870a000000000000000000000000000000e28beba97501d8499eff8415bcd65a52f3000000000000000000000000000000000018960aca8d1c5a837825cb48e2bbd6000000000000000000000000000000d3a52de3c63ed8ea4ca9391db2767860780000000000000000000000000000000000179d0967bfee98ee34c013d298978300000000000000000000000000000060d01f5ea85f2d17b6536328a3cd6db955000000000000000000000000000000000018fbd304dfc5b02df09a26004bae7f0000000000000000000000000000008a4e513928373683290d94bffa87fa868b000000000000000000000000000000000005c34bb81b62b8476074e86a9164a10000000000000000000000000000009286bdf68b18320eef3723ccc74d376faf000000000000000000000000000000000007a9d6d08b9116841b06e14e616a1b000000000000000000000000000000e4552f3963eaad2a8d7265652e01fc4c0d00000000000000000000000000000000002bf659a5adf100abdc5e85dd8eea1500000000000000000000000000000034e8e3dc152f68ea99e7bac0ffa1f3675e000000000000000000000000000000000028c7d746c83f3c2562e327fba9bd4d000000000000000000000000000000064e0a5af4a16f24780faf357dd41d018300000000000000000000000000000000000dec160b5ca60f4cca067fc8675fd600000000000000000000000000000011b7a07d7c2be9761402ace0f3946444f700000000000000000000000000000000000c1923234c73bb863c9aadd6a7765100000000000000000000000000000027fd27baa37bdfc2b399c5defc1db1aca0000000000000000000000000000000000018f264ee712c9136845935a6baf7ac000000000000000000000000000000be110b03336102a0cc2e506ea1130d2893000000000000000000000000000000000029075299f9869d399f1c5eb2d5c713000000000000000000000000000000dfa4063d70859d7987fe3fbb70d3e7743d00000000000000000000000000000000001d9933d5934c92414255c8feee1b2800000000000000000000000000000098245f6eb34c6336f70e990b555450b12000000000000000000000000000000000000438be85ff350ff8d25a66a2b391eb00000000000000000000000000000070df95cdaf5df4e5958f109c30de06ad9c00000000000000000000000000000000000755d3384b2647285af4c5ed6a2302000000000000000000000000000000863a674a850fecdf737dabe901d0dab89c00000000000000000000000000000000000e8a467e6b81797cde2914b1fc2b0b0000000000000000000000000000003a5fcc0609b049a803837ddbb452d5ffca000000000000000000000000000000000028a932d8ed9c46a41f913ae97b09f700000000000000000000000000000073636267570a775a69519a7835bca4b9cd000000000000000000000000000000000018eb1e0c95d4aba3349857d5cc29c5000000000000000000000000000000862505333c01a361cb8a727505c4cea329000000000000000000000000000000000004d998226e760738a941cfcfd92a210000000000000000000000000000006ca99bafaefeac2dcbb665825b87366ce3000000000000000000000000000000000012e6b344c14f0d73887a3eca6479a80000000000000000000000000000001e03a6c657c74735001dff2d272f7e1d710000000000000000000000000000000000199838a8cf9c3c33aece5f7610edd50000000000000000000000000000001b0a4d17eea4e7729dc942d04527b9ea74000000000000000000000000000000000005760bd566a20f7cc751c43404d2eb000000000000000000000000000000741ed626633e80c705e83a0614bd8f5cf300000000000000000000000000000000002624d78b52e19ed8990d41f16f322e0000000000000000000000000000004e36475eb3406eefcc2095a6186b21f484000000000000000000000000000000000022d6ee383e5da5987583f21ffaed9d0000000000000000000000000000007244f8bf04d10872b639db0feff81f6fb2000000000000000000000000000000000015f2efb0233dd3dbc24ed9756107c50000000000000000000000000000005152428c19fc298512cec17f63e58a351000000000000000000000000000000000002a578ab7af465d72864c8a65839f78000000000000000000000000000000550b1ba321c11350fa3b4d20098699a5d2000000000000000000000000000000000006ca233a3af88b5d6b101cfb8eae12000000000000000000000000000000542ba5f9de03f8c85ec1035827eeaa52430000000000000000000000000000000000154461e84aca6d7e06526682d2321a000000000000000000000000000000db7397f53f5d5092dd10fbb41b868ee5ff00000000000000000000000000000000000d22cd7a6887a4cd13546ec733c7f7000000000000000000000000000000f6631b65b21ee6354b54501f512471ecd50000000000000000000000000000000000176aad51256f815c50ac47eaa1df2a000000000000000000000000000000809413813cc80ab8aa2211d5f35ce75279000000000000000000000000000000000017657767e3ac7893c7493bf43c368f00000000000000000000000000000012f620edf862d27d52d78663e8b06563cc00000000000000000000000000000000002d8f300bd8a95ea3fff02ecfd51ef9000000000000000000000000000000bac0e5ef22df4c270d37ec737d8f477a2f00000000000000000000000000000000000423c35325182ea763d93353d467a900000000000000000000000000000099179366a9bd4b8e0836b2d70587af662a000000000000000000000000000000000000aa58b97a7bae5022dd41afa42e0f0000000000000000000000000000007e2f0be736927d56371dc7aa56a9cd9ecd000000000000000000000000000000000008c9cf022c1725f1beac5bdf7c3d9300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001f002aeeed31b98a560f35882c295326b22a2f43fae873baa3ae2ec0271678ed21cd1ae90dfdc172189240181df6e5ccf1f21ec7a1a94ffeef67c78a484182340657d9d3c4c06a806dc4ef46301e5ef53ac533eb5a258cc1b603502820a4a6b9103a03a2555b44e2a6c610e57a8f7beec22ca1ecaeb40c39eb04d24f4411e1e3186dff8ac23d675b992c89f41f5bbdd1934591150ff40152c7b939ade1643bd8173d44bf3a863ad490d4458332226560f24b4bfecdf314c039fc6f620839af40163ffac791214a34e4382140bbb28975f07e5da6aa6e6bdd33cfa3cfdba3451620473c9603c77b72446d5eeb9d49a07614239feca6e2a480301ea1056c22194c030d4eae65b7d7c9534b24cdaceed03db729bfd252e3d91499933d95f602fe231f9ed3593d29b9fc9e4c3be4fbdd70a22df4b962c9ac7bbae5e20ad21fb97f7115d17b5dc185c3cdbbe7257245aaa4df2301d42191b771bcbe5667896d03473b071f8c1f6f4ce111cb76bee810e43ffe5beac3fc7bc26e1f0ae38e8eaac628d52b482e13bfba963d2b47c3e8b2247b136f271e71ecdef13a2c3c39b3564b49862c66c86b5c29d8abd41d0bfe11832a1413e70e45344600013afbe813c60f46850f81cf7db2a2cff0e712f805b60b51e7aa1ff5e9551acda40975434ae1da3c1a219d5ca20e1a5fdc73963e9fa583df1883e6bf5c969c7a423ba7d119ea5613a6085057e5d9848180f629af994d859af9902087b78cb5126f24ef07b46f2c0f511e903f287545cd7120b6203dcc3e4a6cda74fdff48c6f0c046b42ed51ebec9e806a480195dc3b8f881582dc2f326aaa56befca68ca45f364ebb4bfff8a5a9c5529772c1fdf7e9994d6fd8ae61bf8ce408f5ebe6a941b9c6cc2e714c8d2a9a9e62668df15fb9268e2712ef90f0593b205132792326d8c74bf529ede861359502e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e34fb27b3b6285165d62f69763cad040ac0000000000000000000000000000000000273f922586667f277a366f156c194c00000000000000000000000000000070e7c8146bf1dc4b1f7212e1e6a35058d00000000000000000000000000000000000048d13bd04c9004cf1c633d6dac9ce000000000000000000000000000000524bde66a3cc04a9a01c5463ff2b65279800000000000000000000000000000000002712d136c5dcb6465235ac594cd49400000000000000000000000000000042745a2172b44a1313e511fd2b39ad01d6000000000000000000000000000000000017b3f350b0d1d37d3bae021dc222190000029c","publicInputs":"0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae000000012c0cbc4f994a261e78892627234ba92e95e9cd863ded5ea7ca8d0975ebb1adae000000032da55666630fdf8594065c377958c827dc1c130dac91f17c6699b53dce60ef751064772c6309282d899f80168941f37d38f5659b75101162c63567e16426dee1000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002e8528cd15c5f78926f9807dc97cb9eab9dd979a89c5270a68a9cbf4eec3bb2d25627e775fc518fddb8a38d853c0d2e743f6f2f98cca5e0d65b0c6da843d6ac700000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"} \ No newline at end of file +{"proof":"0x0000b3640000059b000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000003dc00000000000000000000000000000000000000000000000000000000000000010237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae00000000000000000000000000000000000000000000000000000000000000012925752f6e51bf2738d82bf0e4cb0805eb37e908a909db140c8ce9073d03bad900000000000000000000000000000000000000000000000000000000000000032da55666630fdf8594065c377958c827dc1c130dac91f17c6699b53dce60ef752c2cd74ae9c2b2a1ab717d69eb4753f65607db94e93a8c0a51f23b96e34f3038000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000241a65339d99ce6f973739bda9c459c80e677af4783b35941098d8cea5b54022dcbefa1ba7a12eb4f2ca5632698034aaab9a60c0428603cb64a7685760f203200000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004e7f4db29a33c7bc000000000000000000000000000000000000000000000000ed49e97fd7fe5ac9500000000000000000000000000000000000000000000000090b4c341609973f90000000000000000000000000000000000000000000000000001ca25a0325af100000000000000000000000000000000000000000000000dad49a5e22948da6a00000000000000000000000000000000000000000000000d1c2474fcbc5840fb00000000000000000000000000000000000000000000000dcaa30af196fd23d90000000000000000000000000000000000000000000000000002308ba6a6655e000000000000000000000000000000000000000000000004d28cdf4637523a2a00000000000000000000000000000000000000000000000d7853cd15fee2d4e500000000000000000000000000000000000000000000000c3f4ac44973c66a3000000000000000000000000000000000000000000000000000018be2f90f4088000000000000000000000000000000000000000000000001e3a57aa949af543d000000000000000000000000000000000000000000000007e5ea0fe99a92469900000000000000000000000000000000000000000000000f214cc918d2a5f92400000000000000000000000000000000000000000000000000023c100eb331e000000000000000000000000000000091f3bfe5f9c9c3b173e3036d8a3307e9de0000000000000000000000000000000000066b3766100e6228dbad6bac16f4c50000000000000000000000000000008c449318af170ae6213db4d074d95dc935000000000000000000000000000000000007795f6456bf9f0fb91b4b85da625e000000000000000000000000000000cf9848382a0e66a280138616fc9c249adb00000000000000000000000000000000001bcf32cbd55b6b3a666937fc3f8edf0000000000000000000000000000002f09183910cb0aefb011597b98f243f844000000000000000000000000000000000000593f0f28aab706e410019dcadba30000000000000000000000000000000a6033f17b156db5ccceee834fa616cff6000000000000000000000000000000000013c138c24dff08179431b79b5068c00000000000000000000000000000001ecac88156d61863938f02c41216b8db360000000000000000000000000000000000252f6b8dc18cb5f6b545dc0c60eb1200000000000000000000000000000096650cbf350fd79e4e21a3a53f084e5359000000000000000000000000000000000025e86237c45eeb6939f852e4019e10000000000000000000000000000000870ec61adc23bc1294a793de7d329135e300000000000000000000000000000000000d59e4f667228b55d76d57b80cbb4a000000000000000000000000000000dfa123d263c27f5e0a447510bbbf014a24000000000000000000000000000000000014c0e9197abcac09fcca8aa3f56231000000000000000000000000000000693200aaa7a1cf111060bfd9649742812e00000000000000000000000000000000000a64ac6619042e406467e1ef5c7d80000000000000000000000000000000943eb949eb308771c1e869edbf1841ff9600000000000000000000000000000000001500279270c3f90d607b10a71ddd52000000000000000000000000000000abd4c7d987d9fda5eba112d0af91347d290000000000000000000000000000000000287af2e9da0883ea9b240a315b9ef60000000000000000000000000000002de60d201937100a2eb81f8cf35567c96e0000000000000000000000000000000000176dda3e54555b05161896f6ece72700000000000000000000000000000042f29116c4bda52cefccab14522ac6036300000000000000000000000000000000002ae355e6dec29fab03b5ad15bddee20000000000000000000000000000007aea39ceaf25e6701dd110975058d4860a00000000000000000000000000000000001748775b76f6e7eef4030ca57412c00000000000000000000000000000004be73afdbee9f7c834b3aba893345a96dc00000000000000000000000000000000000e9d72e07666bd21f05a55343eaa4a030a7e92cb52c0fcdbc1e5b66db397763920c5c4354d4aec7ed14fb3c69ac3fa2d59cfe015dedf2cdc8e600013cdc0e6ef132284446c25a4c510a5e029653c072b41a16d2ed27f730ab204592e3a660f1f7dd9252855c1c4b271b9416bc4f20606b4d830d14765142ff08104c499bb24b5433cfcf25b3e3767ffafe13bdc62ed16d7a3775d3eaf1af8bc2d37a3316c488a8bbd181bcd33ca48ff0ed0158d1d6429e6528ff77358d50e1fae17bcf4fd1c3884eb4a74154398b666cf79a3b8486f27d3c21d06fc0d8b884a6e026f3c6cc010bb189ed50e543100766f67e363ed8f242a6b1bd551132d0f2a4cba597b9122e936d2af7990135e1349d66dc4f019d82d3124ae130c2fd190f750380fc127a9af0bc9aef9500e3139f536f4cf7fed762c948b4695e4b46af2aa64aa399febffa2c93befdb21e20ed3b00ba64370c3ac2722225004fdbaeb3719ba760fcec0b6d1233068f085314a809f42bb600ba06f2724a4f5fc44a362c707ae9620b83a6ee75bebd33dd277460e207aa845856e9801a4cbb20e0c748e1dd813a0fe3a9b663afe049bc95f92f0c5185a7d639da62719d3a08c7b6fbe96149bc60f81207e716590672a627dbc8e0fe4cb1cff7e63f92badc4e087622bda8db6f3d909c83238a6192f351c28a45d14b1991c2bd6c7db11856d4920ae25700ac65d48b4945beda5f3e37e0c67da7f2f565ccbba9b888516a4e9eda070f6a1da4adef274972cc8a9e4c15c648e959b98a7fa5cc357456f12deb2382f48c2bded2032382e20a70dbb628804e27f339001c93c7d5b98a6452450aa98ba8dd10a6678ea0242e65098c227bc1dc928563282c82c53faf537292ec403cf29a1319a021d06db6552065c5c4a7d68aae7257c62edd568ceb6934c2f34d040a39af552c560b5321c997bbd7ce4cfb6d7acadd9c22b14426af478ef26fb564ffffb9629240232aef5e42fa3db2d7832f5e6786aa79743d57e958b6d15b6218822172e8389a3f32dd58c7507485c89e47f647b865ee0adf8bb188bd824230a945a832165dfc93887de320b5d4ac54352b8b1ee1b761acd1fcb42b4e42a82daf4909f16b239d651a8de66331dd97efa6a21c89e49810ee2c3d26e483614db28fb02ea5d0a69e901b5a6a1a0ef1aad9306ebd1b832d28d81f54840ce481fc6bdda822c08068c9dc85ee6374de4fbd9799b4fd0a065e3801435d181d6ff2e1a516fd74d4d1b4ce61811114ce728b0085caa000652b4248c1b1b52ee397b17c0314b6a0b901cc12bcc75640fc3648f8a09b4003deb42ab618e3869b69d2a195fc243b2bbb004c78dd9ec4989bbf342e28cd900901938668664afc08b4a0126035159df2d6129688cc300df36c2c6a143b431b8b415993a6002aa45ad3c861e81a078dcd59cb7841e851a35218da2becd86b9d0040c9e84fde6aa8983dff90ea1df312fcc07e0e78a08d8685173ceb6dfc339292137026de21b9d45fc161c17c9b490d4f4f12790e28cf43b75a70c3e7338548a551273f37ada27ef9a1002116328debd7b8f0e88c0460efa16a5c2bffd1d1ce06b60a34e659b4d79f9f5d605ce6cd28ab72472748b1e8b67b70fcaf9c604697bddeece0aef1903a9b4addb1a64f2bbe4e2ff8d4a5f1db8d1f3365f63dd8df7f5c363e16238bb30f0fc46f11c8f5c39a96b7c1eb3249d330c7a306b03f6589c2726fb5d191c2ad285fcac00046a61db58ce5403c7ca5c35c4c563c2ad1e2d3cacdbd230ab5e883dade80dec18d51a4d605835b2d9272fb80af2de9c118b18e04d1797516d389fc3466ca0d91a9521139825aab4af6f53477d1403d013de6f768cc167495017a4774a5af12e268487a5a53bed1999dd7495a3411433d63634c8ad6ac9c6428008b55fb674e210ffcd055fec443a3809b4174d03145472e45436ee6b5bcb50921089e4007c221bc2f15b6864dbf87bb90e51eec3ef8c2027f8c5a092d1c41356c127f2f7debf1b3bf1345aab5c6c34da371b8af768a26410264e394e1428e0e0ea89687c33722598ae03328533f4de38f79c5e148f093c31dd597d269513c76ba68e1ef3b5ec08a15150a5fc50feb6305092b086215b18377c9770369bac72239cbae72cd6c3013771029abe458eb35b12a768d990b97ca89b7bb6a029a220f3b5e34e510cc31576e011b2686118e1d36d173766bd6b082a9ccd80f7aba59e3e4f9dab782dad049146a25646471002b57358c722b31a53b4ed59c033eb45124eedd6bb8879c20130eb718c07145fb9347ee363ec3dee946c3550ae738c1922d4a935b459097310ac7bd937f463c5f261fd65e681b0db557f303e7161fe77e7b83d427575119000475b48eb910b185fcfe1377461952dd3bb8012d3b0d67cfaa2299f9c9458792c41e141acc7c1b2a21bfc841d3e4d01f9182f71573a0a9a27de7ed91ed0d2442bfb71915b1563be538598d914d4f31496e954aa198d39edd1c369deb86c22dc19923c24ce6d55a387ff88a573b65e39aa4b55621a3fe535a764c850b09bafc01cb1ada2cd69a2d5a6fc511482746bf9de45af87ef726d6f88d2819a9a4dfa100fd1772394594e4709a6dcea556f8cd33cf2c5da33a59729b3b39e90c504da55100d29d4a6162a351f8391fef5b3c793be2da3c57583513f84136b7bdfecbb4201049d428ddd71ddb9b7adb5bc33ee937a12fc09c9159319f96e671e65fc1c1e0eb12a061cb8749aa019752521edc1894049f0b2f7d885559bd518bf4a3f0e562edf5b01980b1c53d913695f3b15e77ea043e43487b8c70c3469d9ea891ac942298a91098f0a5a9de683c1b3e82a203433c6a8f15361e91766876d9787d9734a24b012b46dd55aa12b5358c3b28b707ccbacffc4a76c47c6f5b7bcd6532cfe0e2e46deed7bc771e16c3639836ce9c9d973e60d25384cfd727380c40d88a86c122e9249471681f56974515ae6d44f129d6dd325f817fd848cbbffa80d3b8546d225ac98e3373b80b2eb4e0775dd9b576e1e627ef7aa77c15a5e813cb90b7fc2062cd6a7fc287ebbfe316f911ffd4cbceae909ee8ec068d83235a69c3cd6f8c2fe1d34db9077b71367bd6dfc797f91fc44e4deb469016dd4bd04f405e809933bac12dd72d845ae0c2ab8ca0a5cd357401d99d70bd3f8283b7dcb2fec435b59933d03935ea714fe02f0e541db40a308f18945c7066075e0786b8907ee22a29ea7491756b296d3347d7ea5d62fdaf65884c321ddf9e98b2857a970156930689ae05717866e82b8fb1402987ea51baaa86f2af7d7612b5fbd2e2cc41a49541a0500c21682b641d4d6afd438ed950a2a068e96013b47316ce035c7bce9c9b37d3367db10fe6348c0ed6b4d5d61f95cea1d5c63a7b3ec41c8f19e8f3e4c0d1d215ae1351ee7a9497c7c2dd42d568f2448faef048b19b39352fb4934fd7b078323e198400ec8406e8937901d5edac991b252070e4919b3c5716a1229efbe0681d16168052226d55b0d835f512be4d36abe8e3f158b7ccae5d5ef343b7fd958b53e3a13591e5bd7c4c2e6fb21222b5bf52d341f79d3ed8899e2fdefd65163a6b43bbee5012a05cd792640b15189fd6aa599a0cdb8349b39b35f361e166a5e323013711d011d56415ec0a4ffd85741322709766767e75d47cc9683d0063d6f5484283833340b1f4c8386e8053f150f3953ae8c05c00deb270e1feeee68b82976c31d72e2c0087ff388e8840fa2b6ac03b93bc5b8c82bade4abebc74b5fb3f03ebfd65bad21101cd9c9c6f677ca994c6795ad69d1cc98a86920f2e0767c6963ada0ca651e2d2c455d233930940935e6c0670d8186f8046a8df7ca53fecaa8508e3abc1a41ed1269839bae75863894238219b09f612f84b5773f644b2ee1a1a14661c9075ef52aa82e5d0babbef91c3e05aec3ca51fe2f741c86ba1c5b08a331fa79d4e13c240811954e8ec510f62d0532a533deb0c1c99dc97d4aa784abd2ee6ca364c39f8e2863fa053e7f9fb577e9a6d01b9ec7d5537615d71d9aff1b848da01516bd96a604b50f397c34834e06250ab04c7e10aa692eac8be6b36c712150af4e9ac414d32c985886c544aba1d713fa51cff707e09ba97c7d90c4506c0888ac0aefb4dd1e02759db149b40826b5de2c61297ed99581114136953a0ecbcce1e90e96d859c817ce75e5b7b86822cf6ebaba04dbfbc913c0972943aeb0b42e19de8a132ff62d110bb67c2df9b2287dbd6b4603df6869b6d3536bb5501184fdd76fc30adde8ea17dc026b8fb91b6691fdba900f0bac657a21f6885bc3321453094447a0d456d72540c6bab1c24355327e6f319e2d2bae3dc336bac5563c3f2ce4cc9ac889419b269200b9952d9f0083c0a1038c71a63f309a9eeb8690eeadc5c34b452ff1b1262c2ee193825b1ceae70d9505897ab96e1e7156560ee7ac8a66f038cf26fceddb1e2cf34e8077c6f976f532dcd384731001e2651f8ff32af7cc7e4a2b279c567f016d0ab776952cbe052bd1895c9bbb1d9b93a0f6a36de95b3968259acda0a3d51b5c9d352d7275181a80c1c8fe1479b46b48b50e19e64b61a66d975d399931d52ebd39222b2787e21e15957038211856d37b62e11812c0ef9e75822c2781c340235f6c206bc1f4f25ece1fb3877f15736a07d09e4f5d4aa0c907a1c615ba38362de8a3f081b9bcb451b87dbafd8185de5ba37e07778613f9546756b67d8552d612289d83b4fe1d0541a8071f13318b0cc0c7350d3c6706e3c09d9e6403fbecd82ada85cc595965bd8c02f6a3d328d4f9785eb83fd98d5207c128c3f215e938ae17a16b12c80bfcd185f3a9cc7e3a2732fa255e58143600f2f16d91e98e7eb4f706d9e22bf7c049156fafa3803fafa5086b264022d0d54b2c670755aa77ba95cc0a72edd2ce16bd3f69bd220ea0cd28e8fd227876538b57355d058ca3e8f590362fce1157836b2dbdd5a7306eba9cdcdacdf412021c9b996a4eccbf93992c532701cd672d78acce91c98cb99a23fb7c5cf40dde269f0f2270301fe4ab67da56ca0ff7a75a5c5380a28410ef82bc337ee2d57eb077a94f56e6aa4a6238ed0924470dd09741a7c8523fda77861d7af0948d975155b612d7e7d8ae2605f748df6b4f23366ea7ee86d370604aeaf8119db82c26c08d7a793344ebd3688a0ff917dabc0c3168b53f5be5a273a923f36019ada90147252002123eb3feb05155b95aceda12a841448b50e8ac9bee11ea1adbda0f042bec8cb941cadda12b01b06d4a713f073e2bd076c547d68ec3b19eb4a2fd65dcd660111de6529847a369876ffea86a24a1dd0db68254a6a7c7db6497e18c415078e29843846556e2eb672954e0bf72248889d551119d89a7c7e36a0d12efa851c506db54c7e788b52c9ebab2fb0cae2db43c10f5cbd33294ad252ecfbc20ddf5e18c2d6b5e661a3f00e8700bf22f4d0837ca356d58a7d41da23e4373e54179d97e595f8a544cd33ad1e1ce8d293429169964da6111712c45e7e5bddd9dd9b276f07d381267817f476ce9087c7b436607e208d1ae86ada32fd79602f1b26eb5fc810c58e8f3fa2237103e8c021eb0e21d7c6bb688a418a2259097eff23a365fa30f605057bcc2f604c4564f02114d0c2a6501bc5d47c980c8c8555fad40eb19878ac43955b32f66a6df8d42f85b18c90584b3ce3de7ae61c37b72db485b0d8ca07daa48c73a66f3312c5512b2ad6bcd04956451e4ec5938744282fdd9142e4d3de2a0ab2903bd0dd2277922466766b01d5539b2b5ffaaeefd830ce8e075b9097bc5954cb4c7f486d355b294d885157219c60aab412c8105113bc498e9d68c490d2453ca7994ceb23e2e76ae8631b9be0fc18d4da4add967e2fb52fa71157bf60569cf435e2830542af4ea9ac2c255a40cdf5ddd450e75c3c6cbf3533bc06395e272ed2e18c1a6a132dc411f496d8bed13232cc939a9d46a217f4b98e9d6f2c61f656e6679891c6acddfd7bb9f76b5422f7aac6066f61fe3e8b4815872c7e0fbb4122e05d0c8428fd475b7a6d6e2d1a60e6d49dfe364253e7a74615155ed5c51ab53ec4bab46043c53bc5b4a334815050006ea15b793ce863e21b6fc74f39ae4d73a3c1ba04b4371fba56680107ec599283e765accaec717186927afee813c0c61345620e41582a4b6e1763d239348c00aed40e84f6afbaa2f132a345af772acce7d8a3429fc72f12390691322afd6b21378102f808029399b18eee20eefb74308e22aa54272662f5e53ad6bce704aac277fa2d04933c524165ef30372adb95e6fb3c09c4623df2fa50a8826515a1fd7171723c7d36eb5a62ffb0a1e42eac359818f2f0613fd672de920b3514c251dc714682cd869e429808c60dc07939bfebf6f0b4e17d468d4bd4ef7d5c50b3c80fd0c2250c1ed3f10f37c4a7aae14efdc99528b787a14f90a8d3c97d2957c9db2471fbeaf4d5e970caee4fda90ef87aa3aa1b3fb3cf7cd2a8eb87588d13f7005236231fa0ccd4f023116f269e95dc0157e43d50fda9282243c2d3e0b9ba52dea1210116777d42045cb667086434b700584ed21175a0a713c220a9fb25769fd9a768038d24f1cba3abfe51a788769f09a8fc2d6273171d09a065187ed15ec5c941061f50bc49f3fa3a6dac9488e0a17b95984d31f230105f31d5c41cf319661ee2d50ef16f48a13c7fcde2b96c4c1b5fa6b08a80aeff3c8dd5fcd889d7684f72b0a11a89a8171d0f180ddee0e44b836d0e6950d3cd601eb9c418d48a246b4977762e2d75ebe775d3abef64e043d86cc9cb0531670ade2e0d1d915741de824706fcdc179bcf7582a09b675d67768db9aa27499d7d4cf07500923f7f0e681e3a852f5c11c56fd7d11c34d02212e8447b46f2c628e744caa9a1079eedf1c10c880be41c085512abda963eb5bbbc09d311b3a8a4377fd6e8c9f9b20e72168c031973135914b7fac24dc0e57b32e86b931e8d793d65ac984733dccb31225f5c7cb7676ac929f6eaa2e9741ed87c198556b124aabe2e8946ddaef7365e2c48d3ce79bc06371a09f587d1b99a488262031011186674cd9173eaae9217b3a44bf54ae3ed4a5d0fb4c9e7f866d7c93b3eab57fce71ecced8cc0009318cccf04b2a7abd1271857036e6b65a8881c2b5d61088cac87b72cbdb3ac7873271ca8f60a19d975b567bc2907124f5e0e4e8461223b870f06297a10f24311bf56f47c2f4deb4cd6db0a230a338b8383431309470ba3a3843785e4ef43a1c746d8651e99665da831d0004e21a1271314880dd1d29bb95f3f14c0f8b86aed6be2c80218508e2b77526db213080936a1f869d17a38b30ab453bcebe9fa18b2ea2262f49667edb780359605301a7498f7c542f884f8418df02fad03b8e06dec65355ed7d4c85cfa075bde264c0ecd7f93cff65c4e004085b228c14ff7a13f34a578d11d19cd58c3a105e86d4f209f7c56ab7204938156fc5b095917e7caded57715d3904cfef2be2ca8b4df212ea3db8726ba2e16d2e0e137dd0bc37539980be8b70ee95233302262c75f51b61f4a2bd88135279b18040b03044b93969f9a4b34582dd307821a0053674367e70b2c4a54e6388f9fd98526b773af9b31ef3e0b78d5af4a06296367fc3570247c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000237f2fd32765627dbcf6b00421894d9cd731548970aa8b15819fe62e85f1419a1a09f8dc69dc3bfe59a55c9095dd23d95f8aeb4a107f2ee1b2c16fbb4b20b9d313e9c7268c955e406bb09770414b87305ff00fb25c0b6ec827bafa780bc3b35c1370122a399a92211f41fec156c4590f817594f4752705640a508a9b7247bd660284df1f95cb01913f09f2db9a4e43987cedb15e180d91a487225828c268147525685b075335fed820a131ce5e9f3d5c437611891adc050cd7b9e187c2d8bf7e08976aa27380eaf8d41469af0e8d53da08f2cae637af290f0244a5fe92b85846222424b978fe0c9b6b728b54dff94e435ba2bda4919247d69d8c1f10af7537550aa1661e310ef589f7ca4f8d6cf299571aaf79605c753dfafe9da797dde22144090461edeabe61992c7cd8dc57e8a0f77a1c5fb3c14d23eae7f9bfc8267ff54226edd2c0001ee33b6621e441098dd4e572843a40500365c1fd9cd70c08288431036ea04071dfa48832b6bbdd3901d31ff7b5fc59c0a2892d301c2fe858c13e6a10974a0ad4c8bac6c7b505431016e5097f510e4d0212d3a22fab8e9d9cc76cde2dc7e7dbf42112c1387324b3ba611377051d23cd3f57bd55802c6896c8eb4461152eeac6f1630716d98a1ab87733a78e0a08048d0e2f0e4c087dced7f88b7cd22ed6c29ab52c06a825735d9ac733fc7345641b274c0a534a5e7d948f07afb17d158ccfc87344c2f5ef7201a8c99e20cfb2a82d6979649c57831866e1e77ab5e51db2ab55cb7ef10d7d57c4f1e730d1c3a8d3ef6e01b0dfc003b244c010b0a9740cf6f4e591e8bff4718a9a179200a4a6419eb0a3aa8f973829c34880879860a11d52e23031dad5ee05c173a00fe4cfe3254d9d7099706a4b69ac109817255b4406a3c48a334042c4446dc263bf5aa8b5eb7b80484ec5de3c95acc7b74ff0f2e20b5f3325ecf32f4019abeb0c8bf590065323951a5f8652786ac68bb960cb584702c6f37ee34622b5323576acce05eb63fe8e239f5660b1cbb880ca3f9ad8cf5f16ab08f5b502f9862ab2287632d219358f1a0cf333e6f842d0b8b5d47842c7b306042180f0166693e25651998e5612ee37761f5da0088e13837d060fa2cbcb1f2e9d30ddf1d9e01eb787ecf8aa565561928a33bdea5c92df61fab70a78a06a1b1edff7e1135a50c6dac0fd82585fd636a2452514a209365889f569faeb49882200f90584d66a4d1202045027bef9cd575bf692f4c925430a6fad49816936b29201d6ac7e814388642cf2bfe155a61703fe247056a46f19d5d904eb279cc4465102a62d744918c35b61f7e6755aba173ffe5d0561c561519b9e0b18231a6041fb12486e4d72e90695ab094d743a9a3b54d820231bd1970ee77f0116c2c84b05481cadcca23f0d2021c6e562c71d3d123e9da655cffdeaddd0890420da7621001b1242b48f2f4c931964e26957b6d3f556c30d11a3fbdf560ee418cabb487211eb24ca3eddf67c8d1be2441f5e3c6ef1c13597d909d6adfeb04db99fe90381af760fdccbf6dcd6476312cb6f1a28c8f83d7de852f5fcb70531160cb6743839e00c16eb1f4a2555c77b1ce69ac9bbf3455c7d33ce579d03868ea1618665ecb66eb30b27f01d3b8a68ea76d85ec5f4337bcb9730327918d3d85dc10c80b4c694e769008eefdbbead0f41a57b81c6fceee8ee269201af632be10441c0ba538f7daa7f2f870060719f256cd9638de56f4b9dc7e74dc0e673d5e19d7e4be3317b2c7f2d1e6ee6563882348656e52d572ca4b0606d34b01bdca5702f9152c2e0a4bde43211399c95d35176ee8a1b0289cd5a130217b037c310ad96f5cb9dc480cfe40f351500b70645a23ec61acdaa475c647f988f3f8744ac936809bb06e39ddeef67c72e28bc3bb2afe1e88c9495f7723ab75525dc1997bbfc4b9a7a06703043f2eb1609753dc35fb18ddeae42cde9646cef12495441ec20b29e480c64486bef6451ee00000000000000000000000000000021832da38a76f2cf570a85021b10d9b73200000000000000000000000000000000002bc1a1edeedb96ec58c2f796b244fc0000000000000000000000000000009d7f0285fb7f125457d05a7bf09ce62a0d00000000000000000000000000000000000034fd1e534c5d5fc47cadb62f7f70000000000000000000000000000000718a738370c68121898444c2f31fedc59a000000000000000000000000000000000007efa8939e0e7d2e0c3cf2e947a7bf00000000000000000000000000000081ca5e851ed9daf9f7f3e6f910d2ba3422000000000000000000000000000000000014740e632ad58f25b03cfd5d2f4af80000000000000000000000000000005a4af29b7861763ae072226dfad708158100000000000000000000000000000000000354c32b56722b40a1da12a948461600000000000000000000000000000034ae9b69e09f6fa305372d8d59897905df0000000000000000000000000000000000200b5bdac916509ef32fb70b19c6b700000000000000000000000000000040eafd7ba8e659703f8789a16655118394000000000000000000000000000000000015081872eb808acd83faa2195fae5c0000000000000000000000000000009863fd8cd6b56862c33bd03e422edb052900000000000000000000000000000000001ad2508b60a69c9dfc169484612aa60000000000000000000000000000002172add10f95b245472e56c1b5b771f6760000000000000000000000000000000000289438e0af460c55da1fb46bf04bb30000000000000000000000000000000e39d6ac65048a28d4c3e2f1a29957cdc90000000000000000000000000000000000184eb6259750b76db37dd6355550b000000000000000000000000000000037866489a22ebf296b6961a9cd34096b5b00000000000000000000000000000000002aeecefa9adf3761ed80cb30dbe07e00000000000000000000000000000087108f92ff7cac44040bb334249438727300000000000000000000000000000000000896ff02172853ed6903c5749d5ba0000000000000000000000000000000cd31ec7c968bb5fe7b5a4bad0f0eee550e00000000000000000000000000000000002dbda89b46e67c0e62ec2713869f32000000000000000000000000000000b3691c7d6165ef8ee7a03f8d5c2b23cd6500000000000000000000000000000000001f15e7996abcaf8c4df98ec8f7a98800000000000000000000000000000007da78e3c63a4ce2e06d7010071ec43ced00000000000000000000000000000000002e570068ca407364693025bd459f71000000000000000000000000000000139fdee42e16c73c68b47bf2c3a1d485f80000000000000000000000000000000000016684c552b8434f7d72effa112de10000000000000000000000000000009e93e240a5fda7767f876ca79bf705e8090000000000000000000000000000000000154c63195c44c538318cb912e4e9910000000000000000000000000000007d266afec0c3b1f516c70e1db41be2994d000000000000000000000000000000000008d773f6aa4d40e92b19627ab08d21000000000000000000000000000000a23106d0b9c127c2207bbd4ca55ac4c920000000000000000000000000000000000012d6f6e2ecfd810edc98e49d8a4456000000000000000000000000000000304934c2405c0fe101a5a4d2ce2593c28c000000000000000000000000000000000023220e4cc9443e0807c0c3b84747a8000000000000000000000000000000df5531781404739805e0a3521a1c36b15600000000000000000000000000000000001cdfe0a6a22614fd450da3c1fde51f000000000000000000000000000000b6545383732c969c0354ea7c6b2572c8cd00000000000000000000000000000000002d6166371a5a3ca6699c9a82454327000000000000000000000000000000a6b378e0affcaff899f951f7572016ca8c00000000000000000000000000000000002a2fe2a4b68944515d2ea065e863ca00000000000000000000000000000093605b491f1f433e8ba151074b8f7221ac00000000000000000000000000000000002f520182f125987ae0e990d1e2e55a00000000000000000000000000000038a682e98018da9f5872f89caf85a7842a000000000000000000000000000000000024aa2c8b84e50042933bc37a902fce00000000000000000000000000000076209f64e6436ecd39ca466f90bab9b0f4000000000000000000000000000000000007d634b9ead7c8e635fdd4a3ce264c000000000000000000000000000000ac6ddca15d8d72fd3c7c04dd677e4682d300000000000000000000000000000000000bff121dde91bd0842a7035af4333b0000000000000000000000000000001da55c8f6953530eea5f8b44c1d0d30fdb000000000000000000000000000000000022813be77edfd6fcd496e0762cfc6a000000000000000000000000000000cbc78b35a6385972a7d1893b2d6c89c3a900000000000000000000000000000000002e6aae447640071a78df475ef2937d000000000000000000000000000000ff020f82b567b7ad490338e9c5bc7ae7b40000000000000000000000000000000000294215b29e9953b9a29b6e7843fdbc000000000000000000000000000000dfab109744c0ebc6cbe431ab259e8b6ecb000000000000000000000000000000000029bc5b0e12d2a15245f45651206d36000000000000000000000000000000419a93b230a13698f1104ecbfe90b34aad00000000000000000000000000000000000e5426a396f8064d929fa383128a92000000000000000000000000000000ff2fc34f7823e392fd8eceda7336afdc5300000000000000000000000000000000001613ad953672393754e40a3ffd8d0300000000000000000000000000000017e2eb2c42b4997cfd046d27e127af79f300000000000000000000000000000000001eacdaf645dc631308c187a36dc24f000000000000000000000000000000eea9e38990eb71048d9742b7eb81ce5bd700000000000000000000000000000000002b622c508810fd1a751c49ab9524b9000000000000000000000000000000340323a65eb3c803bdf4d5fd70d10c5b340000000000000000000000000000000000029f8e5f38168ed7e401bff18421ac000000000000000000000000000000634b01df56c54b7e94fa30354df1a9c22c0000000000000000000000000000000000186cbbdcea11d10d22ecefd1eab80f000000000000000000000000000000227b9dcca51271edd73f05778d5d9cb8e100000000000000000000000000000000002f3546b6e65b130cbfa72fdc37824300000000000000000000000000000080c5281d0645614f9f39d8550c6001150200000000000000000000000000000000001c61ff8a26c657d6dd47a8ed2000d4000000000000000000000000000000dabdbc5c6b1311faeba2af94c2dab34ed0000000000000000000000000000000000003eee2291bbb77f7161dac074ab6c600000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001217d5f9c62467c591956d4144b2d43a6cef051c29d4f4f5d46a6172c969b58d011468bdd6772fa6c0c44301411023d0c9c1d8a78312ebe267f666040f2687a92a1bc24f0488967f2d9a4a91f986641bcea7bc7dff4f21055c034262daeeaff3165125dd34228974a10a94207311d2d9907b5248fb2cd2aec3c511cef82a0db309eb9d9b32369d573b9d3f56dc6d29d55464fc62fc59f01c6526fe667827f2910064efc84a63839ba24296afce1ec0040a4648e52bc44ec8a01de9359a18e64729cca82acd4c4babff771ec5ea289c3743bf100c62309cdd54030f682ad37b102044e74074daa6a66a17d10eb36230dcb5e1acfdcd434cbe5e2e7c30d00160ae0d244931bd1808f837b89bdf0703e8ab09042350b73852a617ad033b6ac1b8cb10222fabcee4203d3a7fa21732f8dcb201e2f4176ac348dcb8e5fcbb442c8cfe2cef85f1c5bc63a50375505bdf06470bfea035edf59934489bff2d283a643f0c1e5facdbf0c7dd02c8991f33631aa12630bdc8862defedd441c9bc2a8960395f22860bcacedc5f989a6d814003a45b7b7f4d1cb35597c3f0426f348d8211588429b47624e027a3c169a72579bc0331485459f41520db6a3dcfb53a2e044f31761d76e84a99dd931f5a5970f6c3f15e127af855e89ce46453e936b74288a414432f01b6b538c510cc85641ede3ab2583d95ff25c59a856b9a92840e1a4f68e1400a8d8378c420b7aa8fb87bf3287fe73dfc405b2ed531aa35b3044bb1bf653b6909be0901c6ebf3c377bdbf3bf397e60069fb0278687998e667866b7ed43cef5b0b2e3d9bec91e167a63d13abd4091d24cc92d6102b33bc832e3c200b3f8f8e0715bff4ba5b6021fc4cd93cba6650acaabfe73457b3988036311879620a65c4c326096c677f92607e5f0cb1bf0948b065af3a032c5ac8f3690773c32fe29f552f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e0609bbcee71e708093ece326ba89b8e6400000000000000000000000000000000000e2e4134b9d3e322d13f42bcf0f33e000000000000000000000000000000d05b774fe48d74f4207abf4fae1e2bbc3600000000000000000000000000000000000008eb62e7d152a6d9ab001e7c40b600000000000000000000000000000084d6718112c54eb0d13ee24a3c24332109000000000000000000000000000000000017f84b0afb48259e15b5eb4d7907cc0000000000000000000000000000004edfbdf184c6e4f277fd3b19eb0bb2199b00000000000000000000000000000000001493897df01651f2c7937511130c36000003dc","publicInputs":"0x0237797d6a2c04d20d4fa06b74482bd970ccd51a43d9b05b57e9b91fa1ae1cae000000012925752f6e51bf2738d82bf0e4cb0805eb37e908a909db140c8ce9073d03bad9000000032da55666630fdf8594065c377958c827dc1c130dac91f17c6699b53dce60ef752c2cd74ae9c2b2a1ab717d69eb4753f65607db94e93a8c0a51f23b96e34f3038000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000241a65339d99ce6f973739bda9c459c80e677af4783b35941098d8cea5b54022dcbefa1ba7a12eb4f2ca5632698034aaab9a60c0428603cb64a7685760f203200000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ac4f3ee53aedc4865073ae7fb664e7401d10eadbe3bbcc266c35059f14826bb000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"} \ No newline at end of file From e8685ac88e92ab2e598f1073e1d61eb2f74aec04 Mon Sep 17 00:00:00 2001 From: Tom French <15848336+TomAFrench@users.noreply.github.com> Date: Thu, 12 Dec 2024 17:54:11 +0000 Subject: [PATCH 35/39] feat: reduce the number unconstrained boundary hops in bloblib (#10603) I've taken a quick look through the bloblib to see if we can make any optimizations on the Noir code itself. This PR has a few changes from this: - I've removed the usage of `std::as_witness` as all the usage was applied to the return values from unconstrained functions (and so will be witnesses anyway). - This shouldn't have affected performance but it also wasn't providing us with any benefits. - Rather than calling many unconstrained functions from a constrained function I have created unconstrained helpers which will perform all calculations and then return any values which are necessary for applying constraints. - This minimises the amount of data which gets pushed from the ACVM to the Brillig VM and vice versa. This is important as we no longer need to read all of arguments from calldata and cast them to the correct types or arrange the results in memory to be read back into the main witness map by the ACVM. - This means that for the calculation of a single `partial_sum`, we would have to spin up and tear down the brillig VM 17(!) times whereas now it will be done just once. - I've removed some cases were we'd use `BigNum::evaluate_quadratic_expression` in order to perform simple arithmetic and replaced them with the equivalent constrained operation. An example for this is calculating `z_pow_d`. --- .../crates/blob/src/blob.nr | 329 ++++++++++-------- 1 file changed, 183 insertions(+), 146 deletions(-) diff --git a/noir-projects/noir-protocol-circuits/crates/blob/src/blob.nr b/noir-projects/noir-protocol-circuits/crates/blob/src/blob.nr index c1390f7aa8a..d2f9d809332 100644 --- a/noir-projects/noir-protocol-circuits/crates/blob/src/blob.nr +++ b/noir-projects/noir-protocol-circuits/crates/blob/src/blob.nr @@ -22,9 +22,9 @@ global TWO_POW_64: Field = 0x10000000000000000; unconstrained fn __batch_invert_impl(mut x: [F; N]) -> [F; N] { let mut accumulator: F = BigNum::one(); - let mut temporaries: [F] = &[]; - for i in 0..x.len() { - temporaries = temporaries.push_back(accumulator); + let mut temporaries: [F; N] = std::mem::zeroed(); + for i in 0..N { + temporaries[i] = accumulator; if (x[i].__is_zero() == false) { accumulator = accumulator.__mul(x[i]); } @@ -32,8 +32,8 @@ unconstrained fn __batch_invert_impl(mut x: [F; N]) -> [F; N] { accumulator = accumulator.__invmod(); let mut T0: F = BigNum::new(); - for i in 0..x.len() { - let idx = x.len() - 1 - i; + for i in 0..N { + let idx = N - 1 - i; if (x[idx].__is_zero() == false) { T0 = accumulator.__mul(temporaries[idx]); accumulator = accumulator.__mul(x[idx]); @@ -186,39 +186,134 @@ pub fn evaluate_blobs( fn barycentric_evaluate_blob_at_z(z: F, ys: [F; FIELDS_PER_BLOB]) -> F { // TODO(#9982): Delete below and go back to using config.nr - calculating ROOTS in unconstrained is insecure. let ROOTS = unsafe { compute_roots_of_unity() }; - // z ^ D: - let mut t1 = unsafe { z.__mul(z) }; - BigNum::evaluate_quadratic_expression([[z]], [[false]], [[z]], [[false]], [t1], [true]); + // Note: it's more efficient (saving 30k constraints) to compute: + // ___d-1 + // \ / y_i \ + // / | --------- | . omega^i + // /____ \ z - omega^i / + // i=0 + // ^^^^^^^^^ + // frac + // + // ... than to compute: + // + // ___d-1 + // \ / omega^i \ + // / y_i . | --------- | + // /____ \ z - omega^i / + // i=0 + // + // perhaps because all the omega^i terms are constant witnesses? + let fracs = compute_fracs(z, ys, ROOTS); - let mut t2: F = BigNum::new(); - for _i in 0..LOG_FIELDS_PER_BLOB - 1 { - t2 = unsafe { t1.__mul(t1) }; + // OK so...we can add multiple product terms into a sum...but I am not sure how many! + // we are computing 254 * 254 bit products and we need to ensure each product limb doesn't overflow + // each limb is 120 bits => 120 * 120 = 240 bits. + // however when computing a mul we add up to 5 product terms into a single field element => 243 bits (ish) + // when we do a modular reduction we validate that a field element >> 120 bits is less than 2^{126} which implies we have 246 bits to play with + // which implies...we can accommodate up to EIGHT additions of product terms before we risk overflowing + // (this is really messy! I never considered the case of giant linear sequences of products) - // GRATUITOUS USAGE OF as_witness, LIKE THROWING DARTS AT A DARTBOARD AND HOPING THIS HELPS - std::as_witness(t2.limbs[0]); - std::as_witness(t2.limbs[1]); - std::as_witness(t2.limbs[2]); + // Seeking: + // ___d-1 + // \ omega^i + // sum = / y_i . --------- + // /____ z - omega^i + // i=0 + let NUM_PARTIAL_SUMS = FIELDS_PER_BLOB / 8; + let partial_sums: [F; FIELDS_PER_BLOB / 8] = unsafe { + // Safety: This sum is checked by the following `BigNum::evaluate_quadratic_expression` calls. + __compute_partial_sums(fracs, ROOTS) + }; - BigNum::evaluate_quadratic_expression([[t1]], [[false]], [[t1]], [[false]], [t2], [true]); + // We split off the first term to check the initial sum + + // partial_sums[0] <- (lhs[0] * rhs[0] + ... + lhs[7] * rhs[7]) + // => (lhs[0] * rhs[0] + ... + lhs[7] * rhs[7]) - partial_sums[0] == 0 + let lhs = [ + [ROOTS[0]], [ROOTS[1]], [ROOTS[2]], [ROOTS[3]], [ROOTS[4]], [ROOTS[5]], [ROOTS[6]], + [ROOTS[7]], + ]; + let rhs = [ + [fracs[0]], [fracs[1]], [fracs[2]], [fracs[3]], [fracs[4]], [fracs[5]], [fracs[6]], + [fracs[7]], + ]; + BigNum::evaluate_quadratic_expression( + lhs, + [[false], [false], [false], [false], [false], [false], [false], [false]], + rhs, + [[false], [false], [false], [false], [false], [false], [false], [false]], + [partial_sums[0]], + [true], + ); + for i in 1..NUM_PARTIAL_SUMS { + // Seeking: + // ___i*8 - 1 ___i*8 + 7 + // \ omega^i \ / y_k \ + // sum_out = / y_i . --------- + / omega^k . | --------- | + // /____ z - omega^i /____ \ z - omega^k / + // 0 k = i*8 + // ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + // sum partial_sum + // + // ... that is: + // + // ___i*8 - 1 ___ 7 + // \ omega^i \ + // sum_out = / y_i . --------- + / lhs[j] . rhs[j] + // /____ z - omega^i /____ + // 0 j = 0 + // ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ + // sum partial_sum + // + + let mut lhs: [[F; 1]; 8] = [std::mem::zeroed(); 8]; + let mut rhs: [[F; 1]; 8] = [std::mem::zeroed(); 8]; + for j in 0..8 { + let k = i * 8 + j; + lhs[j] = [ROOTS[k]]; // omega^k + rhs[j] = [fracs[k]]; // y_k / (z - omega^k) + } - t1 = t2; - std::as_witness(t1.limbs[0]); - std::as_witness(t1.limbs[1]); - std::as_witness(t1.limbs[2]); + let linear_terms = [partial_sums[i - 1], partial_sums[i]]; + + // partial_sums[i] <- partial_sums[i-1] + (lhs[8*i] * rhs[8*i] + ... + lhs[8*i + 7] * rhs[8*i + 7]) + // => (lhs[8*i] * rhs[8*i] + ... + lhs[8*i + 7] * rhs[8*i + 7]) + partial_sums[i-1] - partial_sums[i] == 0 + BigNum::evaluate_quadratic_expression( + lhs, + [[false], [false], [false], [false], [false], [false], [false], [false]], + rhs, + [[false], [false], [false], [false], [false], [false], [false], [false]], + linear_terms, + [false, true], + ); } - let z_pow_d = t1; + let factor = compute_factor(z); + let sum = partial_sums[FIELDS_PER_BLOB / 8 - 1]; + factor.mul(sum) +} - // factor: +unconstrained fn __compute_factor_helper(z_pow_d: F) -> F { let one: F = BigNum::one(); + z_pow_d.__sub(one).__mul(D_INV) +} - t1 = unsafe { z_pow_d.__sub(one) }; - std::as_witness(t1.limbs[0]); - std::as_witness(t1.limbs[1]); - std::as_witness(t1.limbs[2]); +fn compute_factor(z: F) -> F { + // z ^ D: + let mut t = z.mul(z); + + for _ in 0..LOG_FIELDS_PER_BLOB - 1 { + t = t.mul(t); + } - let factor = unsafe { t1.__mul(D_INV) }; + let z_pow_d = t; + + let factor = unsafe { + // Safety: We immediately check that this result is correct in the following `BigNum::evaluate_quadratic_expression` call. + __compute_factor_helper(z_pow_d) + }; // (z_pow_d - one) * (D_INV) - factor = 0 // z_pow_d * D_INV - D_INV - factor = 0 @@ -240,51 +335,43 @@ fn barycentric_evaluate_blob_at_z(z: F, ys: [F; FIELDS_PER_BLOB]) -> F { // [factor], // [true] // ); - // sum: - let mut sum: F = BigNum::new(); - // Making a call to this function causes a "stack too deep" error, so I've put the body of that function here, instead: - // let fracs = __compute_fracs(z, ys); // { y_i / (z - omega^i) } - // Note: it's more efficient (saving 30k constraints) to compute: - // ___d-1 - // \ / y_i \ - // / | --------- | . omega^i - // /____ \ z - omega^i / - // i=0 - // ^^^^^^^^^ - // frac - // - // ... than to compute: - // - // ___d-1 - // \ / omega^i \ - // / y_i . | --------- | - // /____ \ z - omega^i / - // i=0 - // - // perhaps because all the omega^i terms are constant witnesses? - //***************************************************************** - // This section is only needed because `__compute_fracs` isn't working (stack too deep error). - let mut fracs: [F; FIELDS_PER_BLOB] = [BigNum::new(); FIELDS_PER_BLOB]; // y_i / (z - omega^i), for all i + factor +} + +unconstrained fn __compute_fracs( + z: F, + ys: [F; FIELDS_PER_BLOB], + ROOTS: [F; FIELDS_PER_BLOB], +) -> [F; FIELDS_PER_BLOB] { let mut denoms = [BigNum::new(); FIELDS_PER_BLOB]; for i in 0..FIELDS_PER_BLOB { - denoms[i] = unsafe { z.__sub(ROOTS[i]) }; // (z - omega^i) + denoms[i] = z.__sub(ROOTS[i]); // (z - omega^i) } + let inv_denoms = __batch_invert_impl(denoms); // 1 / (z - omega^i), for all i - // If you're seeing a `bug` warning for this line, I think it's fine. - // Ideally, we'd be using `__compute_fracs`, anyway, but we're getting a "stack too deep" error. - let inv_denoms = unsafe { __batch_invert_impl(denoms) }; // 1 / (z - omega^i), for all i + // We're now done with `denoms` so we can reuse the allocated array to build `fracs`. + let mut fracs: [F; FIELDS_PER_BLOB] = denoms; // y_i / (z - omega^i), for all i for i in 0..FIELDS_PER_BLOB { let num = ys[i]; let inv_denom = inv_denoms[i]; // 1 / (z - omega^i) - let frac = unsafe { num.__mul(inv_denom) }; // y_i * (1 / (z - omega^i)) - fracs[i] = frac; // y_i / (z - omega^i) - std::as_witness(fracs[i].limbs[0]); - std::as_witness(fracs[i].limbs[1]); - std::as_witness(fracs[i].limbs[2]); - - //End of section that is only needed because `__compute_fracs` isn't working - //***************************************************************** + fracs[i] = num.__mul(inv_denom); // y_i * (1 / (z - omega^i)) + } + + fracs +} + +fn compute_fracs( + z: F, + ys: [F; FIELDS_PER_BLOB], + ROOTS: [F; FIELDS_PER_BLOB], +) -> [F; FIELDS_PER_BLOB] { + let mut fracs: [F; FIELDS_PER_BLOB] = unsafe { + // Safety: We immediately constrain these `fracs` to be correct in the following call to `BigNum::evaluate_quadratic_expression`. + __compute_fracs(z, ys, ROOTS) + }; + + for i in 0..FIELDS_PER_BLOB { // frac <-- ys[i] / (z + neg_roots[i]) // frac * (z + neg_roots[i]) - ys[i] = 0 BigNum::evaluate_quadratic_expression( @@ -297,27 +384,37 @@ fn barycentric_evaluate_blob_at_z(z: F, ys: [F; FIELDS_PER_BLOB]) -> F { ); } - // OK so...we can add multiple product terms into a sum...but I am not sure how many! - // we are computing 254 * 254 bit products and we need to ensure each product limb doesn't overflow - // each limb is 120 bits => 120 * 120 = 240 bits. - // however when computing a mul we add up to 5 product terms into a single field element => 243 bits (ish) - // when we do a modular reduction we validate that a field element >> 120 bits is less than 2^{126} which implies we have 246 bits to play with - // which implies...we can accomodate up to EIGHT additions of product terms before we risk overflowing - // (this is really messy! I never considered the case of giant linear sequences of products) - let mut sum: F = BigNum::new(); + fracs +} + +// TODO: Clean me +unconstrained fn __compute_partial_sums( + fracs: [F; FIELDS_PER_BLOB], + ROOTS: [F; FIELDS_PER_BLOB], +) -> [F; FIELDS_PER_BLOB / 8] { + let mut partial_sums: [F; FIELDS_PER_BLOB / 8] = std::mem::zeroed(); // Seeking: - // ___d-1 - // \ omega^i - // sum = / y_i . --------- - // /____ z - omega^i - // i=0 - let NUM_PARTIAL_SUMS = FIELDS_PER_BLOB / 8; - for i in 0..NUM_PARTIAL_SUMS { - let mut partial_sum: F = BigNum::new(); - let mut lhs: [F; 8] = [BigNum::new(); 8]; - let mut rhs = lhs; + // ___i*8 + 7 + // \ omega^k + // partial_sum = / y_k . --------- + // /____ z - omega^k + // k=i*8 + 0 + + // Need to split off the first iteration. + let mut partial_sum: F = BigNum::new(); + for i in 0..8 { + // y_k * ( omega^k / (z - omega^k) ) + let summand = ROOTS[i].__mul(fracs[i]); + + // partial_sum + ( y_k * ( omega^k / (z - omega^k) ) -> partial_sum + partial_sum = partial_sum.__add(summand); + } + partial_sums[0] = partial_sum; + let NUM_PARTIAL_SUMS = FIELDS_PER_BLOB / 8; + for i in 1..NUM_PARTIAL_SUMS { + let mut partial_sum: F = partial_sums[i - 1]; // Seeking: // ___i*8 + 7 // \ omega^k @@ -326,75 +423,15 @@ fn barycentric_evaluate_blob_at_z(z: F, ys: [F; FIELDS_PER_BLOB]) -> F { // k=i*8 + 0 for j in 0..8 { let k = i * 8 + j; - lhs[j] = ROOTS[k]; // omega^k - rhs[j] = fracs[k]; // y_k / (z - omega^k) - std::as_witness(lhs[j].limbs[0]); - std::as_witness(lhs[j].limbs[1]); - std::as_witness(lhs[j].limbs[2]); - std::as_witness(rhs[j].limbs[0]); - std::as_witness(rhs[j].limbs[1]); - std::as_witness(rhs[j].limbs[2]); - // y_k * ( omega^k / (z - omega^k) ) - let summand = unsafe { ROOTS[k].__mul(fracs[k]) }; - + let summand = ROOTS[k].__mul(fracs[k]); // partial_sum + ( y_k * ( omega^k / (z - omega^k) ) -> partial_sum - partial_sum = unsafe { partial_sum.__add(summand) }; - std::as_witness(partial_sum.limbs[0]); - std::as_witness(partial_sum.limbs[1]); - std::as_witness(partial_sum.limbs[2]); + partial_sum = partial_sum.__add(summand); } - - // Seeking: - // ___i*8 - 1 ___i*8 + 7 - // \ omega^i \ / y_k \ - // sum_out = / y_i . --------- + / omega^k . | --------- | - // /____ z - omega^i /____ \ z - omega^k / - // 0 k = i*8 - // ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - // sum partial_sum - // - // ... that is: - // - // ___i*8 - 1 ___ 7 - // \ omega^i \ - // sum_out = / y_i . --------- + / lhs[j] . rhs[j] - // /____ z - omega^i /____ - // 0 j = 0 - // ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ - // sum partial_sum - // - let mut sum_out = unsafe { sum.__add(partial_sum) }; - - std::as_witness(sum_out.limbs[0]); - std::as_witness(sum_out.limbs[1]); - std::as_witness(sum_out.limbs[2]); - - // sum_out <- sum + (lhs[0] * rhs[0] + ... + lhs[7] * rhs[7]) - // => (lhs[0] * rhs[0] + ... + lhs[7] * rhs[7]) + sum - sum_out == 0 - BigNum::evaluate_quadratic_expression( - [[lhs[0]], [lhs[1]], [lhs[2]], [lhs[3]], [lhs[4]], [lhs[5]], [lhs[6]], [lhs[7]]], - [[false], [false], [false], [false], [false], [false], [false], [false]], - [[rhs[0]], [rhs[1]], [rhs[2]], [rhs[3]], [rhs[4]], [rhs[5]], [rhs[6]], [rhs[7]]], - [[false], [false], [false], [false], [false], [false], [false], [false]], - [sum, sum_out], - [false, true], - ); - - sum = sum_out; - std::as_witness(sum.limbs[0]); - std::as_witness(sum.limbs[1]); - std::as_witness(sum.limbs[2]); + partial_sums[i] = partial_sum; } - // y: - let y = unsafe { factor.__mul(sum) }; - - // y <- factor * sum - // => factor * sum - y == 0 - BigNum::evaluate_quadratic_expression([[factor]], [[false]], [[sum]], [[false]], [y], [true]); - - y + partial_sums } mod tests { From e6fc5b508eff29e8486ec66285e36c53ef0d0788 Mon Sep 17 00:00:00 2001 From: MirandaWood Date: Fri, 13 Dec 2024 11:55:14 +0000 Subject: [PATCH 36/39] fix: add temp brillig skip to run CI --- noir-projects/noir-protocol-circuits/bootstrap.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/noir-projects/noir-protocol-circuits/bootstrap.sh b/noir-projects/noir-protocol-circuits/bootstrap.sh index 76d20a5f2a4..4f809893b3f 100755 --- a/noir-projects/noir-protocol-circuits/bootstrap.sh +++ b/noir-projects/noir-protocol-circuits/bootstrap.sh @@ -20,7 +20,8 @@ node ./scripts/generate_variants.js NARGO=${NARGO:-../../noir/noir-repo/target/release/nargo} echo "Compiling protocol circuits with ${RAYON_NUM_THREADS:-1} threads" -RAYON_NUM_THREADS=${RAYON_NUM_THREADS:-1} $NARGO compile --silence-warnings +# NOTE: --skip-brillig-constraints-check added temporarily for blobs build time +RAYON_NUM_THREADS=${RAYON_NUM_THREADS:-1} $NARGO compile --silence-warnings --skip-brillig-constraints-check BB_HASH=${BB_HASH:-$(cd ../../ && git ls-tree -r HEAD | grep 'barretenberg/cpp' | awk '{print $3}' | git hash-object --stdin)} echo Using BB hash $BB_HASH From c423c904fbdcfa407c98d15cbcc59d3f87252fdb Mon Sep 17 00:00:00 2001 From: MirandaWood Date: Fri, 13 Dec 2024 13:08:59 +0000 Subject: [PATCH 37/39] chore: update prover.tomls, ensure block-root is populated --- .../crates/private-kernel-init/Prover.toml | 78 +- .../crates/private-kernel-inner/Prover.toml | 230 +- .../crates/private-kernel-reset/Prover.toml | 232 +- .../private-kernel-tail-to-public/Prover.toml | 50 +- .../crates/private-kernel-tail/Prover.toml | 156 +- .../crates/rollup-base-private/Prover.toml | 1665 +- .../crates/rollup-base-public/Prover.toml | 763 +- .../crates/rollup-block-merge/Prover.toml | 6250 +++++++- .../crates/rollup-block-root/Prover.toml | 13013 +++++++++++++++- .../crates/rollup-merge/Prover.toml | 646 +- .../crates/rollup-root/Prover.toml | 6212 +++++++- .../end-to-end/src/e2e_prover/full.test.ts | 2 +- .../noir-protocol-circuits-types/src/index.ts | 1 + 13 files changed, 25601 insertions(+), 3697 deletions(-) diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-init/Prover.toml b/noir-projects/noir-protocol-circuits/crates/private-kernel-init/Prover.toml index cd32b2c03db..a963c0846cc 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-init/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-init/Prover.toml @@ -1,12 +1,12 @@ -vk_tree_root = "0x0a118eae659eb1671e3f579a83c4ad3688cee1b9f23dcec48af4d3f3a2de1733" -protocol_contract_tree_root = "0x296690a67333fb896eff0ef812d31f9be26161726e47057bb688ddcf08164453" +vk_tree_root = "0x0bee8f04d48c18c88f2b9dd3b87daba3b3c8d000f44d290587504ae770942c56" +protocol_contract_tree_root = "0x1c4e64cbb91a46bc2fd73590e1dacd3ddf84d1b5e7a7182795ab02fe80399caf" is_private_only = true [tx_request] -args_hash = "0x12c676d5f4440750e22bd5cb2bd80e389ed616ebd9e100b283d3b9002e8981a5" +args_hash = "0x23516c9ddf3cc536b189e0d22fb5a3c577804e50a0142020f8c16affe3ecd735" [tx_request.origin] - inner = "0x111914eadfa81022a42e019b6cf3df64d98685d3c137a16079d0742132432bb0" + inner = "0x30021904ae3832fa38613650b957c74abcc7ae86fda9e53bcd89e7b638cf9d67" [tx_request.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" @@ -22,7 +22,7 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" [tx_request.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd150e0" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd4533a" [tx_request.function_data] is_private = true @@ -31,7 +31,7 @@ fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd1 inner = "0x0000000000000000000000000000000000000000000000000000000027e740b2" [private_call] -contract_class_artifact_hash = "0x0d3819fce2331f47acf18c285be4b077d51819612c643b2608a02052e5f36f9d" +contract_class_artifact_hash = "0x04592586e3066000e9d91ee7a543d5df904fe72ca117509aa8dfdc9c5b8938ad" contract_class_public_bytecode_commitment = "0x0000000000000000000000000000000000000000000000000000000000000000" protocol_contract_sibling_path = [ "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -192,37 +192,37 @@ acir_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" leaf_index = "0" sibling_path = [ "0x1dd321a6e7f97125661870111830152aafd73449199f3904d3da783c92073ea5", - "0x1ae238c5edae1259fc877825fc1d18b5a6f3ed707b8df52fc446908abfffe148", + "0x14a5577a8fcd6b732358c3f6295e6732907ae05ea7004399d5be652d1ebf6c59", "0x0e1ce4f11f4d51a7d3136abbd625315fff3876d322e46ad8401da96f8e43a614", "0x1a0ca5eecb1430479902264f04e557160a4666fb42bb8b283c6397e3d17ac937", "0x2a6595890719fef7967c209488728aa5342438ba52058a3c770202f55acf6854" ] [private_call.public_keys.npk_m.inner] -x = "0x139be90137cc3dcf55a5ba270c494c7500a284c99fd14111e6f1d59496465c9c" -y = "0x2c34bad1dd8d7916951548bb529b7163ba5ec59aae7913ecc4773d7cb55eb2d4" +x = "0x175d325f91f136d09f7b5b30ee6e82a8720dcd4fadd87e9828a989461ffe5828" +y = "0x161bf54b24e177c5cbb154fc01a12732e92c21c5a04985cea5374033ed510b4c" is_infinite = false [private_call.public_keys.ivpk_m.inner] -x = "0x221bb3e565e780f9afdb9374d54a4ef756a48f6d34eca3a9b90c5b0e8217ecb2" -y = "0x2b069c020a1e71381ee41abd5b5fe580fab2bbdf24b255c58dc37b621ab2e418" +x = "0x084470117b40e59472a550c5bb74fad0de825061d5116ea28b85d3a0b3634d9e" +y = "0x06a03b6a63d51193e916edec42b78bccf90846afa4c9987be4e3ee3462daf638" is_infinite = false [private_call.public_keys.ovpk_m.inner] -x = "0x1e4302fd93271d4c0b112d26c409ac3dd469a077ebf6e803b6b5090ddd7ce2c9" -y = "0x17282e7a07f5a5d8422bd3b52b99a3cca771378dcd09e7f15dd9237ab5d40b4e" +x = "0x09249dbe7627ff4d52c0487e62b399965ceb57300fad2bc7bbbd7b79ab7d44b9" +y = "0x24f2152543be84b54ba5f22bf6963471c20e444404750bbd5e7a0d66b503da2b" is_infinite = false [private_call.public_keys.tpk_m.inner] -x = "0x1fd615d3d0bb687e06c847e826a0ca9a8de440aed209317d184b623705454e27" -y = "0x1996dfa29a2665692761c7bc61af694ecef5bb43cbc98c11c303b9c4b5952a77" +x = "0x1c181f5eeddf86600e1c59df6e221cb8565df5e87f411ed76579c47fc43ce754" +y = "0x098969bc1d70e363cf0c5b76044acd6cf01e077cb70e3da7005569c39d118f16" is_infinite = false [private_call.salted_initialization_hash] - inner = "0x1c01f5c1ca50bee25ec06e57d086d09dcf9bdefcc6e74026182756cbe3c8ec4c" + inner = "0x12b797eecc7e6f3aff2a5e4f784c85141d8762484adf39130aed92c17c442b53" [app_public_inputs] -args_hash = "0x12c676d5f4440750e22bd5cb2bd80e389ed616ebd9e100b283d3b9002e8981a5" +args_hash = "0x23516c9ddf3cc536b189e0d22fb5a3c577804e50a0142020f8c16affe3ecd735" returns_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" start_side_effect_counter = "0x0000000000000000000000000000000000000000000000000000000000000001" end_side_effect_counter = "0x000000000000000000000000000000000000000000000000000000000000000d" @@ -240,13 +240,13 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" inner = "0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000" [app_public_inputs.call_context.contract_address] - inner = "0x111914eadfa81022a42e019b6cf3df64d98685d3c137a16079d0742132432bb0" + inner = "0x30021904ae3832fa38613650b957c74abcc7ae86fda9e53bcd89e7b638cf9d67" [app_public_inputs.call_context.function_selector] inner = "0x0000000000000000000000000000000000000000000000000000000027e740b2" [[app_public_inputs.note_hash_read_requests]] - value = "0x192fc794d248ee77e9479e369945d717953f97b44be988ed3494a9bbf7b8b906" + value = "0x1808fa11f6b6ffdbd9f9e94a8f4c91aa954111d43f44544ed0ffbbf73ccf9a63" counter = "0x0000000000000000000000000000000000000000000000000000000000000002" [[app_public_inputs.note_hash_read_requests]] @@ -694,7 +694,7 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" note_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" [[app_public_inputs.private_call_requests]] - args_hash = "0x0c5f55cb39e70821fb4293623b2a2e6bd93328079d89b2a3ca30c0ecb0b8ca8f" + args_hash = "0x0af1e29b064dedd2a9cf35f6bd87361362530e6618692827c46333566e356220" returns_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" start_side_effect_counter = "0x0000000000000000000000000000000000000000000000000000000000000003" end_side_effect_counter = "0x000000000000000000000000000000000000000000000000000000000000000c" @@ -703,10 +703,10 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" is_static_call = false [app_public_inputs.private_call_requests.call_context.msg_sender] - inner = "0x111914eadfa81022a42e019b6cf3df64d98685d3c137a16079d0742132432bb0" + inner = "0x30021904ae3832fa38613650b957c74abcc7ae86fda9e53bcd89e7b638cf9d67" [app_public_inputs.private_call_requests.call_context.contract_address] - inner = "0x0a6785e6919ab0ba6d52a2f5a21ec7b12547d20086cba00612fdfca447797845" + inner = "0x1b5c85f852759a87b99af1b7a52bf7b9a1bda23e2792ad5384113b9c17cc4c50" [app_public_inputs.private_call_requests.call_context.function_selector] inner = "0x000000000000000000000000000000000000000000000000000000009462d279" @@ -1488,51 +1488,51 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" length = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs.historical_header] - total_fees = "0x00000000000000000000000000000000000000000000000000117815f5ec0920" - total_mana_used = "0x00000000000000000000000000000000000000000000000000000000000162af" + total_fees = "0x0000000000000000000000000000000000000000000000000011b417896f129a" + total_mana_used = "0x0000000000000000000000000000000000000000000000000000000000016771" [app_public_inputs.historical_header.last_archive] - root = "0x01efdcbcbea2494f71ea74a5d0d0ba5455129c180cec155418ee104e6d22b2fc" - next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000b" + root = "0x0781b1cc32dbe21aba1e27519e765bd44222b52ef464c6b63dfa97b399376c2e" + next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000009" [app_public_inputs.historical_header.content_commitment] num_txs = "0x0000000000000000000000000000000000000000000000000000000000000002" - txs_effects_hash = "0x0083d384a3cfda20bd82135bd2425bf2ebe42d7804a3af17326471003ba9a878" + blobs_hash = "0x0008822f60476d6dc34ec6109d3ad69dd1747a9484777021d8e717166bc7d5e6" in_hash = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" out_hash = "0x00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb" [app_public_inputs.historical_header.state.l1_to_l2_message_tree] root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" -next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000000b0" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000090" [app_public_inputs.historical_header.state.partial.note_hash_tree] -root = "0x2580c4cf35070b1a6513d8356c751ba43b73343ea9bbd82ec54b7c280c60ebb0" -next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000005c0" +root = "0x266514a4f987058cb2deb71c37e845df4f7f85ab2a23f208dd98cf7eeeb7cbc4" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000480" [app_public_inputs.historical_header.state.partial.nullifier_tree] -root = "0x2a4f5b262c0ffc9abafb84971d0ab3756cf2b1ff7e43e8c5d4b2efdc6e38681c" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000640" +root = "0x0a639c242b766d8bd94d437483546e33c4a8c27feadf50bc4ef523e9f191e927" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000500" [app_public_inputs.historical_header.state.partial.public_data_tree] -root = "0x00e2f085ab9775583a0dadea698c9177e9c5772190570bab385df4863c3e461a" +root = "0x2528ba08e1171e992f4744a8d8761bbe5611447c52d673882bde6a9e3b716e1a" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000097" [app_public_inputs.historical_header.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" version = "0x0000000000000000000000000000000000000000000000000000000000000001" - block_number = "0x000000000000000000000000000000000000000000000000000000000000000b" - slot_number = "0x0000000000000000000000000000000000000000000000000000000000000025" - timestamp = "0x00000000000000000000000000000000000000000000000000000000675b06ca" + block_number = "0x0000000000000000000000000000000000000000000000000000000000000009" + slot_number = "0x0000000000000000000000000000000000000000000000000000000000000016" + timestamp = "0x00000000000000000000000000000000000000000000000000000000675c2eae" [app_public_inputs.historical_header.global_variables.coinbase] - inner = "0x000000000000000000000000dde7ef1ed87eb5cbb0562efd27c3ad9eda8c800a" + inner = "0x000000000000000000000000ed846b6f217c7084a6c108eda50abce8c8367eac" [app_public_inputs.historical_header.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs.historical_header.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd150e0" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd4533a" [app_public_inputs.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" @@ -1548,4 +1548,4 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" [app_public_inputs.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd150e0" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd4533a" diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-inner/Prover.toml b/noir-projects/noir-protocol-circuits/crates/private-kernel-inner/Prover.toml index df0d5d295e9..491eb826213 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-inner/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-inner/Prover.toml @@ -3,9 +3,9 @@ vk_index = "0x0000000000000000000000000000000000000000000000000000000000000002" vk_path = [ "0x0a889b72ac9f79e9a8c4c5934e62f265fe1b862799220c8fef796558ef921a6f", "0x2788666fcc1fce27d0ac10e13716483d548ddc3411f466e5caef85cea2384902", - "0x01021495b9b3e13629698f9f4526c60f75c6df62ad99f413fea6425cc524b699", - "0x1aec8b738adc9fc707aad5d7cdc734041ed9049eff616fb22619b58c50ea26e1", - "0x022f5ac8ff86489f5492d016d0ac69cd39e93b518da3f5a15a8c3177b92bc008", + "0x281a8c9b2c044cffa01e5f56858d1d71aa11c4b28a1e90407565ca646ea0ee5d", + "0x25e71fd64ecaa6b98ef492c6d93da8164a259284041220c258edb94fe47706ab", + "0x1967335d7b185023afd52d8f7f40be4ced0d80ba63d4dce2de3e26bfe772e394", "0x122cddd247164987e2287f8ce124bea7a68052e85bffebe2fc6cd71718689069" ] @@ -162,55 +162,55 @@ min_revertible_side_effect_counter = "0x0000000000000000000000000000000000000000 is_private_only = true [previous_kernel_public_inputs.constants] - vk_tree_root = "0x0a118eae659eb1671e3f579a83c4ad3688cee1b9f23dcec48af4d3f3a2de1733" - protocol_contract_tree_root = "0x296690a67333fb896eff0ef812d31f9be26161726e47057bb688ddcf08164453" + vk_tree_root = "0x0bee8f04d48c18c88f2b9dd3b87daba3b3c8d000f44d290587504ae770942c56" + protocol_contract_tree_root = "0x1c4e64cbb91a46bc2fd73590e1dacd3ddf84d1b5e7a7182795ab02fe80399caf" [previous_kernel_public_inputs.constants.historical_header] - total_fees = "0x00000000000000000000000000000000000000000000000000117815f5ec0920" - total_mana_used = "0x00000000000000000000000000000000000000000000000000000000000162af" + total_fees = "0x0000000000000000000000000000000000000000000000000011b417896f129a" + total_mana_used = "0x0000000000000000000000000000000000000000000000000000000000016771" [previous_kernel_public_inputs.constants.historical_header.last_archive] - root = "0x01efdcbcbea2494f71ea74a5d0d0ba5455129c180cec155418ee104e6d22b2fc" - next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000b" + root = "0x0781b1cc32dbe21aba1e27519e765bd44222b52ef464c6b63dfa97b399376c2e" + next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000009" [previous_kernel_public_inputs.constants.historical_header.content_commitment] num_txs = "0x0000000000000000000000000000000000000000000000000000000000000002" - txs_effects_hash = "0x0083d384a3cfda20bd82135bd2425bf2ebe42d7804a3af17326471003ba9a878" + blobs_hash = "0x0008822f60476d6dc34ec6109d3ad69dd1747a9484777021d8e717166bc7d5e6" in_hash = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" out_hash = "0x00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb" [previous_kernel_public_inputs.constants.historical_header.state.l1_to_l2_message_tree] root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" -next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000000b0" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000090" [previous_kernel_public_inputs.constants.historical_header.state.partial.note_hash_tree] -root = "0x2580c4cf35070b1a6513d8356c751ba43b73343ea9bbd82ec54b7c280c60ebb0" -next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000005c0" +root = "0x266514a4f987058cb2deb71c37e845df4f7f85ab2a23f208dd98cf7eeeb7cbc4" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000480" [previous_kernel_public_inputs.constants.historical_header.state.partial.nullifier_tree] -root = "0x2a4f5b262c0ffc9abafb84971d0ab3756cf2b1ff7e43e8c5d4b2efdc6e38681c" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000640" +root = "0x0a639c242b766d8bd94d437483546e33c4a8c27feadf50bc4ef523e9f191e927" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000500" [previous_kernel_public_inputs.constants.historical_header.state.partial.public_data_tree] -root = "0x00e2f085ab9775583a0dadea698c9177e9c5772190570bab385df4863c3e461a" +root = "0x2528ba08e1171e992f4744a8d8761bbe5611447c52d673882bde6a9e3b716e1a" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000097" [previous_kernel_public_inputs.constants.historical_header.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" version = "0x0000000000000000000000000000000000000000000000000000000000000001" - block_number = "0x000000000000000000000000000000000000000000000000000000000000000b" - slot_number = "0x0000000000000000000000000000000000000000000000000000000000000025" - timestamp = "0x00000000000000000000000000000000000000000000000000000000675b06ca" + block_number = "0x0000000000000000000000000000000000000000000000000000000000000009" + slot_number = "0x0000000000000000000000000000000000000000000000000000000000000016" + timestamp = "0x00000000000000000000000000000000000000000000000000000000675c2eae" [previous_kernel_public_inputs.constants.historical_header.global_variables.coinbase] - inner = "0x000000000000000000000000dde7ef1ed87eb5cbb0562efd27c3ad9eda8c800a" + inner = "0x000000000000000000000000ed846b6f217c7084a6c108eda50abce8c8367eac" [previous_kernel_public_inputs.constants.historical_header.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [previous_kernel_public_inputs.constants.historical_header.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd150e0" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd4533a" [previous_kernel_public_inputs.constants.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" @@ -226,7 +226,7 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" [previous_kernel_public_inputs.constants.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd150e0" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd4533a" [previous_kernel_public_inputs.validation_requests.for_rollup.max_block_number._opt] _is_some = false @@ -234,11 +234,11 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" [[previous_kernel_public_inputs.validation_requests.note_hash_read_requests]] [previous_kernel_public_inputs.validation_requests.note_hash_read_requests.read_request] -value = "0x192fc794d248ee77e9479e369945d717953f97b44be988ed3494a9bbf7b8b906" +value = "0x1808fa11f6b6ffdbd9f9e94a8f4c91aa954111d43f44544ed0ffbbf73ccf9a63" counter = "0x0000000000000000000000000000000000000000000000000000000000000002" [previous_kernel_public_inputs.validation_requests.note_hash_read_requests.contract_address] -inner = "0x111914eadfa81022a42e019b6cf3df64d98685d3c137a16079d0742132432bb0" +inner = "0x30021904ae3832fa38613650b957c74abcc7ae86fda9e53bcd89e7b638cf9d67" [[previous_kernel_public_inputs.validation_requests.note_hash_read_requests]] [previous_kernel_public_inputs.validation_requests.note_hash_read_requests.read_request] @@ -2734,7 +2734,7 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[previous_kernel_public_inputs.end.nullifiers]] [previous_kernel_public_inputs.end.nullifiers.nullifier] -value = "0x0235cd043fa116c53c12b1eafae4cc2961bef31b23b1e619c7314915a34a08ce" +value = "0x1e4c23d7a900532cdb5687c5806be8da481285afb0abbbe8a3801d71451d08d8" counter = "0x0000000000000000000000000000000000000000000000000000000000000000" note_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -4878,7 +4878,7 @@ counter = "0x0000000000000000000000000000000000000000000000000000000000000000" inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[previous_kernel_public_inputs.end.private_call_stack]] -args_hash = "0x0c5f55cb39e70821fb4293623b2a2e6bd93328079d89b2a3ca30c0ecb0b8ca8f" +args_hash = "0x0af1e29b064dedd2a9cf35f6bd87361362530e6618692827c46333566e356220" returns_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" start_side_effect_counter = "0x0000000000000000000000000000000000000000000000000000000000000003" end_side_effect_counter = "0x000000000000000000000000000000000000000000000000000000000000000c" @@ -4887,10 +4887,10 @@ end_side_effect_counter = "0x000000000000000000000000000000000000000000000000000 is_static_call = false [previous_kernel_public_inputs.end.private_call_stack.call_context.msg_sender] - inner = "0x111914eadfa81022a42e019b6cf3df64d98685d3c137a16079d0742132432bb0" + inner = "0x30021904ae3832fa38613650b957c74abcc7ae86fda9e53bcd89e7b638cf9d67" [previous_kernel_public_inputs.end.private_call_stack.call_context.contract_address] - inner = "0x0a6785e6919ab0ba6d52a2f5a21ec7b12547d20086cba00612fdfca447797845" + inner = "0x1b5c85f852759a87b99af1b7a52bf7b9a1bda23e2792ad5384113b9c17cc4c50" [previous_kernel_public_inputs.end.private_call_stack.call_context.function_selector] inner = "0x000000000000000000000000000000000000000000000000000000009462d279" @@ -5038,8 +5038,8 @@ end_side_effect_counter = "0x000000000000000000000000000000000000000000000000000 inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [private_call] -contract_class_artifact_hash = "0x24ecb5f550110e3fd0d72d23121b7092b62de22076ad2821077ab1581e1b26e6" -contract_class_public_bytecode_commitment = "0x2b79b249f406f4235eac019e92055f0d08df01951d08f13b4dbb43bfb65fd6d4" +contract_class_artifact_hash = "0x0424707a0cdc4d897d1b49d429215da2458ac13b12eff665fb9257768657cad1" +contract_class_public_bytecode_commitment = "0x21ccd598b3f1e106121adb5c23e2a6013bf5f8fa6e4f8711c540bd350971ce83" protocol_contract_sibling_path = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -5200,8 +5200,8 @@ acir_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" sibling_path = [ "0x1895598e097615ceb187eeb360e0e2644bbb63fd37fcdc05eea0680c9303853f", "0x25b93bbfa26d245fcc662c969e0cb8838f4a2d3636c2d87aef792014741e9b59", - "0x0249717b6fd7fc05e0584d96ae70c394ec162696002e10646ae6191919dcde78", - "0x0f35551105199fd8accd17c9eb82b9877550daa316756d61151d1a293a7f3fa3", + "0x0173b6277638068ad3e9a1597860070f0bd6b16dcb2c5ecde6bd733ef75b2de1", + "0x050f0ce64bdfcba5470ecd90e35d5d622a1bd2c4457e7a39f0eb60323bdb2d3a", "0x2a6595890719fef7967c209488728aa5342438ba52058a3c770202f55acf6854" ] @@ -5226,10 +5226,10 @@ y = "0x2039907fe37f08d10739255141bb066c506a12f7d1e8dfec21abc58494705b6f" is_infinite = false [private_call.salted_initialization_hash] - inner = "0x03212970b0a361f35d1c739ea24fb241a1f3fbe1ae2f075849e0a85d7817310c" + inner = "0x2c7c17507841a9554cc2aee348b1e0277d59cc584e77c6af36e1091ebad92211" [app_public_inputs] -args_hash = "0x0c5f55cb39e70821fb4293623b2a2e6bd93328079d89b2a3ca30c0ecb0b8ca8f" +args_hash = "0x0af1e29b064dedd2a9cf35f6bd87361362530e6618692827c46333566e356220" returns_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" start_side_effect_counter = "0x0000000000000000000000000000000000000000000000000000000000000003" end_side_effect_counter = "0x000000000000000000000000000000000000000000000000000000000000000c" @@ -5244,16 +5244,16 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" is_static_call = false [app_public_inputs.call_context.msg_sender] - inner = "0x111914eadfa81022a42e019b6cf3df64d98685d3c137a16079d0742132432bb0" + inner = "0x30021904ae3832fa38613650b957c74abcc7ae86fda9e53bcd89e7b638cf9d67" [app_public_inputs.call_context.contract_address] - inner = "0x0a6785e6919ab0ba6d52a2f5a21ec7b12547d20086cba00612fdfca447797845" + inner = "0x1b5c85f852759a87b99af1b7a52bf7b9a1bda23e2792ad5384113b9c17cc4c50" [app_public_inputs.call_context.function_selector] inner = "0x000000000000000000000000000000000000000000000000000000009462d279" [[app_public_inputs.note_hash_read_requests]] - value = "0x13bf5f8917e8394c499937b25f6aeb9f2cf8b30cf2e93fc49d8a3ac9bb7f36eb" + value = "0x1eeef2e1c70a7794a3586b4cf25058ac1b892b7d874294bf7dc5d1282591e04b" counter = "0x0000000000000000000000000000000000000000000000000000000000000005" [[app_public_inputs.note_hash_read_requests]] @@ -5317,7 +5317,7 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" counter = "0x0000000000000000000000000000000000000000000000000000000000000000" [[app_public_inputs.nullifier_read_requests]] - value = "0x0a6785e6919ab0ba6d52a2f5a21ec7b12547d20086cba00612fdfca447797845" + value = "0x1b5c85f852759a87b99af1b7a52bf7b9a1bda23e2792ad5384113b9c17cc4c50" counter = "0x0000000000000000000000000000000000000000000000000000000000000004" [[app_public_inputs.nullifier_read_requests]] @@ -5384,11 +5384,11 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" sk_app_generator = "0x0000000000000000000000000000000000000000000000000000000000000030" [app_public_inputs.key_validation_requests_and_generators.request] - sk_app = "0x0750fae9de038323dff7db701e7e1516f1fecf1b35322fe7b423308ca34aacd9" + sk_app = "0x0d6dd1f75adac84b209ad26497e2f6796dc1d1a99a694303a18319a2d475df33" [app_public_inputs.key_validation_requests_and_generators.request.pk_m] - x = "0x139be90137cc3dcf55a5ba270c494c7500a284c99fd14111e6f1d59496465c9c" - y = "0x2c34bad1dd8d7916951548bb529b7163ba5ec59aae7913ecc4773d7cb55eb2d4" + x = "0x175d325f91f136d09f7b5b30ee6e82a8720dcd4fadd87e9828a989461ffe5828" + y = "0x161bf54b24e177c5cbb154fc01a12732e92c21c5a04985cea5374033ed510b4c" is_infinite = false [[app_public_inputs.key_validation_requests_and_generators]] @@ -5557,11 +5557,11 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" is_infinite = false [[app_public_inputs.note_hashes]] - value = "0x15093e182cef99591b9db717912042639c15338941fcda1d87df5673879971d2" + value = "0x250eff94c845907e4b441ec3e2ab9c7f96c90b19c35d98298903720596c8ae96" counter = "0x0000000000000000000000000000000000000000000000000000000000000007" [[app_public_inputs.note_hashes]] - value = "0x21a8d3393f0b81c6e945d92d5a3775f13942adc7b78c83a4604a8f2cfaaec0c7" + value = "0x080d7e517a580a3e7e87d11e50504e3931844836624eef2031f2c29d27fcec98" counter = "0x0000000000000000000000000000000000000000000000000000000000000009" [[app_public_inputs.note_hashes]] @@ -5621,7 +5621,7 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" counter = "0x0000000000000000000000000000000000000000000000000000000000000000" [[app_public_inputs.nullifiers]] - value = "0x0f8c58e1b4617b8d3427fae5fb9832bfc68151a52347e3b7c903c9c58e1a3724" + value = "0x08b671e5822c135c559a7b5a7ef58783ef97faed29ca80ac2d28bc1c77fbbbd2" counter = "0x0000000000000000000000000000000000000000000000000000000000000006" note_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -6079,24 +6079,24 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs.private_logs.log] fields = [ - "0x2543ccecf2d83aae203320e18b76316b6179f7458465dc3b7563bbaa1e1deee8", - "0x001a0fa40bcdee69578cf015937383c6ff8ef6b3e5d21ece9a1626e84abae04c", - "0x003f5dd5dfd78d988048ffa0c41949b8c49c87e5a5e2765542cfdf84e17879e7", - "0x00469e929f9f7f00780a54e5ac6a7fd297e36b00000000000000000000000000", - "0x0000001f105be03abf2b85d03792236f322e4f61eaac5f3b5d1477b079cd2f89", - "0x005ef02fe81b31b412b9b3c649592db6ca2727666fc9fdc3d2bb0eb2ba68fa47", - "0x009262e8479661802375eadbef41dd2dabf1d9ffbe6e75c258bc528fafce66ab", - "0x00849e211f5253ca2d089654dc60a53c882412bd1f38977a4160ae5ab6ada12a", - "0x0027384d885c233309f1f0ffa3788ef0ba205f07c7e1b362c7e84a5350cae3c9", - "0x00dffce587d1c7878d28dbd5bc803e46f0c2f5ddf064314e40a97406e1405149", - "0x0060ccb93d08e435e3d67a6bcb79258a78d82a1f382dbefb04555acdb5cfe890", - "0x00313df70316f5c9c1333955d1e2219d964a4589a258c8fbdd08da776cfe9588", - "0x007d159274ec2312b087aa8b481acbce3251100a81363b42880988b894ed8516", - "0x00c9119dcaf85d12b7a4cd178b407a1b9bc419190ba197a8bc3bfb54e1acdd06", - "0x00ae6d2bedf25325280771b89256d22e0874e53ca602f9500b1f07ce10d07206", - "0x00aab40449e7c8ac7b2bcac8c8f908936dbfd9ed30f10bd26630b5b4f4b47167", - "0x008be4aa8115a8b9295defa509513f0ee0201c8369d8506b7d37dbe399cdcc93", - "0x00020ebd95ce780a8bb8a0cb60418cc1c8131ece21a8f85b65996e0f4b10d292" + "0x2d79cc0637eb70f6c46f8680291f1401502fe4d39564606106584b776d308ecf", + "0x00961dca5785af4bf09cf75a77cdfcfa8fa41413b16bee86604c1826795edeec", + "0x00f7933d99a2ac43f613e021cc11c6200bdf7d703ba411bfda70998dbbe91d18", + "0x005c34531ec16f9cba02c2f74e5b68f53ec6bc00000000000000000000000000", + "0x000000343ccbf71927c63534206273c8611b72a04d4db62e0d1e7a1f358dbfe9", + "0x00bbb6167707e40e023148c03968226c73db4574f5991f9d06194dd1782e9d92", + "0x00c2cfe592e585e6319b54b39631393055f7ff2e2fab8ed76f5ca49bc3e7c83b", + "0x0036f9cd24f2727bc025371ca810245a9267c936e7edf92bd90a302d44b9a6ff", + "0x00dabe139092b735a4288ee4a9379e4afdfa51708650fe26e91e239fa23f9375", + "0x00eae9418604595e2d9a6ad7d46b2fc1967d2d7da56c4072a76bb3f709982f49", + "0x00989ffa26ac3a205dc0b99de3a6507411d11fdba8c61d3c81aabed1f119dd27", + "0x008ee4cadeaf75aa216d88a2a3aad40ba71c9ca39176a9ac78da77e47cab5caa", + "0x009927c6b18981dfcabf0a63dfd61d0491d8ee2c893844bb2ca602012783d756", + "0x00a18c50eb974c9146d791e09d883b3ad300430e1bac3f225b96041bcee15fce", + "0x00d527b9e3f664614bdf0f851d75ac6acaf59d4dbbe565a36424dee99bbf878d", + "0x00ae2f375a95ac5c40bf04f2c3f117c27132f413368d5d56edc746174594f8ca", + "0x004ff8ae2b0b2ae2b61a01a94b966654d26714edd486f5acacb2feb360f09059", + "0x00fb3c03d810569bdb758dbcb063020c6119ae59bd66308035a17f93ec1a8e98" ] [[app_public_inputs.private_logs]] @@ -6105,24 +6105,24 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs.private_logs.log] fields = [ - "0x2cc93252566e8f2f8184338520f05124f9022efeb5e64f4f4590d667daea57f2", - "0x002aafcb83d1e84af016c2ab94b88c270f4d9a4c21b0545d05cca3ee6eea80ec", - "0x00718a66dd96dcba7b9e3b594216857e48546b10bee7445c1ab25260ff49dbab", - "0x00513e25fa7230b29d0dd98df5ff9026de075e00000000000000000000000000", - "0x00000022a6b1a7312f502cacbc7283f841fa4a1b3433d7582b8ddc6fc33ec5f3", - "0x0026e319ab17f92fd707b5a065062f8d171a7d848b4061a081a89a5f6a28b42a", - "0x006a1b758aabe4d3354684fc273fd02f78ff7ae5df0f944b6e06b2893570707f", - "0x0079231903567ec6512e83dc82ad3b414711ea7b8536745400e324c690a39d8b", - "0x002916a90aa4eeb996924fbba2eaf66c3cc0165297e2f5fc995c1d96f90d6a81", - "0x00b3d1c747896e7dbd9dfcf4dc5cdcb235d7e4a78a59178d5649c196b15a2cfd", - "0x00be2860d2bd6cc8f75d543d8731421c739802538bcf0b0c82169077a5fe94ee", - "0x00f6b0816b4842e351e05627acbe29f549560dd77cfcfb14c27e67f42bd27778", - "0x00554ddd5ae0abe0567012f39b01f859cc1aefcfdd9a09eeddc409ea11b99e1c", - "0x007cb006b83342e616765a58225b6c70d708711743da039334151d7390b381c7", - "0x00d216a75ba110c043915834a68c1fb8d1b75b13146fbc61986ed3a81c40ddd2", - "0x0032c9d793cbfb98c57bef255a462723717e2839a500391a2445abed0ba64460", - "0x00606954ba497295624ea797a0d8482edcb4d56205286e44509293c9c3410863", - "0x0049cf4e699fd227bbd073624f7c701b68f5b5673564019fb31f17d822e8ed8e" + "0x08f720b2dc01d9f869376d21c019e00d91ba4a2df4c411b8351967bc22f30833", + "0x0082d4f053d20f9e5d0133a2279d7e5e1edcee80e8ae64e2b31759ea2c9d8357", + "0x00b4293fe37ff8a12620c49682fe04fc280a5808fc52884c40905c8a9fd12c22", + "0x00a08522ae6abbcca7fa0574ba7dc99f9f881c00000000000000000000000000", + "0x000000b32f2e9c3feb52a65be2321e91560925b83d0be9ea0c8e41c5e71c4df1", + "0x00fa5845ce219f1a7dd626caa3c96b536a79a3a65b1e184bda69fbc6eb61bdfc", + "0x0028181637f8949f88e4a53422f95c86122248723091b21e8f469fc86b3f7bf6", + "0x00c45756c940e72b7532073a35d77febff4f9d61a7f15706ba058f552c4c4dec", + "0x00ff7429d367c5fb82596c900dae746bd4988941db33121f03a8d01d92646560", + "0x004ca4b6be792d1c2167e998174d676e6462d0995063cd2d28bed4a7a0205ee0", + "0x0075c3cbed81825b7d47fe05ffa7446ee7b637ead0b04f1fb74e5d5d8f6a2b61", + "0x0036e4ebe9d34f8cf36254dc26d3b8c4829781d742edd48bd4babc79d4f8e019", + "0x001e85147052819f92807729600faf577839327b3c9d6ddada8869a19fdc2f7c", + "0x00062d400f543f81e1379c1e275b50e2bd025e4adc8111ae7ee30615c4733c58", + "0x0036d19ebc307f6a255369bb16287ec77fe0671c2dc6b3151ffa75e99a560d55", + "0x00250cf6a0581f297c606cde1b35e500648010bd4e9bda5b8a98a5824e0ee3bd", + "0x00b16603236f00e2f4263ecb587c0bb087fdcfa9075b3dde4501dff76177d091", + "0x0046729300d452d6dfe8200e1958ea4c78b2ddb8108a5c9b11fe2f61ca2c092b" ] [[app_public_inputs.private_logs]] @@ -6131,24 +6131,24 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs.private_logs.log] fields = [ - "0x1ec8061ee9bac120f5637c806fb00b3baac88c71f8eabe46139d3bf0ca0c1eda", - "0x0029d897328b887f4b538e9d609dfafcaa1d4b3f94af81f0c0666a9a01e8466f", - "0x002c67ac718c79d8730495dd9dea21f326ea25903e4e65d6b4ff12c5ad4b9659", - "0x006c581391ed204ae98fe8cad448cb15954e1100000000000000000000000000", - "0x000000fb819100d346b6e3f4cea32eee139e1fd7b7204a92758991d673d4162f", - "0x00e1538944e75ab37cd348dede503511cf4d5a9d8ae4af10d80d10400510bd0c", - "0x0084c7cfac1cd0f17231ab15294df527e357d5a2d183bac0750c3d1874da4ada", - "0x0067c634925211024bb4246bea276a386b6f0ccf1a5642b3139c19b827283035", - "0x005478b719543d42442231d7353695d8bd6e6cea7f5a68b02343d2ccb3560ce7", - "0x009d6e5e027b8ec1e9b29423e830737f3a1020503834443c5c59e0c63073d1cb", - "0x0036181af1df1dd9bca9a15dd5bd0add4a6b0a537430977ac557a12f16f718a6", - "0x00b92f0437dd50f4b1135d31a55c72d703d5dd7c9b6ce4876f75bc840b66c957", - "0x00f45cc7e6c5e5599a87de5437681e1133f3802658f75b298467f09a8c488a7c", - "0x00d85eb4475056e2fecf0e15206743551948520b68f41786d1139e9f5231bb95", - "0x001256ae52c246ce78f1f77de995da34c5bb9a882b50014c4f8dc2100c6c90bb", - "0x00179d3cbf835a4f715688ea589954377e2ec2fb83d9e283f60c6d141a34a3fd", - "0x000a12a5c201254c07ff77c2c02d43807872c6d60daceb9cd4223af0c6cc16df", - "0x00e1a8910d19556fac0262e7d1a3c6e75f8fef83fa5df962fdf6ce391b00d82b" + "0x2d24207cbf1dc0a827042e09794dba8765971047eb2f6890b2ba4c398ba95b1f", + "0x002fe17d85df96d8b9bc15c91d0d62b0173174cda5d991cd73e9b9da65e2956b", + "0x00da7b08beac5d98c229d91728587646f72777453b785d0624e59f0a8075661d", + "0x0089323120a21d889aee547c21faa1c03a1ead00000000000000000000000000", + "0x0000001a851e3ed1265dde6b01175571a83d0777b0c17791db74cd2b33589139", + "0x00d1f4a53e67b2221c1ce7bd6d5dc105b0b3a086dcabd173b2b874f6f13fa338", + "0x002ccc3ee9f522a252f7523703c162fb8807c24eb052d2871609e249c67bd5bb", + "0x006e1fd58f3479bb18d1abd812bef996dfc0a36d72d1472a930e77805f243952", + "0x007043fae6b109a981b1e34acf7281480b879f280fd607fa1df718c9a31acaf2", + "0x008c4f91880f265b065cea8a705bc508875182fe5a3837e2b5b8a14e231cbd59", + "0x0071c17f4d52aecdfb4d8c6b1e764ae137c836c0672bf3cc589a45878f2686a8", + "0x00c95d01a6e57b41af4f265b2c88f6ff3de54aa5c895ca6faa21e26a8d6134a5", + "0x00a54c12af2499afd7651644686c671c3d77ff4af32a6b181646c976329a0063", + "0x004567a7724f750c4b0c9c205f35f4a175ea93015792fc78fbd985e7c751cc1b", + "0x001b0870e32b1c3c28116435e5132496bdeb8a1d3b9acc62b7d57d82f230bdaf", + "0x0058272cd1119bc153b18b3a3c896138be6f5b9144f216cd6e6f1b5db7d8ef08", + "0x00c1c848fc01d649f264a3cf8ba8cade698e2c1dbd14f7a0077356f8381de748", + "0x00328549fac9e2e1ff6fc6aaef17fbb1fd5c973e01df61985fe056548fd4b5df" ] [[app_public_inputs.private_logs]] @@ -6495,51 +6495,51 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" length = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs.historical_header] - total_fees = "0x00000000000000000000000000000000000000000000000000117815f5ec0920" - total_mana_used = "0x00000000000000000000000000000000000000000000000000000000000162af" + total_fees = "0x0000000000000000000000000000000000000000000000000011b417896f129a" + total_mana_used = "0x0000000000000000000000000000000000000000000000000000000000016771" [app_public_inputs.historical_header.last_archive] - root = "0x01efdcbcbea2494f71ea74a5d0d0ba5455129c180cec155418ee104e6d22b2fc" - next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000b" + root = "0x0781b1cc32dbe21aba1e27519e765bd44222b52ef464c6b63dfa97b399376c2e" + next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000009" [app_public_inputs.historical_header.content_commitment] num_txs = "0x0000000000000000000000000000000000000000000000000000000000000002" - txs_effects_hash = "0x0083d384a3cfda20bd82135bd2425bf2ebe42d7804a3af17326471003ba9a878" + blobs_hash = "0x0008822f60476d6dc34ec6109d3ad69dd1747a9484777021d8e717166bc7d5e6" in_hash = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" out_hash = "0x00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb" [app_public_inputs.historical_header.state.l1_to_l2_message_tree] root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" -next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000000b0" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000090" [app_public_inputs.historical_header.state.partial.note_hash_tree] -root = "0x2580c4cf35070b1a6513d8356c751ba43b73343ea9bbd82ec54b7c280c60ebb0" -next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000005c0" +root = "0x266514a4f987058cb2deb71c37e845df4f7f85ab2a23f208dd98cf7eeeb7cbc4" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000480" [app_public_inputs.historical_header.state.partial.nullifier_tree] -root = "0x2a4f5b262c0ffc9abafb84971d0ab3756cf2b1ff7e43e8c5d4b2efdc6e38681c" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000640" +root = "0x0a639c242b766d8bd94d437483546e33c4a8c27feadf50bc4ef523e9f191e927" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000500" [app_public_inputs.historical_header.state.partial.public_data_tree] -root = "0x00e2f085ab9775583a0dadea698c9177e9c5772190570bab385df4863c3e461a" +root = "0x2528ba08e1171e992f4744a8d8761bbe5611447c52d673882bde6a9e3b716e1a" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000097" [app_public_inputs.historical_header.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" version = "0x0000000000000000000000000000000000000000000000000000000000000001" - block_number = "0x000000000000000000000000000000000000000000000000000000000000000b" - slot_number = "0x0000000000000000000000000000000000000000000000000000000000000025" - timestamp = "0x00000000000000000000000000000000000000000000000000000000675b06ca" + block_number = "0x0000000000000000000000000000000000000000000000000000000000000009" + slot_number = "0x0000000000000000000000000000000000000000000000000000000000000016" + timestamp = "0x00000000000000000000000000000000000000000000000000000000675c2eae" [app_public_inputs.historical_header.global_variables.coinbase] - inner = "0x000000000000000000000000dde7ef1ed87eb5cbb0562efd27c3ad9eda8c800a" + inner = "0x000000000000000000000000ed846b6f217c7084a6c108eda50abce8c8367eac" [app_public_inputs.historical_header.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [app_public_inputs.historical_header.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd150e0" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd4533a" [app_public_inputs.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" @@ -6555,4 +6555,4 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" [app_public_inputs.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd150e0" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd4533a" diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-reset/Prover.toml b/noir-projects/noir-protocol-circuits/crates/private-kernel-reset/Prover.toml index 34c5b661982..014404d3e37 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-reset/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-reset/Prover.toml @@ -3,9 +3,9 @@ vk_index = "0x0000000000000000000000000000000000000000000000000000000000000003" vk_path = [ "0x0adf52c61cdf9eff768b463c554a67f3cac73b0c1cea2d3fcee90db3d7fccc20", "0x2788666fcc1fce27d0ac10e13716483d548ddc3411f466e5caef85cea2384902", - "0x01021495b9b3e13629698f9f4526c60f75c6df62ad99f413fea6425cc524b699", - "0x1aec8b738adc9fc707aad5d7cdc734041ed9049eff616fb22619b58c50ea26e1", - "0x022f5ac8ff86489f5492d016d0ac69cd39e93b518da3f5a15a8c3177b92bc008", + "0x281a8c9b2c044cffa01e5f56858d1d71aa11c4b28a1e90407565ca646ea0ee5d", + "0x25e71fd64ecaa6b98ef492c6d93da8164a259284041220c258edb94fe47706ab", + "0x1967335d7b185023afd52d8f7f40be4ced0d80ba63d4dce2de3e26bfe772e394", "0x122cddd247164987e2287f8ce124bea7a68052e85bffebe2fc6cd71718689069" ] @@ -162,55 +162,55 @@ min_revertible_side_effect_counter = "0x0000000000000000000000000000000000000000 is_private_only = true [previous_kernel_public_inputs.constants] - vk_tree_root = "0x0a118eae659eb1671e3f579a83c4ad3688cee1b9f23dcec48af4d3f3a2de1733" - protocol_contract_tree_root = "0x296690a67333fb896eff0ef812d31f9be26161726e47057bb688ddcf08164453" + vk_tree_root = "0x0bee8f04d48c18c88f2b9dd3b87daba3b3c8d000f44d290587504ae770942c56" + protocol_contract_tree_root = "0x1c4e64cbb91a46bc2fd73590e1dacd3ddf84d1b5e7a7182795ab02fe80399caf" [previous_kernel_public_inputs.constants.historical_header] - total_fees = "0x00000000000000000000000000000000000000000000000000117815f5ec0920" - total_mana_used = "0x00000000000000000000000000000000000000000000000000000000000162af" + total_fees = "0x0000000000000000000000000000000000000000000000000011b417896f129a" + total_mana_used = "0x0000000000000000000000000000000000000000000000000000000000016771" [previous_kernel_public_inputs.constants.historical_header.last_archive] - root = "0x01efdcbcbea2494f71ea74a5d0d0ba5455129c180cec155418ee104e6d22b2fc" - next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000b" + root = "0x0781b1cc32dbe21aba1e27519e765bd44222b52ef464c6b63dfa97b399376c2e" + next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000009" [previous_kernel_public_inputs.constants.historical_header.content_commitment] num_txs = "0x0000000000000000000000000000000000000000000000000000000000000002" - txs_effects_hash = "0x0083d384a3cfda20bd82135bd2425bf2ebe42d7804a3af17326471003ba9a878" + blobs_hash = "0x0008822f60476d6dc34ec6109d3ad69dd1747a9484777021d8e717166bc7d5e6" in_hash = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" out_hash = "0x00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb" [previous_kernel_public_inputs.constants.historical_header.state.l1_to_l2_message_tree] root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" -next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000000b0" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000090" [previous_kernel_public_inputs.constants.historical_header.state.partial.note_hash_tree] -root = "0x2580c4cf35070b1a6513d8356c751ba43b73343ea9bbd82ec54b7c280c60ebb0" -next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000005c0" +root = "0x266514a4f987058cb2deb71c37e845df4f7f85ab2a23f208dd98cf7eeeb7cbc4" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000480" [previous_kernel_public_inputs.constants.historical_header.state.partial.nullifier_tree] -root = "0x2a4f5b262c0ffc9abafb84971d0ab3756cf2b1ff7e43e8c5d4b2efdc6e38681c" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000640" +root = "0x0a639c242b766d8bd94d437483546e33c4a8c27feadf50bc4ef523e9f191e927" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000500" [previous_kernel_public_inputs.constants.historical_header.state.partial.public_data_tree] -root = "0x00e2f085ab9775583a0dadea698c9177e9c5772190570bab385df4863c3e461a" +root = "0x2528ba08e1171e992f4744a8d8761bbe5611447c52d673882bde6a9e3b716e1a" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000097" [previous_kernel_public_inputs.constants.historical_header.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" version = "0x0000000000000000000000000000000000000000000000000000000000000001" - block_number = "0x000000000000000000000000000000000000000000000000000000000000000b" - slot_number = "0x0000000000000000000000000000000000000000000000000000000000000025" - timestamp = "0x00000000000000000000000000000000000000000000000000000000675b06ca" + block_number = "0x0000000000000000000000000000000000000000000000000000000000000009" + slot_number = "0x0000000000000000000000000000000000000000000000000000000000000016" + timestamp = "0x00000000000000000000000000000000000000000000000000000000675c2eae" [previous_kernel_public_inputs.constants.historical_header.global_variables.coinbase] - inner = "0x000000000000000000000000dde7ef1ed87eb5cbb0562efd27c3ad9eda8c800a" + inner = "0x000000000000000000000000ed846b6f217c7084a6c108eda50abce8c8367eac" [previous_kernel_public_inputs.constants.historical_header.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [previous_kernel_public_inputs.constants.historical_header.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd150e0" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd4533a" [previous_kernel_public_inputs.constants.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" @@ -226,7 +226,7 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" [previous_kernel_public_inputs.constants.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd150e0" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd4533a" [previous_kernel_public_inputs.validation_requests.for_rollup.max_block_number._opt] _is_some = false @@ -234,19 +234,19 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" [[previous_kernel_public_inputs.validation_requests.note_hash_read_requests]] [previous_kernel_public_inputs.validation_requests.note_hash_read_requests.read_request] -value = "0x192fc794d248ee77e9479e369945d717953f97b44be988ed3494a9bbf7b8b906" +value = "0x1808fa11f6b6ffdbd9f9e94a8f4c91aa954111d43f44544ed0ffbbf73ccf9a63" counter = "0x0000000000000000000000000000000000000000000000000000000000000002" [previous_kernel_public_inputs.validation_requests.note_hash_read_requests.contract_address] -inner = "0x111914eadfa81022a42e019b6cf3df64d98685d3c137a16079d0742132432bb0" +inner = "0x30021904ae3832fa38613650b957c74abcc7ae86fda9e53bcd89e7b638cf9d67" [[previous_kernel_public_inputs.validation_requests.note_hash_read_requests]] [previous_kernel_public_inputs.validation_requests.note_hash_read_requests.read_request] -value = "0x13bf5f8917e8394c499937b25f6aeb9f2cf8b30cf2e93fc49d8a3ac9bb7f36eb" +value = "0x1eeef2e1c70a7794a3586b4cf25058ac1b892b7d874294bf7dc5d1282591e04b" counter = "0x0000000000000000000000000000000000000000000000000000000000000005" [previous_kernel_public_inputs.validation_requests.note_hash_read_requests.contract_address] -inner = "0x0a6785e6919ab0ba6d52a2f5a21ec7b12547d20086cba00612fdfca447797845" +inner = "0x1b5c85f852759a87b99af1b7a52bf7b9a1bda23e2792ad5384113b9c17cc4c50" [[previous_kernel_public_inputs.validation_requests.note_hash_read_requests]] [previous_kernel_public_inputs.validation_requests.note_hash_read_requests.read_request] @@ -746,11 +746,11 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[previous_kernel_public_inputs.validation_requests.nullifier_read_requests]] [previous_kernel_public_inputs.validation_requests.nullifier_read_requests.read_request] -value = "0x0a6785e6919ab0ba6d52a2f5a21ec7b12547d20086cba00612fdfca447797845" +value = "0x1b5c85f852759a87b99af1b7a52bf7b9a1bda23e2792ad5384113b9c17cc4c50" counter = "0x0000000000000000000000000000000000000000000000000000000000000004" [previous_kernel_public_inputs.validation_requests.nullifier_read_requests.contract_address] -inner = "0x0a6785e6919ab0ba6d52a2f5a21ec7b12547d20086cba00612fdfca447797845" +inner = "0x1b5c85f852759a87b99af1b7a52bf7b9a1bda23e2792ad5384113b9c17cc4c50" [[previous_kernel_public_inputs.validation_requests.nullifier_read_requests]] [previous_kernel_public_inputs.validation_requests.nullifier_read_requests.read_request] @@ -1261,15 +1261,15 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" sk_app_generator = "0x0000000000000000000000000000000000000000000000000000000000000030" [previous_kernel_public_inputs.validation_requests.scoped_key_validation_requests_and_generators.request.request] - sk_app = "0x0750fae9de038323dff7db701e7e1516f1fecf1b35322fe7b423308ca34aacd9" + sk_app = "0x0d6dd1f75adac84b209ad26497e2f6796dc1d1a99a694303a18319a2d475df33" [previous_kernel_public_inputs.validation_requests.scoped_key_validation_requests_and_generators.request.request.pk_m] - x = "0x139be90137cc3dcf55a5ba270c494c7500a284c99fd14111e6f1d59496465c9c" - y = "0x2c34bad1dd8d7916951548bb529b7163ba5ec59aae7913ecc4773d7cb55eb2d4" + x = "0x175d325f91f136d09f7b5b30ee6e82a8720dcd4fadd87e9828a989461ffe5828" + y = "0x161bf54b24e177c5cbb154fc01a12732e92c21c5a04985cea5374033ed510b4c" is_infinite = false [previous_kernel_public_inputs.validation_requests.scoped_key_validation_requests_and_generators.contract_address] -inner = "0x0a6785e6919ab0ba6d52a2f5a21ec7b12547d20086cba00612fdfca447797845" +inner = "0x1b5c85f852759a87b99af1b7a52bf7b9a1bda23e2792ad5384113b9c17cc4c50" [[previous_kernel_public_inputs.validation_requests.scoped_key_validation_requests_and_generators]] [previous_kernel_public_inputs.validation_requests.scoped_key_validation_requests_and_generators.request] @@ -2222,19 +2222,19 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" [[previous_kernel_public_inputs.end.note_hashes]] [previous_kernel_public_inputs.end.note_hashes.note_hash] -value = "0x15093e182cef99591b9db717912042639c15338941fcda1d87df5673879971d2" +value = "0x250eff94c845907e4b441ec3e2ab9c7f96c90b19c35d98298903720596c8ae96" counter = "0x0000000000000000000000000000000000000000000000000000000000000007" [previous_kernel_public_inputs.end.note_hashes.contract_address] -inner = "0x0a6785e6919ab0ba6d52a2f5a21ec7b12547d20086cba00612fdfca447797845" +inner = "0x1b5c85f852759a87b99af1b7a52bf7b9a1bda23e2792ad5384113b9c17cc4c50" [[previous_kernel_public_inputs.end.note_hashes]] [previous_kernel_public_inputs.end.note_hashes.note_hash] -value = "0x21a8d3393f0b81c6e945d92d5a3775f13942adc7b78c83a4604a8f2cfaaec0c7" +value = "0x080d7e517a580a3e7e87d11e50504e3931844836624eef2031f2c29d27fcec98" counter = "0x0000000000000000000000000000000000000000000000000000000000000009" [previous_kernel_public_inputs.end.note_hashes.contract_address] -inner = "0x0a6785e6919ab0ba6d52a2f5a21ec7b12547d20086cba00612fdfca447797845" +inner = "0x1b5c85f852759a87b99af1b7a52bf7b9a1bda23e2792ad5384113b9c17cc4c50" [[previous_kernel_public_inputs.end.note_hashes]] [previous_kernel_public_inputs.end.note_hashes.note_hash] @@ -2734,7 +2734,7 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[previous_kernel_public_inputs.end.nullifiers]] [previous_kernel_public_inputs.end.nullifiers.nullifier] -value = "0x0235cd043fa116c53c12b1eafae4cc2961bef31b23b1e619c7314915a34a08ce" +value = "0x1e4c23d7a900532cdb5687c5806be8da481285afb0abbbe8a3801d71451d08d8" counter = "0x0000000000000000000000000000000000000000000000000000000000000000" note_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -2743,12 +2743,12 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[previous_kernel_public_inputs.end.nullifiers]] [previous_kernel_public_inputs.end.nullifiers.nullifier] -value = "0x0f8c58e1b4617b8d3427fae5fb9832bfc68151a52347e3b7c903c9c58e1a3724" +value = "0x08b671e5822c135c559a7b5a7ef58783ef97faed29ca80ac2d28bc1c77fbbbd2" counter = "0x0000000000000000000000000000000000000000000000000000000000000006" note_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" [previous_kernel_public_inputs.end.nullifiers.contract_address] -inner = "0x0a6785e6919ab0ba6d52a2f5a21ec7b12547d20086cba00612fdfca447797845" +inner = "0x1b5c85f852759a87b99af1b7a52bf7b9a1bda23e2792ad5384113b9c17cc4c50" [[previous_kernel_public_inputs.end.nullifiers]] [previous_kernel_public_inputs.end.nullifiers.nullifier] @@ -3403,28 +3403,28 @@ counter = "0x0000000000000000000000000000000000000000000000000000000000000008" [previous_kernel_public_inputs.end.private_logs.inner.log] fields = [ - "0x2543ccecf2d83aae203320e18b76316b6179f7458465dc3b7563bbaa1e1deee8", - "0x001a0fa40bcdee69578cf015937383c6ff8ef6b3e5d21ece9a1626e84abae04c", - "0x003f5dd5dfd78d988048ffa0c41949b8c49c87e5a5e2765542cfdf84e17879e7", - "0x00469e929f9f7f00780a54e5ac6a7fd297e36b00000000000000000000000000", - "0x0000001f105be03abf2b85d03792236f322e4f61eaac5f3b5d1477b079cd2f89", - "0x005ef02fe81b31b412b9b3c649592db6ca2727666fc9fdc3d2bb0eb2ba68fa47", - "0x009262e8479661802375eadbef41dd2dabf1d9ffbe6e75c258bc528fafce66ab", - "0x00849e211f5253ca2d089654dc60a53c882412bd1f38977a4160ae5ab6ada12a", - "0x0027384d885c233309f1f0ffa3788ef0ba205f07c7e1b362c7e84a5350cae3c9", - "0x00dffce587d1c7878d28dbd5bc803e46f0c2f5ddf064314e40a97406e1405149", - "0x0060ccb93d08e435e3d67a6bcb79258a78d82a1f382dbefb04555acdb5cfe890", - "0x00313df70316f5c9c1333955d1e2219d964a4589a258c8fbdd08da776cfe9588", - "0x007d159274ec2312b087aa8b481acbce3251100a81363b42880988b894ed8516", - "0x00c9119dcaf85d12b7a4cd178b407a1b9bc419190ba197a8bc3bfb54e1acdd06", - "0x00ae6d2bedf25325280771b89256d22e0874e53ca602f9500b1f07ce10d07206", - "0x00aab40449e7c8ac7b2bcac8c8f908936dbfd9ed30f10bd26630b5b4f4b47167", - "0x008be4aa8115a8b9295defa509513f0ee0201c8369d8506b7d37dbe399cdcc93", - "0x00020ebd95ce780a8bb8a0cb60418cc1c8131ece21a8f85b65996e0f4b10d292" + "0x2d79cc0637eb70f6c46f8680291f1401502fe4d39564606106584b776d308ecf", + "0x00961dca5785af4bf09cf75a77cdfcfa8fa41413b16bee86604c1826795edeec", + "0x00f7933d99a2ac43f613e021cc11c6200bdf7d703ba411bfda70998dbbe91d18", + "0x005c34531ec16f9cba02c2f74e5b68f53ec6bc00000000000000000000000000", + "0x000000343ccbf71927c63534206273c8611b72a04d4db62e0d1e7a1f358dbfe9", + "0x00bbb6167707e40e023148c03968226c73db4574f5991f9d06194dd1782e9d92", + "0x00c2cfe592e585e6319b54b39631393055f7ff2e2fab8ed76f5ca49bc3e7c83b", + "0x0036f9cd24f2727bc025371ca810245a9267c936e7edf92bd90a302d44b9a6ff", + "0x00dabe139092b735a4288ee4a9379e4afdfa51708650fe26e91e239fa23f9375", + "0x00eae9418604595e2d9a6ad7d46b2fc1967d2d7da56c4072a76bb3f709982f49", + "0x00989ffa26ac3a205dc0b99de3a6507411d11fdba8c61d3c81aabed1f119dd27", + "0x008ee4cadeaf75aa216d88a2a3aad40ba71c9ca39176a9ac78da77e47cab5caa", + "0x009927c6b18981dfcabf0a63dfd61d0491d8ee2c893844bb2ca602012783d756", + "0x00a18c50eb974c9146d791e09d883b3ad300430e1bac3f225b96041bcee15fce", + "0x00d527b9e3f664614bdf0f851d75ac6acaf59d4dbbe565a36424dee99bbf878d", + "0x00ae2f375a95ac5c40bf04f2c3f117c27132f413368d5d56edc746174594f8ca", + "0x004ff8ae2b0b2ae2b61a01a94b966654d26714edd486f5acacb2feb360f09059", + "0x00fb3c03d810569bdb758dbcb063020c6119ae59bd66308035a17f93ec1a8e98" ] [previous_kernel_public_inputs.end.private_logs.contract_address] -inner = "0x0a6785e6919ab0ba6d52a2f5a21ec7b12547d20086cba00612fdfca447797845" +inner = "0x1b5c85f852759a87b99af1b7a52bf7b9a1bda23e2792ad5384113b9c17cc4c50" [[previous_kernel_public_inputs.end.private_logs]] [previous_kernel_public_inputs.end.private_logs.inner] @@ -3433,28 +3433,28 @@ counter = "0x000000000000000000000000000000000000000000000000000000000000000a" [previous_kernel_public_inputs.end.private_logs.inner.log] fields = [ - "0x2cc93252566e8f2f8184338520f05124f9022efeb5e64f4f4590d667daea57f2", - "0x002aafcb83d1e84af016c2ab94b88c270f4d9a4c21b0545d05cca3ee6eea80ec", - "0x00718a66dd96dcba7b9e3b594216857e48546b10bee7445c1ab25260ff49dbab", - "0x00513e25fa7230b29d0dd98df5ff9026de075e00000000000000000000000000", - "0x00000022a6b1a7312f502cacbc7283f841fa4a1b3433d7582b8ddc6fc33ec5f3", - "0x0026e319ab17f92fd707b5a065062f8d171a7d848b4061a081a89a5f6a28b42a", - "0x006a1b758aabe4d3354684fc273fd02f78ff7ae5df0f944b6e06b2893570707f", - "0x0079231903567ec6512e83dc82ad3b414711ea7b8536745400e324c690a39d8b", - "0x002916a90aa4eeb996924fbba2eaf66c3cc0165297e2f5fc995c1d96f90d6a81", - "0x00b3d1c747896e7dbd9dfcf4dc5cdcb235d7e4a78a59178d5649c196b15a2cfd", - "0x00be2860d2bd6cc8f75d543d8731421c739802538bcf0b0c82169077a5fe94ee", - "0x00f6b0816b4842e351e05627acbe29f549560dd77cfcfb14c27e67f42bd27778", - "0x00554ddd5ae0abe0567012f39b01f859cc1aefcfdd9a09eeddc409ea11b99e1c", - "0x007cb006b83342e616765a58225b6c70d708711743da039334151d7390b381c7", - "0x00d216a75ba110c043915834a68c1fb8d1b75b13146fbc61986ed3a81c40ddd2", - "0x0032c9d793cbfb98c57bef255a462723717e2839a500391a2445abed0ba64460", - "0x00606954ba497295624ea797a0d8482edcb4d56205286e44509293c9c3410863", - "0x0049cf4e699fd227bbd073624f7c701b68f5b5673564019fb31f17d822e8ed8e" + "0x08f720b2dc01d9f869376d21c019e00d91ba4a2df4c411b8351967bc22f30833", + "0x0082d4f053d20f9e5d0133a2279d7e5e1edcee80e8ae64e2b31759ea2c9d8357", + "0x00b4293fe37ff8a12620c49682fe04fc280a5808fc52884c40905c8a9fd12c22", + "0x00a08522ae6abbcca7fa0574ba7dc99f9f881c00000000000000000000000000", + "0x000000b32f2e9c3feb52a65be2321e91560925b83d0be9ea0c8e41c5e71c4df1", + "0x00fa5845ce219f1a7dd626caa3c96b536a79a3a65b1e184bda69fbc6eb61bdfc", + "0x0028181637f8949f88e4a53422f95c86122248723091b21e8f469fc86b3f7bf6", + "0x00c45756c940e72b7532073a35d77febff4f9d61a7f15706ba058f552c4c4dec", + "0x00ff7429d367c5fb82596c900dae746bd4988941db33121f03a8d01d92646560", + "0x004ca4b6be792d1c2167e998174d676e6462d0995063cd2d28bed4a7a0205ee0", + "0x0075c3cbed81825b7d47fe05ffa7446ee7b637ead0b04f1fb74e5d5d8f6a2b61", + "0x0036e4ebe9d34f8cf36254dc26d3b8c4829781d742edd48bd4babc79d4f8e019", + "0x001e85147052819f92807729600faf577839327b3c9d6ddada8869a19fdc2f7c", + "0x00062d400f543f81e1379c1e275b50e2bd025e4adc8111ae7ee30615c4733c58", + "0x0036d19ebc307f6a255369bb16287ec77fe0671c2dc6b3151ffa75e99a560d55", + "0x00250cf6a0581f297c606cde1b35e500648010bd4e9bda5b8a98a5824e0ee3bd", + "0x00b16603236f00e2f4263ecb587c0bb087fdcfa9075b3dde4501dff76177d091", + "0x0046729300d452d6dfe8200e1958ea4c78b2ddb8108a5c9b11fe2f61ca2c092b" ] [previous_kernel_public_inputs.end.private_logs.contract_address] -inner = "0x0a6785e6919ab0ba6d52a2f5a21ec7b12547d20086cba00612fdfca447797845" +inner = "0x1b5c85f852759a87b99af1b7a52bf7b9a1bda23e2792ad5384113b9c17cc4c50" [[previous_kernel_public_inputs.end.private_logs]] [previous_kernel_public_inputs.end.private_logs.inner] @@ -3463,28 +3463,28 @@ counter = "0x000000000000000000000000000000000000000000000000000000000000000b" [previous_kernel_public_inputs.end.private_logs.inner.log] fields = [ - "0x1ec8061ee9bac120f5637c806fb00b3baac88c71f8eabe46139d3bf0ca0c1eda", - "0x0029d897328b887f4b538e9d609dfafcaa1d4b3f94af81f0c0666a9a01e8466f", - "0x002c67ac718c79d8730495dd9dea21f326ea25903e4e65d6b4ff12c5ad4b9659", - "0x006c581391ed204ae98fe8cad448cb15954e1100000000000000000000000000", - "0x000000fb819100d346b6e3f4cea32eee139e1fd7b7204a92758991d673d4162f", - "0x00e1538944e75ab37cd348dede503511cf4d5a9d8ae4af10d80d10400510bd0c", - "0x0084c7cfac1cd0f17231ab15294df527e357d5a2d183bac0750c3d1874da4ada", - "0x0067c634925211024bb4246bea276a386b6f0ccf1a5642b3139c19b827283035", - "0x005478b719543d42442231d7353695d8bd6e6cea7f5a68b02343d2ccb3560ce7", - "0x009d6e5e027b8ec1e9b29423e830737f3a1020503834443c5c59e0c63073d1cb", - "0x0036181af1df1dd9bca9a15dd5bd0add4a6b0a537430977ac557a12f16f718a6", - "0x00b92f0437dd50f4b1135d31a55c72d703d5dd7c9b6ce4876f75bc840b66c957", - "0x00f45cc7e6c5e5599a87de5437681e1133f3802658f75b298467f09a8c488a7c", - "0x00d85eb4475056e2fecf0e15206743551948520b68f41786d1139e9f5231bb95", - "0x001256ae52c246ce78f1f77de995da34c5bb9a882b50014c4f8dc2100c6c90bb", - "0x00179d3cbf835a4f715688ea589954377e2ec2fb83d9e283f60c6d141a34a3fd", - "0x000a12a5c201254c07ff77c2c02d43807872c6d60daceb9cd4223af0c6cc16df", - "0x00e1a8910d19556fac0262e7d1a3c6e75f8fef83fa5df962fdf6ce391b00d82b" + "0x2d24207cbf1dc0a827042e09794dba8765971047eb2f6890b2ba4c398ba95b1f", + "0x002fe17d85df96d8b9bc15c91d0d62b0173174cda5d991cd73e9b9da65e2956b", + "0x00da7b08beac5d98c229d91728587646f72777453b785d0624e59f0a8075661d", + "0x0089323120a21d889aee547c21faa1c03a1ead00000000000000000000000000", + "0x0000001a851e3ed1265dde6b01175571a83d0777b0c17791db74cd2b33589139", + "0x00d1f4a53e67b2221c1ce7bd6d5dc105b0b3a086dcabd173b2b874f6f13fa338", + "0x002ccc3ee9f522a252f7523703c162fb8807c24eb052d2871609e249c67bd5bb", + "0x006e1fd58f3479bb18d1abd812bef996dfc0a36d72d1472a930e77805f243952", + "0x007043fae6b109a981b1e34acf7281480b879f280fd607fa1df718c9a31acaf2", + "0x008c4f91880f265b065cea8a705bc508875182fe5a3837e2b5b8a14e231cbd59", + "0x0071c17f4d52aecdfb4d8c6b1e764ae137c836c0672bf3cc589a45878f2686a8", + "0x00c95d01a6e57b41af4f265b2c88f6ff3de54aa5c895ca6faa21e26a8d6134a5", + "0x00a54c12af2499afd7651644686c671c3d77ff4af32a6b181646c976329a0063", + "0x004567a7724f750c4b0c9c205f35f4a175ea93015792fc78fbd985e7c751cc1b", + "0x001b0870e32b1c3c28116435e5132496bdeb8a1d3b9acc62b7d57d82f230bdaf", + "0x0058272cd1119bc153b18b3a3c896138be6f5b9144f216cd6e6f1b5db7d8ef08", + "0x00c1c848fc01d649f264a3cf8ba8cade698e2c1dbd14f7a0077356f8381de748", + "0x00328549fac9e2e1ff6fc6aaef17fbb1fd5c973e01df61985fe056548fd4b5df" ] [previous_kernel_public_inputs.end.private_logs.contract_address] -inner = "0x0a6785e6919ab0ba6d52a2f5a21ec7b12547d20086cba00612fdfca447797845" +inner = "0x1b5c85f852759a87b99af1b7a52bf7b9a1bda23e2792ad5384113b9c17cc4c50" [[previous_kernel_public_inputs.end.private_logs]] [previous_kernel_public_inputs.end.private_logs.inner] @@ -5564,11 +5564,11 @@ read_request_index = "0x00000000000000000000000000000000000000000000000000000000 "0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20", "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e", "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", - "0x1c0252d79e1282d96e4b94ae84905df82d989e9daea7e155ba9e4db8082d3783", + "0x18674fb10d20d823d1f6662ba72e75b0aec3c96597a26926faff64809b606464", "0x2d78ed82f93b61ba718b17c2dfe5b52375b4d37cbbed6f1fc98b47614b0cf21b", "0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1", - "0x1d229ae02cd306981d04c99d2acf7a02b95b3f588509ed2fe370ba367d9b5c69", - "0x209d858b2cf8e8af5cd599e7a082ee6933cf8c26247f26f9d6b7a364727444ed", + "0x1352219a7f38a59a1ced55b5de4127dc73ae6e324e82a430ef1e8d49dd0678f9", + "0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686", "0x0f320b0703439a8114f81593de99cd0b8f3b9bf854601abb5b2ea0e8a3dda4a7", "0x0d07f6e7a8a0e9199d6d92801fff867002ff5b4808962f9da2ba5ce1bdd26a73", "0x1c4954081e324939350febc2b918a293ebcdaead01be95ec02fcbe8d2c1635d1", @@ -5601,15 +5601,15 @@ read_request_index = "0x00000000000000000000000000000000000000000000000000000000 ] [hints.note_hash_read_request_hints.settled_read_hints.leaf_preimage] - value = "0x192fc794d248ee77e9479e369945d717953f97b44be988ed3494a9bbf7b8b906" + value = "0x1808fa11f6b6ffdbd9f9e94a8f4c91aa954111d43f44544ed0ffbbf73ccf9a63" [[hints.note_hash_read_request_hints.settled_read_hints]] read_request_index = "0x0000000000000000000000000000000000000000000000000000000000000001" [hints.note_hash_read_request_hints.settled_read_hints.membership_witness] - leaf_index = "1280" + leaf_index = "768" sibling_path = [ - "0x0592f2b0e3b349c816c7ef460654a75f5f2f14a091cc8cf4f254251f73a65ce6", + "0x020fcd2bb8110357719fd398580862c643fe2c0bccfef7c2c43d27d72aabc12f", "0x0b63a53787021a4a962a452c2921b3663aff1ffd8d5510540f8e659e782956f1", "0x0e34ac2c09f45a503d2908bcb12f1cbae5fa4065759c88d501c097506a8b2290", "0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20", @@ -5617,9 +5617,9 @@ read_request_index = "0x00000000000000000000000000000000000000000000000000000000 "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", "0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76", "0x2d78ed82f93b61ba718b17c2dfe5b52375b4d37cbbed6f1fc98b47614b0cf21b", - "0x0edd883e5ef33a282866c8e2e4ab845b8f990b4dbe778dd036214ce8c3f7272d", - "0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972", - "0x28995beea466e773a0e4e61d4711d19f9e05d5f637965492495358d21779f6c9", + "0x246218a1d11c91124c20e3394600ad16e5036e2b84aa6afcc8cf3422fd29b02c", + "0x1196b37a9f45bda9848dd661f2df18622a6b4efed01b1cb9eae812f3bf0bc0de", + "0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686", "0x0f320b0703439a8114f81593de99cd0b8f3b9bf854601abb5b2ea0e8a3dda4a7", "0x0d07f6e7a8a0e9199d6d92801fff867002ff5b4808962f9da2ba5ce1bdd26a73", "0x1c4954081e324939350febc2b918a293ebcdaead01be95ec02fcbe8d2c1635d1", @@ -5652,7 +5652,7 @@ read_request_index = "0x00000000000000000000000000000000000000000000000000000000 ] [hints.note_hash_read_request_hints.settled_read_hints.leaf_preimage] - value = "0x13bf5f8917e8394c499937b25f6aeb9f2cf8b30cf2e93fc49d8a3ac9bb7f36eb" + value = "0x1eeef2e1c70a7794a3586b4cf25058ac1b892b7d874294bf7dc5d1282591e04b" [[hints.note_hash_read_request_hints.settled_read_hints]] read_request_index = "0x0000000000000000000000000000000000000000000000000000000000000040" @@ -9335,16 +9335,16 @@ read_request_index = "0x00000000000000000000000000000000000000000000000000000000 leaf_index = "386" sibling_path = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x1656318a526ab5ee99f63ee5024585281be9f91dddc0b817c9cdcba8f790fd5b", + "0x2400ff8fd292af7aef7aa4ad3a089eab0db06c2efa5f5ca6acdf437576a0803e", "0x0e34ac2c09f45a503d2908bcb12f1cbae5fa4065759c88d501c097506a8b2290", "0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20", "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e", "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", "0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76", - "0x2daa142b06e2b2165dcd720ed0a3f793761d6fbb0636a55ea704d4cfe8f82389", - "0x0aeea9cba67159abfd5c9a3edaa0bb85f319991aac2b56d64ee477da8894d2a4", - "0x22a47282226b1912f0d0f52855f47420af24231f3309e9c950412f1be30f697b", - "0x10067a8bc319d7eb172e81c44c8118af0e10ad15bd57df22eceabd31809e85a5", + "0x09c6c7fb7da021c7ffc8fe8192bd4803953f2a6d084ef6255ecdd71b36d8921f", + "0x17fceab5e6d15d0f76dd258329b0369a8c603e977a7b900046d484c9e616cca1", + "0x0424880a586d1288a51e34a5fccc9eff170c3280b8cee33ab0c8f091f2ed02bc", + "0x2bcbc5bc40a0f255336281e2157c74b9a9363f02e7f13782b63b3b79ee590c6f", "0x0f320b0703439a8114f81593de99cd0b8f3b9bf854601abb5b2ea0e8a3dda4a7", "0x0d07f6e7a8a0e9199d6d92801fff867002ff5b4808962f9da2ba5ce1bdd26a73", "0x1c4954081e324939350febc2b918a293ebcdaead01be95ec02fcbe8d2c1635d1", @@ -9377,9 +9377,9 @@ read_request_index = "0x00000000000000000000000000000000000000000000000000000000 ] [hints.nullifier_read_request_hints.settled_read_hints.leaf_preimage] - nullifier = "0x11983940166f7ec7cdf50c75fc84536d3d7749f47370b8e466c6a6c47f07e5ef" - next_nullifier = "0x13242b212fca10168003a993563cf595367fd882c096424b0a9e88872c606948" - next_index = "0x0000000000000000000000000000000000000000000000000000000000000540" + nullifier = "0x144b73a1024ae49e8ba90c78acd884b038f1cbac5d4965c204d3b6db530de253" + next_nullifier = "0x163b0c52a7ec2a810b89962e6fc8a54e02d1cd8317f488801da02ae34733cd72" + next_index = "0x00000000000000000000000000000000000000000000000000000000000000c0" [[hints.nullifier_read_request_hints.settled_read_hints]] read_request_index = "0x0000000000000000000000000000000000000000000000000000000000000040" @@ -12724,8 +12724,8 @@ read_request_index = "0x00000000000000000000000000000000000000000000000000000000 request_index = "0x0000000000000000000000000000000000000000000000000000000000000000" [hints.key_validation_hints.sk_m] - hi = "0x00000000000000000000000000000000216ba10544644894a935cf5cdbf553a9" - lo = "0x00000000000000000000000000000000a6f5cf696516d0a564501cb93efb0bdc" + hi = "0x000000000000000000000000000000001e44dbeede1e4c222b3b4c6fba97d4a2" + lo = "0x00000000000000000000000000000000345451835f952283fbb1498e21e4a0b0" [[hints.key_validation_hints]] request_index = "0x0000000000000000000000000000000000000000000000000000000000000040" diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-tail-to-public/Prover.toml b/noir-projects/noir-protocol-circuits/crates/private-kernel-tail-to-public/Prover.toml index 8eaca1d2737..56906ee628b 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-tail-to-public/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-tail-to-public/Prover.toml @@ -6,7 +6,7 @@ vk_path = [ "0x088119e5ec3f249a7b799bddbe34331cf82f90c8906784d2e0968310179c7939", "0x294627428812b68807885920cba841ce2106a57cecb487a57a2060f95d29d796", "0x02dfdf8f45633da47ab6f47c909baf455131cf789f5ae4288ced1a5e0d09f031", - "0x2b4245c250965d596330a406f4bc539ec71abf509852548586d359d5ff11e677" + "0x0e65c2546de09afcb529706bce25d0237508d40bb8b24d173aef1d00e33cca8f" ] [previous_kernel.vk] @@ -162,55 +162,55 @@ min_revertible_side_effect_counter = "0x0000000000000000000000000000000000000000 is_private_only = false [previous_kernel_public_inputs.constants] - vk_tree_root = "0x0a118eae659eb1671e3f579a83c4ad3688cee1b9f23dcec48af4d3f3a2de1733" - protocol_contract_tree_root = "0x296690a67333fb896eff0ef812d31f9be26161726e47057bb688ddcf08164453" + vk_tree_root = "0x0bee8f04d48c18c88f2b9dd3b87daba3b3c8d000f44d290587504ae770942c56" + protocol_contract_tree_root = "0x1c4e64cbb91a46bc2fd73590e1dacd3ddf84d1b5e7a7182795ab02fe80399caf" [previous_kernel_public_inputs.constants.historical_header] - total_fees = "0x0000000000000000000000000000000000000000000000000003a83175b4f800" - total_mana_used = "0x0000000000000000000000000000000000000000000000000000000000004a40" + total_fees = "0x00000000000000000000000000000000000000000000000000f63927a6ad1e54" + total_mana_used = "0x000000000000000000000000000000000000000000000000000000000013863f" [previous_kernel_public_inputs.constants.historical_header.last_archive] - root = "0x171e653164ff7b9b8a2f4945fedda21d5fad551d9d162663d1f87e84d2137fe2" - next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000009" + root = "0x29cbab120d0f56c90cfefc66cafa9f932f596a2f907016ea04bf3116054d024d" + next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000005" [previous_kernel_public_inputs.constants.historical_header.content_commitment] num_txs = "0x0000000000000000000000000000000000000000000000000000000000000002" - txs_effects_hash = "0x000d93a59bf0e1300f4c851be0fe7920ff67667e4e14626185fb6e2cb54758f9" + blobs_hash = "0x0016c800a29df6af7f3e2e6e39d4f4f716a304cd602bbac9e33d67814d8c8b48" in_hash = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" out_hash = "0x00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb" [previous_kernel_public_inputs.constants.historical_header.state.l1_to_l2_message_tree] root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000090" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000050" [previous_kernel_public_inputs.constants.historical_header.state.partial.note_hash_tree] -root = "0x05cfddd64cd8186419dffde2648072f03e8e03b09f357ea09d6459d77a6ce474" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000480" +root = "0x04e8c491dbfeddc60045ecb277c87006799f491a47d6a32361cdabc1b964f153" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000280" [previous_kernel_public_inputs.constants.historical_header.state.partial.nullifier_tree] -root = "0x2eaed0d2778fab648d143f4a309b323cef0f1e32e63a36b6f3c3620a1d89281e" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000500" +root = "0x00ae279a916dc04b41f94ee1ed6ae6cd35e37a06787bd36a0af77db9bba8a126" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000300" [previous_kernel_public_inputs.constants.historical_header.state.partial.public_data_tree] -root = "0x066ae819431599f4cfc5d66ecf7be666683baaba66da8d5e4b1d9d0c5004c505" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000097" +root = "0x0ff17010ab909b4a0c9581a9c33cf0af93280c6fcd6664cf27270b8762a9e418" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000096" [previous_kernel_public_inputs.constants.historical_header.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" version = "0x0000000000000000000000000000000000000000000000000000000000000001" - block_number = "0x0000000000000000000000000000000000000000000000000000000000000009" - slot_number = "0x0000000000000000000000000000000000000000000000000000000000000023" - timestamp = "0x00000000000000000000000000000000000000000000000000000000675b069a" + block_number = "0x0000000000000000000000000000000000000000000000000000000000000005" + slot_number = "0x0000000000000000000000000000000000000000000000000000000000000009" + timestamp = "0x00000000000000000000000000000000000000000000000000000000675c2d76" [previous_kernel_public_inputs.constants.historical_header.global_variables.coinbase] - inner = "0x000000000000000000000000dde7ef1ed87eb5cbb0562efd27c3ad9eda8c800a" + inner = "0x000000000000000000000000ed846b6f217c7084a6c108eda50abce8c8367eac" [previous_kernel_public_inputs.constants.historical_header.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [previous_kernel_public_inputs.constants.historical_header.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd150e0" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9c6e14ac" [previous_kernel_public_inputs.constants.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" @@ -226,7 +226,7 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" [previous_kernel_public_inputs.constants.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd150e0" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9be2b484" [previous_kernel_public_inputs.validation_requests.for_rollup.max_block_number._opt] _is_some = false @@ -2734,7 +2734,7 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[previous_kernel_public_inputs.end.nullifiers]] [previous_kernel_public_inputs.end.nullifiers.nullifier] -value = "0x05de0801c37aeeef2213357bbeba18594460d5ad905f2cbe2992cf0efa36bdc0" +value = "0x25ce2d71f7bbf18a1b3f947a879d8ab49914830266b484af969296ea60af8ffd" counter = "0x0000000000000000000000000000000000000000000000000000000000000000" note_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -4370,13 +4370,13 @@ counter = "0x0000000000000000000000000000000000000000000000000000000000000003" [previous_kernel_public_inputs.end.public_call_requests.inner] is_static_call = false - args_hash = "0x01f4f9ff56ce56bfa865f47148831edf19d49906e0f0daa7c5d2be958b8138d0" + args_hash = "0x2667c69b043c8cc69b895e85758e845921c5626cc2cf2008614c131569b83949" [previous_kernel_public_inputs.end.public_call_requests.inner.msg_sender] - inner = "0x111914eadfa81022a42e019b6cf3df64d98685d3c137a16079d0742132432bb0" + inner = "0x30021904ae3832fa38613650b957c74abcc7ae86fda9e53bcd89e7b638cf9d67" [previous_kernel_public_inputs.end.public_call_requests.inner.contract_address] - inner = "0x0a6785e6919ab0ba6d52a2f5a21ec7b12547d20086cba00612fdfca447797845" + inner = "0x1b5c85f852759a87b99af1b7a52bf7b9a1bda23e2792ad5384113b9c17cc4c50" [previous_kernel_public_inputs.end.public_call_requests.inner.function_selector] inner = "0x00000000000000000000000000000000000000000000000000000000d5441b0d" diff --git a/noir-projects/noir-protocol-circuits/crates/private-kernel-tail/Prover.toml b/noir-projects/noir-protocol-circuits/crates/private-kernel-tail/Prover.toml index 5997753c892..718a890b871 100644 --- a/noir-projects/noir-protocol-circuits/crates/private-kernel-tail/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/private-kernel-tail/Prover.toml @@ -6,7 +6,7 @@ vk_path = [ "0x088119e5ec3f249a7b799bddbe34331cf82f90c8906784d2e0968310179c7939", "0x294627428812b68807885920cba841ce2106a57cecb487a57a2060f95d29d796", "0x02dfdf8f45633da47ab6f47c909baf455131cf789f5ae4288ced1a5e0d09f031", - "0x2b4245c250965d596330a406f4bc539ec71abf509852548586d359d5ff11e677" + "0x0e65c2546de09afcb529706bce25d0237508d40bb8b24d173aef1d00e33cca8f" ] [previous_kernel.vk] @@ -162,55 +162,55 @@ min_revertible_side_effect_counter = "0x0000000000000000000000000000000000000000 is_private_only = true [previous_kernel_public_inputs.constants] - vk_tree_root = "0x0a118eae659eb1671e3f579a83c4ad3688cee1b9f23dcec48af4d3f3a2de1733" - protocol_contract_tree_root = "0x296690a67333fb896eff0ef812d31f9be26161726e47057bb688ddcf08164453" + vk_tree_root = "0x0bee8f04d48c18c88f2b9dd3b87daba3b3c8d000f44d290587504ae770942c56" + protocol_contract_tree_root = "0x1c4e64cbb91a46bc2fd73590e1dacd3ddf84d1b5e7a7182795ab02fe80399caf" [previous_kernel_public_inputs.constants.historical_header] - total_fees = "0x00000000000000000000000000000000000000000000000000117815f5ec0920" - total_mana_used = "0x00000000000000000000000000000000000000000000000000000000000162af" + total_fees = "0x0000000000000000000000000000000000000000000000000011b417896f129a" + total_mana_used = "0x0000000000000000000000000000000000000000000000000000000000016771" [previous_kernel_public_inputs.constants.historical_header.last_archive] - root = "0x01efdcbcbea2494f71ea74a5d0d0ba5455129c180cec155418ee104e6d22b2fc" - next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000b" + root = "0x0781b1cc32dbe21aba1e27519e765bd44222b52ef464c6b63dfa97b399376c2e" + next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000009" [previous_kernel_public_inputs.constants.historical_header.content_commitment] num_txs = "0x0000000000000000000000000000000000000000000000000000000000000002" - txs_effects_hash = "0x0083d384a3cfda20bd82135bd2425bf2ebe42d7804a3af17326471003ba9a878" + blobs_hash = "0x0008822f60476d6dc34ec6109d3ad69dd1747a9484777021d8e717166bc7d5e6" in_hash = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" out_hash = "0x00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb" [previous_kernel_public_inputs.constants.historical_header.state.l1_to_l2_message_tree] root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" -next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000000b0" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000090" [previous_kernel_public_inputs.constants.historical_header.state.partial.note_hash_tree] -root = "0x2580c4cf35070b1a6513d8356c751ba43b73343ea9bbd82ec54b7c280c60ebb0" -next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000005c0" +root = "0x266514a4f987058cb2deb71c37e845df4f7f85ab2a23f208dd98cf7eeeb7cbc4" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000480" [previous_kernel_public_inputs.constants.historical_header.state.partial.nullifier_tree] -root = "0x2a4f5b262c0ffc9abafb84971d0ab3756cf2b1ff7e43e8c5d4b2efdc6e38681c" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000640" +root = "0x0a639c242b766d8bd94d437483546e33c4a8c27feadf50bc4ef523e9f191e927" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000500" [previous_kernel_public_inputs.constants.historical_header.state.partial.public_data_tree] -root = "0x00e2f085ab9775583a0dadea698c9177e9c5772190570bab385df4863c3e461a" +root = "0x2528ba08e1171e992f4744a8d8761bbe5611447c52d673882bde6a9e3b716e1a" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000097" [previous_kernel_public_inputs.constants.historical_header.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" version = "0x0000000000000000000000000000000000000000000000000000000000000001" - block_number = "0x000000000000000000000000000000000000000000000000000000000000000b" - slot_number = "0x0000000000000000000000000000000000000000000000000000000000000025" - timestamp = "0x00000000000000000000000000000000000000000000000000000000675b06ca" + block_number = "0x0000000000000000000000000000000000000000000000000000000000000009" + slot_number = "0x0000000000000000000000000000000000000000000000000000000000000016" + timestamp = "0x00000000000000000000000000000000000000000000000000000000675c2eae" [previous_kernel_public_inputs.constants.historical_header.global_variables.coinbase] - inner = "0x000000000000000000000000dde7ef1ed87eb5cbb0562efd27c3ad9eda8c800a" + inner = "0x000000000000000000000000ed846b6f217c7084a6c108eda50abce8c8367eac" [previous_kernel_public_inputs.constants.historical_header.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [previous_kernel_public_inputs.constants.historical_header.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd150e0" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd4533a" [previous_kernel_public_inputs.constants.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" @@ -226,7 +226,7 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" [previous_kernel_public_inputs.constants.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd150e0" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd4533a" [previous_kernel_public_inputs.validation_requests.for_rollup.max_block_number._opt] _is_some = false @@ -2222,7 +2222,7 @@ _value = "0x0000000000000000000000000000000000000000000000000000000000000000" [[previous_kernel_public_inputs.end.note_hashes]] [previous_kernel_public_inputs.end.note_hashes.note_hash] -value = "0x1adb53536b53e2fea0c1b57c0fc41126661df10ce2862127e4260b23d3dda0ca" +value = "0x2a71725fe2200c633f538557e5ec1e8274322449e1d37aa4de1428609fe0bae0" counter = "0x0000000000000000000000000000000000000000000000000000000000000007" [previous_kernel_public_inputs.end.note_hashes.contract_address] @@ -2230,7 +2230,7 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[previous_kernel_public_inputs.end.note_hashes]] [previous_kernel_public_inputs.end.note_hashes.note_hash] -value = "0x061f0a5ed69784b468163eebc57060e0bdb7054f22f1a271d0755fc850c869c9" +value = "0x0aa7177f2bd22dae7aea8ed1d2cee170870bb79f57b21ce5c54ea47a7fdb5af8" counter = "0x0000000000000000000000000000000000000000000000000000000000000009" [previous_kernel_public_inputs.end.note_hashes.contract_address] @@ -2734,7 +2734,7 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[previous_kernel_public_inputs.end.nullifiers]] [previous_kernel_public_inputs.end.nullifiers.nullifier] -value = "0x0235cd043fa116c53c12b1eafae4cc2961bef31b23b1e619c7314915a34a08ce" +value = "0x1e4c23d7a900532cdb5687c5806be8da481285afb0abbbe8a3801d71451d08d8" counter = "0x0000000000000000000000000000000000000000000000000000000000000000" note_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -2743,7 +2743,7 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[previous_kernel_public_inputs.end.nullifiers]] [previous_kernel_public_inputs.end.nullifiers.nullifier] -value = "0x180f59e1aa1fb2d953f2cbd9675a17e9c95f82bde94f4191dd5edc7d4fe1b421" +value = "0x07f80d2d42c91e838c0d22a45ac6c20db72a3a7507951a54491f2740d5a00b25" counter = "0x0000000000000000000000000000000000000000000000000000000000000006" note_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -3403,24 +3403,24 @@ counter = "0x0000000000000000000000000000000000000000000000000000000000000008" [previous_kernel_public_inputs.end.private_logs.inner.log] fields = [ - "0x0bebc0428fd312aca88dc1a3e50393e164191d8bfaa5440343d8a3972f2e8944", - "0x001a0fa40bcdee69578cf015937383c6ff8ef6b3e5d21ece9a1626e84abae04c", - "0x003f5dd5dfd78d988048ffa0c41949b8c49c87e5a5e2765542cfdf84e17879e7", - "0x00469e929f9f7f00780a54e5ac6a7fd297e36b00000000000000000000000000", - "0x0000001f105be03abf2b85d03792236f322e4f61eaac5f3b5d1477b079cd2f89", - "0x005ef02fe81b31b412b9b3c649592db6ca2727666fc9fdc3d2bb0eb2ba68fa47", - "0x009262e8479661802375eadbef41dd2dabf1d9ffbe6e75c258bc528fafce66ab", - "0x00849e211f5253ca2d089654dc60a53c882412bd1f38977a4160ae5ab6ada12a", - "0x0027384d885c233309f1f0ffa3788ef0ba205f07c7e1b362c7e84a5350cae3c9", - "0x00dffce587d1c7878d28dbd5bc803e46f0c2f5ddf064314e40a97406e1405149", - "0x0060ccb93d08e435e3d67a6bcb79258a78d82a1f382dbefb04555acdb5cfe890", - "0x00313df70316f5c9c1333955d1e2219d964a4589a258c8fbdd08da776cfe9588", - "0x007d159274ec2312b087aa8b481acbce3251100a81363b42880988b894ed8516", - "0x00c9119dcaf85d12b7a4cd178b407a1b9bc419190ba197a8bc3bfb54e1acdd06", - "0x00ae6d2bedf25325280771b89256d22e0874e53ca602f9500b1f07ce10d07206", - "0x00aab40449e7c8ac7b2bcac8c8f908936dbfd9ed30f10bd26630b5b4f4b47167", - "0x008be4aa8115a8b9295defa509513f0ee0201c8369d8506b7d37dbe399cdcc93", - "0x00020ebd95ce780a8bb8a0cb60418cc1c8131ece21a8f85b65996e0f4b10d292" + "0x00a117133196dd4df85556e6527de2b0f07d12da194c4c63f8658b39b42329c0", + "0x00961dca5785af4bf09cf75a77cdfcfa8fa41413b16bee86604c1826795edeec", + "0x00f7933d99a2ac43f613e021cc11c6200bdf7d703ba411bfda70998dbbe91d18", + "0x005c34531ec16f9cba02c2f74e5b68f53ec6bc00000000000000000000000000", + "0x000000343ccbf71927c63534206273c8611b72a04d4db62e0d1e7a1f358dbfe9", + "0x00bbb6167707e40e023148c03968226c73db4574f5991f9d06194dd1782e9d92", + "0x00c2cfe592e585e6319b54b39631393055f7ff2e2fab8ed76f5ca49bc3e7c83b", + "0x0036f9cd24f2727bc025371ca810245a9267c936e7edf92bd90a302d44b9a6ff", + "0x00dabe139092b735a4288ee4a9379e4afdfa51708650fe26e91e239fa23f9375", + "0x00eae9418604595e2d9a6ad7d46b2fc1967d2d7da56c4072a76bb3f709982f49", + "0x00989ffa26ac3a205dc0b99de3a6507411d11fdba8c61d3c81aabed1f119dd27", + "0x008ee4cadeaf75aa216d88a2a3aad40ba71c9ca39176a9ac78da77e47cab5caa", + "0x009927c6b18981dfcabf0a63dfd61d0491d8ee2c893844bb2ca602012783d756", + "0x00a18c50eb974c9146d791e09d883b3ad300430e1bac3f225b96041bcee15fce", + "0x00d527b9e3f664614bdf0f851d75ac6acaf59d4dbbe565a36424dee99bbf878d", + "0x00ae2f375a95ac5c40bf04f2c3f117c27132f413368d5d56edc746174594f8ca", + "0x004ff8ae2b0b2ae2b61a01a94b966654d26714edd486f5acacb2feb360f09059", + "0x00fb3c03d810569bdb758dbcb063020c6119ae59bd66308035a17f93ec1a8e98" ] [previous_kernel_public_inputs.end.private_logs.contract_address] @@ -3433,24 +3433,24 @@ counter = "0x000000000000000000000000000000000000000000000000000000000000000a" [previous_kernel_public_inputs.end.private_logs.inner.log] fields = [ - "0x12c6465a87c02223a0de633e84ac5e0e278bff91fa302d311ea831647a1199ec", - "0x002aafcb83d1e84af016c2ab94b88c270f4d9a4c21b0545d05cca3ee6eea80ec", - "0x00718a66dd96dcba7b9e3b594216857e48546b10bee7445c1ab25260ff49dbab", - "0x00513e25fa7230b29d0dd98df5ff9026de075e00000000000000000000000000", - "0x00000022a6b1a7312f502cacbc7283f841fa4a1b3433d7582b8ddc6fc33ec5f3", - "0x0026e319ab17f92fd707b5a065062f8d171a7d848b4061a081a89a5f6a28b42a", - "0x006a1b758aabe4d3354684fc273fd02f78ff7ae5df0f944b6e06b2893570707f", - "0x0079231903567ec6512e83dc82ad3b414711ea7b8536745400e324c690a39d8b", - "0x002916a90aa4eeb996924fbba2eaf66c3cc0165297e2f5fc995c1d96f90d6a81", - "0x00b3d1c747896e7dbd9dfcf4dc5cdcb235d7e4a78a59178d5649c196b15a2cfd", - "0x00be2860d2bd6cc8f75d543d8731421c739802538bcf0b0c82169077a5fe94ee", - "0x00f6b0816b4842e351e05627acbe29f549560dd77cfcfb14c27e67f42bd27778", - "0x00554ddd5ae0abe0567012f39b01f859cc1aefcfdd9a09eeddc409ea11b99e1c", - "0x007cb006b83342e616765a58225b6c70d708711743da039334151d7390b381c7", - "0x00d216a75ba110c043915834a68c1fb8d1b75b13146fbc61986ed3a81c40ddd2", - "0x0032c9d793cbfb98c57bef255a462723717e2839a500391a2445abed0ba64460", - "0x00606954ba497295624ea797a0d8482edcb4d56205286e44509293c9c3410863", - "0x0049cf4e699fd227bbd073624f7c701b68f5b5673564019fb31f17d822e8ed8e" + "0x11326925f87bb7838ce97a37e1153690b7d7be43e3aba260312e9b49e3a2e952", + "0x0082d4f053d20f9e5d0133a2279d7e5e1edcee80e8ae64e2b31759ea2c9d8357", + "0x00b4293fe37ff8a12620c49682fe04fc280a5808fc52884c40905c8a9fd12c22", + "0x00a08522ae6abbcca7fa0574ba7dc99f9f881c00000000000000000000000000", + "0x000000b32f2e9c3feb52a65be2321e91560925b83d0be9ea0c8e41c5e71c4df1", + "0x00fa5845ce219f1a7dd626caa3c96b536a79a3a65b1e184bda69fbc6eb61bdfc", + "0x0028181637f8949f88e4a53422f95c86122248723091b21e8f469fc86b3f7bf6", + "0x00c45756c940e72b7532073a35d77febff4f9d61a7f15706ba058f552c4c4dec", + "0x00ff7429d367c5fb82596c900dae746bd4988941db33121f03a8d01d92646560", + "0x004ca4b6be792d1c2167e998174d676e6462d0995063cd2d28bed4a7a0205ee0", + "0x0075c3cbed81825b7d47fe05ffa7446ee7b637ead0b04f1fb74e5d5d8f6a2b61", + "0x0036e4ebe9d34f8cf36254dc26d3b8c4829781d742edd48bd4babc79d4f8e019", + "0x001e85147052819f92807729600faf577839327b3c9d6ddada8869a19fdc2f7c", + "0x00062d400f543f81e1379c1e275b50e2bd025e4adc8111ae7ee30615c4733c58", + "0x0036d19ebc307f6a255369bb16287ec77fe0671c2dc6b3151ffa75e99a560d55", + "0x00250cf6a0581f297c606cde1b35e500648010bd4e9bda5b8a98a5824e0ee3bd", + "0x00b16603236f00e2f4263ecb587c0bb087fdcfa9075b3dde4501dff76177d091", + "0x0046729300d452d6dfe8200e1958ea4c78b2ddb8108a5c9b11fe2f61ca2c092b" ] [previous_kernel_public_inputs.end.private_logs.contract_address] @@ -3463,24 +3463,24 @@ counter = "0x000000000000000000000000000000000000000000000000000000000000000b" [previous_kernel_public_inputs.end.private_logs.inner.log] fields = [ - "0x26a077d530d2608c6ea450ecac5a5079bec86ea2db695f0c86ea47c3fab52b0f", - "0x0029d897328b887f4b538e9d609dfafcaa1d4b3f94af81f0c0666a9a01e8466f", - "0x002c67ac718c79d8730495dd9dea21f326ea25903e4e65d6b4ff12c5ad4b9659", - "0x006c581391ed204ae98fe8cad448cb15954e1100000000000000000000000000", - "0x000000fb819100d346b6e3f4cea32eee139e1fd7b7204a92758991d673d4162f", - "0x00e1538944e75ab37cd348dede503511cf4d5a9d8ae4af10d80d10400510bd0c", - "0x0084c7cfac1cd0f17231ab15294df527e357d5a2d183bac0750c3d1874da4ada", - "0x0067c634925211024bb4246bea276a386b6f0ccf1a5642b3139c19b827283035", - "0x005478b719543d42442231d7353695d8bd6e6cea7f5a68b02343d2ccb3560ce7", - "0x009d6e5e027b8ec1e9b29423e830737f3a1020503834443c5c59e0c63073d1cb", - "0x0036181af1df1dd9bca9a15dd5bd0add4a6b0a537430977ac557a12f16f718a6", - "0x00b92f0437dd50f4b1135d31a55c72d703d5dd7c9b6ce4876f75bc840b66c957", - "0x00f45cc7e6c5e5599a87de5437681e1133f3802658f75b298467f09a8c488a7c", - "0x00d85eb4475056e2fecf0e15206743551948520b68f41786d1139e9f5231bb95", - "0x001256ae52c246ce78f1f77de995da34c5bb9a882b50014c4f8dc2100c6c90bb", - "0x00179d3cbf835a4f715688ea589954377e2ec2fb83d9e283f60c6d141a34a3fd", - "0x000a12a5c201254c07ff77c2c02d43807872c6d60daceb9cd4223af0c6cc16df", - "0x00e1a8910d19556fac0262e7d1a3c6e75f8fef83fa5df962fdf6ce391b00d82b" + "0x178dae7ea42c364f14500f4738db39475c916d0b506fc353245a8d558b551d5f", + "0x002fe17d85df96d8b9bc15c91d0d62b0173174cda5d991cd73e9b9da65e2956b", + "0x00da7b08beac5d98c229d91728587646f72777453b785d0624e59f0a8075661d", + "0x0089323120a21d889aee547c21faa1c03a1ead00000000000000000000000000", + "0x0000001a851e3ed1265dde6b01175571a83d0777b0c17791db74cd2b33589139", + "0x00d1f4a53e67b2221c1ce7bd6d5dc105b0b3a086dcabd173b2b874f6f13fa338", + "0x002ccc3ee9f522a252f7523703c162fb8807c24eb052d2871609e249c67bd5bb", + "0x006e1fd58f3479bb18d1abd812bef996dfc0a36d72d1472a930e77805f243952", + "0x007043fae6b109a981b1e34acf7281480b879f280fd607fa1df718c9a31acaf2", + "0x008c4f91880f265b065cea8a705bc508875182fe5a3837e2b5b8a14e231cbd59", + "0x0071c17f4d52aecdfb4d8c6b1e764ae137c836c0672bf3cc589a45878f2686a8", + "0x00c95d01a6e57b41af4f265b2c88f6ff3de54aa5c895ca6faa21e26a8d6134a5", + "0x00a54c12af2499afd7651644686c671c3d77ff4af32a6b181646c976329a0063", + "0x004567a7724f750c4b0c9c205f35f4a175ea93015792fc78fbd985e7c751cc1b", + "0x001b0870e32b1c3c28116435e5132496bdeb8a1d3b9acc62b7d57d82f230bdaf", + "0x0058272cd1119bc153b18b3a3c896138be6f5b9144f216cd6e6f1b5db7d8ef08", + "0x00c1c848fc01d649f264a3cf8ba8cade698e2c1dbd14f7a0077356f8381de748", + "0x00328549fac9e2e1ff6fc6aaef17fbb1fd5c973e01df61985fe056548fd4b5df" ] [previous_kernel_public_inputs.end.private_logs.contract_address] diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-base-private/Prover.toml b/noir-projects/noir-protocol-circuits/crates/rollup-base-private/Prover.toml index ce4ed39b687..7a70e53d040 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-base-private/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/rollup-base-private/Prover.toml @@ -6,71 +6,71 @@ _is_some = false _value = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.tube_data.public_inputs.constants] - vk_tree_root = "0x0a118eae659eb1671e3f579a83c4ad3688cee1b9f23dcec48af4d3f3a2de1733" - protocol_contract_tree_root = "0x296690a67333fb896eff0ef812d31f9be26161726e47057bb688ddcf08164453" + vk_tree_root = "0x0bee8f04d48c18c88f2b9dd3b87daba3b3c8d000f44d290587504ae770942c56" + protocol_contract_tree_root = "0x1c4e64cbb91a46bc2fd73590e1dacd3ddf84d1b5e7a7182795ab02fe80399caf" [inputs.tube_data.public_inputs.constants.historical_header] - total_fees = "0x0000000000000000000000000000000000000000000000000003a83175b4f800" - total_mana_used = "0x0000000000000000000000000000000000000000000000000000000000004a40" + total_fees = "0x0000000000000000000000000000000000000000000000000000000000000000" + total_mana_used = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.tube_data.public_inputs.constants.historical_header.last_archive] - root = "0x171e653164ff7b9b8a2f4945fedda21d5fad551d9d162663d1f87e84d2137fe2" - next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000009" + root = "0x0000000000000000000000000000000000000000000000000000000000000000" + next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.tube_data.public_inputs.constants.historical_header.content_commitment] - num_txs = "0x0000000000000000000000000000000000000000000000000000000000000002" - txs_effects_hash = "0x000d93a59bf0e1300f4c851be0fe7920ff67667e4e14626185fb6e2cb54758f9" - in_hash = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" - out_hash = "0x00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb" + num_txs = "0x0000000000000000000000000000000000000000000000000000000000000000" + blobs_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" + in_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" + out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.tube_data.public_inputs.constants.historical_header.state.l1_to_l2_message_tree] root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000090" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.tube_data.public_inputs.constants.historical_header.state.partial.note_hash_tree] -root = "0x05cfddd64cd8186419dffde2648072f03e8e03b09f357ea09d6459d77a6ce474" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000480" +root = "0x1fd848aa69e1633722fe249a5b7f53b094f1c9cef9f5c694b073fd1cc5850dfb" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.tube_data.public_inputs.constants.historical_header.state.partial.nullifier_tree] -root = "0x2eaed0d2778fab648d143f4a309b323cef0f1e32e63a36b6f3c3620a1d89281e" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000500" +root = "0x0c499b373a1f0fe1b510a63563546d2d39e206895056a5af0143c5f30d639073" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000080" [inputs.tube_data.public_inputs.constants.historical_header.state.partial.public_data_tree] -root = "0x066ae819431599f4cfc5d66ecf7be666683baaba66da8d5e4b1d9d0c5004c505" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000097" +root = "0x23c08a6b1297210c5e24c76b9a936250a1ce2721576c26ea797c7ec35f9e46a9" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000080" [inputs.tube_data.public_inputs.constants.historical_header.global_variables] - chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x0000000000000000000000000000000000000000000000000000000000000001" - block_number = "0x0000000000000000000000000000000000000000000000000000000000000009" - slot_number = "0x0000000000000000000000000000000000000000000000000000000000000023" - timestamp = "0x00000000000000000000000000000000000000000000000000000000675b069a" + chain_id = "0x0000000000000000000000000000000000000000000000000000000000000000" + version = "0x0000000000000000000000000000000000000000000000000000000000000000" + block_number = "0x0000000000000000000000000000000000000000000000000000000000000000" + slot_number = "0x0000000000000000000000000000000000000000000000000000000000000000" + timestamp = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.tube_data.public_inputs.constants.historical_header.global_variables.coinbase] - inner = "0x000000000000000000000000dde7ef1ed87eb5cbb0562efd27c3ad9eda8c800a" + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.tube_data.public_inputs.constants.historical_header.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.tube_data.public_inputs.constants.historical_header.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd150e0" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.tube_data.public_inputs.constants.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" version = "0x0000000000000000000000000000000000000000000000000000000000000001" [inputs.tube_data.public_inputs.constants.tx_context.gas_settings.gas_limits] -da_gas = "0x000000000000000000000000000000000000000000000000000000003b9aca00" -l2_gas = "0x000000000000000000000000000000000000000000000000000000003b9aca00" +da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" +l2_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.tube_data.public_inputs.constants.tx_context.gas_settings.teardown_gas_limits] -da_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" -l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" +da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" +l2_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.tube_data.public_inputs.constants.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd150e0" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.tube_data.public_inputs.constants.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -91,8 +91,8 @@ fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd1 [inputs.tube_data.public_inputs.end] note_hashes = [ - "0x13bf5f8917e8394c499937b25f6aeb9f2cf8b30cf2e93fc49d8a3ac9bb7f36eb", - "0x0592f2b0e3b349c816c7ef460654a75f5f2f14a091cc8cf4f254251f73a65ce6", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -157,8 +157,8 @@ fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd1 "0x0000000000000000000000000000000000000000000000000000000000000000" ] nullifiers = [ - "0x1ade9378e54152c36805cbc9396ae7a73a0847a7dd81aac687a29f7952c1dc6d", - "0x20eaf751fa6b907d5b1f2e25d4aef070054deca778c98f376a9909ea3cae6f6c", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -315,68 +315,68 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[inputs.tube_data.public_inputs.end.private_logs]] fields = [ - "0x022df6ed0aa1382531a3207fb947742b8976250e6209930a73d1b434a447bb97", - "0x00873ceb35ea3730d1ec2d7c6fceb22814de599ad58b80da8d272c5481ba91f6", - "0x00ca1f723b6c888bfabbb8804abc4a36a2fe5bf6fa1a4daa31badbc1435ce148", - "0x006a3b86ea8614817b34d37606d474ee2126b300000000000000000000000000", - "0x000000343256d3e824665e02710730469ff2130bfc6b35db91fba6844ddf9d5c", - "0x0073599e36635c831b81cf17e67b951334ea02d15a46fa03406586a7af20806f", - "0x00388aa10735eb74b63d98d79fb9814fa166588ccd5771ba0766b6b3133fbb7a", - "0x0008a4a7ecf8e6749cf66b58fc2aa93a64250f1ad02245c6284c12dbc415c52c", - "0x002b23124ad92073f97ff98553192f5a6f212c870ed6389b2bd93520ee32348e", - "0x0079929a92162718b0be1e90b914ad1639c520875b7932b5aa97bad5cb1ead4d", - "0x00af9639c65e90cb78be69234e841c023473ad32916e46369c2a86a507b39fe4", - "0x0044a9cbc7cad03f6c8836094211623fe882e6f77e3383b2b8ab6443fbd33ff3", - "0x00f255bf7cef7142d6eb96860a282b93f1bdf33f7dd09b24737c571201e2c1e2", - "0x00dbd5af175f2fad7ea336ca13a71325059b1a22f7be069252c91d9631cc8f5f", - "0x00654afde1f4f7aa0bf0cb53b9da28656faa4396e1f0d1ac8efc1cf60ecdce54", - "0x00df105e613c1b84445b9ebbbaf8ede406186bbbc04062c981b86d04159569e4", - "0x00553c0e93d34bb7fe15fd552e7b41b10419a143b597d353bdbde38858c24578", - "0x003372a00889fffcc83f71ccaa53bcbcbb7e83dcf0c427511ce42bcc3102a20c" + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" ] [[inputs.tube_data.public_inputs.end.private_logs]] fields = [ - "0x26a5291c6e5384f4053fd74ebf98c52c6a8755d85668d5192cd2506a5a1867ef", - "0x00abf5a0fb4bb749a83640cdd832d345e20c76a28d4f01d5f841875d30b57db6", - "0x0073818b3e2cb1ce32b1018b1389428578c00897408b2430a5548cf0ef91e257", - "0x00265f9b818e6b14b621bf99d6dbec6d8aa80000000000000000000000000000", - "0x000000f26293bf0d4a5da6756726847e82907b1b973aed2bd42ec2b151e0b192", - "0x00fa00ead89e5bf3d32db89a37aa9c97ecb4a97d18c4962ac3c9bc597b7c5496", - "0x004a6a7fcb477b2b0b3a09d01b7c47b6230cfaaa1bac2e02021d42abf3dce512", - "0x00a763986f05ca4f4248dd053d2a2745888d8bf8288f37234d00ab5c6f6c108c", - "0x00f381badab55b07691a6d03ca3c180c995c6ebaa083a201bef5ebca3e397e5f", - "0x00667cba00466d22a1f156fa7765f22797e7d1b45d138e964e1200f40d008205", - "0x00c8db84a8f47e8f72d3fe124d5f5e5f7a951c33aaf3765a2e7795f8b1fdb69a", - "0x00c2454dc10adf9eb50b3653622982b719a0907336d235df47e0fbf04598b8ed", - "0x00702979544d96d830fd5b375f948811bfe445a6d95f9d7751da9795b92435dd", - "0x00fcfa26e045f7f922cb3672c2f7f24a6aa24dcbbdb29aab12fee43a3d39312b", - "0x002670a01b061a8abb3bf39e10e8fd5090f98e918574731271056352cddee7f1", - "0x00821e4cc373a676cf01c0cf736b7f42ee4ccd6ea2140e31c5f0296160a2f807", - "0x0084311aeb9354c896b594af41f21f132f40709d2f310f78edec7ed59d8c918c", - "0x00000fd45f149338bf9cd786deafd46fc9bfd33d29df0d9f3d373180c4029d58" + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" ] [[inputs.tube_data.public_inputs.end.private_logs]] fields = [ - "0x2da162f77ab35ce7c2e1bdae6da131a363dd30c34042c63e715c33542e8eea76", - "0x00216a62e8f30a6b01ca77abdeb05c0ac2cd7ad21817efdee57f98dc4e61607f", - "0x0095c4b12e5a464c56426753a0d24f31a93882dc780b7fdd33df4e88daf16c45", - "0x00a6921a424ab37aff9afa920886b1e2aaba8900000000000000000000000000", - "0x0000008ebe9222addd40fe837de6b1c0e68b5e812921def3039a49b128ccb131", - "0x00acd5519ce667d3766288b0622a7fc036f84bc1c35db50813296399ac797cf0", - "0x00d32aefb106eae3406e835d732293aac86292b1b00d5e66b94a8830bf280835", - "0x00dc7cbe7e10629bf1c5235156af92ad426649b1e6e48a363e2e8a4cc1774420", - "0x0025fb5e2c2196e66d94735edc8bfe173c905c56215750a48b4bb057259f2fb4", - "0x0033b1803b9db4bdd4b8e2a000aa82221b24418a7237ea5eaa84624e97943a59", - "0x003a79988bda111eaae6f2988cb089ff8bc812d267439d9be617ef3588dfd564", - "0x00c1dc6a87959e72ae428ea83bdba696c1c566476e0a5afe540b65c04615caa6", - "0x00ea6bc2d1bdb9867d560a40bbaf3fc6ef66736cde3b1189a5ff983797116d7b", - "0x0095ef92914d0099a90b107d01b4c17e88b87dc5008ef88fff829dcafcedfe68", - "0x004fab48d1c7ba169fdc2d8db06345e5f4809b05283e206626697f484248e759", - "0x009160e341f099b5065fa9028bc124cd53554cfdb30fc5f6bdcfec51f2f0408e", - "0x0039519f223dc7342dfec8c3e15687f7d42e5fe8c6c519db848a460c034f9dad", - "0x0013fd7bc4ed12c6e2c1bd2e50c1e67e57af598e6af065bc96052ece41eabf86" + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" ] [[inputs.tube_data.public_inputs.end.private_logs]] @@ -1354,652 +1354,671 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" leaf_slot = "0x0000000000000000000000000000000000000000000000000000000000000000" value = "0x0000000000000000000000000000000000000000000000000000000000000000" -[inputs.tube_data.public_inputs.start_state.note_hash_tree] -root = "0x0000000000000000000000000000000000000000000000000000000000000000" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000000" - -[inputs.tube_data.public_inputs.start_state.nullifier_tree] -root = "0x0000000000000000000000000000000000000000000000000000000000000000" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000000" - -[inputs.tube_data.public_inputs.start_state.public_data_tree] -root = "0x0000000000000000000000000000000000000000000000000000000000000000" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.tube_data.public_inputs.gas_used] - da_gas = "0x0000000000000000000000000000000000000000000000000000000000007600" - l2_gas = "0x0000000000000000000000000000000000000000000000000000000000004a40" - - [inputs.tube_data.public_inputs.fee_payer] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - -[inputs.tube_data.proof] -fields = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" +[inputs.tube_data.public_inputs.start_state.note_hash_tree] +root = "0x0000000000000000000000000000000000000000000000000000000000000000" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + +[inputs.tube_data.public_inputs.start_state.nullifier_tree] +root = "0x0000000000000000000000000000000000000000000000000000000000000000" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + +[inputs.tube_data.public_inputs.start_state.public_data_tree] +root = "0x0000000000000000000000000000000000000000000000000000000000000000" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.tube_data.public_inputs.gas_used] + da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" + l2_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.tube_data.public_inputs.fee_payer] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + +[inputs.tube_data.proof] +fields = [ + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0x0000000000000000000000000000000000000000000000000000000000000003", + "0x0000000000000000000000000000000000000000000000000000000000000004", + "0x0000000000000000000000000000000000000000000000000000000000000005", + "0x0000000000000000000000000000000000000000000000000000000000000006", + "0x0000000000000000000000000000000000000000000000000000000000000007", + "0x0000000000000000000000000000000000000000000000000000000000000008", + "0x0000000000000000000000000000000000000000000000000000000000000009", + "0x000000000000000000000000000000000000000000000000000000000000000a", + "0x000000000000000000000000000000000000000000000000000000000000000b", + "0x000000000000000000000000000000000000000000000000000000000000000c", + "0x000000000000000000000000000000000000000000000000000000000000000d", + "0x000000000000000000000000000000000000000000000000000000000000000e", + "0x000000000000000000000000000000000000000000000000000000000000000f", + "0x0000000000000000000000000000000000000000000000000000000000000010", + "0x0000000000000000000000000000000000000000000000000000000000000011", + "0x0000000000000000000000000000000000000000000000000000000000000012", + "0x0000000000000000000000000000000000000000000000000000000000000013", + "0x0000000000000000000000000000000000000000000000000000000000000014", + "0x0000000000000000000000000000000000000000000000000000000000000015", + "0x0000000000000000000000000000000000000000000000000000000000000016", + "0x0000000000000000000000000000000000000000000000000000000000000017", + "0x0000000000000000000000000000000000000000000000000000000000000018", + "0x0000000000000000000000000000000000000000000000000000000000000019", + "0x000000000000000000000000000000000000000000000000000000000000001a", + "0x000000000000000000000000000000000000000000000000000000000000001b", + "0x000000000000000000000000000000000000000000000000000000000000001c", + "0x000000000000000000000000000000000000000000000000000000000000001d", + "0x000000000000000000000000000000000000000000000000000000000000001e", + "0x000000000000000000000000000000000000000000000000000000000000001f", + "0x0000000000000000000000000000000000000000000000000000000000000020", + "0x0000000000000000000000000000000000000000000000000000000000000021", + "0x0000000000000000000000000000000000000000000000000000000000000022", + "0x0000000000000000000000000000000000000000000000000000000000000023", + "0x0000000000000000000000000000000000000000000000000000000000000024", + "0x0000000000000000000000000000000000000000000000000000000000000025", + "0x0000000000000000000000000000000000000000000000000000000000000026", + "0x0000000000000000000000000000000000000000000000000000000000000027", + "0x0000000000000000000000000000000000000000000000000000000000000028", + "0x0000000000000000000000000000000000000000000000000000000000000029", + "0x000000000000000000000000000000000000000000000000000000000000002a", + "0x000000000000000000000000000000000000000000000000000000000000002b", + "0x000000000000000000000000000000000000000000000000000000000000002c", + "0x000000000000000000000000000000000000000000000000000000000000002d", + "0x000000000000000000000000000000000000000000000000000000000000002e", + "0x000000000000000000000000000000000000000000000000000000000000002f", + "0x0000000000000000000000000000000000000000000000000000000000000030", + "0x0000000000000000000000000000000000000000000000000000000000000031", + "0x0000000000000000000000000000000000000000000000000000000000000032", + "0x0000000000000000000000000000000000000000000000000000000000000033", + "0x0000000000000000000000000000000000000000000000000000000000000034", + "0x0000000000000000000000000000000000000000000000000000000000000035", + "0x0000000000000000000000000000000000000000000000000000000000000036", + "0x0000000000000000000000000000000000000000000000000000000000000037", + "0x0000000000000000000000000000000000000000000000000000000000000038", + "0x0000000000000000000000000000000000000000000000000000000000000039", + "0x000000000000000000000000000000000000000000000000000000000000003a", + "0x000000000000000000000000000000000000000000000000000000000000003b", + "0x000000000000000000000000000000000000000000000000000000000000003c", + "0x000000000000000000000000000000000000000000000000000000000000003d", + "0x000000000000000000000000000000000000000000000000000000000000003e", + "0x000000000000000000000000000000000000000000000000000000000000003f", + "0x0000000000000000000000000000000000000000000000000000000000000040", + "0x0000000000000000000000000000000000000000000000000000000000000041", + "0x0000000000000000000000000000000000000000000000000000000000000042", + "0x0000000000000000000000000000000000000000000000000000000000000043", + "0x0000000000000000000000000000000000000000000000000000000000000044", + "0x0000000000000000000000000000000000000000000000000000000000000045", + "0x0000000000000000000000000000000000000000000000000000000000000046", + "0x0000000000000000000000000000000000000000000000000000000000000047", + "0x0000000000000000000000000000000000000000000000000000000000000048", + "0x0000000000000000000000000000000000000000000000000000000000000049", + "0x000000000000000000000000000000000000000000000000000000000000004a", + "0x000000000000000000000000000000000000000000000000000000000000004b", + "0x000000000000000000000000000000000000000000000000000000000000004c", + "0x000000000000000000000000000000000000000000000000000000000000004d", + "0x000000000000000000000000000000000000000000000000000000000000004e", + "0x000000000000000000000000000000000000000000000000000000000000004f", + "0x0000000000000000000000000000000000000000000000000000000000000050", + "0x0000000000000000000000000000000000000000000000000000000000000051", + "0x0000000000000000000000000000000000000000000000000000000000000052", + "0x0000000000000000000000000000000000000000000000000000000000000053", + "0x0000000000000000000000000000000000000000000000000000000000000054", + "0x0000000000000000000000000000000000000000000000000000000000000055", + "0x0000000000000000000000000000000000000000000000000000000000000056", + "0x0000000000000000000000000000000000000000000000000000000000000057", + "0x0000000000000000000000000000000000000000000000000000000000000058", + "0x0000000000000000000000000000000000000000000000000000000000000059", + "0x000000000000000000000000000000000000000000000000000000000000005a", + "0x000000000000000000000000000000000000000000000000000000000000005b", + "0x000000000000000000000000000000000000000000000000000000000000005c", + "0x000000000000000000000000000000000000000000000000000000000000005d", + "0x000000000000000000000000000000000000000000000000000000000000005e", + "0x000000000000000000000000000000000000000000000000000000000000005f", + "0x0000000000000000000000000000000000000000000000000000000000000060", + "0x0000000000000000000000000000000000000000000000000000000000000061", + "0x0000000000000000000000000000000000000000000000000000000000000062", + "0x0000000000000000000000000000000000000000000000000000000000000063", + "0x0000000000000000000000000000000000000000000000000000000000000064", + "0x0000000000000000000000000000000000000000000000000000000000000065", + "0x0000000000000000000000000000000000000000000000000000000000000066", + "0x0000000000000000000000000000000000000000000000000000000000000067", + "0x0000000000000000000000000000000000000000000000000000000000000068", + "0x0000000000000000000000000000000000000000000000000000000000000069", + "0x000000000000000000000000000000000000000000000000000000000000006a", + "0x000000000000000000000000000000000000000000000000000000000000006b", + "0x000000000000000000000000000000000000000000000000000000000000006c", + "0x000000000000000000000000000000000000000000000000000000000000006d", + "0x000000000000000000000000000000000000000000000000000000000000006e", + "0x000000000000000000000000000000000000000000000000000000000000006f", + "0x0000000000000000000000000000000000000000000000000000000000000070", + "0x0000000000000000000000000000000000000000000000000000000000000071", + "0x0000000000000000000000000000000000000000000000000000000000000072", + "0x0000000000000000000000000000000000000000000000000000000000000073", + "0x0000000000000000000000000000000000000000000000000000000000000074", + "0x0000000000000000000000000000000000000000000000000000000000000075", + "0x0000000000000000000000000000000000000000000000000000000000000076", + "0x0000000000000000000000000000000000000000000000000000000000000077", + "0x0000000000000000000000000000000000000000000000000000000000000078", + "0x0000000000000000000000000000000000000000000000000000000000000079", + "0x000000000000000000000000000000000000000000000000000000000000007a", + "0x000000000000000000000000000000000000000000000000000000000000007b", + "0x000000000000000000000000000000000000000000000000000000000000007c", + "0x000000000000000000000000000000000000000000000000000000000000007d", + "0x000000000000000000000000000000000000000000000000000000000000007e", + "0x000000000000000000000000000000000000000000000000000000000000007f", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000081", + "0x0000000000000000000000000000000000000000000000000000000000000082", + "0x0000000000000000000000000000000000000000000000000000000000000083", + "0x0000000000000000000000000000000000000000000000000000000000000084", + "0x0000000000000000000000000000000000000000000000000000000000000085", + "0x0000000000000000000000000000000000000000000000000000000000000086", + "0x0000000000000000000000000000000000000000000000000000000000000087", + "0x0000000000000000000000000000000000000000000000000000000000000088", + "0x0000000000000000000000000000000000000000000000000000000000000089", + "0x000000000000000000000000000000000000000000000000000000000000008a", + "0x000000000000000000000000000000000000000000000000000000000000008b", + "0x000000000000000000000000000000000000000000000000000000000000008c", + "0x000000000000000000000000000000000000000000000000000000000000008d", + "0x000000000000000000000000000000000000000000000000000000000000008e", + "0x000000000000000000000000000000000000000000000000000000000000008f", + "0x0000000000000000000000000000000000000000000000000000000000000090", + "0x0000000000000000000000000000000000000000000000000000000000000091", + "0x0000000000000000000000000000000000000000000000000000000000000092", + "0x0000000000000000000000000000000000000000000000000000000000000093", + "0x0000000000000000000000000000000000000000000000000000000000000094", + "0x0000000000000000000000000000000000000000000000000000000000000095", + "0x0000000000000000000000000000000000000000000000000000000000000096", + "0x0000000000000000000000000000000000000000000000000000000000000097", + "0x0000000000000000000000000000000000000000000000000000000000000098", + "0x0000000000000000000000000000000000000000000000000000000000000099", + "0x000000000000000000000000000000000000000000000000000000000000009a", + "0x000000000000000000000000000000000000000000000000000000000000009b", + "0x000000000000000000000000000000000000000000000000000000000000009c", + "0x000000000000000000000000000000000000000000000000000000000000009d", + "0x000000000000000000000000000000000000000000000000000000000000009e", + "0x000000000000000000000000000000000000000000000000000000000000009f", + "0x00000000000000000000000000000000000000000000000000000000000000a0", + "0x00000000000000000000000000000000000000000000000000000000000000a1", + "0x00000000000000000000000000000000000000000000000000000000000000a2", + "0x00000000000000000000000000000000000000000000000000000000000000a3", + "0x00000000000000000000000000000000000000000000000000000000000000a4", + "0x00000000000000000000000000000000000000000000000000000000000000a5", + "0x00000000000000000000000000000000000000000000000000000000000000a6", + "0x00000000000000000000000000000000000000000000000000000000000000a7", + "0x00000000000000000000000000000000000000000000000000000000000000a8", + "0x00000000000000000000000000000000000000000000000000000000000000a9", + "0x00000000000000000000000000000000000000000000000000000000000000aa", + "0x00000000000000000000000000000000000000000000000000000000000000ab", + "0x00000000000000000000000000000000000000000000000000000000000000ac", + "0x00000000000000000000000000000000000000000000000000000000000000ad", + "0x00000000000000000000000000000000000000000000000000000000000000ae", + "0x00000000000000000000000000000000000000000000000000000000000000af", + "0x00000000000000000000000000000000000000000000000000000000000000b0", + "0x00000000000000000000000000000000000000000000000000000000000000b1", + "0x00000000000000000000000000000000000000000000000000000000000000b2", + "0x00000000000000000000000000000000000000000000000000000000000000b3", + "0x00000000000000000000000000000000000000000000000000000000000000b4", + "0x00000000000000000000000000000000000000000000000000000000000000b5", + "0x00000000000000000000000000000000000000000000000000000000000000b6", + "0x00000000000000000000000000000000000000000000000000000000000000b7", + "0x00000000000000000000000000000000000000000000000000000000000000b8", + "0x00000000000000000000000000000000000000000000000000000000000000b9", + "0x00000000000000000000000000000000000000000000000000000000000000ba", + "0x00000000000000000000000000000000000000000000000000000000000000bb", + "0x00000000000000000000000000000000000000000000000000000000000000bc", + "0x00000000000000000000000000000000000000000000000000000000000000bd", + "0x00000000000000000000000000000000000000000000000000000000000000be", + "0x00000000000000000000000000000000000000000000000000000000000000bf", + "0x00000000000000000000000000000000000000000000000000000000000000c0", + "0x00000000000000000000000000000000000000000000000000000000000000c1", + "0x00000000000000000000000000000000000000000000000000000000000000c2", + "0x00000000000000000000000000000000000000000000000000000000000000c3", + "0x00000000000000000000000000000000000000000000000000000000000000c4", + "0x00000000000000000000000000000000000000000000000000000000000000c5", + "0x00000000000000000000000000000000000000000000000000000000000000c6", + "0x00000000000000000000000000000000000000000000000000000000000000c7", + "0x00000000000000000000000000000000000000000000000000000000000000c8", + "0x00000000000000000000000000000000000000000000000000000000000000c9", + "0x00000000000000000000000000000000000000000000000000000000000000ca", + "0x00000000000000000000000000000000000000000000000000000000000000cb", + "0x00000000000000000000000000000000000000000000000000000000000000cc", + "0x00000000000000000000000000000000000000000000000000000000000000cd", + "0x00000000000000000000000000000000000000000000000000000000000000ce", + "0x00000000000000000000000000000000000000000000000000000000000000cf", + "0x00000000000000000000000000000000000000000000000000000000000000d0", + "0x00000000000000000000000000000000000000000000000000000000000000d1", + "0x00000000000000000000000000000000000000000000000000000000000000d2", + "0x00000000000000000000000000000000000000000000000000000000000000d3", + "0x00000000000000000000000000000000000000000000000000000000000000d4", + "0x00000000000000000000000000000000000000000000000000000000000000d5", + "0x00000000000000000000000000000000000000000000000000000000000000d6", + "0x00000000000000000000000000000000000000000000000000000000000000d7", + "0x00000000000000000000000000000000000000000000000000000000000000d8", + "0x00000000000000000000000000000000000000000000000000000000000000d9", + "0x00000000000000000000000000000000000000000000000000000000000000da", + "0x00000000000000000000000000000000000000000000000000000000000000db", + "0x00000000000000000000000000000000000000000000000000000000000000dc", + "0x00000000000000000000000000000000000000000000000000000000000000dd", + "0x00000000000000000000000000000000000000000000000000000000000000de", + "0x00000000000000000000000000000000000000000000000000000000000000df", + "0x00000000000000000000000000000000000000000000000000000000000000e0", + "0x00000000000000000000000000000000000000000000000000000000000000e1", + "0x00000000000000000000000000000000000000000000000000000000000000e2", + "0x00000000000000000000000000000000000000000000000000000000000000e3", + "0x00000000000000000000000000000000000000000000000000000000000000e4", + "0x00000000000000000000000000000000000000000000000000000000000000e5", + "0x00000000000000000000000000000000000000000000000000000000000000e6", + "0x00000000000000000000000000000000000000000000000000000000000000e7", + "0x00000000000000000000000000000000000000000000000000000000000000e8", + "0x00000000000000000000000000000000000000000000000000000000000000e9", + "0x00000000000000000000000000000000000000000000000000000000000000ea", + "0x00000000000000000000000000000000000000000000000000000000000000eb", + "0x00000000000000000000000000000000000000000000000000000000000000ec", + "0x00000000000000000000000000000000000000000000000000000000000000ed", + "0x00000000000000000000000000000000000000000000000000000000000000ee", + "0x00000000000000000000000000000000000000000000000000000000000000ef", + "0x00000000000000000000000000000000000000000000000000000000000000f0", + "0x00000000000000000000000000000000000000000000000000000000000000f1", + "0x00000000000000000000000000000000000000000000000000000000000000f2", + "0x00000000000000000000000000000000000000000000000000000000000000f3", + "0x00000000000000000000000000000000000000000000000000000000000000f4", + "0x00000000000000000000000000000000000000000000000000000000000000f5", + "0x00000000000000000000000000000000000000000000000000000000000000f6", + "0x00000000000000000000000000000000000000000000000000000000000000f7", + "0x00000000000000000000000000000000000000000000000000000000000000f8", + "0x00000000000000000000000000000000000000000000000000000000000000f9", + "0x00000000000000000000000000000000000000000000000000000000000000fa", + "0x00000000000000000000000000000000000000000000000000000000000000fb", + "0x00000000000000000000000000000000000000000000000000000000000000fc", + "0x00000000000000000000000000000000000000000000000000000000000000fd", + "0x00000000000000000000000000000000000000000000000000000000000000fe", + "0x00000000000000000000000000000000000000000000000000000000000000ff", + "0x0000000000000000000000000000000000000000000000000000000000000100", + "0x0000000000000000000000000000000000000000000000000000000000000101", + "0x0000000000000000000000000000000000000000000000000000000000000102", + "0x0000000000000000000000000000000000000000000000000000000000000103", + "0x0000000000000000000000000000000000000000000000000000000000000104", + "0x0000000000000000000000000000000000000000000000000000000000000105", + "0x0000000000000000000000000000000000000000000000000000000000000106", + "0x0000000000000000000000000000000000000000000000000000000000000107", + "0x0000000000000000000000000000000000000000000000000000000000000108", + "0x0000000000000000000000000000000000000000000000000000000000000109", + "0x000000000000000000000000000000000000000000000000000000000000010a", + "0x000000000000000000000000000000000000000000000000000000000000010b", + "0x000000000000000000000000000000000000000000000000000000000000010c", + "0x000000000000000000000000000000000000000000000000000000000000010d", + "0x000000000000000000000000000000000000000000000000000000000000010e", + "0x000000000000000000000000000000000000000000000000000000000000010f", + "0x0000000000000000000000000000000000000000000000000000000000000110", + "0x0000000000000000000000000000000000000000000000000000000000000111", + "0x0000000000000000000000000000000000000000000000000000000000000112", + "0x0000000000000000000000000000000000000000000000000000000000000113", + "0x0000000000000000000000000000000000000000000000000000000000000114", + "0x0000000000000000000000000000000000000000000000000000000000000115", + "0x0000000000000000000000000000000000000000000000000000000000000116", + "0x0000000000000000000000000000000000000000000000000000000000000117", + "0x0000000000000000000000000000000000000000000000000000000000000118", + "0x0000000000000000000000000000000000000000000000000000000000000119", + "0x000000000000000000000000000000000000000000000000000000000000011a", + "0x000000000000000000000000000000000000000000000000000000000000011b", + "0x000000000000000000000000000000000000000000000000000000000000011c", + "0x000000000000000000000000000000000000000000000000000000000000011d", + "0x000000000000000000000000000000000000000000000000000000000000011e", + "0x000000000000000000000000000000000000000000000000000000000000011f", + "0x0000000000000000000000000000000000000000000000000000000000000120", + "0x0000000000000000000000000000000000000000000000000000000000000121", + "0x0000000000000000000000000000000000000000000000000000000000000122", + "0x0000000000000000000000000000000000000000000000000000000000000123", + "0x0000000000000000000000000000000000000000000000000000000000000124", + "0x0000000000000000000000000000000000000000000000000000000000000125", + "0x0000000000000000000000000000000000000000000000000000000000000126", + "0x0000000000000000000000000000000000000000000000000000000000000127", + "0x0000000000000000000000000000000000000000000000000000000000000128", + "0x0000000000000000000000000000000000000000000000000000000000000129", + "0x000000000000000000000000000000000000000000000000000000000000012a", + "0x000000000000000000000000000000000000000000000000000000000000012b", + "0x000000000000000000000000000000000000000000000000000000000000012c", + "0x000000000000000000000000000000000000000000000000000000000000012d", + "0x000000000000000000000000000000000000000000000000000000000000012e", + "0x000000000000000000000000000000000000000000000000000000000000012f", + "0x0000000000000000000000000000000000000000000000000000000000000130", + "0x0000000000000000000000000000000000000000000000000000000000000131", + "0x0000000000000000000000000000000000000000000000000000000000000132", + "0x0000000000000000000000000000000000000000000000000000000000000133", + "0x0000000000000000000000000000000000000000000000000000000000000134", + "0x0000000000000000000000000000000000000000000000000000000000000135", + "0x0000000000000000000000000000000000000000000000000000000000000136", + "0x0000000000000000000000000000000000000000000000000000000000000137", + "0x0000000000000000000000000000000000000000000000000000000000000138", + "0x0000000000000000000000000000000000000000000000000000000000000139", + "0x000000000000000000000000000000000000000000000000000000000000013a", + "0x000000000000000000000000000000000000000000000000000000000000013b", + "0x000000000000000000000000000000000000000000000000000000000000013c", + "0x000000000000000000000000000000000000000000000000000000000000013d", + "0x000000000000000000000000000000000000000000000000000000000000013e", + "0x000000000000000000000000000000000000000000000000000000000000013f", + "0x0000000000000000000000000000000000000000000000000000000000000140", + "0x0000000000000000000000000000000000000000000000000000000000000141", + "0x0000000000000000000000000000000000000000000000000000000000000142", + "0x0000000000000000000000000000000000000000000000000000000000000143", + "0x0000000000000000000000000000000000000000000000000000000000000144", + "0x0000000000000000000000000000000000000000000000000000000000000145", + "0x0000000000000000000000000000000000000000000000000000000000000146", + "0x0000000000000000000000000000000000000000000000000000000000000147", + "0x0000000000000000000000000000000000000000000000000000000000000148", + "0x0000000000000000000000000000000000000000000000000000000000000149", + "0x000000000000000000000000000000000000000000000000000000000000014a", + "0x000000000000000000000000000000000000000000000000000000000000014b", + "0x000000000000000000000000000000000000000000000000000000000000014c", + "0x000000000000000000000000000000000000000000000000000000000000014d", + "0x000000000000000000000000000000000000000000000000000000000000014e", + "0x000000000000000000000000000000000000000000000000000000000000014f", + "0x0000000000000000000000000000000000000000000000000000000000000150", + "0x0000000000000000000000000000000000000000000000000000000000000151", + "0x0000000000000000000000000000000000000000000000000000000000000152", + "0x0000000000000000000000000000000000000000000000000000000000000153", + "0x0000000000000000000000000000000000000000000000000000000000000154", + "0x0000000000000000000000000000000000000000000000000000000000000155", + "0x0000000000000000000000000000000000000000000000000000000000000156", + "0x0000000000000000000000000000000000000000000000000000000000000157", + "0x0000000000000000000000000000000000000000000000000000000000000158", + "0x0000000000000000000000000000000000000000000000000000000000000159", + "0x000000000000000000000000000000000000000000000000000000000000015a", + "0x000000000000000000000000000000000000000000000000000000000000015b", + "0x000000000000000000000000000000000000000000000000000000000000015c", + "0x000000000000000000000000000000000000000000000000000000000000015d", + "0x000000000000000000000000000000000000000000000000000000000000015e", + "0x000000000000000000000000000000000000000000000000000000000000015f", + "0x0000000000000000000000000000000000000000000000000000000000000160", + "0x0000000000000000000000000000000000000000000000000000000000000161", + "0x0000000000000000000000000000000000000000000000000000000000000162", + "0x0000000000000000000000000000000000000000000000000000000000000163", + "0x0000000000000000000000000000000000000000000000000000000000000164", + "0x0000000000000000000000000000000000000000000000000000000000000165", + "0x0000000000000000000000000000000000000000000000000000000000000166", + "0x0000000000000000000000000000000000000000000000000000000000000167", + "0x0000000000000000000000000000000000000000000000000000000000000168", + "0x0000000000000000000000000000000000000000000000000000000000000169", + "0x000000000000000000000000000000000000000000000000000000000000016a", + "0x000000000000000000000000000000000000000000000000000000000000016b", + "0x000000000000000000000000000000000000000000000000000000000000016c", + "0x000000000000000000000000000000000000000000000000000000000000016d", + "0x000000000000000000000000000000000000000000000000000000000000016e", + "0x000000000000000000000000000000000000000000000000000000000000016f", + "0x0000000000000000000000000000000000000000000000000000000000000170", + "0x0000000000000000000000000000000000000000000000000000000000000171", + "0x0000000000000000000000000000000000000000000000000000000000000172", + "0x0000000000000000000000000000000000000000000000000000000000000173", + "0x0000000000000000000000000000000000000000000000000000000000000174", + "0x0000000000000000000000000000000000000000000000000000000000000175", + "0x0000000000000000000000000000000000000000000000000000000000000176", + "0x0000000000000000000000000000000000000000000000000000000000000177", + "0x0000000000000000000000000000000000000000000000000000000000000178", + "0x0000000000000000000000000000000000000000000000000000000000000179", + "0x000000000000000000000000000000000000000000000000000000000000017a", + "0x000000000000000000000000000000000000000000000000000000000000017b", + "0x000000000000000000000000000000000000000000000000000000000000017c", + "0x000000000000000000000000000000000000000000000000000000000000017d", + "0x000000000000000000000000000000000000000000000000000000000000017e", + "0x000000000000000000000000000000000000000000000000000000000000017f", + "0x0000000000000000000000000000000000000000000000000000000000000180", + "0x0000000000000000000000000000000000000000000000000000000000000181", + "0x0000000000000000000000000000000000000000000000000000000000000182", + "0x0000000000000000000000000000000000000000000000000000000000000183", + "0x0000000000000000000000000000000000000000000000000000000000000184", + "0x0000000000000000000000000000000000000000000000000000000000000185", + "0x0000000000000000000000000000000000000000000000000000000000000186", + "0x0000000000000000000000000000000000000000000000000000000000000187", + "0x0000000000000000000000000000000000000000000000000000000000000188", + "0x0000000000000000000000000000000000000000000000000000000000000189", + "0x000000000000000000000000000000000000000000000000000000000000018a", + "0x000000000000000000000000000000000000000000000000000000000000018b", + "0x000000000000000000000000000000000000000000000000000000000000018c", + "0x000000000000000000000000000000000000000000000000000000000000018d", + "0x000000000000000000000000000000000000000000000000000000000000018e", + "0x000000000000000000000000000000000000000000000000000000000000018f", + "0x0000000000000000000000000000000000000000000000000000000000000190", + "0x0000000000000000000000000000000000000000000000000000000000000191", + "0x0000000000000000000000000000000000000000000000000000000000000192", + "0x0000000000000000000000000000000000000000000000000000000000000193", + "0x0000000000000000000000000000000000000000000000000000000000000194", + "0x0000000000000000000000000000000000000000000000000000000000000195", + "0x0000000000000000000000000000000000000000000000000000000000000196", + "0x0000000000000000000000000000000000000000000000000000000000000197", + "0x0000000000000000000000000000000000000000000000000000000000000198", + "0x0000000000000000000000000000000000000000000000000000000000000199", + "0x000000000000000000000000000000000000000000000000000000000000019a", + "0x000000000000000000000000000000000000000000000000000000000000019b", + "0x000000000000000000000000000000000000000000000000000000000000019c", + "0x000000000000000000000000000000000000000000000000000000000000019d", + "0x000000000000000000000000000000000000000000000000000000000000019e", + "0x000000000000000000000000000000000000000000000000000000000000019f", + "0x00000000000000000000000000000000000000000000000000000000000001a0", + "0x00000000000000000000000000000000000000000000000000000000000001a1", + "0x00000000000000000000000000000000000000000000000000000000000001a2", + "0x00000000000000000000000000000000000000000000000000000000000001a3", + "0x00000000000000000000000000000000000000000000000000000000000001a4", + "0x00000000000000000000000000000000000000000000000000000000000001a5", + "0x00000000000000000000000000000000000000000000000000000000000001a6", + "0x00000000000000000000000000000000000000000000000000000000000001a7", + "0x00000000000000000000000000000000000000000000000000000000000001a8", + "0x00000000000000000000000000000000000000000000000000000000000001a9", + "0x00000000000000000000000000000000000000000000000000000000000001aa", + "0x00000000000000000000000000000000000000000000000000000000000001ab", + "0x00000000000000000000000000000000000000000000000000000000000001ac", + "0x00000000000000000000000000000000000000000000000000000000000001ad", + "0x00000000000000000000000000000000000000000000000000000000000001ae", + "0x00000000000000000000000000000000000000000000000000000000000001af", + "0x00000000000000000000000000000000000000000000000000000000000001b0", + "0x00000000000000000000000000000000000000000000000000000000000001b1", + "0x00000000000000000000000000000000000000000000000000000000000001b2", + "0x00000000000000000000000000000000000000000000000000000000000001b3", + "0x00000000000000000000000000000000000000000000000000000000000001b4", + "0x00000000000000000000000000000000000000000000000000000000000001b5", + "0x00000000000000000000000000000000000000000000000000000000000001b6", + "0x00000000000000000000000000000000000000000000000000000000000001b7", + "0x00000000000000000000000000000000000000000000000000000000000001b8", + "0x00000000000000000000000000000000000000000000000000000000000001b9", + "0x00000000000000000000000000000000000000000000000000000000000001ba", + "0x00000000000000000000000000000000000000000000000000000000000001bb", + "0x00000000000000000000000000000000000000000000000000000000000001bc", + "0x00000000000000000000000000000000000000000000000000000000000001bd", + "0x00000000000000000000000000000000000000000000000000000000000001be", + "0x00000000000000000000000000000000000000000000000000000000000001bf", + "0x00000000000000000000000000000000000000000000000000000000000001c0", + "0x00000000000000000000000000000000000000000000000000000000000001c1", + "0x00000000000000000000000000000000000000000000000000000000000001c2", + "0x00000000000000000000000000000000000000000000000000000000000001c3", + "0x00000000000000000000000000000000000000000000000000000000000001c4", + "0x00000000000000000000000000000000000000000000000000000000000001c5", + "0x00000000000000000000000000000000000000000000000000000000000001c6", + "0x00000000000000000000000000000000000000000000000000000000000001c7", + "0x00000000000000000000000000000000000000000000000000000000000001c8", + "0x00000000000000000000000000000000000000000000000000000000000001c9", + "0x00000000000000000000000000000000000000000000000000000000000001ca", + "0x00000000000000000000000000000000000000000000000000000000000001cb", + "0x00000000000000000000000000000000000000000000000000000000000001cc", + "0x00000000000000000000000000000000000000000000000000000000000001cd", + "0x00000000000000000000000000000000000000000000000000000000000001ce", + "0x00000000000000000000000000000000000000000000000000000000000001cf" ] [inputs.tube_data.vk_data] -vk_index = "0x0000000000000000000000000000000000000000000000000000000000000006" +vk_index = "0x0000000000000000000000000000000000000000000000000000000000000001" vk_path = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x17ae608923d921cec098fa1fb04e11c0607e26cc76eeb692545e510f0a4a65cb", - "0x15ecc428fab93e00874151f32575661782fcb6438d7cf5c797dad068e4eed590", - "0x1aec8b738adc9fc707aad5d7cdc734041ed9049eff616fb22619b58c50ea26e1", - "0x022f5ac8ff86489f5492d016d0ac69cd39e93b518da3f5a15a8c3177b92bc008", + "0x1bac5dbe94e5f6fc3f2438c62bf353f447f595aabb7415e3f6777d02259c8f6b", + "0x0c33ab6b1652829a9204dcabd2c6570028acf35ec4ceb6e9723ed19e1452a2a0", + "0x281a8c9b2c044cffa01e5f56858d1d71aa11c4b28a1e90407565ca646ea0ee5d", + "0x25e71fd64ecaa6b98ef492c6d93da8164a259284041220c258edb94fe47706ab", + "0x1967335d7b185023afd52d8f7f40be4ced0d80ba63d4dce2de3e26bfe772e394", "0x122cddd247164987e2287f8ce124bea7a68052e85bffebe2fc6cd71718689069" ] [inputs.tube_data.vk_data.vk] key = [ - "0x035d314043c7a9c219100ea907fe6c3415f229e13cff04e861b1c1dd1c635ea1", - "0x0d71a0eb45033b16aad11c6c9443d862adde2f23c37f2184f496253d7777aae4", - "0x2ed90c62595a3a2627541d83dd357651b8c65f8b3361a13fab48dabd95be9392", - "0x2e895f96bce45342b054f1bab8e5ff26f8cf894861671af72a64beffa197c327", - "0x18cf7e10375ac10598468a94f28e39888ec504bff802a28421e102e952135161", - "0x0b60414b67bc2a883687d697740f2be61045eb82aaa47bd3cff34a0b26be5672", - "0x0a8eacca32a6003f443d5f7e05edddc65a84c481d5655837855edf33e146203c", - "0x2596241beb3e6d36715ae168df3238ccca6bde805021dff4c4dff95823c7a04d", - "0x21c282463758459a0c56da9225a3bdf7a6b4841b2e1c972dfdcadab87940cfea", - "0x20fb180cb21941b330111ca788a184587a60e2c37981e55109f630bb3c48c0e7", - "0x0af0d011c180254a3283ba961883dc6aaadcd54f0fa91d7e44f851043d3616d5", - "0x30087199788546ca80215c87bd680d29af676027d8c8704498e2d68f80ea8642", - "0x2710e2b3b4fbf467e56458e305b7350c554b1663a8898a440ef408ac5fc608cc", - "0x1136c0409ccbc18f6dbb1bfdd486855cede9290091490ddcc8e5616dad7a3693", - "0x27a124b84b596a0fe947b59b7ebf7021788d96284b23a2fdfb10ccc1a0395925", - "0x2c3e291ca055b8d1b9276da71a30f74075bca1638e2a7762c75b0db1e784468e", - "0x118a00c2bddee1d686b264cf990859ff5ff72b4fb585471c056c3a109fcc0e00", - "0x2cd55cec0171fae178558d1f8a680d87de668b397cff08c2876a937c91832b87", - "0x02b8c3a9b693b846537675f230f3c9a210aecdbee70e9ba577b6b1be81bc78c0", - "0x2d341ff5ba747514b9b2e02d0210320f0f465b115e02249c6f0c46cec721a989", - "0x085e8bd0923a6e98fc1fe81ff5ae5b0500bb9d24110dcfbc6c1cca3c63fb5807", - "0x225a73251b122b088d8fdf600bb673a7920c1a646bd5254819dd272eb888bce4", - "0x07f537feddd6cdae76b2ad4e9d2562bf18615425a1d92f8517a47c7d7f7c6d92", - "0x2425ff4ffa3378ace929527554f9a14fd77998e1fb657bcc876efb443ff995e5", - "0x26f9b6da9b38d5a1f0f9c0ad44c1a4175b47f029b67046adf4060454798c5065", - "0x0b7bc8398c03961ea1dcfcca02e2de3cb08d68de9497a8208e05f6ddd0d7e5b6", - "0x0b15ca8f56f6aa62a014cb8e047f8f842bebdba885d59e8ff52e7acc6fcec22d", - "0x276c77e1a70845e22ef4854e787ff3dfc9daa1bf91ccc2a1a28d5e60c0bc2201", - "0x1f3e939b69d3a249816c52b40fdfae1bd9a80eed493a7a0f4c43f166d00414e6", - "0x23e14cb3fd7663cb019b5e7437cfbe947125cc9ad869c7d754d8c3d7e98617fa", - "0x1b0419e670e3565c8530498c59607d1f3d92b418aaaa9a7b2832cc28a8d3c20d", - "0x25ef95dad5094a85234ab75b9b71e8de744f501c86aa043e7db0efa1b72e9944", - "0x00f076f8ee0243c6e08f0b3b6cd17999af23b8ec03ae1fc748ddcb4fbfcfc29c", - "0x0101b797f411e945087758545ea8ee90a99225344c037bee1a7222d9e81ccfb6", - "0x2299d17e04a2d7707e55622f852a497df88e1c12dbe82ba42a2c531f9de61392", - "0x279a667cbba214fd8063f9e36931491cba6be6c76e68e1533100549320d958bb", - "0x002ba1546d37f9884534eba472a444ac45aae9d40961b07993c15ab199c490c9", - "0x014c6c0b6621a5cf53dddeffae7f43b07c3e12c1af128d93757a9a7bd89b8742", - "0x2b32d1d1c9c7c09edd40a0f759e645aa33734d2d054d794042ea86d4db7636da", - "0x2c045623f11c050ada30a51b3d206043cc0543fc7e189b0e12bc3fcfe91c48c5", - "0x1bd28db3b44899cf73bdceef939a0c0aa9ad318dd86303e919a7dd651be5e51a", - "0x2b4e34f47f8b6aa6e4caf93ae46b2d2166fa25a2df0dc60cd7b49dffded4847f", - "0x21fc4be5e2ef5a0924551c62a459d57a2c8ba7711aae79f7e86d9722e2153b8d", - "0x0354e6e1e194e0270c9ca3c983edac795c6c03165a4b8425cf08e4a0b75c7867", - "0x0d7823faf06e49da5c4a5f54df203f96469c204eac0a33839724271a44bc8fb9", - "0x1a59a0c2dd6f05153e23f85f4788ad981f5ee445be5aa9488637f86957d198c6", - "0x01e0130e8b8d61fecb1cf727b037bc2e0b27ee0e1c6183624217345d92334d29", - "0x17c03e557f66c11c6e6d3ff75d505c68b3f5ca6ccd2374e3690f292df8954bf8", - "0x1a94cdf0e16b59e0e561f3fc65522aa53af2b19dab2c24a99cc55891e0344d8f", - "0x039c45d2dbbb53ede03aec478ddb1e85e6525f6bfc7fda43207b15779d209e99", - "0x1cc578ce356661108627f256bab536b0c27428e6e24dd4d82d2d44508582adae", - "0x2e9fabf1ac6db7277f3d598936d2353b9d535be647011f0b15298f0b2c50ff54", - "0x045c2199704c95f459ec0752c6dc74d0b0352b165235fc008ca5162a2d199fb6", - "0x0c2e0337f2c18f07573054d022af7d83c77c715c2a98e8f0c5bd30b70db1e5ef", - "0x12c9684367f1aaaa3d92aa9781cdfc24531a811f3143a40672b9e294a4407e81", - "0x193d5915414c541224de912d548822594a5c628d18b6f04dc1c1de68827ac34f", - "0x056b41aef4d28c35ec6c3e431c2de0c84cde62ccf6007fd4dae2b7a86c426c2b", - "0x1ee79ec4ca6ba2505184b2393feb598771132443d3fdc60c8e9f7b4be75542ae", - "0x04321c37a4450f8187db29fd02610133900161bb05216b293f34f117360b48e6", - "0x17be71e775d4edd2eaa400039e8f1c460fb7d38a9b9669f220ce61ff0d203738", - "0x015d84d812ac564e998df7f883ee4e6c95d996663b3da6575af03dc186f6b138", - "0x21d87ac2f7509e3ce38472b80d765deec791b36bc8d6eab948a35aa8c1567fe1", - "0x198578eb9d8d15bc0d3f19fa3d3ff6eba26ee99ef71c732a6c6ddef5e803109c", - "0x0c704bc85df4b79e252157763d615e50c5e5d7e615c6b527fd72c37eb1bfed26", - "0x19130a53c68555f8c9dc4070c41ca7162dd3ef952ac599697faa275edaf0e8a1", - "0x0e07899018f06cd26c3876373d2bf8605a93686e2e0ce95abe327613397b39cd", - "0x0f16ce416bf218131359598731051a30baa7f01e4bad2efca4cbf7fac4314274", - "0x0b3ae834449a42b5b4a97ff486ec7c764c3c37c7a6270ef672487e503812d701", - "0x03e4e7db04d42c47704b5b717e0153b7d27e24455ad53e47175b572e5e5284b7", - "0x13f142d255c744588ab7d0b4614f74404389b74e90d62c799dc1e2baf6d5af74", - "0x04f8a1d0157bd0e5755a497ae7cce92d90bf3507314948e5c191a4d6acad4243", - "0x0064465c014fff057b0840d60fcbc6eb6b2fbc51725c43ffd51d70228a9cfbf4", - "0x268852d8d37b140e946b0d2c7dd6c718cd8762551cf2ea1da96bfd826729c5f7", - "0x1fbb0ef83f85cc8e22d6fc20cf18f310bffbf0c6cb46d71144cafcb7ab61e145", - "0x27f945285ada3bec9cc33b5b3216610ccb6b65fde037d2900c9970595495284f", - "0x2157b89024e44c23cb0350e5a83e10ba512edabc1950db81548411e2b833c7df", - "0x1b540d73e91d13784efc2d8415403fc0792f4365294232cb4090e7eef92472a6", - "0x25629f5a9330218b1c06f913a5a68ca87858a85016806a3ab36c9a5a37f5467a", - "0x22a7ba8a2f5bea98c18f1c54a0ba422bd3e7e10d404cb34a6f1aaeda25cbf756", - "0x27640f063dc54ca842046d973c637450c6d39e746815d0c1797abfd1f0e39b68", - "0x152e1adc421faa607a706e9c8770838d216cec9c6cee419d155299fcc9fd645b", - "0x2886db938a9468c82aef923b457353e80f1d2ea76757a91db0b55f3fd82df1f0", - "0x0d106c8253f144c9eef6c6169f01bd006e068679c1d24dc1f04d5f5ef4e6b475", - "0x214a2bc3358e06d89f2b3d0adfedf852143a284218db1a6bd568d931ae02a69c", - "0x26a9e1e29822e55b190b5e3ebe4ff7cb7e91cbf35cb536aeea9c6a5fd55332d4", - "0x0dd91db6ad7d53b8a7c1a414edc1903b963e70c5b562548fb6a170379aa24364", - "0x263a5ecd76241650f812d8daaaf49ae84d57d8d82904b92b9f0dcabcc1b68dea", - "0x0e2da7765af1614da6ff39fc277019f967c72d664d6c412f585384248c48e13b", - "0x17686b22a5899d43837653001ae5a612f40eba06c43e6a5f713f019ed9573c6a", - "0x1a65018e5a280012af82a120dac42a6ff4b499d387d0a52aa2d6cb180c20e1cc", - "0x20117d2dfda829178c17574421027b824488c68cf01d4c79271836b5d29396b6", - "0x287aed49666641b287cb5772cb88f48ea81d8212f14a5ded23fce8223d37131d", - "0x0a5410b059e1f5ed765f9767cb18b8d5facc38b20b6d722b1239035fc02016a3", - "0x2d209994719a198a6a6174f4a82706bb36a729ff8c657702d5d3de286e99fb73", - "0x2bb2b8b8ee188282657c41a6d0c75e381f09681d4603b353c5d98fb69fa9cbe3", - "0x1034489ffa325aaea55363c723134aec64d1acd37c7c90a3c11ebd9212dcd19a", - "0x22cf995e308b01bed8b8f66d45a26d98afb8a9d4788e556a65b45d5430012d95", - "0x06fce95813c5618d30388a11cdc30d0589b3f313e7c3d1625da864fd02a8cc03", - "0x0e6e19b84180980aca0f5d0a4b839c11f7c70268ad6b8d905290966cb5c870e7", - "0x13a2c5c296bc0c8eaa348d7ee9f2b4a148c6a57a2cbb693dd42c14f9db544d75", - "0x3016a6cbb67c25937d68e49df14ad65e5aa0dac03d14ffba72ee0c6be90d3d56", - "0x0e9a61c10ee0a1631d419a06161bd31a27e8c974ccf5f272e294594774469136", - "0x2d4cc14cd605f8a05e16c2e00a3ecffd7ba841bc20b1c893bac5d53ce88fca08", - "0x22aa7b1fc509dae330e97652817dda6516652d0972edd5029ab800e6c71bfb0a", - "0x0c05f1cbfbd5096d7258f3f8d190cc9f1cda211b5d2ceae9a2b1b721a9cb3c3d", - "0x283300f165fd4d3ea5f0910d3863ca1ad4cb4de77ea82df8a671924cd39de229", - "0x00bc3690f910bc78a0244edd97b359209b0ced33b19b2e0f7d73da4e6e4ea429", - "0x2ee5264759cdd3f00ab3aa7cc3a90dd57e49cb6b70a6d6494899c870b0f44f52", - "0x081462a8fe5e965d7d129b708273f1f2d2668c0d20ef2f3e6544dd34e0740493", - "0x13265e8ab5a18d5e1009333fe3ca6639f26f1296943ba5169b51b5e92af0c37b", - "0x2e4072b97eef3dc04211034fbc3043c1a042655e968df5b50312ecca11cfcda3", - "0x02dce08c791cb00ddefecfff0bde45500615c968ff62f6490078d908cd9c5dc7", - "0x125c9205b03611753474d84af8850f23967c2deefa8e1dcf9a49797f9c67959e", - "0x1ed080cc9cf2e7dc0f6690259f937e34276172fde1dc434c3a5020b57e1539e7", - "0x1d187304d9a22e3d8d06568a2c4b5d803b2972b8ca42ecd69574ec58ba2adbe1", - "0x29e6ae6c4f363013e550309eba0388f50e53bdd26a2bcea095f9ac9dc7f973fa", - "0x0db6f57a8e2eafee78b60b0678326fd08637ef641a11a2cd790ba4f7e5aa361e", - "0x2574c74d63f5c7823a8a2573de279d3f1d330d912beb341c75238c6ac02575ba", - "0x0ba68be9b2a7a40b3c778730551536d40fe309754165d70e00b55a8f7cd783c2", - "0x0859c00b94018f646604532e2faf0846bd947c7ce8d9d7322c3711fd1e12661c", - "0x18cf1a6d1e4d01329adf5468b098e237deef50afafa8fcd492ca395640132513", - "0x05aca4724b63d539a605c18a5ac57b64a9ab0c630c7c23746253bb04bbe57ca3", - "0x08b6207b1e4b7b409abc841932fef44026a3f1b2d6237d53eb311011034c214d", - "0x0a97a44e474d741fb6d14ef2b658aa41fef3d27dd7d125fb29e48f3669fe1b4c", - "0x1b4ec2044a7823f29f53c6be63365bfef05868e00e8bdcf38a24fa4778c94fcf", - "0x186e474095bad762c6e0437b8c4a8743e137d4219a14cf29dcdd242255aca184", - "0x1655182baf5937ae20bacf0dfe207ec907b21cdd238aed2f630581cd6968a8a0", - "0x2e15b7fff91bc2e1cc371850480c451bbf22e10f08d33d10be55df9bc06471a3" + "0x0000000000000000000000000000000000000000000000000000000000100000", + "0x00000000000000000000000000000000000000000000000000000000000003ce", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x00000000000000000000000000000000000000000000000000000000000003be", + "0x00000000000000000000000000000000000000000000000000000000000003bf", + "0x00000000000000000000000000000000000000000000000000000000000003c0", + "0x00000000000000000000000000000000000000000000000000000000000003c1", + "0x00000000000000000000000000000000000000000000000000000000000003c2", + "0x00000000000000000000000000000000000000000000000000000000000003c3", + "0x00000000000000000000000000000000000000000000000000000000000003c4", + "0x00000000000000000000000000000000000000000000000000000000000003c5", + "0x00000000000000000000000000000000000000000000000000000000000003c6", + "0x00000000000000000000000000000000000000000000000000000000000003c7", + "0x00000000000000000000000000000000000000000000000000000000000003c8", + "0x00000000000000000000000000000000000000000000000000000000000003c9", + "0x00000000000000000000000000000000000000000000000000000000000003ca", + "0x00000000000000000000000000000000000000000000000000000000000003cb", + "0x00000000000000000000000000000000000000000000000000000000000003cc", + "0x00000000000000000000000000000000000000000000000000000000000003cd", + "0x000000000000000000000000000000b01dcdd818b763ddcc3196110183a863ad", + "0x000000000000000000000000000000000010b97a764d80459e3ea66267e0ec36", + "0x0000000000000000000000000000008c61789e067608f101e4ad14836c35dd63", + "0x0000000000000000000000000000000000227f916198d023441650b4a171c625", + "0x000000000000000000000000000000a2c75ff34d33e05c2c38d10f31ca1ad0c3", + "0x00000000000000000000000000000000001469af5b6c7838ca13fef70f2d222d", + "0x000000000000000000000000000000baadbbfd0cd9fdb166aa4e338c754b11fa", + "0x000000000000000000000000000000000010763d0ffe3ae2563345dca1cc04f3", + "0x00000000000000000000000000000065871376c3131bc6ff1aba50b6a258367e", + "0x000000000000000000000000000000000008b7fffd65adaa37074ecee1e82c6b", + "0x000000000000000000000000000000eb8b40d304da7733050a325c3deb27c652", + "0x0000000000000000000000000000000000004de03f8cc6ebbab9c70b77d0bb25", + "0x00000000000000000000000000000098b5b1ecaf37e67200ee9edda87c3e7335", + "0x00000000000000000000000000000000002386a233bf3ae8bd12a3fb57674b5a", + "0x000000000000000000000000000000cb463c2eba7cf854a63069062aa2a62588", + "0x000000000000000000000000000000000010ff82136ecdcd03ed27a9e8f2740a", + "0x000000000000000000000000000000cc627c788b4e0dd3fb9e81b62d265b5a1e", + "0x00000000000000000000000000000000001af01d596c61d5a3b920612c9085ba", + "0x00000000000000000000000000000096dc86a247fbbd8fd491bfd38f9bfc4142", + "0x000000000000000000000000000000000011d5502d5f9cc7ada270a21bc9fea8", + "0x0000000000000000000000000000004d8b49b50e2b236f193e973eafda523e38", + "0x000000000000000000000000000000000029e00babe75c3ec5d10b71a513b01b", + "0x0000000000000000000000000000001ca9a40123edf4279d59f9ef93d1397432", + "0x000000000000000000000000000000000024847cd54688ae0389adc483207897", + "0x000000000000000000000000000000d031997148e9e5d9022fe85126410f1428", + "0x0000000000000000000000000000000000028aef4a4f12d9d720d12385338b61", + "0x0000000000000000000000000000006021bd4e397a73cf5e07ac343e6e58e923", + "0x0000000000000000000000000000000000203ea6ba299d820149e54a5fb96bab", + "0x00000000000000000000000000000012649851fa6159e2451485d8ce7217cc5b", + "0x00000000000000000000000000000000000e7ea0fe745b3ad0375ae52079f4d4", + "0x00000000000000000000000000000058fd78cbf8405da74ffac0a2165eda05a7", + "0x000000000000000000000000000000000022ba81404ecca56aab20f89eead81e", + "0x000000000000000000000000000000580b0dfe44ea39b59123690be70554d96f", + "0x00000000000000000000000000000000001ff008a106b062de32007e3719f210", + "0x0000000000000000000000000000005f4201182fe261eae2baa6152aa24d649e", + "0x00000000000000000000000000000000001ed1f024199f1541085a1c3d642c12", + "0x0000000000000000000000000000003d116b22e867bf7b3fa9e5521ec58ad780", + "0x00000000000000000000000000000000001c164e2fa54d93ecb0bb1179e406a5", + "0x000000000000000000000000000000bfa5aac725260e40cd531cee9bfd77b2bb", + "0x0000000000000000000000000000000000064f96893967ece029e28c9efd861b", + "0x000000000000000000000000000000c58e8afe82ddc1a87c3dde063cb807c6e5", + "0x00000000000000000000000000000000001252c9710709ad673d407fde40a8bc", + "0x000000000000000000000000000000e1f1a0e392f383423fb8e32b15df04e55e", + "0x00000000000000000000000000000000001b5e13b229f319c3bb56717fc6477a", + "0x000000000000000000000000000000508999c14ea9e5e289dffc4f1ce703ffef", + "0x000000000000000000000000000000000010315af4ce040653c21dd54ac79254", + "0x000000000000000000000000000000fbc8d0c00c5d9df5afd861045d1903fda1", + "0x0000000000000000000000000000000000225de32517a409ba15496cd71d8d0f", + "0x000000000000000000000000000000c63969628c3acb2027a741f317240ccec8", + "0x00000000000000000000000000000000002062a1ff9ff1a28d73a6103e6bce6e", + "0x0000000000000000000000000000005cd3c19234d72722e75312aab9c4a407dc", + "0x00000000000000000000000000000000000b08752fc23489958af833ac7ee92a", + "0x0000000000000000000000000000000bfb29ccebc4a214fa3ddbec2146241dbe", + "0x00000000000000000000000000000000000c9aae439752005c92fe04c18b5ec7", + "0x0000000000000000000000000000007884b5096d6f3013fb4820dfa036d30606", + "0x0000000000000000000000000000000000027e338f01ad196b0796ab610e100f", + "0x000000000000000000000000000000406aad63a9adba49deffe530927f701ec5", + "0x00000000000000000000000000000000001b5de9a425ec1f3d7e73b2c6831fea", + "0x000000000000000000000000000000926608961986848d4220f4875316e5f43a", + "0x00000000000000000000000000000000000444cf15b0338d65c8217b4cc732e7", + "0x0000000000000000000000000000007fced189975af80b95ef39c49cd997d4ed", + "0x00000000000000000000000000000000002ef7c1afef3dd70f5e42428207fdb2", + "0x000000000000000000000000000000e363eced2728878262866034dc93ca7fa5", + "0x00000000000000000000000000000000000554cc00deacbb487ae19c82ba133c", + "0x0000000000000000000000000000003ca6cadeacebd46bbb63fdd13153a3e5e7", + "0x000000000000000000000000000000000000466f33f3446469b690403adeb4ce", + "0x0000000000000000000000000000009092fc698f08280c87f30de9d5e07af47d", + "0x000000000000000000000000000000000014e7f3c4745fbc3c1f3be44f88589e", + "0x0000000000000000000000000000005eeb50188b2c9c0a6477ac2f528abab6c0", + "0x00000000000000000000000000000000000f617b59f7e11dc456b9c588203145", + "0x000000000000000000000000000000363328b414ac171f809b938ad6f32f8d5c", + "0x00000000000000000000000000000000000418c1e289821bbcdcb347244e16c4", + "0x0000000000000000000000000000005932073632f82445bb5dcc9615e9ca0445", + "0x00000000000000000000000000000000001de0c9779664b0de7084b26b602cbb", + "0x000000000000000000000000000000ee7cf83eb7b2fdb0f9007ee18d1be0c4c3", + "0x00000000000000000000000000000000002f7698d8b16391e521ff45d438bcca", + "0x000000000000000000000000000000a07dc87bae19be6e5b8b4c34b1113741e6", + "0x0000000000000000000000000000000000008b68fc95ddbf53703df928289dbf", + "0x00000000000000000000000000000086520d3ff63025666b56669a9fc2210d1b", + "0x00000000000000000000000000000000002017458a1b67a1603bdb18fb79e9d7", + "0x000000000000000000000000000000fd4db5556deebccf57f38ac9e2abda9b45", + "0x000000000000000000000000000000000026499030b0d739964d1e2e58b7bcc2", + "0x0000000000000000000000000000001eebba2c4c3142468f0e5af8665863c9a5", + "0x00000000000000000000000000000000000d5bf766f3c6153003528b7a498188", + "0x0000000000000000000000000000003acc6def4164d878b56e5b2fe2bfa52199", + "0x000000000000000000000000000000000022cf69996ae471056bcae7b3c38cbc", + "0x000000000000000000000000000000239623839c51be6ffe83c77c80b8f94ad5", + "0x0000000000000000000000000000000000075cc2c3c9e3079bec86764aa5cfd0", + "0x0000000000000000000000000000008c88b485298919bf7164440942d6f6c5ad", + "0x00000000000000000000000000000000000c5dd6e29eac9076cc2f5995fcf27c", + "0x0000000000000000000000000000005b7ac436f888999a48f79ef212e6483f14", + "0x000000000000000000000000000000000009fc56f5a2122d1ed9353860ba68ab", + "0x000000000000000000000000000000dace4e23bf41b55e3098bd8e82e74b1c1e", + "0x00000000000000000000000000000000000883499c226658d83b4d0cc7b08c15", + "0x0000000000000000000000000000005c0373d8b286bf727301571a54e1636e77", + "0x00000000000000000000000000000000001f268c0945bdea494fbfc52e8581c1", + "0x000000000000000000000000000000c6b7e770c1e62e2504ce986f21324ff939", + "0x000000000000000000000000000000000001b92f92042ae2556e31cf72cc3990", + "0x0000000000000000000000000000007007220c2c02f4ec2c1c5fada9056b8c37", + "0x00000000000000000000000000000000003038ffe6284e174445a0eb11a63e0b", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000006157c1b0c396d9b2499334bd0eeecc05b1", + "0x0000000000000000000000000000000000116a8f041212e254f46df65af74a8e", + "0x000000000000000000000000000000bcb599d3a4a974f4a27a331cf552a4a444", + "0x00000000000000000000000000000000000818aec4979cfbad995d06cd63c7cb" ] - hash = "0x17d812b12918d56dee3fe7d76b4b6a696ae8ca3f7daa7327b2fdf80b85523cf5" + hash = "0x25788ad2f257dc7828abc3b3b93cd571a106a13f64ad6bfe0f715238a9593318" [inputs.start.note_hash_tree] -root = "0x05cfddd64cd8186419dffde2648072f03e8e03b09f357ea09d6459d77a6ce474" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000500" +root = "0x266514a4f987058cb2deb71c37e845df4f7f85ab2a23f208dd98cf7eeeb7cbc4" +next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000003c0" [inputs.start.nullifier_tree] -root = "0x012525b5182961169eeda08b1acc8a4ef16de30010dd848ec7df8112d3aaed09" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000580" +root = "0x0b3cd059f3a14d1fc149e845404ee3733e58010456792a3f61c3803f4ddd1248" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000440" [inputs.start.public_data_tree] -root = "0x0a1da5164b661cfe6ee6fb367dff660550d079aaa099c11d55c20c680ab56259" +root = "0x28b5d86e557e528de4452115c3b6ca2b8075465411e73f310c843fa8d2b5faad" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000097" +[inputs.start_sponge_blob] +fields = "0x0000000000000000000000000000000000000000000000000000000000000009" +expected_fields = "0x0000000000000000000000000000000000000000000000000000000000000009" + + [inputs.start_sponge_blob.sponge] + cache = [ + "0x0000000000000000000000000000000000000000000000000000000000002328", + "0x0d38d167da0ccd3ba447ce36953062d88783b02447d5af2bd09519bcd2a928f4", + "0x00000000000000000000000000000000000000000000000000000000000003e8" +] + state = [ + "0x05dc8cfb21681a19bd8e67518d2b9e22d31ba0380ecbb3653e00daa9dabe7e56", + "0x0ebafbb8e482cfd14bfe06b18ba8ef29493892e5c55e9b5ed16ede0e4cfe7562", + "0x22fa4ea0b8f5633a4701f717c52914a96bc5be0e69d2e84d86b4a1a717dfac6d", + "0x0991732e4b69f8065c9beb388f953e963baab29beb67084560f6116c9fdec042" +] + cache_size = "0x0000000000000000000000000000000000000000000000000000000000000003" + squeeze_mode = false + [inputs.state_diff_hints] sorted_nullifiers = [ - "0x20eaf751fa6b907d5b1f2e25d4aef070054deca778c98f376a9909ea3cae6f6c", - "0x1ade9378e54152c36805cbc9396ae7a73a0847a7dd81aac687a29f7952c1dc6d", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -2064,8 +2083,8 @@ sorted_nullifiers = [ "0x0000000000000000000000000000000000000000000000000000000000000000" ] sorted_nullifier_indexes = [ - "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000003", "0x0000000000000000000000000000000000000000000000000000000000000004", @@ -2131,10 +2150,10 @@ sorted_nullifier_indexes = [ ] note_hash_subtree_sibling_path = [ "0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76", - "0x2d78ed82f93b61ba718b17c2dfe5b52375b4d37cbbed6f1fc98b47614b0cf21b", - "0x0edd883e5ef33a282866c8e2e4ab845b8f990b4dbe778dd036214ce8c3f7272d", - "0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972", - "0x28995beea466e773a0e4e61d4711d19f9e05d5f637965492495358d21779f6c9", + "0x0af87d98c040dfadabf7ef27165e88560ef39d0c923b6534466a98f672ed8c88", + "0x246218a1d11c91124c20e3394600ad16e5036e2b84aa6afcc8cf3422fd29b02c", + "0x1196b37a9f45bda9848dd661f2df18622a6b4efed01b1cb9eae812f3bf0bc0de", + "0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686", "0x0f320b0703439a8114f81593de99cd0b8f3b9bf854601abb5b2ea0e8a3dda4a7", "0x0d07f6e7a8a0e9199d6d92801fff867002ff5b4808962f9da2ba5ce1bdd26a73", "0x1c4954081e324939350febc2b918a293ebcdaead01be95ec02fcbe8d2c1635d1", @@ -2166,11 +2185,11 @@ note_hash_subtree_sibling_path = [ "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" ] nullifier_subtree_sibling_path = [ - "0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76", - "0x207d6de9d48a8ae25b8e3959af0eb9dc6d3c1d5a4a95b2a872634f6a22679fad", - "0x2dd44164f2ccf95803bf1ddcc4522fc2c50ada8a4d4c71962bfb483dd8f7f66e", + "0x073e1f0a657436e06a1f70e48c6ebba9ec9c868f289dd2f36eb04fe3f5b849d8", + "0x2d78ed82f93b61ba718b17c2dfe5b52375b4d37cbbed6f1fc98b47614b0cf21b", + "0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1", "0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972", - "0x2ae37e47b6d1de681073a2cb2b2f94e29413e0549349fcbd364897daa12c2714", + "0x0a06b6b89781f620b504e94f41d028f37551b3ee799e27e4f53d77e2cc8dfe70", "0x0f320b0703439a8114f81593de99cd0b8f3b9bf854601abb5b2ea0e8a3dda4a7", "0x0d07f6e7a8a0e9199d6d92801fff867002ff5b4808962f9da2ba5ce1bdd26a73", "0x1c4954081e324939350febc2b918a293ebcdaead01be95ec02fcbe8d2c1635d1", @@ -2245,14 +2264,14 @@ fee_write_sibling_path = [ ] [[inputs.state_diff_hints.nullifier_predecessor_preimages]] - nullifier = "0x1ec0fd7d4cc1802ac092927920aa810cc4c4ced9a1f9a6c28c33b124f3f62fe2" - next_nullifier = "0x21174a4adc8dd476bbf99234ae9de05b80a97c36562a0064d38af841cb3cf1fd" - next_index = "0x0000000000000000000000000000000000000000000000000000000000000081" + nullifier = "0x0000000000000000000000000000000000000000000000000000000000000000" + next_nullifier = "0x0000000000000000000000000000000000000000000000000000000000000000" + next_index = "0x0000000000000000000000000000000000000000000000000000000000000000" [[inputs.state_diff_hints.nullifier_predecessor_preimages]] - nullifier = "0x1ad9d456d2b0921ccb8c77f643be5c7e5dce1be56014c25939e1ea7d8e37a571" - next_nullifier = "0x1c3cf0e693ec0184f5ee7680edb33754a4112f0ff880ae0bcd9fdaa5d7c99095" - next_index = "0x0000000000000000000000000000000000000000000000000000000000000301" + nullifier = "0x0000000000000000000000000000000000000000000000000000000000000000" + next_nullifier = "0x0000000000000000000000000000000000000000000000000000000000000000" + next_index = "0x0000000000000000000000000000000000000000000000000000000000000000" [[inputs.state_diff_hints.nullifier_predecessor_preimages]] nullifier = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -2565,93 +2584,93 @@ fee_write_sibling_path = [ next_index = "0x0000000000000000000000000000000000000000000000000000000000000000" [[inputs.state_diff_hints.nullifier_predecessor_membership_witnesses]] - leaf_index = "512" + leaf_index = "0" sibling_path = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0b63a53787021a4a962a452c2921b3663aff1ffd8d5510540f8e659e782956f1", - "0x0e34ac2c09f45a503d2908bcb12f1cbae5fa4065759c88d501c097506a8b2290", - "0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20", - "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e", - "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", - "0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76", - "0x01c3ea8c4f9dfa5a9425e5ce92d395a3b087d6c899f913a83117d291a0b5a716", - "0x0aa2bfa92561378ce29e248e99b036efd46738b00849fc63d0fdd5f354e4c4a6", - "0x2a1a8724923f351db6bc35b76a54dd319c267eeb3eadfaa0e24656a5744ab6dd", - "0x13e4e04a7f8586452edab6f63b7fbc75211749faff7ed2bed577459ef58ca740", - "0x0f320b0703439a8114f81593de99cd0b8f3b9bf854601abb5b2ea0e8a3dda4a7", - "0x0d07f6e7a8a0e9199d6d92801fff867002ff5b4808962f9da2ba5ce1bdd26a73", - "0x1c4954081e324939350febc2b918a293ebcdaead01be95ec02fcbe8d2c1635d1", - "0x0197f2171ef99c2d053ee1fb5ff5ab288d56b9b41b4716c9214a4d97facc4c4a", - "0x2b9cdd484c5ba1e4d6efcc3f18734b5ac4c4a0b9102e2aeb48521a661d3feee9", - "0x14f44d672eb357739e42463497f9fdac46623af863eea4d947ca00a497dcdeb3", - "0x071d7627ae3b2eabda8a810227bf04206370ac78dbf6c372380182dbd3711fe3", - "0x2fdc08d9fe075ac58cb8c00f98697861a13b3ab6f9d41a4e768f75e477475bf5", - "0x20165fe405652104dceaeeca92950aa5adc571b8cafe192878cba58ff1be49c5", - "0x1c8c3ca0b3a3d75850fcd4dc7bf1e3445cd0cfff3ca510630fd90b47e8a24755", - "0x1f0c1a8fb16b0d2ac9a146d7ae20d8d179695a92a79ed66fc45d9da4532459b3", - "0x038146ec5a2573e1c30d2fb32c66c8440f426fbd108082df41c7bebd1d521c30", - "0x17d3d12b17fe762de4b835b2180b012e808816a7f2ff69ecb9d65188235d8fd4", - "0x0e1a6b7d63a6e5a9e54e8f391dd4e9d49cdfedcbc87f02cd34d4641d2eb30491", - "0x09244eec34977ff795fc41036996ce974136377f521ac8eb9e04642d204783d2", - "0x1646d6f544ec36df9dc41f778a7ef1690a53c730b501471b6acd202194a7e8e9", - "0x064769603ba3f6c41f664d266ecb9a3a0f6567cd3e48b40f34d4894ee4c361b3", - "0x1595bb3cd19f84619dc2e368175a88d8627a7439eda9397202cdb1167531fd3f", - "0x2a529be462b81ca30265b558763b1498289c9d88277ab14f0838cb1fce4b472c", - "0x0c08da612363088ad0bbc78abd233e8ace4c05a56fdabdd5e5e9b05e428bdaee", - "0x14748d0241710ef47f54b931ac5a58082b1d56b0f0c30d55fb71a6e8c9a6be14", - "0x0b59baa35b9dc267744f0ccb4e3b0255c1fc512460d91130c6bc19fb2668568d", - "0x2c45bb0c3d5bc1dc98e0baef09ff46d18c1a451e724f41c2b675549bb5c80e59", - "0x121468e6710bf1ffec6d0f26743afe6f88ef55dab40b83ca0a39bc44b196374c", - "0x2042c32c823a7440ceb6c342f9125f1fe426b02c527cd8fb28c85d02b705e759", - "0x0d582c10ff8115413aa5b70564fdd2f3cefe1f33a1e43a47bc495081e91e73e5", - "0x0f55a0d491a9da093eb999fa0dffaf904620cbc78d07e63c6f795c5c7512b523", - "0x21849764e1aa64b83a69e39d27eedaec2a8f97066e5ddb74634ffdb11388dd9a", - "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" ] [[inputs.state_diff_hints.nullifier_predecessor_membership_witnesses]] - leaf_index = "384" + leaf_index = "0" sibling_path = [ - "0x1cb388f3f7ef73cb4a258febc44e25b48408de61b916fe2ed77712005a6627da", - "0x062dcb63432580ac8578c81588eef5517edabce2bd8e16ccf24dfa1511d71bf8", - "0x0e34ac2c09f45a503d2908bcb12f1cbae5fa4065759c88d501c097506a8b2290", - "0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20", - "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e", - "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", - "0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76", - "0x2daa142b06e2b2165dcd720ed0a3f793761d6fbb0636a55ea704d4cfe8f82389", - "0x0aeea9cba67159abfd5c9a3edaa0bb85f319991aac2b56d64ee477da8894d2a4", - "0x22a47282226b1912f0d0f52855f47420af24231f3309e9c950412f1be30f697b", - "0x13e4e04a7f8586452edab6f63b7fbc75211749faff7ed2bed577459ef58ca740", - "0x0f320b0703439a8114f81593de99cd0b8f3b9bf854601abb5b2ea0e8a3dda4a7", - "0x0d07f6e7a8a0e9199d6d92801fff867002ff5b4808962f9da2ba5ce1bdd26a73", - "0x1c4954081e324939350febc2b918a293ebcdaead01be95ec02fcbe8d2c1635d1", - "0x0197f2171ef99c2d053ee1fb5ff5ab288d56b9b41b4716c9214a4d97facc4c4a", - "0x2b9cdd484c5ba1e4d6efcc3f18734b5ac4c4a0b9102e2aeb48521a661d3feee9", - "0x14f44d672eb357739e42463497f9fdac46623af863eea4d947ca00a497dcdeb3", - "0x071d7627ae3b2eabda8a810227bf04206370ac78dbf6c372380182dbd3711fe3", - "0x2fdc08d9fe075ac58cb8c00f98697861a13b3ab6f9d41a4e768f75e477475bf5", - "0x20165fe405652104dceaeeca92950aa5adc571b8cafe192878cba58ff1be49c5", - "0x1c8c3ca0b3a3d75850fcd4dc7bf1e3445cd0cfff3ca510630fd90b47e8a24755", - "0x1f0c1a8fb16b0d2ac9a146d7ae20d8d179695a92a79ed66fc45d9da4532459b3", - "0x038146ec5a2573e1c30d2fb32c66c8440f426fbd108082df41c7bebd1d521c30", - "0x17d3d12b17fe762de4b835b2180b012e808816a7f2ff69ecb9d65188235d8fd4", - "0x0e1a6b7d63a6e5a9e54e8f391dd4e9d49cdfedcbc87f02cd34d4641d2eb30491", - "0x09244eec34977ff795fc41036996ce974136377f521ac8eb9e04642d204783d2", - "0x1646d6f544ec36df9dc41f778a7ef1690a53c730b501471b6acd202194a7e8e9", - "0x064769603ba3f6c41f664d266ecb9a3a0f6567cd3e48b40f34d4894ee4c361b3", - "0x1595bb3cd19f84619dc2e368175a88d8627a7439eda9397202cdb1167531fd3f", - "0x2a529be462b81ca30265b558763b1498289c9d88277ab14f0838cb1fce4b472c", - "0x0c08da612363088ad0bbc78abd233e8ace4c05a56fdabdd5e5e9b05e428bdaee", - "0x14748d0241710ef47f54b931ac5a58082b1d56b0f0c30d55fb71a6e8c9a6be14", - "0x0b59baa35b9dc267744f0ccb4e3b0255c1fc512460d91130c6bc19fb2668568d", - "0x2c45bb0c3d5bc1dc98e0baef09ff46d18c1a451e724f41c2b675549bb5c80e59", - "0x121468e6710bf1ffec6d0f26743afe6f88ef55dab40b83ca0a39bc44b196374c", - "0x2042c32c823a7440ceb6c342f9125f1fe426b02c527cd8fb28c85d02b705e759", - "0x0d582c10ff8115413aa5b70564fdd2f3cefe1f33a1e43a47bc495081e91e73e5", - "0x0f55a0d491a9da093eb999fa0dffaf904620cbc78d07e63c6f795c5c7512b523", - "0x21849764e1aa64b83a69e39d27eedaec2a8f97066e5ddb74634ffdb11388dd9a", - "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" ] [[inputs.state_diff_hints.nullifier_predecessor_membership_witnesses]] @@ -5496,12 +5515,12 @@ fee_write_sibling_path = [ ] [inputs.archive_root_membership_witness] -leaf_index = "9" +leaf_index = "0" sibling_path = [ - "0x119857319c97ab6694ec8d3e405f5a0e10059d07563926f24e6872eae7d0926a", - "0x0b63a53787021a4a962a452c2921b3663aff1ffd8d5510540f8e659e782956f1", - "0x0e34ac2c09f45a503d2908bcb12f1cbae5fa4065759c88d501c097506a8b2290", - "0x270fe0381fdd00d06d8385a659b32b9316fef637f04fd981fbeb65f5a4680917", + "0x1c7e3b9ffdf0b6a594a190917fadf9225865e3b7cf6a2a4dbe96192dbc75321e", + "0x027d9785407aca38bbb69f8a7eb032c44f468906876de817b8b38d2b9fd6c485", + "0x08feef9a1f8a52eb745cf4123253b4f9d98bc0d090fa1c1a07e34f2a0fcefd19", + "0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20", "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e", "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", "0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76", @@ -5530,29 +5549,29 @@ sibling_path = [ ] [inputs.constants] -vk_tree_root = "0x0a118eae659eb1671e3f579a83c4ad3688cee1b9f23dcec48af4d3f3a2de1733" -protocol_contract_tree_root = "0x296690a67333fb896eff0ef812d31f9be26161726e47057bb688ddcf08164453" +vk_tree_root = "0x0bee8f04d48c18c88f2b9dd3b87daba3b3c8d000f44d290587504ae770942c56" +protocol_contract_tree_root = "0x1c4e64cbb91a46bc2fd73590e1dacd3ddf84d1b5e7a7182795ab02fe80399caf" [inputs.constants.last_archive] - root = "0x25c8c19c00ade5d9ee2e42a0b6ba0487a228c008c9216227b3cfe6483cc8c274" - next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000a" + root = "0x04b51aa5df89d177213335ca62dee74d15b920e231f5ea5198ed405967d188fd" + next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" [inputs.constants.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" version = "0x0000000000000000000000000000000000000000000000000000000000000001" - block_number = "0x000000000000000000000000000000000000000000000000000000000000000a" - slot_number = "0x0000000000000000000000000000000000000000000000000000000000000024" - timestamp = "0x00000000000000000000000000000000000000000000000000000000675b06b2" + block_number = "0x0000000000000000000000000000000000000000000000000000000000000008" + slot_number = "0x0000000000000000000000000000000000000000000000000000000000000015" + timestamp = "0x00000000000000000000000000000000000000000000000000000000675c2e96" [inputs.constants.global_variables.coinbase] - inner = "0x000000000000000000000000dde7ef1ed87eb5cbb0562efd27c3ad9eda8c800a" + inner = "0x000000000000000000000000ed846b6f217c7084a6c108eda50abce8c8367eac" [inputs.constants.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.constants.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd150e0" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd4533a" [inputs.fee_payer_fee_juice_balance_read_hint] leaf_slot = "0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-base-public/Prover.toml b/noir-projects/noir-protocol-circuits/crates/rollup-base-public/Prover.toml index 13bd3d54e67..285ddf132c7 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-base-public/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/rollup-base-public/Prover.toml @@ -1,53 +1,53 @@ [inputs.tube_data.public_inputs.constants] -vk_tree_root = "0x0a118eae659eb1671e3f579a83c4ad3688cee1b9f23dcec48af4d3f3a2de1733" -protocol_contract_tree_root = "0x296690a67333fb896eff0ef812d31f9be26161726e47057bb688ddcf08164453" +vk_tree_root = "0x0bee8f04d48c18c88f2b9dd3b87daba3b3c8d000f44d290587504ae770942c56" +protocol_contract_tree_root = "0x1c4e64cbb91a46bc2fd73590e1dacd3ddf84d1b5e7a7182795ab02fe80399caf" [inputs.tube_data.public_inputs.constants.historical_header] - total_fees = "0x0000000000000000000000000000000000000000000000000003a83175b4f800" + total_fees = "0x0000000000000000000000000000000000000000000000000003a83680db4900" total_mana_used = "0x0000000000000000000000000000000000000000000000000000000000004a40" [inputs.tube_data.public_inputs.constants.historical_header.last_archive] - root = "0x171e653164ff7b9b8a2f4945fedda21d5fad551d9d162663d1f87e84d2137fe2" - next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000009" + root = "0x12a67a275560c583960931231ad3a43c5446c4ecf990edce34f69e4a8924e2a6" + next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000006" [inputs.tube_data.public_inputs.constants.historical_header.content_commitment] num_txs = "0x0000000000000000000000000000000000000000000000000000000000000002" - txs_effects_hash = "0x000d93a59bf0e1300f4c851be0fe7920ff67667e4e14626185fb6e2cb54758f9" + blobs_hash = "0x00537c616e473c341bec4ff523a3cb1047b172d24b3703433b40b75b61063994" in_hash = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" out_hash = "0x00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb" [inputs.tube_data.public_inputs.constants.historical_header.state.l1_to_l2_message_tree] root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000090" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000060" [inputs.tube_data.public_inputs.constants.historical_header.state.partial.note_hash_tree] -root = "0x05cfddd64cd8186419dffde2648072f03e8e03b09f357ea09d6459d77a6ce474" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000480" +root = "0x1f1580bd0be976002f317f6c459793db2b87c64220c11f186943ae1b990bd520" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000300" [inputs.tube_data.public_inputs.constants.historical_header.state.partial.nullifier_tree] -root = "0x2eaed0d2778fab648d143f4a309b323cef0f1e32e63a36b6f3c3620a1d89281e" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000500" +root = "0x2ac6b844105b8bb164508a4e42d67903629a92272fc5fddf367e3aeaa7ed775a" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000380" [inputs.tube_data.public_inputs.constants.historical_header.state.partial.public_data_tree] -root = "0x066ae819431599f4cfc5d66ecf7be666683baaba66da8d5e4b1d9d0c5004c505" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000097" +root = "0x0ff17010ab909b4a0c9581a9c33cf0af93280c6fcd6664cf27270b8762a9e418" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000096" [inputs.tube_data.public_inputs.constants.historical_header.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" version = "0x0000000000000000000000000000000000000000000000000000000000000001" - block_number = "0x0000000000000000000000000000000000000000000000000000000000000009" - slot_number = "0x0000000000000000000000000000000000000000000000000000000000000023" - timestamp = "0x00000000000000000000000000000000000000000000000000000000675b069a" + block_number = "0x0000000000000000000000000000000000000000000000000000000000000006" + slot_number = "0x0000000000000000000000000000000000000000000000000000000000000013" + timestamp = "0x00000000000000000000000000000000000000000000000000000000675c2e66" [inputs.tube_data.public_inputs.constants.historical_header.global_variables.coinbase] - inner = "0x000000000000000000000000dde7ef1ed87eb5cbb0562efd27c3ad9eda8c800a" + inner = "0x000000000000000000000000ed846b6f217c7084a6c108eda50abce8c8367eac" [inputs.tube_data.public_inputs.constants.historical_header.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.tube_data.public_inputs.constants.historical_header.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd150e0" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9be2b484" [inputs.tube_data.public_inputs.constants.tx_context] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" @@ -63,7 +63,7 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" [inputs.tube_data.public_inputs.constants.tx_context.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd150e0" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9be2b484" [inputs.tube_data.public_inputs.rollup_validation_requests.max_block_number._opt] _is_some = false @@ -137,7 +137,7 @@ note_hashes = [ "0x0000000000000000000000000000000000000000000000000000000000000000" ] nullifiers = [ - "0x13242b212fca10168003a993563cf595367fd882c096424b0a9e88872c606948", + "0x1f402bc61864bc9d78571eb2ff08bd21be788986bfc07e9e7865cbe3dd0a905b", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -2357,13 +2357,13 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[inputs.tube_data.public_inputs.revertible_accumulated_data.public_call_requests]] is_static_call = false - args_hash = "0x28f6c0d2ecd0bb618234bfc47d42abd6a4258a3d657fe0023ff29557beea15f8" + args_hash = "0x280e22beb48c4b01ec87a57a5320613e8bc1d6a1f6eccdaeef5e7bd70bd6b649" [inputs.tube_data.public_inputs.revertible_accumulated_data.public_call_requests.msg_sender] - inner = "0x111914eadfa81022a42e019b6cf3df64d98685d3c137a16079d0742132432bb0" + inner = "0x30021904ae3832fa38613650b957c74abcc7ae86fda9e53bcd89e7b638cf9d67" [inputs.tube_data.public_inputs.revertible_accumulated_data.public_call_requests.contract_address] - inner = "0x0a6785e6919ab0ba6d52a2f5a21ec7b12547d20086cba00612fdfca447797845" + inner = "0x1b5c85f852759a87b99af1b7a52bf7b9a1bda23e2792ad5384113b9c17cc4c50" [inputs.tube_data.public_inputs.revertible_accumulated_data.public_call_requests.function_selector] inner = "0x00000000000000000000000000000000000000000000000000000000d5441b0d" @@ -3264,180 +3264,180 @@ vk_path = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x17ae608923d921cec098fa1fb04e11c0607e26cc76eeb692545e510f0a4a65cb", "0x15ecc428fab93e00874151f32575661782fcb6438d7cf5c797dad068e4eed590", - "0x1aec8b738adc9fc707aad5d7cdc734041ed9049eff616fb22619b58c50ea26e1", - "0x022f5ac8ff86489f5492d016d0ac69cd39e93b518da3f5a15a8c3177b92bc008", + "0x25e71fd64ecaa6b98ef492c6d93da8164a259284041220c258edb94fe47706ab", + "0x1967335d7b185023afd52d8f7f40be4ced0d80ba63d4dce2de3e26bfe772e394", "0x122cddd247164987e2287f8ce124bea7a68052e85bffebe2fc6cd71718689069" ] [inputs.tube_data.vk_data.vk] key = [ - "0x035d314043c7a9c219100ea907fe6c3415f229e13cff04e861b1c1dd1c635ea1", - "0x0d71a0eb45033b16aad11c6c9443d862adde2f23c37f2184f496253d7777aae4", - "0x2ed90c62595a3a2627541d83dd357651b8c65f8b3361a13fab48dabd95be9392", - "0x2e895f96bce45342b054f1bab8e5ff26f8cf894861671af72a64beffa197c327", - "0x18cf7e10375ac10598468a94f28e39888ec504bff802a28421e102e952135161", - "0x0b60414b67bc2a883687d697740f2be61045eb82aaa47bd3cff34a0b26be5672", - "0x0a8eacca32a6003f443d5f7e05edddc65a84c481d5655837855edf33e146203c", - "0x2596241beb3e6d36715ae168df3238ccca6bde805021dff4c4dff95823c7a04d", - "0x21c282463758459a0c56da9225a3bdf7a6b4841b2e1c972dfdcadab87940cfea", - "0x20fb180cb21941b330111ca788a184587a60e2c37981e55109f630bb3c48c0e7", - "0x0af0d011c180254a3283ba961883dc6aaadcd54f0fa91d7e44f851043d3616d5", - "0x30087199788546ca80215c87bd680d29af676027d8c8704498e2d68f80ea8642", - "0x2710e2b3b4fbf467e56458e305b7350c554b1663a8898a440ef408ac5fc608cc", - "0x1136c0409ccbc18f6dbb1bfdd486855cede9290091490ddcc8e5616dad7a3693", - "0x27a124b84b596a0fe947b59b7ebf7021788d96284b23a2fdfb10ccc1a0395925", - "0x2c3e291ca055b8d1b9276da71a30f74075bca1638e2a7762c75b0db1e784468e", - "0x118a00c2bddee1d686b264cf990859ff5ff72b4fb585471c056c3a109fcc0e00", - "0x2cd55cec0171fae178558d1f8a680d87de668b397cff08c2876a937c91832b87", - "0x02b8c3a9b693b846537675f230f3c9a210aecdbee70e9ba577b6b1be81bc78c0", - "0x2d341ff5ba747514b9b2e02d0210320f0f465b115e02249c6f0c46cec721a989", - "0x085e8bd0923a6e98fc1fe81ff5ae5b0500bb9d24110dcfbc6c1cca3c63fb5807", - "0x225a73251b122b088d8fdf600bb673a7920c1a646bd5254819dd272eb888bce4", - "0x07f537feddd6cdae76b2ad4e9d2562bf18615425a1d92f8517a47c7d7f7c6d92", - "0x2425ff4ffa3378ace929527554f9a14fd77998e1fb657bcc876efb443ff995e5", - "0x26f9b6da9b38d5a1f0f9c0ad44c1a4175b47f029b67046adf4060454798c5065", - "0x0b7bc8398c03961ea1dcfcca02e2de3cb08d68de9497a8208e05f6ddd0d7e5b6", - "0x0b15ca8f56f6aa62a014cb8e047f8f842bebdba885d59e8ff52e7acc6fcec22d", - "0x276c77e1a70845e22ef4854e787ff3dfc9daa1bf91ccc2a1a28d5e60c0bc2201", - "0x1f3e939b69d3a249816c52b40fdfae1bd9a80eed493a7a0f4c43f166d00414e6", - "0x23e14cb3fd7663cb019b5e7437cfbe947125cc9ad869c7d754d8c3d7e98617fa", - "0x1b0419e670e3565c8530498c59607d1f3d92b418aaaa9a7b2832cc28a8d3c20d", - "0x25ef95dad5094a85234ab75b9b71e8de744f501c86aa043e7db0efa1b72e9944", - "0x00f076f8ee0243c6e08f0b3b6cd17999af23b8ec03ae1fc748ddcb4fbfcfc29c", - "0x0101b797f411e945087758545ea8ee90a99225344c037bee1a7222d9e81ccfb6", - "0x2299d17e04a2d7707e55622f852a497df88e1c12dbe82ba42a2c531f9de61392", - "0x279a667cbba214fd8063f9e36931491cba6be6c76e68e1533100549320d958bb", - "0x002ba1546d37f9884534eba472a444ac45aae9d40961b07993c15ab199c490c9", - "0x014c6c0b6621a5cf53dddeffae7f43b07c3e12c1af128d93757a9a7bd89b8742", - "0x2b32d1d1c9c7c09edd40a0f759e645aa33734d2d054d794042ea86d4db7636da", - "0x2c045623f11c050ada30a51b3d206043cc0543fc7e189b0e12bc3fcfe91c48c5", - "0x1bd28db3b44899cf73bdceef939a0c0aa9ad318dd86303e919a7dd651be5e51a", - "0x2b4e34f47f8b6aa6e4caf93ae46b2d2166fa25a2df0dc60cd7b49dffded4847f", - "0x21fc4be5e2ef5a0924551c62a459d57a2c8ba7711aae79f7e86d9722e2153b8d", - "0x0354e6e1e194e0270c9ca3c983edac795c6c03165a4b8425cf08e4a0b75c7867", - "0x0d7823faf06e49da5c4a5f54df203f96469c204eac0a33839724271a44bc8fb9", - "0x1a59a0c2dd6f05153e23f85f4788ad981f5ee445be5aa9488637f86957d198c6", - "0x01e0130e8b8d61fecb1cf727b037bc2e0b27ee0e1c6183624217345d92334d29", - "0x17c03e557f66c11c6e6d3ff75d505c68b3f5ca6ccd2374e3690f292df8954bf8", - "0x1a94cdf0e16b59e0e561f3fc65522aa53af2b19dab2c24a99cc55891e0344d8f", - "0x039c45d2dbbb53ede03aec478ddb1e85e6525f6bfc7fda43207b15779d209e99", - "0x1cc578ce356661108627f256bab536b0c27428e6e24dd4d82d2d44508582adae", - "0x2e9fabf1ac6db7277f3d598936d2353b9d535be647011f0b15298f0b2c50ff54", - "0x045c2199704c95f459ec0752c6dc74d0b0352b165235fc008ca5162a2d199fb6", - "0x0c2e0337f2c18f07573054d022af7d83c77c715c2a98e8f0c5bd30b70db1e5ef", - "0x12c9684367f1aaaa3d92aa9781cdfc24531a811f3143a40672b9e294a4407e81", - "0x193d5915414c541224de912d548822594a5c628d18b6f04dc1c1de68827ac34f", - "0x056b41aef4d28c35ec6c3e431c2de0c84cde62ccf6007fd4dae2b7a86c426c2b", - "0x1ee79ec4ca6ba2505184b2393feb598771132443d3fdc60c8e9f7b4be75542ae", - "0x04321c37a4450f8187db29fd02610133900161bb05216b293f34f117360b48e6", - "0x17be71e775d4edd2eaa400039e8f1c460fb7d38a9b9669f220ce61ff0d203738", - "0x015d84d812ac564e998df7f883ee4e6c95d996663b3da6575af03dc186f6b138", - "0x21d87ac2f7509e3ce38472b80d765deec791b36bc8d6eab948a35aa8c1567fe1", - "0x198578eb9d8d15bc0d3f19fa3d3ff6eba26ee99ef71c732a6c6ddef5e803109c", - "0x0c704bc85df4b79e252157763d615e50c5e5d7e615c6b527fd72c37eb1bfed26", - "0x19130a53c68555f8c9dc4070c41ca7162dd3ef952ac599697faa275edaf0e8a1", - "0x0e07899018f06cd26c3876373d2bf8605a93686e2e0ce95abe327613397b39cd", - "0x0f16ce416bf218131359598731051a30baa7f01e4bad2efca4cbf7fac4314274", - "0x0b3ae834449a42b5b4a97ff486ec7c764c3c37c7a6270ef672487e503812d701", - "0x03e4e7db04d42c47704b5b717e0153b7d27e24455ad53e47175b572e5e5284b7", - "0x13f142d255c744588ab7d0b4614f74404389b74e90d62c799dc1e2baf6d5af74", - "0x04f8a1d0157bd0e5755a497ae7cce92d90bf3507314948e5c191a4d6acad4243", - "0x0064465c014fff057b0840d60fcbc6eb6b2fbc51725c43ffd51d70228a9cfbf4", - "0x268852d8d37b140e946b0d2c7dd6c718cd8762551cf2ea1da96bfd826729c5f7", - "0x1fbb0ef83f85cc8e22d6fc20cf18f310bffbf0c6cb46d71144cafcb7ab61e145", - "0x27f945285ada3bec9cc33b5b3216610ccb6b65fde037d2900c9970595495284f", - "0x2157b89024e44c23cb0350e5a83e10ba512edabc1950db81548411e2b833c7df", - "0x1b540d73e91d13784efc2d8415403fc0792f4365294232cb4090e7eef92472a6", - "0x25629f5a9330218b1c06f913a5a68ca87858a85016806a3ab36c9a5a37f5467a", - "0x22a7ba8a2f5bea98c18f1c54a0ba422bd3e7e10d404cb34a6f1aaeda25cbf756", - "0x27640f063dc54ca842046d973c637450c6d39e746815d0c1797abfd1f0e39b68", - "0x152e1adc421faa607a706e9c8770838d216cec9c6cee419d155299fcc9fd645b", - "0x2886db938a9468c82aef923b457353e80f1d2ea76757a91db0b55f3fd82df1f0", - "0x0d106c8253f144c9eef6c6169f01bd006e068679c1d24dc1f04d5f5ef4e6b475", - "0x214a2bc3358e06d89f2b3d0adfedf852143a284218db1a6bd568d931ae02a69c", - "0x26a9e1e29822e55b190b5e3ebe4ff7cb7e91cbf35cb536aeea9c6a5fd55332d4", - "0x0dd91db6ad7d53b8a7c1a414edc1903b963e70c5b562548fb6a170379aa24364", - "0x263a5ecd76241650f812d8daaaf49ae84d57d8d82904b92b9f0dcabcc1b68dea", - "0x0e2da7765af1614da6ff39fc277019f967c72d664d6c412f585384248c48e13b", - "0x17686b22a5899d43837653001ae5a612f40eba06c43e6a5f713f019ed9573c6a", - "0x1a65018e5a280012af82a120dac42a6ff4b499d387d0a52aa2d6cb180c20e1cc", - "0x20117d2dfda829178c17574421027b824488c68cf01d4c79271836b5d29396b6", - "0x287aed49666641b287cb5772cb88f48ea81d8212f14a5ded23fce8223d37131d", - "0x0a5410b059e1f5ed765f9767cb18b8d5facc38b20b6d722b1239035fc02016a3", - "0x2d209994719a198a6a6174f4a82706bb36a729ff8c657702d5d3de286e99fb73", - "0x2bb2b8b8ee188282657c41a6d0c75e381f09681d4603b353c5d98fb69fa9cbe3", - "0x1034489ffa325aaea55363c723134aec64d1acd37c7c90a3c11ebd9212dcd19a", - "0x22cf995e308b01bed8b8f66d45a26d98afb8a9d4788e556a65b45d5430012d95", - "0x06fce95813c5618d30388a11cdc30d0589b3f313e7c3d1625da864fd02a8cc03", - "0x0e6e19b84180980aca0f5d0a4b839c11f7c70268ad6b8d905290966cb5c870e7", - "0x13a2c5c296bc0c8eaa348d7ee9f2b4a148c6a57a2cbb693dd42c14f9db544d75", - "0x3016a6cbb67c25937d68e49df14ad65e5aa0dac03d14ffba72ee0c6be90d3d56", - "0x0e9a61c10ee0a1631d419a06161bd31a27e8c974ccf5f272e294594774469136", - "0x2d4cc14cd605f8a05e16c2e00a3ecffd7ba841bc20b1c893bac5d53ce88fca08", - "0x22aa7b1fc509dae330e97652817dda6516652d0972edd5029ab800e6c71bfb0a", - "0x0c05f1cbfbd5096d7258f3f8d190cc9f1cda211b5d2ceae9a2b1b721a9cb3c3d", - "0x283300f165fd4d3ea5f0910d3863ca1ad4cb4de77ea82df8a671924cd39de229", - "0x00bc3690f910bc78a0244edd97b359209b0ced33b19b2e0f7d73da4e6e4ea429", - "0x2ee5264759cdd3f00ab3aa7cc3a90dd57e49cb6b70a6d6494899c870b0f44f52", - "0x081462a8fe5e965d7d129b708273f1f2d2668c0d20ef2f3e6544dd34e0740493", - "0x13265e8ab5a18d5e1009333fe3ca6639f26f1296943ba5169b51b5e92af0c37b", - "0x2e4072b97eef3dc04211034fbc3043c1a042655e968df5b50312ecca11cfcda3", - "0x02dce08c791cb00ddefecfff0bde45500615c968ff62f6490078d908cd9c5dc7", - "0x125c9205b03611753474d84af8850f23967c2deefa8e1dcf9a49797f9c67959e", - "0x1ed080cc9cf2e7dc0f6690259f937e34276172fde1dc434c3a5020b57e1539e7", - "0x1d187304d9a22e3d8d06568a2c4b5d803b2972b8ca42ecd69574ec58ba2adbe1", - "0x29e6ae6c4f363013e550309eba0388f50e53bdd26a2bcea095f9ac9dc7f973fa", - "0x0db6f57a8e2eafee78b60b0678326fd08637ef641a11a2cd790ba4f7e5aa361e", - "0x2574c74d63f5c7823a8a2573de279d3f1d330d912beb341c75238c6ac02575ba", - "0x0ba68be9b2a7a40b3c778730551536d40fe309754165d70e00b55a8f7cd783c2", - "0x0859c00b94018f646604532e2faf0846bd947c7ce8d9d7322c3711fd1e12661c", - "0x18cf1a6d1e4d01329adf5468b098e237deef50afafa8fcd492ca395640132513", - "0x05aca4724b63d539a605c18a5ac57b64a9ab0c630c7c23746253bb04bbe57ca3", - "0x08b6207b1e4b7b409abc841932fef44026a3f1b2d6237d53eb311011034c214d", - "0x0a97a44e474d741fb6d14ef2b658aa41fef3d27dd7d125fb29e48f3669fe1b4c", - "0x1b4ec2044a7823f29f53c6be63365bfef05868e00e8bdcf38a24fa4778c94fcf", - "0x186e474095bad762c6e0437b8c4a8743e137d4219a14cf29dcdd242255aca184", - "0x1655182baf5937ae20bacf0dfe207ec907b21cdd238aed2f630581cd6968a8a0", - "0x2e15b7fff91bc2e1cc371850480c451bbf22e10f08d33d10be55df9bc06471a3" + "0x1bfa44f2f20c04c211cf7626f15acbc2a367aa54b5b640d9853bd02042b7da37", + "0x143ba3a3a96ca51ef744edead75ae4ae51acc10f725789a14bad01f3e613c33b", + "0x2ed6d3b65a9f1e6279ecc5f48e9007425e5fd1f086879d029cfb4899fd1101f3", + "0x05328139f807dd4ee06f6aec2f2a481c61e3fa88373f573f6bcd5e4b272268f2", + "0x2a2158771f4c7cfdef039c333466495b029d6a17f5135ed629eb190ab9553833", + "0x22b00c839ee07a11fa2c60eca418bf8565e17c1b9e1dc3e512aa095b1ca6c431", + "0x0f2ba4928d2345bdcf7e84c98519a37f32fbd6b665eb59692e97afc2877639dc", + "0x15ecfd47994d230c490bd30c07830a658531d640504413d679b9d049a4833a91", + "0x2f7656a78e18d6bcfbfbeb2c2b8c1b259b6c9f00e5006d67e436ce6bc7dc78b3", + "0x16839047875d7003e3db5a06b7593807a49262e7e30209380c268e0daeb9ffb2", + "0x0012890b0d7f650ae68b7b6e607378dff5a966ca894be521971d2440b2b2112b", + "0x1203215d42762e87233fb464e2fd8597a916a59bdc04790a9e87ce5cf94fa201", + "0x2bc8c849a0849d132ad289388964c94b1195a9b08e8950dfd7e3ba399c62f80f", + "0x0e03d24b28d9d3899b34eafee1806fc9c26161bcbd1bab624d78088c9689a40a", + "0x12e75f437f428ed42d557b08992ecf13fbdf593b03da968e7fed7a9c5f09c919", + "0x062dd479c320a3b6e0c6aaae014cf5f1f912e35bdb362eddf0cd685dc5d346aa", + "0x2a0aef1ca28be42005a8a0e2d16a5d74fc57db026d7c9bbf9ef9417db500466f", + "0x2c7dac680bfeaccf991ad8952813bcaf64424202f68a2bf12cfe3f38fdad3257", + "0x0bde7a55f9f6c8389933fdb6a2b927aa7d5165f6c4c56d8bbcdaaafd5118b4f4", + "0x2bda2e0be0f51be81a867ecd54ada45677d74a34428f9210ae000f12da577bd1", + "0x28bd04d2d10479950f4632ece00144a2d1ab871a58f69673391ba1d5662a6cc4", + "0x0edb1b17d39016ebe4f6d8128ce3f84004d4d34d9d72d7d463d68961790622d6", + "0x14affee4e6d56ff596b93246ff0151c37b96ba14195a61ae03158081087f9e98", + "0x1f4407b4e5c8cd6f26bb115aec6a53c61bacf9cd22e7fd11ab37f6e63a403d2f", + "0x272ac9a2b4190e0fa9f67d0f08bd9db2e3052ce4c8666604f06572dcccb8b393", + "0x143e6c0e49356c95bcb62f98b300338d203ae832c46a137368e0a261f27601db", + "0x100601f67eb00d1db03bb753dfcf1665da009ec3f1f33716b74d72321725836a", + "0x274cd9ddf5e7828eded1fa24957ad66806ecd5c963fd9aff8ccc3f10569775d2", + "0x17c3285771175332941c66d716a13f13f988648859203f538be6dc250494c60d", + "0x2a9b1ed4c33b97e1c92cc700c4049a47e5b9edd384b31cbac9ffe0eb46ec3c02", + "0x0d832e6d39981c86353abf85e4c351dab9e60ca8c4016258c2963a235a840953", + "0x2045e9baa6f55ccd8c65e124c05bc6e4b0334223847ca1b6bfc4bca8afe5f612", + "0x0867082aba9af1eacb35b03904b532ab1aea1c35731d423f8339608bbed06283", + "0x1fb501c4a04a8bbe1b4d4222e7a833ea795f729fe26e9e5f18d6462a7588cb93", + "0x10a7b85e4ea34c0cde5cf51259a877c4cf70c7d203c90620c938c1840452e7a8", + "0x140607c05291dfde12216519435eecb83a743e0978e712a74352543af1edbcc1", + "0x0a013c4d75cb5af0c9e8258961419fae98d3de053da2d4d76d76aeb528d7b5ad", + "0x167e4236dfeeef6784674544ac7915908b7df162d9ce1863f8378e4f0d659d52", + "0x1cb318ae475604b565d5d479269136a20933bf5161217adb495e6b33e5cccb39", + "0x2526b6986d1315bd61d4669b4e31802e5283951244972032e945acabbbb9ee95", + "0x2c9b3b1acc537aecaba66b9cc1cafd93807c7468ec03dea3f1c5aceba878669c", + "0x1607c5011768c9baf11bbc71751a673c8c9ab940f2513a3f20ce0e01d9aab706", + "0x0ac418c24a52173efe17275d13100d007658f43253eb5115579ca8e604aa5535", + "0x0cecac75229351c5c18ca254328916896ad4f4d300d5759172f0d80058def78f", + "0x103159b6611fdcb61153038af6138d227d671720dd574613a3571b7b0f94ebcf", + "0x11e62d52049352fa56394820af2db6107023a7d2d063a8c402559a6ca2184377", + "0x13ee29727f3ac35e1f371f5b5e70f5addb4ff95c67811bd7c3a4420fe81127ca", + "0x0009476148f290db1e416c5bcea889cd4ad066eb7693699d458dbbfb6a1eb03e", + "0x17391a68c43569fe94ba12d097173c5b1912bb03fe0928e5717c4ebcc58be251", + "0x2add96e3c6ce33b0ecc9f2474feb159ea7900d2eddc9299bc434b9e82e77eb9a", + "0x23f7bc36aa3347b4801df208a081d8a8402ae932061d6d7fc0319b5e5604bf4b", + "0x102769e2c5aa79f846544584c282949226f1e5b31a04b72fda377e6c354dc005", + "0x27b6b053bc7f5e63b559f424184a8e136a8b48bfdedfabc54561191d509d279f", + "0x10f8aa1ac1025364d8ad0fdfa4ac023a1aa9af7dea939bbd2050fdc53d16a3c1", + "0x1e8a6f9d2c430f3afaee15f8d15ead974c7db2ab768575a908650ef3aa683f36", + "0x1b12bfba9249d88990ea5ddf35394086048b70cb5bfed55c4ccf06c29e65fb2c", + "0x174a138e164e4bdf00ed69d4fd3dd32a1784f634eff941b50cbffd0e24400768", + "0x0399de084d1726bad6a065698a987ad4997110e278bdb09318c562bfe05ba563", + "0x0b32893afa0eb1fceba7b4d215bb65b711d308be047577a144c39744d5ae3995", + "0x21cd0714212e232663c56f92a3f17e92e0da3ab2d6bbaef46ddeb050798d9b4a", + "0x1795d536cadbb08c6b91e036c895e091ea09981fbb69066ea5678a8fc63d8419", + "0x0636d428c27a9459ee23b13d50ef4bb20fddb57d875746bb91d298ec34e42ea3", + "0x2df36fa7c78cfe52686cad4bb8d3d38c8dd832543f5962028af449c751bfb211", + "0x07436d9cab818362931aea99596030d542824119eb3ecfecb9bbe5cfcebe7e47", + "0x0b7f6af7895aa4c5de67e75a720567c3f00386b8b73a929b187fcfc78bef8691", + "0x1ef006a7bcffb41819a2612edf3920de93f367c9811b4eac3867e524c5af287a", + "0x28e37a2ea5dcc7c44a53ac0e08a10f6c6ef537a6a395707a09c73d535eff7e2f", + "0x123b5656ca0872647debc465168577a36fb23c0dbde6412784184b10b96bcec0", + "0x0d6b03baf20cc22f046c3bbf40e2e8cfa952d3311d42d874649b05b8461077b7", + "0x121e9aaabc0e58f61c44e59fc73ec033db54d5310aebdcb903782f7ca57079ad", + "0x0bde5f62bf14b6387b6e5507ae381a26669fc7691fc139c1a321537735a94927", + "0x2839612303477b8dde27d8b3deb6950648edd235e9ee70c8b220b481b6caafb5", + "0x0c8e52f24016f43c233a0bac1c855ee131446f80095d007f6eec338e11b96854", + "0x29ad8b52faecf42ce230d9e9d42deca2227c2d294e872a27e40e124ff870032b", + "0x110724826589260fa30434de8a545c9eaa50d902a0014843bcdfe8f109d55f4c", + "0x15ef4bbf93a2f68cc4f250ea4e6c7966cba9c595aa37e2970cd3607b4ad69c88", + "0x22d9b073e01dba83b814d8348c6ac1957d80cd7e0fc6fd9a4efaa6d0462325cd", + "0x1152ceaf287a891beb53a2782010a3da4bda3344559e688d331a9afe19673969", + "0x20f1c2ebfc4eb797ebc1cf52f5dd0f44098f628f660e50e494da0914961d7346", + "0x201a62298b87227f306a93beda4ca8a38a9a55051e9e67f3c58c3af04beac565", + "0x1dc1546696189da5d8c8ae5db528af85971357b15383e1d2887323c741ecabb7", + "0x11ef64e3c8968143201d6a1120d5139f11401171959a746015152dd476bead25", + "0x03c09c508d63466363539de55c81ca6fcb46260364eaecd6a8e750d5154aa1e2", + "0x0282a96573afe35baa840f09cbdf9cd6f44eb67878351038f89a752324c91ee7", + "0x2a43b168334ee89f67e76faf49ee035d7ff778ea4d79420c8820e0b735679d78", + "0x11ed672bf231147011978ff01fb3901189392191a092476f118a71d2b851c24e", + "0x1845363d16d79c01c1c4ac3f896baef2c8a6d3db44d8701f54122a52cc6e6e64", + "0x1c25935b0d0867a1fed34eba8b6f6a1b652aebc0557765018671ba3e190548eb", + "0x150d3e82fcd9a280daf6c07db1667a61571fae6e40ce45b9d98af57161cbaf87", + "0x1b1e4f5d885b49cca8a246d98d0bf0155e15ca3b2798087a39dffa7e9555de25", + "0x1b6462b7f98e005ce77cfa53e7c3a21027951c594e0daa717790a3d43ed2e498", + "0x0f71ee59fbf70ad12b179b4b9b670f308800986f6dcdb34ae226bcbccfb6e5d7", + "0x0d2e2ba60c9e3155a7ab56f60ef65c4bbafe4fed7001aec0ffa6469ef818bf6d", + "0x23da423c893f95386865589fbde978ebfbfc66dd662de0a8658a3df7d007be0e", + "0x098a3186b1090123c5b851eb4076c284a2c6cd02b2fb28263b56977be746057b", + "0x24173add4aeed1e2f4b932801eec0bab1605eb123462d2a2da1d549b5d868cf3", + "0x27a1f109230062171ca702916926b8bf999c3f3df3f793fb20f107575b428f8c", + "0x03652bff5342c71639aff4cd16b1455685df1f941401132586e8ce65e4405e0b", + "0x27b565e407c8f2014b0ed7b79374c5fc4f9332c3e0950d02682742741bc86a66", + "0x2ceb40e1632f85dfe4033a17b0aa31e8568bd0861e1d032fba5164357ed08c4c", + "0x2e07c64d1e7d5be09473417fc582c43cd417abd19de4ccca5eafa604271113b2", + "0x15327662366516be153727a21890bb277c2c52386e8c6a4cffa0e13223e9c693", + "0x075de224ce418e9f116a3ace20a1cfb7c96a6596ba92f95c876b665ee229eac9", + "0x19dcda0666f09af378c56915d3e9ac8502182c38c267d401f2e8438d48bf05d1", + "0x144a2c515bd9003e000055d04be599c2e45b38caece41ff5183c1c9931555160", + "0x1d79b941ebbbaedeb4dae1541bf0af6a7811769acc172ed681450ee79d5e76dd", + "0x2c889cdbc0e0460a139612dbaea20f570fbdf128a3bd5a28e2329cec46a437ab", + "0x2d7d39573ff0479169c0ae552818f59bb434c4aee7495234056601a9977fbd9e", + "0x2b3bd2745a4d8987c71b5222abf0411fef35a847834e843ea8198612822879dd", + "0x1d1ea9db8eb76f88468464b685d607f805a1798c2f10cd7d688ef9ab2fc646f0", + "0x0e1956a0721dbff85e88dec712b75c3692de02a65ee93562a12d6b55341d00ad", + "0x1f28e97ca07aed66f25edceba51241261c126c6fe96f4f77a33c40ed61212c0b", + "0x208527aa8b9b0ce0e82c43382314429a84e15286218bb002af0262ff594dc42f", + "0x14df909c8fa0d0a15cd07363f48e4aba770612574f9f4c07132fc1e49e1272a6", + "0x1c05fb4c606ec8d46cc93c471c72a7396d98320c5acf005526d7d696b5a21f7a", + "0x239322e0b7372404a59979842d2e4abd97653bba3c7700b95e63dfb87761445f", + "0x2bd124577e51268259acdd0413da7a348e1de67caf5c4ddf549a0884f5ab767a", + "0x2cf12f77abae4cf611142349b8a24eb193af74138dd8635d18c6389583dbf14b", + "0x0bd29ad3efcb3d6f1e6ef4f43ecacb0718e8319e75bab92ad37a15b437d9611e", + "0x1307ff6546aeee08627e03ac79d75bc6cbd91e5a7dd946d08fca17ad0c7e9148", + "0x2afdb75a0b0f7d70825f9d2016774037b0933df20ce116b18e86f62e96801977", + "0x104d87f80aeb27e3710a3acc0f091a33625090dba11d6d7b37b49f70e83a5e7d", + "0x043f80b13a29d7867f495a19f5dca16f73f68d0229a5d2d4de07e5e416f2218f", + "0x05af6b2ca6b955c8039f507d2e5cbf06c76fbdd253ba32daf63ebb60fbf28165", + "0x1917ccfb7f3f2514b5c51ec604f3addf3b244dfb1eebe6e244c444459ea46b56", + "0x23c1cad21ba40c8c59df93b371b57e3e935fbd8bcfc814b2a5e727d1ac508d28", + "0x1de894d5450dc7299ea6290f89dbaf8837b9e011449072b20d7bc48b9d5a3e99", + "0x0b2d29b925eeec46af08b62bf1199811277ddd9ef33075f96faafdf9f2062d68" ] - hash = "0x17d812b12918d56dee3fe7d76b4b6a696ae8ca3f7daa7327b2fdf80b85523cf5" + hash = "0x1aaed86df77de9a40ca890b6b82271a03456e45632a9f880fcfe4211352cf1bf" [inputs.avm_proof_data.public_inputs] -transaction_fee = "0x00000000000000000000000000000000000000000000000000117815f5ec0920" +transaction_fee = "0x0000000000000000000000000000000000000000000000000011b417896f129a" reverted = false [inputs.avm_proof_data.public_inputs.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" version = "0x0000000000000000000000000000000000000000000000000000000000000001" - block_number = "0x000000000000000000000000000000000000000000000000000000000000000a" - slot_number = "0x0000000000000000000000000000000000000000000000000000000000000024" - timestamp = "0x00000000000000000000000000000000000000000000000000000000675b06b2" + block_number = "0x0000000000000000000000000000000000000000000000000000000000000008" + slot_number = "0x0000000000000000000000000000000000000000000000000000000000000015" + timestamp = "0x00000000000000000000000000000000000000000000000000000000675c2e96" [inputs.avm_proof_data.public_inputs.global_variables.coinbase] - inner = "0x000000000000000000000000dde7ef1ed87eb5cbb0562efd27c3ad9eda8c800a" + inner = "0x000000000000000000000000ed846b6f217c7084a6c108eda50abce8c8367eac" [inputs.avm_proof_data.public_inputs.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.avm_proof_data.public_inputs.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd150e0" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd4533a" [inputs.avm_proof_data.public_inputs.start_tree_snapshots.l1_to_l2_message_tree] root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000090" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000070" [inputs.avm_proof_data.public_inputs.start_tree_snapshots.note_hash_tree] -root = "0x05cfddd64cd8186419dffde2648072f03e8e03b09f357ea09d6459d77a6ce474" -next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000004c0" +root = "0x266514a4f987058cb2deb71c37e845df4f7f85ab2a23f208dd98cf7eeeb7cbc4" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000380" [inputs.avm_proof_data.public_inputs.start_tree_snapshots.nullifier_tree] -root = "0x0767eded84fac9cfc5e5368549dc35085a3e5a4652a82b59d9e2d315f6046407" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000540" +root = "0x085a35f42d569f7aac0404ce29055696f738a6c798a32632d15a8453e59115ff" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000400" [inputs.avm_proof_data.public_inputs.start_tree_snapshots.public_data_tree] -root = "0x066ae819431599f4cfc5d66ecf7be666683baaba66da8d5e4b1d9d0c5004c505" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000097" +root = "0x0ff17010ab909b4a0c9581a9c33cf0af93280c6fcd6664cf27270b8762a9e418" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000096" [inputs.avm_proof_data.public_inputs.start_gas_used] da_gas = "0x0000000000000000000000000000000000000000000000000000000000000400" @@ -3453,7 +3453,7 @@ l2_gas = "0x00000000000000000000000000000000000000000000000000000000005b8d80" [inputs.avm_proof_data.public_inputs.gas_settings.max_fees_per_gas] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" -fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd150e0" +fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9be2b484" [inputs.avm_proof_data.public_inputs.fee_payer] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -3876,13 +3876,13 @@ fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd1 [[inputs.avm_proof_data.public_inputs.public_app_logic_call_requests]] is_static_call = false - args_hash = "0x28f6c0d2ecd0bb618234bfc47d42abd6a4258a3d657fe0023ff29557beea15f8" + args_hash = "0x280e22beb48c4b01ec87a57a5320613e8bc1d6a1f6eccdaeef5e7bd70bd6b649" [inputs.avm_proof_data.public_inputs.public_app_logic_call_requests.msg_sender] - inner = "0x111914eadfa81022a42e019b6cf3df64d98685d3c137a16079d0742132432bb0" + inner = "0x30021904ae3832fa38613650b957c74abcc7ae86fda9e53bcd89e7b638cf9d67" [inputs.avm_proof_data.public_inputs.public_app_logic_call_requests.contract_address] - inner = "0x0a6785e6919ab0ba6d52a2f5a21ec7b12547d20086cba00612fdfca447797845" + inner = "0x1b5c85f852759a87b99af1b7a52bf7b9a1bda23e2792ad5384113b9c17cc4c50" [inputs.avm_proof_data.public_inputs.public_app_logic_call_requests.function_selector] inner = "0x00000000000000000000000000000000000000000000000000000000d5441b0d" @@ -4381,7 +4381,7 @@ fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd1 "0x0000000000000000000000000000000000000000000000000000000000000000" ] nullifiers = [ - "0x13242b212fca10168003a993563cf595367fd882c096424b0a9e88872c606948", + "0x1f402bc61864bc9d78571eb2ff08bd21be788986bfc07e9e7865cbe3dd0a905b", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -4759,23 +4759,23 @@ inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.avm_proof_data.public_inputs.end_tree_snapshots.l1_to_l2_message_tree] root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000090" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000070" [inputs.avm_proof_data.public_inputs.end_tree_snapshots.note_hash_tree] -root = "0x05cfddd64cd8186419dffde2648072f03e8e03b09f357ea09d6459d77a6ce474" -next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000004c0" +root = "0x266514a4f987058cb2deb71c37e845df4f7f85ab2a23f208dd98cf7eeeb7cbc4" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000380" [inputs.avm_proof_data.public_inputs.end_tree_snapshots.nullifier_tree] -root = "0x012525b5182961169eeda08b1acc8a4ef16de30010dd848ec7df8112d3aaed09" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000541" +root = "0x0b3cd059f3a14d1fc149e845404ee3733e58010456792a3f61c3803f4ddd1248" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000401" [inputs.avm_proof_data.public_inputs.end_tree_snapshots.public_data_tree] -root = "0x0a1da5164b661cfe6ee6fb367dff660550d079aaa099c11d55c20c680ab56259" +root = "0x28b5d86e557e528de4452115c3b6ca2b8075465411e73f310c843fa8d2b5faad" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000097" [inputs.avm_proof_data.public_inputs.end_gas_used] da_gas = "0x0000000000000000000000000000000000000000000000000000000000000800" - l2_gas = "0x00000000000000000000000000000000000000000000000000000000000162af" + l2_gas = "0x0000000000000000000000000000000000000000000000000000000000016771" [inputs.avm_proof_data.public_inputs.accumulated_data] note_hashes = [ @@ -4845,7 +4845,7 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 "0x0000000000000000000000000000000000000000000000000000000000000000" ] nullifiers = [ - "0x13242b212fca10168003a993563cf595367fd882c096424b0a9e88872c606948", + "0x1f402bc61864bc9d78571eb2ff08bd21be788986bfc07e9e7865cbe3dd0a905b", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -5072,12 +5072,12 @@ length = "0x0000000000000000000000000000000000000000000000000000000000000000" inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [[inputs.avm_proof_data.public_inputs.accumulated_data.public_data_writes]] - leaf_slot = "0x0b45c85cf0ee39482e43059662d3d9159c77f6b05597498839786268cf0d61b4" - value = "0x0000000000000000000000000000000000000000000000000000000000001fa4" + leaf_slot = "0x0384c877dba0f9d849d02e07dac0d3105f8e09b0959c5ee77843b8c037b195bc" + value = "0x0000000000000000000000000000000000000000000000000000000000002328" [[inputs.avm_proof_data.public_inputs.accumulated_data.public_data_writes]] - leaf_slot = "0x0dbc11d57e63246e80e1d9b7cfe0bcdc1223887b95f2cb0d6cdba5a8f0938fdb" - value = "0x000000000000000000000000000000000000000000000000000000000000076c" + leaf_slot = "0x0d38d167da0ccd3ba447ce36953062d88783b02447d5af2bd09519bcd2a928f4" + value = "0x00000000000000000000000000000000000000000000000000000000000003e8" [[inputs.avm_proof_data.public_inputs.accumulated_data.public_data_writes]] leaf_slot = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -9489,120 +9489,139 @@ fields = [ [inputs.avm_proof_data.vk_data] vk_index = "0x0000000000000000000000000000000000000000000000000000000000000007" vk_path = [ - "0x1d120a033fc44e2e46f36e4c285766f95bb92c007997277fc16b7d61426c1f46", + "0x14844598b76623839d27d176f959eb56da12634178ad72ed46f9e3a546127473", "0x17ae608923d921cec098fa1fb04e11c0607e26cc76eeb692545e510f0a4a65cb", "0x15ecc428fab93e00874151f32575661782fcb6438d7cf5c797dad068e4eed590", - "0x1aec8b738adc9fc707aad5d7cdc734041ed9049eff616fb22619b58c50ea26e1", - "0x022f5ac8ff86489f5492d016d0ac69cd39e93b518da3f5a15a8c3177b92bc008", + "0x25e71fd64ecaa6b98ef492c6d93da8164a259284041220c258edb94fe47706ab", + "0x1967335d7b185023afd52d8f7f40be4ced0d80ba63d4dce2de3e26bfe772e394", "0x122cddd247164987e2287f8ce124bea7a68052e85bffebe2fc6cd71718689069" ] [inputs.avm_proof_data.vk_data.vk] key = [ - "0x0a9bc40be1b4e8671457fa59b8434e3a1263dc21eb0a2c1f9e1e50fbd41b4b96", - "0x171be03f5228f3c54779d00d52ac74df8c61fe413e1bab2cee47a4b80009e32c", - "0x27365562a524e65998638c618c3310749367a681752c8a63656bdd94d2fc6d27", - "0x0d2a4d1ac30c479e998ecc99b7dca6099d4748ebc23018dd8164b19d7d7ae315", - "0x2e2f074c6cfcf7237b3d1fda9aa626e69af4eb86e265c53dbb79f5a1485937d7", - "0x0a08feed6ddd04e60e5c08fa0e2e9eb922d083a717886be97b59e58aca97b140", - "0x27893d79f1798624693c441e07a99ba207b6869b03d064751c7cd2f4ba9f4441", - "0x24eab16f66f02339274a96819178c6f43e54014dbe32438cf3f2902d55abaa80", - "0x0f9099d414c43c4b951947446689eb20a8cb6f493256d2c106ca708c69ae02ae", - "0x1bb0aeb900171984e824fcb71b0ebcc925add59b67abe76ce56ad1cd7d0a1e46", - "0x1f0ea1c77c96ebd8d81385a6f73314481b8483ceeb295445dc76051c9f4cff26", - "0x2719f6c39a67acd65565bd86cb5701a52368e185fd756f201258be8e958c88ad", - "0x0cde421d982ad4e8c1ed4499781746933095371ef6f891ab6e432536238d8fda", - "0x0551e1509dc2070e200d1dbac8d08961d3763ac0917f089704d10151cd967c0a", - "0x1c3da90d91d4aaedfccfedc9aad82f55759577e7e98598ed333c6209c2e90611", - "0x1c2eb5487ebc4abaa3fc34b3a2e8fbb795445ebbbdadc73ccf3e31fbac50b1f2", - "0x28678047afba7b5c6c27cb5f6a27a5948dad9991e7cdfba503e5632d1dac02db", - "0x1fd657036df857de319e247a671bcc8318395ad9b0767cc5452118dad51192a5", - "0x1866169ed42b417b88fdc6bfa7d8d0fefab25fa27b6d86340735dd02b8771acb", - "0x2aa811205f5b9561c6a24cb21e36f12f3bbf5db5534e531a3d13b4bd7aab6066", - "0x22aec142e4de441e24eb89a89f056c5816f2cddd82de7f89fb6a1fe5b2a24662", - "0x0a513cec43ebf321243d3a6ffb21ace615b3bb2170f344cc92651e2c99211fe4", - "0x1c178e2fe8e83d3a31aad44a77fe1625ff730695fe174e193a1f04531675b7e6", - "0x1b6df56cf7674a8bb907a44c0c011120f0c5790f09ef6af67612252c2eea19b3", - "0x29868953af87502f329a26d6aefc3d8d2996d8eb3863fd15900bbf7c4e1e5240", - "0x1f816a6b26a20028fcaa46fe2efd14bb42f3533f6c0481856f5bac3c368dba6b", - "0x04ff07aca7c2629f7cc6958e64f95617d1844f6abc24a8d34e0e8b0a07aa511b", - "0x2a88a89a59259fe0264456afad30291f996c5660887aeac7833246f5ac7cbeeb", - "0x2420dc497f31d303e5a53d60981553c07533616daeaebefee5472e3a45356131", - "0x26ee9526ccfb6e67a423d03d94c17d49e0bcc4aba3f8e8ce1a87704f0a505921", - "0x1c219bbdaa61eb09fd77e1de9ac952c8b81bbeb4f0860ebd0b186e4f034c6baa", - "0x0359bc6162e35e0eae0d72f7497bd379e9c79c10ab2803a1aded4c4d98d53198", - "0x28131838f8aab6f1019319d212d18df5397c26588d16b35d9471e3fd6428872f", - "0x0a3c045283bc831e83aa08bb133fa710af8f38c9def4cd611ee086e842493235", - "0x2d971539b28e1dbb044c299f42160fea3736c9ee642889193ca3f6eb780558e7", - "0x00f74a04bca406b185ddaa8733fba8e287441210f5b1c45a79774ce8344529c2", - "0x1fd19ced5f817ef82eaaff29375eb768b8c4943bd6da31dd6d3bd65a8526bce5", - "0x1f733454aeea97a7d5d9a1db7072475b3fd9b3849ee922c79db5399d2cd3db9b", - "0x0922ef672b222a3a928b9e8e32dfaceb4f8fd324a58c201c983b3a12cf4debbc", - "0x13c902ddbd1473260a54b2a97ab2d896fb0882a3c919d3ffe9030c5a11dd35b9", - "0x1b472904fb54ffb7e0f31461cfebe2bdc34fc028ff9ac47eab7b5ac475b02f88", - "0x241dbb3c158e825cb0ca8af334de9cb493c128880274e455c9e42f73ea2df359", - "0x2c48afd5bc03ab83df7c3737ee0c5558aec91a66b23e6b4ed2717823fb673da6", - "0x23b0e7e24196cf2a874b5029167f0c6e932f001e7c94134ed9da51a269a2dc22", - "0x013627690aa48f3a7c6929d4076b680b937afa2e823230bbfff6d6eed31d99e9", - "0x076b35a5bfb4a675dc1891f95e88bd099c3949d62239dbf038f66429c83db8aa", - "0x1ac916847ae81efe8cb078e7b726c33d0115bebd7d5e6a10c403bc68ccbe401c", - "0x1334b4a04043cae8eee2c1d76f95fe9f151c33f84e2ade68fbbe7709ad1af6f0", - "0x1c9a083470636fdf87f8d256af42c85a34f9ab339768b5f6182cd082c8b6077e", - "0x0a951d54cfb034059e289172d8f5118f8ba4ca961a39494c8aa4c6c7fb888400", - "0x118c4f67b933288f636572f8441b0aa5ebe887f2834391b9116f75da7409b4b8", - "0x1d157f777faca5a0cec09b77802c5314b7337338321200ad0ff69a2d1bd83185", - "0x09b6063127c7d427eca19159e8111ccdd6b0b2fdcb302737b79c627558ad1792", - "0x1c7780b71240019ac70837ee56122e1b66b539994c81278886cbb5025b3edef9", - "0x2a97aead45cab7af7851c0763e1dff3d9d350011cc020152a54cb0995e100c1f", - "0x0b2d904f2277fcf32b255ba702a35c5efec0b45084bfffd52c5e958bafe4037f", - "0x29f7d4b405f50ee6b19938be6a350707c0f19ed5656c93eb1e33d9090fc5bbce", - "0x15d69582affd119f95b1c1b7fc2279f645fb0505d21c7a8a2760c0679c057212", - "0x24c7d67c8d6ee59952487a665d1e40160f5dae54c88d6d5d4c0fc63957eb21d5", - "0x10ec89f6f6c63585f264f5fd9be648ff017735efb6e6a16c25a6d47612f73a69", - "0x19db83a4e51515a00a77a9d67ff0eccbb9c03875afd30c13e6caf8588fbc023f", - "0x26f332d2abc17eff15a13e6c97489d1d00817261fd4bf3dc39358486b98a4577", - "0x144d0d8b4bccacfbb3cbc89cad824f87cd4e94ad0313fc76a592c5ce39e7467a", - "0x288bc718d3d692f435db9a17dec24ae881e154c1a4bd3765329cee31628b987d", - "0x004102df91b53cbfdea37c48ad251bf484b723e974073118b309370d42dba501", - "0x29be356e90aef660e8ab13df3fe4793089ed3ceab4fb64e64dd18263014ee7e4", - "0x10903e7b12a207860eec5d6e3c7559a2ecf6139f8588cd71ac8423fae2765127", - "0x1a18df9b7304703670a9d57fbabd46b7a36dba100252a79b8b2e4affe61844f6", - "0x297ba6804a9a0a29f9fea9781c63c07b526b15f49794007ec12f6d4dff339738", - "0x12ebba2a4c54629dadeae0eb257abd1ef91657a07ea36cf8611107589ce72d89", - "0x0105d3c9faf25f487df403b88bc2a222ac18d9d1e5c82d88ab30980676c088f3", - "0x13709ac3ec787e738c3718b901e40986f982314da03f190b8e7fd92f251f2b84", - "0x1023ef62049cf790eb81b84fdecbd42ff222cb6efc46c159dc8caf70ffc59a9e", - "0x008da4bd564716dafef29a8410b1eeaae53a9ffa3c7ccd3c92cb618d4c426699", - "0x23057c5c0a1d25f2f86cb3af96b6c472b177b61963774789bc99f83ed37c5243", - "0x10b79b177df00e1002d79a5f579aa4086ed95ebb6aa1f40164d57c8913c7358f", - "0x136d39651f76be2a2b2419530909e7062aa153ad358eb34815132a62dd09860a", - "0x1e0d369547f9e0966be514f3931e481cb199838885a431a583fd0d4d1c6daf3c", - "0x12c194c080a1d577e032451a72c1537c59de486e1ebe66642f90ba5aa365a30a", - "0x2953dc68804fa58b6664c2c854335ec9a11fa41485e42fe0b304774f9538de2e", - "0x210abc2c497c0182d802e291a65fe81cb68a4679cefca3f86b8f6c9732578e35", - "0x1a86ff45b53777f8bc152081c899d93c70c60297a882520c4a55d56223cd6065", - "0x18df201a331e5d8632897aa34baac3c0bb40e7d2b8c3a5a6940bae24c36b9b1a", - "0x22e0d8f6add7048588ac5bc1df01b4cf801c3aacc50c827dd3e2b9c747a72e39", - "0x184442f21828f6deebff0b38fc8759280d11f57b042dd8be0b840974a5fbfe12", - "0x26f76e32a23dffa9b75547f77f1f7d8f2b3693357755c690fc72836260a5b24b" + "0x2542f2992d506e12ef0f8fe9dc62b3a9f70df45faf909200550dd0b7819407ba", + "0x15dc4a1a9e4c3f1eb2b831329ede54c0bb84bfc80836da059340114bb20f57d8", + "0x1a98f13dc2699a9bdacc5ae5fcd9dd508d0bd29dc6d5936474b7854864992d12", + "0x19b89ad7d1ee8edf7cfa0664f0f300ed9b871824113007694b91f344321d3de1", + "0x2ab129e761bcf9caeda4346b5390cace660a21d1530d16dc4463bc05c0136bef", + "0x1d16b953bb4223322f6e1e6b290fc9d110e8bde329f9bb77075aaa9f1eafc7a8", + "0x2ff1224a3d41d05e9f2b9ed1e08df230e729208c1c8014e204d6723f8702c1fe", + "0x23af59b0930dd26505964d86b5b9603779f55e21512cf2c5b5bbf73804ad029d", + "0x27808e83dcaa2506507050ea2d38bdf163b180f01ff156ee4785822b90dfbea5", + "0x0e4d52e03c853b2cc548d9e0d49657394f4abc367c2c44ac0f1bf191385f6309", + "0x0d8d44133535778fb79c6cc8f3f5fd39cdbf2a0d725b7b1e722c70985eaeffab", + "0x1e0c3307bdf5f33a9488d241ac6fc58b25ca1d6717a21f17b6fb65688b726c2f", + "0x13a7985894e7b2c68919bea8ff3bde79f9512ab813a5e5794c87d33983d4b677", + "0x056deab53a7763b751eee43da6cbbc4187133002770e605df8998cb8d0c53bcf", + "0x0d691ec99aa93d04440524d2fd16e2097cf011034eb5005df403f2b1fcfcbdd4", + "0x031d01a98b79c169deebb5f3f0cd0c2cbc835920c07c3d9c74d2536142f4419a", + "0x17f64a1cc517ccd5c9271020bb7aa598835d129e3de23f3b07f16e5814cfe3c7", + "0x18b25d76ee3db7f70ee2f728c81b4a1c19bc71e5b3e3c50519c3f2d72680558b", + "0x259c5bb26f3e16bbc8e6226deb1afcacd6afff8b88f294c35edc38acc92fd2d9", + "0x266abd6bb752275dbf7c50db051c3263ddcc7fbb01875093bb74127575f9145e", + "0x2a5de2975bf32b7085ffb7c9bff08643950cad0328b8e7b608113550b5e604fa", + "0x056fbeeeb5a8322b51ab3012407a1dd2badd10f075daed861bbc1d9e7c8ed8e5", + "0x02869f97cab06b77299a592f70938dcf1a3281c818a56d15fb16f32c1fbf1cf4", + "0x0de79e96fbf768497877d90f5b1218f2eb276c1cc6d20b72caf5233869a6a141", + "0x24020b9ca12300e9dd8c30973769c932e2fa68aacfaccd9e07ae6f095a438599", + "0x173413a0605f5e04712e4d35c6d3cf0c9f71ec395808715737f0fbaa8ef3b964", + "0x27003c4fc15015cced89ddc4e6c52cd3a6618ebc7d43bbeb5abdff3877f82fdf", + "0x18d85a0a76a9d60e448cb7109cb783c76baf368fde35b8b3ac832790f04c984c", + "0x0842de1090525272f7075e0acf39aac06250bb5ed869aea55f258a9f628d150e", + "0x1b1dda176330cb9442257c0f440f57588b1b7b8ddaa3b7ce9c5a49a222581a42", + "0x12389f610f1966a8940182295263e4e895a4b26f243c1145f0c03252a4d90fa1", + "0x0e378ca610b337bf4651290c316f068ee6b2f400807a5a181806dcf3ce4f92f3", + "0x26af8b6bebe1a1382ec59ce4ad6692207864083e49826b0cd88870dbeb926877", + "0x0759e35fd99ae00da70ea8093366fe7bb3de61197be5b88c2395db2c7abaf9da", + "0x0ab9670b94d0b06cdb710a7d5ebf45c73b60feccda0ea729c416dfd043c6ddf2", + "0x25b2f253e1d151108f050c53960f5129a9e814786e3677341fc7f8749b405563", + "0x252a2d34d39bf2f00b866be0c327d85f18540004e5e857a1a3c3e9e5cc0df124", + "0x179c4693322ccf9b0664539d73c537d98da2b5438c2ba3fa23c39dd08ac8dfce", + "0x1503cb1d04a5c6b2968fb76a82600cd627f03b2f59477c709e223a51601c3a5b", + "0x2597582c96a91ecbd29cb204de2273ee3d14068c77f68913e724118d880d8585", + "0x203f46bac2a09e027dc56de3bd798052290459ba2cfcee42aade2c7779a642e8", + "0x0a8e05c58ead2cea70e968907877b1f4da1598ea4c5de7a9f66c9721dea72881", + "0x27988fd7315730880208d338dedda9573959a2a93a0a61afd337911335bfee22", + "0x2fce8116a83e248c31be64f8ec2623659968cc736fb78555d49fb69120ca0522", + "0x28d8855e157458dea1e61a9854a2779d2a442efaa0150c3c2732a83f660d3976", + "0x28ff84917b62a84c6d3dc0c16de2dc7e340cb04615baaf9c89a875096dd5491d", + "0x0d5b95a0b924e27759a5eae65775febb039b4f35a20298c9d258817ab2af8bde", + "0x282959756a8224c297da9456b46ba93dbbd857b388fe84508f07edf5a7719eb7", + "0x2d9d1858ba4419cc9c6ad979576ab51d829c13d281bf084b5f2640da3fc8e222", + "0x15026fa1c1b68694e5e929a28281d8407d31d18425c7347fe37984307da88249", + "0x159bc7a3a37363eb66d16be88378160e34a75707a5bf2aba439e7a1fe050169d", + "0x08ed7aba31debc48451fd97434e16f1a9e16df9da61a0ad53e9e1dd02e3c2065", + "0x01fe6919296e72cc2ceaa75467a94689fac5fe26595800d9a2b1a810ad8996dd", + "0x0ad776da8301a0e499e29e8df087872e578f884997361d9beff004f355d60f16", + "0x24d07f74b67935cc1112725ab139ca297e2af7281a86aed2ea41e3b3c7959904", + "0x12cbcfcc6454fbfc18a85a3b227d8577074ae281d2dd12d7974d3f4ab314405f", + "0x1bf02cfd70c2fd7e2ae910f8c5f3498222d76a663b84f54ce1cfe61be1b55b0f", + "0x03c0627976adf2d07579de88392bae8d36b61cfa978dc0ab0c4a58e4669f7ed7", + "0x18b18530ca1f021825873a676b279c3bf2fc3eb10b8150c6aefab58d2473f017", + "0x1013fec149896a43be3ff191f80a06290305ec2188748231088c2d935233ca25", + "0x2b89f5be6eba9c57095970360676a7d68ae08e2bd21793fd6826121c1ff16ee0", + "0x02cb71be5485b5e967ba3c68405ed637fc14e8004911659c518a566f119000e9", + "0x0f775f7e515eb52c8d4ac1eb31270582cd1a9f765d64eaa9001d99a81cff792b", + "0x12535f52e6b0788d540ff22161c394303d288bb894fb4f7c11be6c493c69e509", + "0x1b6033dea24a30cee4608d47b1f94c0951e2134bf94ef6497695cb599bb32158", + "0x2fb1342ae5ae45096efd7d22a17126a845b80a5f8abadd19def7e11af5718278", + "0x1c5abbe347dd6b25b2b0216c759eaa29d95b80053c0e5712b9181f6c19ad8312", + "0x0dde51d3892c03e398fbd85155a1e398671b191a7b6e2beeeaa24d4875991a1a", + "0x16396aa97472cf6d9c5dd2dc24840a57cd1fff93acaf58be91e9691aacbecf90", + "0x023354ccd43c876f19ef2c354b7808ccb46008fea59983246cece1fa4298ec9b", + "0x299408c3ee981fa5f97744e27a0c807535eb5ac0bcdf68f43c4e5b14e639c636", + "0x15d6cf26cd4d0a887c7aa0d0c230538e9f7d19511c61c8b398668c1471f46f85", + "0x1f0f66738101dd040298f8d9d512eef53c050fd54e3901f9fc2a0b9525d21a60", + "0x268dc88c19377b2e795701878ce05b16ce6a764dd601daca323bc5fba2af70e6", + "0x2107110b2661d3253e72c2e324268b3fdd0071cdfb59d5fdbe509b29e590113f", + "0x058055d7cb5b3ffca8d3a116c5f842d945af9a38ba03f194109c70b69779e77f", + "0x0d861fb26392acc1853467cc18cb197c3c78eb785bda5aba583f64fbf1ef0d43", + "0x21dcc20a99f0cf80f9a56eeedea5558bbefb3c2378468775466944fd09e89169", + "0x0787a1510f671802b2b9ac5c4866798d566efbdf38b8348db326426a1ab7808b", + "0x10e78a0cf104b2a13dc8952e6e24ea72817040311429d2145220b7e981ea1818", + "0x0c92147ed46f46b207a53f93101f05f62718763c01dc944f6552ba80fe2a6431", + "0x2e7a5bf84263a27da18da56558d203ec5385534de5ee81516c6dfcf960649dea", + "0x12953ab48651385f95e9d12672f5eb929d030da1fdb0ebc3e62783906acd28e8", + "0x0350a9ee3e3aff51266a71891d2ef06d708ffb98ab95c23493f086379907fe45", + "0x21f1cbf48e827bb6fa56049490cae0ffe89afe9bec1344a668b2a01d43e648a0", + "0x142c3af6e017b8b90fa6c01542ade7f52f9b9d8e657185b14627eb18c3c01539" ] - hash = "0x280201658185c350a3900e2b6fe7948125e6492950fe5575c47edf3518a99fd1" + hash = "0x12fc95142d9b64d06f47211dc8362a877f9d287f2c7ddfb7bf89b37f2bfc6eee" [inputs.start.note_hash_tree] -root = "0x05cfddd64cd8186419dffde2648072f03e8e03b09f357ea09d6459d77a6ce474" -next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000004c0" +root = "0x266514a4f987058cb2deb71c37e845df4f7f85ab2a23f208dd98cf7eeeb7cbc4" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000380" [inputs.start.nullifier_tree] -root = "0x0767eded84fac9cfc5e5368549dc35085a3e5a4652a82b59d9e2d315f6046407" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000540" +root = "0x085a35f42d569f7aac0404ce29055696f738a6c798a32632d15a8453e59115ff" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000400" [inputs.start.public_data_tree] -root = "0x066ae819431599f4cfc5d66ecf7be666683baaba66da8d5e4b1d9d0c5004c505" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000097" +root = "0x0ff17010ab909b4a0c9581a9c33cf0af93280c6fcd6664cf27270b8762a9e418" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000096" + +[inputs.start_sponge_blob] +fields = "0x0000000000000000000000000000000000000000000000000000000000000000" +expected_fields = "0x0000000000000000000000000000000000000000000000000000000000000009" + + [inputs.start_sponge_blob.sponge] + cache = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + state = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000090000000000000000" +] + cache_size = "0x0000000000000000000000000000000000000000000000000000000000000000" + squeeze_mode = false [inputs.state_diff_hints] sorted_nullifiers = [ - "0x13242b212fca10168003a993563cf595367fd882c096424b0a9e88872c606948", + "0x1f402bc61864bc9d78571eb2ff08bd21be788986bfc07e9e7865cbe3dd0a905b", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -9735,10 +9754,10 @@ sorted_nullifier_indexes = [ ] note_hash_subtree_sibling_path = [ "0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76", - "0x1fdb4f9d5bfba8012e51f50d72f0ac95ddd1ed26efe18b3c9274696309e88a05", - "0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1", - "0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972", - "0x28995beea466e773a0e4e61d4711d19f9e05d5f637965492495358d21779f6c9", + "0x0af87d98c040dfadabf7ef27165e88560ef39d0c923b6534466a98f672ed8c88", + "0x246218a1d11c91124c20e3394600ad16e5036e2b84aa6afcc8cf3422fd29b02c", + "0x1196b37a9f45bda9848dd661f2df18622a6b4efed01b1cb9eae812f3bf0bc0de", + "0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686", "0x0f320b0703439a8114f81593de99cd0b8f3b9bf854601abb5b2ea0e8a3dda4a7", "0x0d07f6e7a8a0e9199d6d92801fff867002ff5b4808962f9da2ba5ce1bdd26a73", "0x1c4954081e324939350febc2b918a293ebcdaead01be95ec02fcbe8d2c1635d1", @@ -9770,11 +9789,11 @@ note_hash_subtree_sibling_path = [ "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" ] nullifier_subtree_sibling_path = [ - "0x0e7f213022df1d2b979cddbf46f6ebf987c82be68ed68e9eb59dc69fd39fce8d", + "0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76", "0x2d78ed82f93b61ba718b17c2dfe5b52375b4d37cbbed6f1fc98b47614b0cf21b", - "0x2dd44164f2ccf95803bf1ddcc4522fc2c50ada8a4d4c71962bfb483dd8f7f66e", + "0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1", "0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972", - "0x2ea8c3905824d23f376c293796f3337b43795486950dd281a3b467a855d423ce", + "0x0a06b6b89781f620b504e94f41d028f37551b3ee799e27e4f53d77e2cc8dfe70", "0x0f320b0703439a8114f81593de99cd0b8f3b9bf854601abb5b2ea0e8a3dda4a7", "0x0d07f6e7a8a0e9199d6d92801fff867002ff5b4808962f9da2ba5ce1bdd26a73", "0x1c4954081e324939350febc2b918a293ebcdaead01be95ec02fcbe8d2c1635d1", @@ -9850,45 +9869,45 @@ public_data_tree_sibling_paths = [ ], [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" + "0x0bb3d8007a9c81e4a77ffbff57279f3aa0d79d8678f1814c30cb171dfda2559c", + "0x23cd912ef92df34fc8cc4a7ac3d8aa97957496a61f242fc5980c532e41d2450f", + "0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20", + "0x2aa283f0f28968b543363d4318ba200eb9e61d8848211a240bc8672e5ced2241", + "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", + "0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76", + "0x1ca9e278adda9d761bf24db4e548d3c13a9a0bad6808b9cc4c7881a6f7cf812d", + "0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1", + "0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972", + "0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686", + "0x0f320b0703439a8114f81593de99cd0b8f3b9bf854601abb5b2ea0e8a3dda4a7", + "0x0d07f6e7a8a0e9199d6d92801fff867002ff5b4808962f9da2ba5ce1bdd26a73", + "0x1c4954081e324939350febc2b918a293ebcdaead01be95ec02fcbe8d2c1635d1", + "0x0197f2171ef99c2d053ee1fb5ff5ab288d56b9b41b4716c9214a4d97facc4c4a", + "0x2b9cdd484c5ba1e4d6efcc3f18734b5ac4c4a0b9102e2aeb48521a661d3feee9", + "0x14f44d672eb357739e42463497f9fdac46623af863eea4d947ca00a497dcdeb3", + "0x071d7627ae3b2eabda8a810227bf04206370ac78dbf6c372380182dbd3711fe3", + "0x2fdc08d9fe075ac58cb8c00f98697861a13b3ab6f9d41a4e768f75e477475bf5", + "0x20165fe405652104dceaeeca92950aa5adc571b8cafe192878cba58ff1be49c5", + "0x1c8c3ca0b3a3d75850fcd4dc7bf1e3445cd0cfff3ca510630fd90b47e8a24755", + "0x1f0c1a8fb16b0d2ac9a146d7ae20d8d179695a92a79ed66fc45d9da4532459b3", + "0x038146ec5a2573e1c30d2fb32c66c8440f426fbd108082df41c7bebd1d521c30", + "0x17d3d12b17fe762de4b835b2180b012e808816a7f2ff69ecb9d65188235d8fd4", + "0x0e1a6b7d63a6e5a9e54e8f391dd4e9d49cdfedcbc87f02cd34d4641d2eb30491", + "0x09244eec34977ff795fc41036996ce974136377f521ac8eb9e04642d204783d2", + "0x1646d6f544ec36df9dc41f778a7ef1690a53c730b501471b6acd202194a7e8e9", + "0x064769603ba3f6c41f664d266ecb9a3a0f6567cd3e48b40f34d4894ee4c361b3", + "0x1595bb3cd19f84619dc2e368175a88d8627a7439eda9397202cdb1167531fd3f", + "0x2a529be462b81ca30265b558763b1498289c9d88277ab14f0838cb1fce4b472c", + "0x0c08da612363088ad0bbc78abd233e8ace4c05a56fdabdd5e5e9b05e428bdaee", + "0x14748d0241710ef47f54b931ac5a58082b1d56b0f0c30d55fb71a6e8c9a6be14", + "0x0b59baa35b9dc267744f0ccb4e3b0255c1fc512460d91130c6bc19fb2668568d", + "0x2c45bb0c3d5bc1dc98e0baef09ff46d18c1a451e724f41c2b675549bb5c80e59", + "0x121468e6710bf1ffec6d0f26743afe6f88ef55dab40b83ca0a39bc44b196374c", + "0x2042c32c823a7440ceb6c342f9125f1fe426b02c527cd8fb28c85d02b705e759", + "0x0d582c10ff8115413aa5b70564fdd2f3cefe1f33a1e43a47bc495081e91e73e5", + "0x0f55a0d491a9da093eb999fa0dffaf904620cbc78d07e63c6f795c5c7512b523", + "0x21849764e1aa64b83a69e39d27eedaec2a8f97066e5ddb74634ffdb11388dd9a", + "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" ], [ "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -12497,9 +12516,9 @@ public_data_tree_sibling_paths = [ ] [[inputs.state_diff_hints.nullifier_predecessor_preimages]] - nullifier = "0x11983940166f7ec7cdf50c75fc84536d3d7749f47370b8e466c6a6c47f07e5ef" - next_nullifier = "0x144cd41175cdbb1d16cae88f75f09ceef217d61b127c576f4e34eb5654afac19" - next_index = "0x0000000000000000000000000000000000000000000000000000000000000101" + nullifier = "0x1da4d5e505ca0e6d9e745c3dc9a68179e5051b2a4c1e3c1c57dda892cb50c07a" + next_nullifier = "0x229d31a8187ed8bc4771d63979f06412468caacbd5a1373a486cd15a9c107b75" + next_index = "0x0000000000000000000000000000000000000000000000000000000000000103" [[inputs.state_diff_hints.nullifier_predecessor_preimages]] nullifier = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -12817,19 +12836,19 @@ public_data_tree_sibling_paths = [ next_index = "0x0000000000000000000000000000000000000000000000000000000000000000" [[inputs.state_diff_hints.nullifier_predecessor_membership_witnesses]] - leaf_index = "386" + leaf_index = "258" sibling_path = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x1527128007a1744a4392470eb619e23bca0ddfffe95e266ebd9902558b43e26d", + "0x158597305275af15ab29181c87b7ace38630b9cbd269e6abfc2220a9da98a742", + "0x20c5bad6ccbe48150d90032dedfd2fd4dd71ee511cd6cd227127678b228651f1", "0x0e34ac2c09f45a503d2908bcb12f1cbae5fa4065759c88d501c097506a8b2290", "0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20", "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e", "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", "0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76", - "0x2daa142b06e2b2165dcd720ed0a3f793761d6fbb0636a55ea704d4cfe8f82389", - "0x0aeea9cba67159abfd5c9a3edaa0bb85f319991aac2b56d64ee477da8894d2a4", - "0x2c58c109e549bf35c879672cfc1e7fa840d17a1135c10ae6a14ace6d6cb7571b", - "0x2ff39669be9787b2e2709f1a08714c92ad6bd32d526124700d4ba2dc4237549b", + "0x156e9473a6806318d563f77f2b7ad410f0786969fb9804e80f09067deac9aa20", + "0x17fceab5e6d15d0f76dd258329b0369a8c603e977a7b900046d484c9e616cca1", + "0x0424880a586d1288a51e34a5fccc9eff170c3280b8cee33ab0c8f091f2ed02bc", + "0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686", "0x0f320b0703439a8114f81593de99cd0b8f3b9bf854601abb5b2ea0e8a3dda4a7", "0x0d07f6e7a8a0e9199d6d92801fff867002ff5b4808962f9da2ba5ce1bdd26a73", "0x1c4954081e324939350febc2b918a293ebcdaead01be95ec02fcbe8d2c1635d1", @@ -15697,16 +15716,16 @@ public_data_tree_sibling_paths = [ ] [[inputs.state_diff_hints.low_public_data_writes_preimages]] - slot = "0x0b45c85cf0ee39482e43059662d3d9159c77f6b05597498839786268cf0d61b4" - value = "0x0000000000000000000000000000000000000000000000000000000000002328" - next_slot = "0x0ca89755bb0730e9ed4dd3a78cdbaf0eb3eacd9440ee177117281152bcce178d" - next_index = "0x0000000000000000000000000000000000000000000000000000000000000094" + slot = "0x0384c877dba0f9d849d02e07dac0d3105f8e09b0959c5ee77843b8c037b195bc" + value = "0x0000000000000000000000000000000000000000000000000000000000002710" + next_slot = "0x0561cdb9d85d8b3ae33aff890d99288e470e182c3ae05e7c9be17a6951dfc6bc" + next_index = "0x0000000000000000000000000000000000000000000000000000000000000093" [[inputs.state_diff_hints.low_public_data_writes_preimages]] - slot = "0x0dbc11d57e63246e80e1d9b7cfe0bcdc1223887b95f2cb0d6cdba5a8f0938fdb" - value = "0x00000000000000000000000000000000000000000000000000000000000003e8" - next_slot = "0x184a65ea40f3f1923711df935e916f79dc35da7f020d1c75bc7a127504b6401a" - next_index = "0x0000000000000000000000000000000000000000000000000000000000000085" + slot = "0x0a2bb0623b5676e4f6c3a348d5216f7399df6f70bc39b6215fc25c61b6a298cc" + value = "0x000000000000000000000000000000000000000000000000000000000000dead" + next_slot = "0x1235e8f0d07907deb94ddae02ffc6d866dad7bf5e772f11daae670de97e9e7ec" + next_index = "0x0000000000000000000000000000000000000000000000000000000000000092" [[inputs.state_diff_hints.low_public_data_writes_preimages]] slot = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -16083,14 +16102,14 @@ public_data_tree_sibling_paths = [ [[inputs.state_diff_hints.low_public_data_writes_witnesses]] leaf_index = "136" sibling_path = [ - "0x018fd9795e5221bbe21d8fc848fd0ca7d730e7785baca840b55b767b5cfab466", - "0x02cd9083f32b8b93c68601ddd1e79dc269458001593fb8549b6d1f3023fdc344", - "0x07efb57096ff04b587082e1b8735a80915d09831a1be0908534aea8b3294c1cc", - "0x29467fb57f3ecdfb29b87216eea31df7371beb224115f65a2fbdc9781a8d2148", - "0x12eea05be879210a2c69fcf1b9897aa42e60cdeea61e56af3e376694b90bf92b", + "0x1f44507bda987b03d4828bbeea80b3db6c5260b16befa7ea02a8e791d16edcb2", + "0x1cddbb72a31abd2933738763e7698ca38d44d44b6e4cc83e62b060f887d914f3", + "0x287643c15a8e932b1785e4716de672f715332d1b9501b839614a21e93027b2d2", + "0x1a9d534731724e33cd91247aaa1e2cfa7fd1262ecc547b362c9017dd511a9da0", + "0x2316385064e32aff8da30a269857d01aeaa14d6a45b61bd144c5d7a357e81304", "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", "0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76", - "0x00cfc863bdbab09a2adaadcd0e4ee0bd93aeafa7c5ae4489ac65d80b292373d3", + "0x1ca9e278adda9d761bf24db4e548d3c13a9a0bad6808b9cc4c7881a6f7cf812d", "0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1", "0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972", "0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686", @@ -16126,16 +16145,16 @@ public_data_tree_sibling_paths = [ ] [[inputs.state_diff_hints.low_public_data_writes_witnesses]] - leaf_index = "150" + leaf_index = "132" sibling_path = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x2c33fefac84b3e4f982eb476b3d981d47640e57e439e2db43a1090799056f6a7", - "0x1a8ebf8d402fd4ca616c330ce595266ceabf7df6e10b62ba6407ce880ca9d1b6", - "0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20", - "0x16ad772cf3b46940d9863488324a47cf859186ee8540320c6deac9d538087e9f", + "0x183de73645b7162deaebf8b8448f694111b0f42ca72ae55de7887b12059fecfd", + "0x0be0821d05398e17224d93ea78ef03d123a58ba3900dae4e910ebfd245335938", + "0x08b82ce2fd75b88f3d00322d30db153f55d22b9ab764c80fa43edbec6441a15f", + "0x01bf9864040632b1050345bf85d0adf9ab3168bc1ea8a5dc506c9aa6e8a0e665", + "0x2316385064e32aff8da30a269857d01aeaa14d6a45b61bd144c5d7a357e81304", "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", "0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76", - "0x00cfc863bdbab09a2adaadcd0e4ee0bd93aeafa7c5ae4489ac65d80b292373d3", + "0x1ca9e278adda9d761bf24db4e548d3c13a9a0bad6808b9cc4c7881a6f7cf812d", "0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1", "0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972", "0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686", @@ -18961,12 +18980,12 @@ public_data_tree_sibling_paths = [ ] [inputs.archive_root_membership_witness] -leaf_index = "9" +leaf_index = "6" sibling_path = [ - "0x119857319c97ab6694ec8d3e405f5a0e10059d07563926f24e6872eae7d0926a", - "0x0b63a53787021a4a962a452c2921b3663aff1ffd8d5510540f8e659e782956f1", - "0x0e34ac2c09f45a503d2908bcb12f1cbae5fa4065759c88d501c097506a8b2290", - "0x270fe0381fdd00d06d8385a659b32b9316fef637f04fd981fbeb65f5a4680917", + "0x022087729c552378b2572eb9be555e7dff2161a22e9a1d5e175d3558163a615b", + "0x1392eef60465b19ad485b6de40faf2db67a3ba33bd6ab3db4229493361f1371b", + "0x2ec2b3b3c692503758a443640b3e5f20a818cd7b7d339956c2d923c9d02622cb", + "0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20", "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e", "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", "0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76", @@ -18995,26 +19014,26 @@ sibling_path = [ ] [inputs.constants] -vk_tree_root = "0x0a118eae659eb1671e3f579a83c4ad3688cee1b9f23dcec48af4d3f3a2de1733" -protocol_contract_tree_root = "0x296690a67333fb896eff0ef812d31f9be26161726e47057bb688ddcf08164453" +vk_tree_root = "0x0bee8f04d48c18c88f2b9dd3b87daba3b3c8d000f44d290587504ae770942c56" +protocol_contract_tree_root = "0x1c4e64cbb91a46bc2fd73590e1dacd3ddf84d1b5e7a7182795ab02fe80399caf" [inputs.constants.last_archive] - root = "0x25c8c19c00ade5d9ee2e42a0b6ba0487a228c008c9216227b3cfe6483cc8c274" - next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000a" + root = "0x04b51aa5df89d177213335ca62dee74d15b920e231f5ea5198ed405967d188fd" + next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" [inputs.constants.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" version = "0x0000000000000000000000000000000000000000000000000000000000000001" - block_number = "0x000000000000000000000000000000000000000000000000000000000000000a" - slot_number = "0x0000000000000000000000000000000000000000000000000000000000000024" - timestamp = "0x00000000000000000000000000000000000000000000000000000000675b06b2" + block_number = "0x0000000000000000000000000000000000000000000000000000000000000008" + slot_number = "0x0000000000000000000000000000000000000000000000000000000000000015" + timestamp = "0x00000000000000000000000000000000000000000000000000000000675c2e96" [inputs.constants.global_variables.coinbase] - inner = "0x000000000000000000000000dde7ef1ed87eb5cbb0562efd27c3ad9eda8c800a" + inner = "0x000000000000000000000000ed846b6f217c7084a6c108eda50abce8c8367eac" [inputs.constants.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.constants.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd150e0" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd4533a" diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-block-merge/Prover.toml b/noir-projects/noir-protocol-circuits/crates/rollup-block-merge/Prover.toml index 3f5c4c25053..ad739d8ea2a 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-block-merge/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/rollup-block-merge/Prover.toml @@ -1,59 +1,59 @@ [[inputs.previous_rollup_data]] [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs] -previous_block_hash = "0x148654793384eeab5a0c8b73d18ced24816c0cdc72c0ee5b18bbdaa2b8f9c126" -end_block_hash = "0x0e002d2293d9c53278f88d908beeeaad4d9b622d3c1d6cb48fb6ddcef6735d4e" -out_hash = "0x00db4f24d6eff7983ec163d02c230d6a44237feabd8a2da284edce08afc71435" -vk_tree_root = "0x0a118eae659eb1671e3f579a83c4ad3688cee1b9f23dcec48af4d3f3a2de1733" -protocol_contract_tree_root = "0x296690a67333fb896eff0ef812d31f9be26161726e47057bb688ddcf08164453" +previous_block_hash = "0x022087729c552378b2572eb9be555e7dff2161a22e9a1d5e175d3558163a615b" +end_block_hash = "0x002618b2ab9d69c78576160e237eab9c7b0e42bea8e433224af2abb5aa0ea51f" +out_hash = "0x00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb" +vk_tree_root = "0x0bee8f04d48c18c88f2b9dd3b87daba3b3c8d000f44d290587504ae770942c56" +protocol_contract_tree_root = "0x1c4e64cbb91a46bc2fd73590e1dacd3ddf84d1b5e7a7182795ab02fe80399caf" prover_id = "0x0000000000000000000000000000000000000000000000000000000000000051" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.previous_archive] - root = "0x25c8c19c00ade5d9ee2e42a0b6ba0487a228c008c9216227b3cfe6483cc8c274" - next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000a" + root = "0x04b51aa5df89d177213335ca62dee74d15b920e231f5ea5198ed405967d188fd" + next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.new_archive] - root = "0x01efdcbcbea2494f71ea74a5d0d0ba5455129c180cec155418ee104e6d22b2fc" - next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000b" + root = "0x0781b1cc32dbe21aba1e27519e765bd44222b52ef464c6b63dfa97b399376c2e" + next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000009" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" version = "0x0000000000000000000000000000000000000000000000000000000000000001" - block_number = "0x000000000000000000000000000000000000000000000000000000000000000a" - slot_number = "0x0000000000000000000000000000000000000000000000000000000000000024" - timestamp = "0x00000000000000000000000000000000000000000000000000000000675b06b2" + block_number = "0x0000000000000000000000000000000000000000000000000000000000000008" + slot_number = "0x0000000000000000000000000000000000000000000000000000000000000015" + timestamp = "0x00000000000000000000000000000000000000000000000000000000675c2e96" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.coinbase] - inner = "0x000000000000000000000000dde7ef1ed87eb5cbb0562efd27c3ad9eda8c800a" + inner = "0x000000000000000000000000ed846b6f217c7084a6c108eda50abce8c8367eac" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd150e0" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd4533a" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" version = "0x0000000000000000000000000000000000000000000000000000000000000001" - block_number = "0x000000000000000000000000000000000000000000000000000000000000000a" - slot_number = "0x0000000000000000000000000000000000000000000000000000000000000024" - timestamp = "0x00000000000000000000000000000000000000000000000000000000675b06b2" + block_number = "0x0000000000000000000000000000000000000000000000000000000000000008" + slot_number = "0x0000000000000000000000000000000000000000000000000000000000000015" + timestamp = "0x00000000000000000000000000000000000000000000000000000000675c2e96" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.coinbase] - inner = "0x000000000000000000000000dde7ef1ed87eb5cbb0562efd27c3ad9eda8c800a" + inner = "0x000000000000000000000000ed846b6f217c7084a6c108eda50abce8c8367eac" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd150e0" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd4533a" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x000000000000000000000000000000000000000000000000001ca941b182ee80" + value = "0x0000000000000000000000000000000000000000000000000011b417896f129a" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x000000000000000000000000dde7ef1ed87eb5cbb0562efd27c3ad9eda8c800a" + inner = "0x000000000000000000000000ed846b6f217c7084a6c108eda50abce8c8367eac" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] value = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -337,260 +337,2612 @@ prover_id = "0x0000000000000000000000000000000000000000000000000000000000000051" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" -[inputs.previous_rollup_data.proof] -fields = [ - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000002", - "0x0000000000000000000000000000000000000000000000000000000000000003", - "0x0000000000000000000000000000000000000000000000000000000000000004", - "0x0000000000000000000000000000000000000000000000000000000000000005", - "0x0000000000000000000000000000000000000000000000000000000000000006", - "0x0000000000000000000000000000000000000000000000000000000000000007", - "0x0000000000000000000000000000000000000000000000000000000000000008", - "0x0000000000000000000000000000000000000000000000000000000000000009", - "0x000000000000000000000000000000000000000000000000000000000000000a", - "0x000000000000000000000000000000000000000000000000000000000000000b", - "0x000000000000000000000000000000000000000000000000000000000000000c", - "0x000000000000000000000000000000000000000000000000000000000000000d", - "0x000000000000000000000000000000000000000000000000000000000000000e", - "0x000000000000000000000000000000000000000000000000000000000000000f", - "0x0000000000000000000000000000000000000000000000000000000000000010", - "0x0000000000000000000000000000000000000000000000000000000000000011", - "0x0000000000000000000000000000000000000000000000000000000000000012", - "0x0000000000000000000000000000000000000000000000000000000000000013", - "0x0000000000000000000000000000000000000000000000000000000000000014", - "0x0000000000000000000000000000000000000000000000000000000000000015", - "0x0000000000000000000000000000000000000000000000000000000000000016", - "0x0000000000000000000000000000000000000000000000000000000000000017", - "0x0000000000000000000000000000000000000000000000000000000000000018", - "0x0000000000000000000000000000000000000000000000000000000000000019", - "0x000000000000000000000000000000000000000000000000000000000000001a", - "0x000000000000000000000000000000000000000000000000000000000000001b", - "0x000000000000000000000000000000000000000000000000000000000000001c", - "0x000000000000000000000000000000000000000000000000000000000000001d", - "0x000000000000000000000000000000000000000000000000000000000000001e", - "0x000000000000000000000000000000000000000000000000000000000000001f", - "0x0000000000000000000000000000000000000000000000000000000000000020", - "0x0000000000000000000000000000000000000000000000000000000000000021", - "0x0000000000000000000000000000000000000000000000000000000000000022", - "0x0000000000000000000000000000000000000000000000000000000000000023", - "0x0000000000000000000000000000000000000000000000000000000000000024", - "0x0000000000000000000000000000000000000000000000000000000000000025", - "0x0000000000000000000000000000000000000000000000000000000000000026", - "0x0000000000000000000000000000000000000000000000000000000000000027", - "0x0000000000000000000000000000000000000000000000000000000000000028", - "0x0000000000000000000000000000000000000000000000000000000000000029", - "0x000000000000000000000000000000000000000000000000000000000000002a", - "0x000000000000000000000000000000000000000000000000000000000000002b", - "0x000000000000000000000000000000000000000000000000000000000000002c", - "0x000000000000000000000000000000000000000000000000000000000000002d", - "0x000000000000000000000000000000000000000000000000000000000000002e", - "0x000000000000000000000000000000000000000000000000000000000000002f", - "0x0000000000000000000000000000000000000000000000000000000000000030", - "0x0000000000000000000000000000000000000000000000000000000000000031", - "0x0000000000000000000000000000000000000000000000000000000000000032", - "0x0000000000000000000000000000000000000000000000000000000000000033", - "0x0000000000000000000000000000000000000000000000000000000000000034", - "0x0000000000000000000000000000000000000000000000000000000000000035", - "0x0000000000000000000000000000000000000000000000000000000000000036", - "0x0000000000000000000000000000000000000000000000000000000000000037", - "0x0000000000000000000000000000000000000000000000000000000000000038", - "0x0000000000000000000000000000000000000000000000000000000000000039", - "0x000000000000000000000000000000000000000000000000000000000000003a", - "0x000000000000000000000000000000000000000000000000000000000000003b", - "0x000000000000000000000000000000000000000000000000000000000000003c", - "0x000000000000000000000000000000000000000000000000000000000000003d", - "0x000000000000000000000000000000000000000000000000000000000000003e", - "0x000000000000000000000000000000000000000000000000000000000000003f", - "0x0000000000000000000000000000000000000000000000000000000000000040", - "0x0000000000000000000000000000000000000000000000000000000000000041", - "0x0000000000000000000000000000000000000000000000000000000000000042", - "0x0000000000000000000000000000000000000000000000000000000000000043", - "0x0000000000000000000000000000000000000000000000000000000000000044", - "0x0000000000000000000000000000000000000000000000000000000000000045", - "0x0000000000000000000000000000000000000000000000000000000000000046", - "0x0000000000000000000000000000000000000000000000000000000000000047", - "0x0000000000000000000000000000000000000000000000000000000000000048", - "0x0000000000000000000000000000000000000000000000000000000000000049", - "0x000000000000000000000000000000000000000000000000000000000000004a", - "0x000000000000000000000000000000000000000000000000000000000000004b", - "0x000000000000000000000000000000000000000000000000000000000000004c", - "0x000000000000000000000000000000000000000000000000000000000000004d", - "0x000000000000000000000000000000000000000000000000000000000000004e", - "0x000000000000000000000000000000000000000000000000000000000000004f", - "0x0000000000000000000000000000000000000000000000000000000000000050", - "0x0000000000000000000000000000000000000000000000000000000000000051", - "0x0000000000000000000000000000000000000000000000000000000000000052", - "0x0000000000000000000000000000000000000000000000000000000000000053", - "0x0000000000000000000000000000000000000000000000000000000000000054", - "0x0000000000000000000000000000000000000000000000000000000000000055", - "0x0000000000000000000000000000000000000000000000000000000000000056", - "0x0000000000000000000000000000000000000000000000000000000000000057", - "0x0000000000000000000000000000000000000000000000000000000000000058", - "0x0000000000000000000000000000000000000000000000000000000000000059", - "0x000000000000000000000000000000000000000000000000000000000000005a", - "0x000000000000000000000000000000000000000000000000000000000000005b", - "0x000000000000000000000000000000000000000000000000000000000000005c", - "0x000000000000000000000000000000000000000000000000000000000000005d", - "0x000000000000000000000000000000000000000000000000000000000000005e", - "0x000000000000000000000000000000000000000000000000000000000000005f", - "0x0000000000000000000000000000000000000000000000000000000000000060", - "0x0000000000000000000000000000000000000000000000000000000000000061", - "0x0000000000000000000000000000000000000000000000000000000000000062", - "0x0000000000000000000000000000000000000000000000000000000000000063", - "0x0000000000000000000000000000000000000000000000000000000000000064", - "0x0000000000000000000000000000000000000000000000000000000000000065", - "0x0000000000000000000000000000000000000000000000000000000000000066", - "0x0000000000000000000000000000000000000000000000000000000000000067", - "0x0000000000000000000000000000000000000000000000000000000000000068", - "0x0000000000000000000000000000000000000000000000000000000000000069", - "0x000000000000000000000000000000000000000000000000000000000000006a", - "0x000000000000000000000000000000000000000000000000000000000000006b", - "0x000000000000000000000000000000000000000000000000000000000000006c", - "0x000000000000000000000000000000000000000000000000000000000000006d", - "0x000000000000000000000000000000000000000000000000000000000000006e", - "0x000000000000000000000000000000000000000000000000000000000000006f", - "0x0000000000000000000000000000000000000000000000000000000000000070", - "0x0000000000000000000000000000000000000000000000000000000000000071", - "0x0000000000000000000000000000000000000000000000000000000000000072", - "0x0000000000000000000000000000000000000000000000000000000000000073", - "0x0000000000000000000000000000000000000000000000000000000000000074", - "0x0000000000000000000000000000000000000000000000000000000000000075", - "0x0000000000000000000000000000000000000000000000000000000000000076", - "0x0000000000000000000000000000000000000000000000000000000000000077", - "0x0000000000000000000000000000000000000000000000000000000000000078", - "0x0000000000000000000000000000000000000000000000000000000000000079", - "0x000000000000000000000000000000000000000000000000000000000000007a", - "0x000000000000000000000000000000000000000000000000000000000000007b", - "0x000000000000000000000000000000000000000000000000000000000000007c", - "0x000000000000000000000000000000000000000000000000000000000000007d", - "0x000000000000000000000000000000000000000000000000000000000000007e", - "0x000000000000000000000000000000000000000000000000000000000000007f", - "0x0000000000000000000000000000000000000000000000000000000000000080", - "0x0000000000000000000000000000000000000000000000000000000000000081", - "0x0000000000000000000000000000000000000000000000000000000000000082", - "0x0000000000000000000000000000000000000000000000000000000000000083", - "0x0000000000000000000000000000000000000000000000000000000000000084", - "0x0000000000000000000000000000000000000000000000000000000000000085", - "0x0000000000000000000000000000000000000000000000000000000000000086", - "0x0000000000000000000000000000000000000000000000000000000000000087", - "0x0000000000000000000000000000000000000000000000000000000000000088", - "0x0000000000000000000000000000000000000000000000000000000000000089", - "0x000000000000000000000000000000000000000000000000000000000000008a", - "0x000000000000000000000000000000000000000000000000000000000000008b", - "0x000000000000000000000000000000000000000000000000000000000000008c", - "0x000000000000000000000000000000000000000000000000000000000000008d", - "0x000000000000000000000000000000000000000000000000000000000000008e", - "0x000000000000000000000000000000000000000000000000000000000000008f", - "0x0000000000000000000000000000000000000000000000000000000000000090", - "0x0000000000000000000000000000000000000000000000000000000000000091", - "0x0000000000000000000000000000000000000000000000000000000000000092", - "0x0000000000000000000000000000000000000000000000000000000000000093", - "0x0000000000000000000000000000000000000000000000000000000000000094", - "0x0000000000000000000000000000000000000000000000000000000000000095", - "0x0000000000000000000000000000000000000000000000000000000000000096", - "0x0000000000000000000000000000000000000000000000000000000000000097", - "0x0000000000000000000000000000000000000000000000000000000000000098", - "0x0000000000000000000000000000000000000000000000000000000000000099", - "0x000000000000000000000000000000000000000000000000000000000000009a", - "0x000000000000000000000000000000000000000000000000000000000000009b", - "0x000000000000000000000000000000000000000000000000000000000000009c", - "0x000000000000000000000000000000000000000000000000000000000000009d", - "0x000000000000000000000000000000000000000000000000000000000000009e", - "0x000000000000000000000000000000000000000000000000000000000000009f", - "0x00000000000000000000000000000000000000000000000000000000000000a0", - "0x00000000000000000000000000000000000000000000000000000000000000a1", - "0x00000000000000000000000000000000000000000000000000000000000000a2", - "0x00000000000000000000000000000000000000000000000000000000000000a3", - "0x00000000000000000000000000000000000000000000000000000000000000a4", - "0x00000000000000000000000000000000000000000000000000000000000000a5", - "0x00000000000000000000000000000000000000000000000000000000000000a6", - "0x00000000000000000000000000000000000000000000000000000000000000a7", - "0x00000000000000000000000000000000000000000000000000000000000000a8", - "0x00000000000000000000000000000000000000000000000000000000000000a9", - "0x00000000000000000000000000000000000000000000000000000000000000aa", - "0x00000000000000000000000000000000000000000000000000000000000000ab", - "0x00000000000000000000000000000000000000000000000000000000000000ac", - "0x00000000000000000000000000000000000000000000000000000000000000ad", - "0x00000000000000000000000000000000000000000000000000000000000000ae", - "0x00000000000000000000000000000000000000000000000000000000000000af", - "0x00000000000000000000000000000000000000000000000000000000000000b0", - "0x00000000000000000000000000000000000000000000000000000000000000b1", - "0x00000000000000000000000000000000000000000000000000000000000000b2", - "0x00000000000000000000000000000000000000000000000000000000000000b3", - "0x00000000000000000000000000000000000000000000000000000000000000b4", - "0x00000000000000000000000000000000000000000000000000000000000000b5", - "0x00000000000000000000000000000000000000000000000000000000000000b6", - "0x00000000000000000000000000000000000000000000000000000000000000b7", - "0x00000000000000000000000000000000000000000000000000000000000000b8", - "0x00000000000000000000000000000000000000000000000000000000000000b9", - "0x00000000000000000000000000000000000000000000000000000000000000ba", - "0x00000000000000000000000000000000000000000000000000000000000000bb", - "0x00000000000000000000000000000000000000000000000000000000000000bc", - "0x00000000000000000000000000000000000000000000000000000000000000bd", - "0x00000000000000000000000000000000000000000000000000000000000000be", - "0x00000000000000000000000000000000000000000000000000000000000000bf", - "0x00000000000000000000000000000000000000000000000000000000000000c0", - "0x00000000000000000000000000000000000000000000000000000000000000c1", - "0x00000000000000000000000000000000000000000000000000000000000000c2", - "0x00000000000000000000000000000000000000000000000000000000000000c3", - "0x00000000000000000000000000000000000000000000000000000000000000c4", - "0x00000000000000000000000000000000000000000000000000000000000000c5", - "0x00000000000000000000000000000000000000000000000000000000000000c6", - "0x00000000000000000000000000000000000000000000000000000000000000c7", - "0x00000000000000000000000000000000000000000000000000000000000000c8", - "0x00000000000000000000000000000000000000000000000000000000000000c9", - "0x00000000000000000000000000000000000000000000000000000000000000ca", - "0x00000000000000000000000000000000000000000000000000000000000000cb", - "0x00000000000000000000000000000000000000000000000000000000000000cc", - "0x00000000000000000000000000000000000000000000000000000000000000cd", - "0x00000000000000000000000000000000000000000000000000000000000000ce", - "0x00000000000000000000000000000000000000000000000000000000000000cf", - "0x00000000000000000000000000000000000000000000000000000000000000d0", - "0x00000000000000000000000000000000000000000000000000000000000000d1", - "0x00000000000000000000000000000000000000000000000000000000000000d2", - "0x00000000000000000000000000000000000000000000000000000000000000d3", - "0x00000000000000000000000000000000000000000000000000000000000000d4", - "0x00000000000000000000000000000000000000000000000000000000000000d5", - "0x00000000000000000000000000000000000000000000000000000000000000d6", - "0x00000000000000000000000000000000000000000000000000000000000000d7", - "0x00000000000000000000000000000000000000000000000000000000000000d8", - "0x00000000000000000000000000000000000000000000000000000000000000d9", - "0x00000000000000000000000000000000000000000000000000000000000000da", - "0x00000000000000000000000000000000000000000000000000000000000000db", - "0x00000000000000000000000000000000000000000000000000000000000000dc", - "0x00000000000000000000000000000000000000000000000000000000000000dd", - "0x00000000000000000000000000000000000000000000000000000000000000de", - "0x00000000000000000000000000000000000000000000000000000000000000df", - "0x00000000000000000000000000000000000000000000000000000000000000e0", - "0x00000000000000000000000000000000000000000000000000000000000000e1", - "0x00000000000000000000000000000000000000000000000000000000000000e2", - "0x00000000000000000000000000000000000000000000000000000000000000e3", - "0x00000000000000000000000000000000000000000000000000000000000000e4", - "0x00000000000000000000000000000000000000000000000000000000000000e5", - "0x00000000000000000000000000000000000000000000000000000000000000e6", - "0x00000000000000000000000000000000000000000000000000000000000000e7", - "0x00000000000000000000000000000000000000000000000000000000000000e8", - "0x00000000000000000000000000000000000000000000000000000000000000e9", - "0x00000000000000000000000000000000000000000000000000000000000000ea", - "0x00000000000000000000000000000000000000000000000000000000000000eb", - "0x00000000000000000000000000000000000000000000000000000000000000ec", - "0x00000000000000000000000000000000000000000000000000000000000000ed", - "0x00000000000000000000000000000000000000000000000000000000000000ee", - "0x00000000000000000000000000000000000000000000000000000000000000ef", - "0x00000000000000000000000000000000000000000000000000000000000000f0", - "0x00000000000000000000000000000000000000000000000000000000000000f1", - "0x00000000000000000000000000000000000000000000000000000000000000f2", - "0x00000000000000000000000000000000000000000000000000000000000000f3", - "0x00000000000000000000000000000000000000000000000000000000000000f4", - "0x00000000000000000000000000000000000000000000000000000000000000f5", - "0x00000000000000000000000000000000000000000000000000000000000000f6", - "0x00000000000000000000000000000000000000000000000000000000000000f7", - "0x00000000000000000000000000000000000000000000000000000000000000f8", - "0x00000000000000000000000000000000000000000000000000000000000000f9", - "0x00000000000000000000000000000000000000000000000000000000000000fa", - "0x00000000000000000000000000000000000000000000000000000000000000fb", - "0x00000000000000000000000000000000000000000000000000000000000000fc", + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x05620cfa3125101fc126dcb1cd967ae0cda5bfbb0c413bb1ad570ede664953cf" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x1965375f1fcd10c386e8da3da65bf4", + "0xb17c73370563522d2debdb7994b039", + "0x17f0" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x00aae0654b3ba2a2f1e2fa2c7d23b35ab21cfba67951dcf917925cc2325eb866", + "0x0000000000000000000000000000001eea78b1856d5770ee11f410332f1be2af" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[inputs.previous_rollup_data.proof] +fields = [ + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0x0000000000000000000000000000000000000000000000000000000000000003", + "0x0000000000000000000000000000000000000000000000000000000000000004", + "0x0000000000000000000000000000000000000000000000000000000000000005", + "0x0000000000000000000000000000000000000000000000000000000000000006", + "0x0000000000000000000000000000000000000000000000000000000000000007", + "0x0000000000000000000000000000000000000000000000000000000000000008", + "0x0000000000000000000000000000000000000000000000000000000000000009", + "0x000000000000000000000000000000000000000000000000000000000000000a", + "0x000000000000000000000000000000000000000000000000000000000000000b", + "0x000000000000000000000000000000000000000000000000000000000000000c", + "0x000000000000000000000000000000000000000000000000000000000000000d", + "0x000000000000000000000000000000000000000000000000000000000000000e", + "0x000000000000000000000000000000000000000000000000000000000000000f", + "0x0000000000000000000000000000000000000000000000000000000000000010", + "0x0000000000000000000000000000000000000000000000000000000000000011", + "0x0000000000000000000000000000000000000000000000000000000000000012", + "0x0000000000000000000000000000000000000000000000000000000000000013", + "0x0000000000000000000000000000000000000000000000000000000000000014", + "0x0000000000000000000000000000000000000000000000000000000000000015", + "0x0000000000000000000000000000000000000000000000000000000000000016", + "0x0000000000000000000000000000000000000000000000000000000000000017", + "0x0000000000000000000000000000000000000000000000000000000000000018", + "0x0000000000000000000000000000000000000000000000000000000000000019", + "0x000000000000000000000000000000000000000000000000000000000000001a", + "0x000000000000000000000000000000000000000000000000000000000000001b", + "0x000000000000000000000000000000000000000000000000000000000000001c", + "0x000000000000000000000000000000000000000000000000000000000000001d", + "0x000000000000000000000000000000000000000000000000000000000000001e", + "0x000000000000000000000000000000000000000000000000000000000000001f", + "0x0000000000000000000000000000000000000000000000000000000000000020", + "0x0000000000000000000000000000000000000000000000000000000000000021", + "0x0000000000000000000000000000000000000000000000000000000000000022", + "0x0000000000000000000000000000000000000000000000000000000000000023", + "0x0000000000000000000000000000000000000000000000000000000000000024", + "0x0000000000000000000000000000000000000000000000000000000000000025", + "0x0000000000000000000000000000000000000000000000000000000000000026", + "0x0000000000000000000000000000000000000000000000000000000000000027", + "0x0000000000000000000000000000000000000000000000000000000000000028", + "0x0000000000000000000000000000000000000000000000000000000000000029", + "0x000000000000000000000000000000000000000000000000000000000000002a", + "0x000000000000000000000000000000000000000000000000000000000000002b", + "0x000000000000000000000000000000000000000000000000000000000000002c", + "0x000000000000000000000000000000000000000000000000000000000000002d", + "0x000000000000000000000000000000000000000000000000000000000000002e", + "0x000000000000000000000000000000000000000000000000000000000000002f", + "0x0000000000000000000000000000000000000000000000000000000000000030", + "0x0000000000000000000000000000000000000000000000000000000000000031", + "0x0000000000000000000000000000000000000000000000000000000000000032", + "0x0000000000000000000000000000000000000000000000000000000000000033", + "0x0000000000000000000000000000000000000000000000000000000000000034", + "0x0000000000000000000000000000000000000000000000000000000000000035", + "0x0000000000000000000000000000000000000000000000000000000000000036", + "0x0000000000000000000000000000000000000000000000000000000000000037", + "0x0000000000000000000000000000000000000000000000000000000000000038", + "0x0000000000000000000000000000000000000000000000000000000000000039", + "0x000000000000000000000000000000000000000000000000000000000000003a", + "0x000000000000000000000000000000000000000000000000000000000000003b", + "0x000000000000000000000000000000000000000000000000000000000000003c", + "0x000000000000000000000000000000000000000000000000000000000000003d", + "0x000000000000000000000000000000000000000000000000000000000000003e", + "0x000000000000000000000000000000000000000000000000000000000000003f", + "0x0000000000000000000000000000000000000000000000000000000000000040", + "0x0000000000000000000000000000000000000000000000000000000000000041", + "0x0000000000000000000000000000000000000000000000000000000000000042", + "0x0000000000000000000000000000000000000000000000000000000000000043", + "0x0000000000000000000000000000000000000000000000000000000000000044", + "0x0000000000000000000000000000000000000000000000000000000000000045", + "0x0000000000000000000000000000000000000000000000000000000000000046", + "0x0000000000000000000000000000000000000000000000000000000000000047", + "0x0000000000000000000000000000000000000000000000000000000000000048", + "0x0000000000000000000000000000000000000000000000000000000000000049", + "0x000000000000000000000000000000000000000000000000000000000000004a", + "0x000000000000000000000000000000000000000000000000000000000000004b", + "0x000000000000000000000000000000000000000000000000000000000000004c", + "0x000000000000000000000000000000000000000000000000000000000000004d", + "0x000000000000000000000000000000000000000000000000000000000000004e", + "0x000000000000000000000000000000000000000000000000000000000000004f", + "0x0000000000000000000000000000000000000000000000000000000000000050", + "0x0000000000000000000000000000000000000000000000000000000000000051", + "0x0000000000000000000000000000000000000000000000000000000000000052", + "0x0000000000000000000000000000000000000000000000000000000000000053", + "0x0000000000000000000000000000000000000000000000000000000000000054", + "0x0000000000000000000000000000000000000000000000000000000000000055", + "0x0000000000000000000000000000000000000000000000000000000000000056", + "0x0000000000000000000000000000000000000000000000000000000000000057", + "0x0000000000000000000000000000000000000000000000000000000000000058", + "0x0000000000000000000000000000000000000000000000000000000000000059", + "0x000000000000000000000000000000000000000000000000000000000000005a", + "0x000000000000000000000000000000000000000000000000000000000000005b", + "0x000000000000000000000000000000000000000000000000000000000000005c", + "0x000000000000000000000000000000000000000000000000000000000000005d", + "0x000000000000000000000000000000000000000000000000000000000000005e", + "0x000000000000000000000000000000000000000000000000000000000000005f", + "0x0000000000000000000000000000000000000000000000000000000000000060", + "0x0000000000000000000000000000000000000000000000000000000000000061", + "0x0000000000000000000000000000000000000000000000000000000000000062", + "0x0000000000000000000000000000000000000000000000000000000000000063", + "0x0000000000000000000000000000000000000000000000000000000000000064", + "0x0000000000000000000000000000000000000000000000000000000000000065", + "0x0000000000000000000000000000000000000000000000000000000000000066", + "0x0000000000000000000000000000000000000000000000000000000000000067", + "0x0000000000000000000000000000000000000000000000000000000000000068", + "0x0000000000000000000000000000000000000000000000000000000000000069", + "0x000000000000000000000000000000000000000000000000000000000000006a", + "0x000000000000000000000000000000000000000000000000000000000000006b", + "0x000000000000000000000000000000000000000000000000000000000000006c", + "0x000000000000000000000000000000000000000000000000000000000000006d", + "0x000000000000000000000000000000000000000000000000000000000000006e", + "0x000000000000000000000000000000000000000000000000000000000000006f", + "0x0000000000000000000000000000000000000000000000000000000000000070", + "0x0000000000000000000000000000000000000000000000000000000000000071", + "0x0000000000000000000000000000000000000000000000000000000000000072", + "0x0000000000000000000000000000000000000000000000000000000000000073", + "0x0000000000000000000000000000000000000000000000000000000000000074", + "0x0000000000000000000000000000000000000000000000000000000000000075", + "0x0000000000000000000000000000000000000000000000000000000000000076", + "0x0000000000000000000000000000000000000000000000000000000000000077", + "0x0000000000000000000000000000000000000000000000000000000000000078", + "0x0000000000000000000000000000000000000000000000000000000000000079", + "0x000000000000000000000000000000000000000000000000000000000000007a", + "0x000000000000000000000000000000000000000000000000000000000000007b", + "0x000000000000000000000000000000000000000000000000000000000000007c", + "0x000000000000000000000000000000000000000000000000000000000000007d", + "0x000000000000000000000000000000000000000000000000000000000000007e", + "0x000000000000000000000000000000000000000000000000000000000000007f", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000081", + "0x0000000000000000000000000000000000000000000000000000000000000082", + "0x0000000000000000000000000000000000000000000000000000000000000083", + "0x0000000000000000000000000000000000000000000000000000000000000084", + "0x0000000000000000000000000000000000000000000000000000000000000085", + "0x0000000000000000000000000000000000000000000000000000000000000086", + "0x0000000000000000000000000000000000000000000000000000000000000087", + "0x0000000000000000000000000000000000000000000000000000000000000088", + "0x0000000000000000000000000000000000000000000000000000000000000089", + "0x000000000000000000000000000000000000000000000000000000000000008a", + "0x000000000000000000000000000000000000000000000000000000000000008b", + "0x000000000000000000000000000000000000000000000000000000000000008c", + "0x000000000000000000000000000000000000000000000000000000000000008d", + "0x000000000000000000000000000000000000000000000000000000000000008e", + "0x000000000000000000000000000000000000000000000000000000000000008f", + "0x0000000000000000000000000000000000000000000000000000000000000090", + "0x0000000000000000000000000000000000000000000000000000000000000091", + "0x0000000000000000000000000000000000000000000000000000000000000092", + "0x0000000000000000000000000000000000000000000000000000000000000093", + "0x0000000000000000000000000000000000000000000000000000000000000094", + "0x0000000000000000000000000000000000000000000000000000000000000095", + "0x0000000000000000000000000000000000000000000000000000000000000096", + "0x0000000000000000000000000000000000000000000000000000000000000097", + "0x0000000000000000000000000000000000000000000000000000000000000098", + "0x0000000000000000000000000000000000000000000000000000000000000099", + "0x000000000000000000000000000000000000000000000000000000000000009a", + "0x000000000000000000000000000000000000000000000000000000000000009b", + "0x000000000000000000000000000000000000000000000000000000000000009c", + "0x000000000000000000000000000000000000000000000000000000000000009d", + "0x000000000000000000000000000000000000000000000000000000000000009e", + "0x000000000000000000000000000000000000000000000000000000000000009f", + "0x00000000000000000000000000000000000000000000000000000000000000a0", + "0x00000000000000000000000000000000000000000000000000000000000000a1", + "0x00000000000000000000000000000000000000000000000000000000000000a2", + "0x00000000000000000000000000000000000000000000000000000000000000a3", + "0x00000000000000000000000000000000000000000000000000000000000000a4", + "0x00000000000000000000000000000000000000000000000000000000000000a5", + "0x00000000000000000000000000000000000000000000000000000000000000a6", + "0x00000000000000000000000000000000000000000000000000000000000000a7", + "0x00000000000000000000000000000000000000000000000000000000000000a8", + "0x00000000000000000000000000000000000000000000000000000000000000a9", + "0x00000000000000000000000000000000000000000000000000000000000000aa", + "0x00000000000000000000000000000000000000000000000000000000000000ab", + "0x00000000000000000000000000000000000000000000000000000000000000ac", + "0x00000000000000000000000000000000000000000000000000000000000000ad", + "0x00000000000000000000000000000000000000000000000000000000000000ae", + "0x00000000000000000000000000000000000000000000000000000000000000af", + "0x00000000000000000000000000000000000000000000000000000000000000b0", + "0x00000000000000000000000000000000000000000000000000000000000000b1", + "0x00000000000000000000000000000000000000000000000000000000000000b2", + "0x00000000000000000000000000000000000000000000000000000000000000b3", + "0x00000000000000000000000000000000000000000000000000000000000000b4", + "0x00000000000000000000000000000000000000000000000000000000000000b5", + "0x00000000000000000000000000000000000000000000000000000000000000b6", + "0x00000000000000000000000000000000000000000000000000000000000000b7", + "0x00000000000000000000000000000000000000000000000000000000000000b8", + "0x00000000000000000000000000000000000000000000000000000000000000b9", + "0x00000000000000000000000000000000000000000000000000000000000000ba", + "0x00000000000000000000000000000000000000000000000000000000000000bb", + "0x00000000000000000000000000000000000000000000000000000000000000bc", + "0x00000000000000000000000000000000000000000000000000000000000000bd", + "0x00000000000000000000000000000000000000000000000000000000000000be", + "0x00000000000000000000000000000000000000000000000000000000000000bf", + "0x00000000000000000000000000000000000000000000000000000000000000c0", + "0x00000000000000000000000000000000000000000000000000000000000000c1", + "0x00000000000000000000000000000000000000000000000000000000000000c2", + "0x00000000000000000000000000000000000000000000000000000000000000c3", + "0x00000000000000000000000000000000000000000000000000000000000000c4", + "0x00000000000000000000000000000000000000000000000000000000000000c5", + "0x00000000000000000000000000000000000000000000000000000000000000c6", + "0x00000000000000000000000000000000000000000000000000000000000000c7", + "0x00000000000000000000000000000000000000000000000000000000000000c8", + "0x00000000000000000000000000000000000000000000000000000000000000c9", + "0x00000000000000000000000000000000000000000000000000000000000000ca", + "0x00000000000000000000000000000000000000000000000000000000000000cb", + "0x00000000000000000000000000000000000000000000000000000000000000cc", + "0x00000000000000000000000000000000000000000000000000000000000000cd", + "0x00000000000000000000000000000000000000000000000000000000000000ce", + "0x00000000000000000000000000000000000000000000000000000000000000cf", + "0x00000000000000000000000000000000000000000000000000000000000000d0", + "0x00000000000000000000000000000000000000000000000000000000000000d1", + "0x00000000000000000000000000000000000000000000000000000000000000d2", + "0x00000000000000000000000000000000000000000000000000000000000000d3", + "0x00000000000000000000000000000000000000000000000000000000000000d4", + "0x00000000000000000000000000000000000000000000000000000000000000d5", + "0x00000000000000000000000000000000000000000000000000000000000000d6", + "0x00000000000000000000000000000000000000000000000000000000000000d7", + "0x00000000000000000000000000000000000000000000000000000000000000d8", + "0x00000000000000000000000000000000000000000000000000000000000000d9", + "0x00000000000000000000000000000000000000000000000000000000000000da", + "0x00000000000000000000000000000000000000000000000000000000000000db", + "0x00000000000000000000000000000000000000000000000000000000000000dc", + "0x00000000000000000000000000000000000000000000000000000000000000dd", + "0x00000000000000000000000000000000000000000000000000000000000000de", + "0x00000000000000000000000000000000000000000000000000000000000000df", + "0x00000000000000000000000000000000000000000000000000000000000000e0", + "0x00000000000000000000000000000000000000000000000000000000000000e1", + "0x00000000000000000000000000000000000000000000000000000000000000e2", + "0x00000000000000000000000000000000000000000000000000000000000000e3", + "0x00000000000000000000000000000000000000000000000000000000000000e4", + "0x00000000000000000000000000000000000000000000000000000000000000e5", + "0x00000000000000000000000000000000000000000000000000000000000000e6", + "0x00000000000000000000000000000000000000000000000000000000000000e7", + "0x00000000000000000000000000000000000000000000000000000000000000e8", + "0x00000000000000000000000000000000000000000000000000000000000000e9", + "0x00000000000000000000000000000000000000000000000000000000000000ea", + "0x00000000000000000000000000000000000000000000000000000000000000eb", + "0x00000000000000000000000000000000000000000000000000000000000000ec", + "0x00000000000000000000000000000000000000000000000000000000000000ed", + "0x00000000000000000000000000000000000000000000000000000000000000ee", + "0x00000000000000000000000000000000000000000000000000000000000000ef", + "0x00000000000000000000000000000000000000000000000000000000000000f0", + "0x00000000000000000000000000000000000000000000000000000000000000f1", + "0x00000000000000000000000000000000000000000000000000000000000000f2", + "0x00000000000000000000000000000000000000000000000000000000000000f3", + "0x00000000000000000000000000000000000000000000000000000000000000f4", + "0x00000000000000000000000000000000000000000000000000000000000000f5", + "0x00000000000000000000000000000000000000000000000000000000000000f6", + "0x00000000000000000000000000000000000000000000000000000000000000f7", + "0x00000000000000000000000000000000000000000000000000000000000000f8", + "0x00000000000000000000000000000000000000000000000000000000000000f9", + "0x00000000000000000000000000000000000000000000000000000000000000fa", + "0x00000000000000000000000000000000000000000000000000000000000000fb", + "0x00000000000000000000000000000000000000000000000000000000000000fc", "0x00000000000000000000000000000000000000000000000000000000000000fd", "0x00000000000000000000000000000000000000000000000000000000000000fe", "0x00000000000000000000000000000000000000000000000000000000000000ff", @@ -804,488 +3156,2840 @@ fields = [ "0x00000000000000000000000000000000000000000000000000000000000001cf" ] -[inputs.previous_rollup_data.vk] -key = [ - "0x0000000000000000000000000000000000000000000000000000000000400000", - "0x000000000000000000000000000000000000000000000000000000000000008c", - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x000000000000000000000000000000000000000000000000000000000000007c", - "0x000000000000000000000000000000000000000000000000000000000000007d", - "0x000000000000000000000000000000000000000000000000000000000000007e", - "0x000000000000000000000000000000000000000000000000000000000000007f", - "0x0000000000000000000000000000000000000000000000000000000000000080", - "0x0000000000000000000000000000000000000000000000000000000000000081", - "0x0000000000000000000000000000000000000000000000000000000000000082", - "0x0000000000000000000000000000000000000000000000000000000000000083", - "0x0000000000000000000000000000000000000000000000000000000000000084", - "0x0000000000000000000000000000000000000000000000000000000000000085", - "0x0000000000000000000000000000000000000000000000000000000000000086", - "0x0000000000000000000000000000000000000000000000000000000000000087", - "0x0000000000000000000000000000000000000000000000000000000000000088", - "0x0000000000000000000000000000000000000000000000000000000000000089", - "0x000000000000000000000000000000000000000000000000000000000000008a", - "0x000000000000000000000000000000000000000000000000000000000000008b", - "0x000000000000000000000000000000d8c91405f8fb9bfd6029f2af2c3429a3cc", - "0x000000000000000000000000000000000017d8037ef6ccb8b2703469bcfd7a0e", - "0x0000000000000000000000000000007ed042eeb77df4879c1f309445023be1c0", - "0x0000000000000000000000000000000000305a4ec056c7207488baca52e2db53", - "0x00000000000000000000000000000077f7d724ddbb3ca6569734c17a9286b42e", - "0x0000000000000000000000000000000000020c3d4810e6c59e1699a99ac594aa", - "0x000000000000000000000000000000e32248922f3c284ec69858e4daaa57b2c3", - "0x00000000000000000000000000000000000564f1867e959fd50e99e1465405ed", - "0x0000000000000000000000000000009c8e849dc636c12ed537b10f7114306cdf", - "0x00000000000000000000000000000000000ff87714a4df1631f9101dc89038a8", - "0x0000000000000000000000000000004dc60570d4ab025271c72c1f3b2d32b90e", - "0x000000000000000000000000000000000013a2fcccdaa78363da9eced679dd76", - "0x0000000000000000000000000000002b7435aa879636be854dc5e17cfa71de66", - "0x00000000000000000000000000000000001a43f68371d3feb4b727c62914175e", - "0x000000000000000000000000000000b8f304cb573220d00bc210300ca6ccba13", - "0x000000000000000000000000000000000010fb3733b724a013629368dea3f401", - "0x000000000000000000000000000000850e1c665f2cd3d8b630f78eea3def0684", - "0x000000000000000000000000000000000012e0a2a2a71c40c2c46c165285dae7", - "0x0000000000000000000000000000006b81c00e1428536e48019c7d0d50a2cd09", - "0x00000000000000000000000000000000002b99b7f5fdad15d504e9498b3d49ab", - "0x000000000000000000000000000000d2cb9e5e35bff5651e360d3f6f6d25b891", - "0x000000000000000000000000000000000002eede474b79a3d1e4a5a1a5d27e78", - "0x000000000000000000000000000000c1473a1ff4d797333f10c74f173a378e05", - "0x00000000000000000000000000000000001328cb7b2af9001f8db9e87801506b", - "0x000000000000000000000000000000d9ca296dd843db22cdddd233fae01a11ca", - "0x0000000000000000000000000000000000156b4f24588c035c8f8652b4df924c", - "0x000000000000000000000000000000df024adda9d497e66ac2d9aeec3a1871be", - "0x00000000000000000000000000000000001c388164162c6928cd4e1722862b23", - "0x00000000000000000000000000000093c64a10430e6c8a9e00f7d5a4a41e5be4", - "0x00000000000000000000000000000000001e1856d566faa4bf588fe5e9d7fa72", - "0x0000000000000000000000000000003cfa32ece4442a51aec52b5f10ef179702", - "0x0000000000000000000000000000000000292c1d65b1e12dcb2810d8b6bceb51", - "0x000000000000000000000000000000b95ceb1dc005ac06b590aee5db743221d4", - "0x000000000000000000000000000000000027a5ea4d7747e8d37de969d76a3ba8", - "0x0000000000000000000000000000002511c1c118c3d50e30042d7370ee6bb23f", - "0x00000000000000000000000000000000001c5198a67c078ec95ca74cb6a2b28b", - "0x000000000000000000000000000000179264c49d7545fa0bed16db0e344d7902", - "0x00000000000000000000000000000000002ac129a0e412577e4cf93f2a3798e0", - "0x0000000000000000000000000000001f7b1922370e0e09fdbc406fad696d7f18", - "0x0000000000000000000000000000000000077b09bd93d7919a498dcda077ebcc", - "0x0000000000000000000000000000005d462b2eee7bc3c1555c02d74c50d19017", - "0x000000000000000000000000000000000009442fa30df8046ad468f661a5890b", - "0x000000000000000000000000000000338d29c1a9dc2c3126e4abb2637878a32a", - "0x00000000000000000000000000000000002161e9f5ec10cc6bbb9c9700ab73d9", - "0x000000000000000000000000000000120ce408ada3f668e82006fab7f7fd81c0", - "0x00000000000000000000000000000000001284c6cfcc23c4fd57ac0a189b0167", - "0x000000000000000000000000000000861f1979d95e8f09b195b31e68ba8691d4", - "0x000000000000000000000000000000000002a027bfc156d838b4662f874ca121", - "0x00000000000000000000000000000071bc3fa358c655367437b4546ff0702248", - "0x00000000000000000000000000000000000a5c3e9cec0b1c01ae504bf35bffe0", - "0x00000000000000000000000000000021f65b4d0a62687fc96b0c732a5262075d", - "0x00000000000000000000000000000000002612107297abd9cffc6874a0753c56", - "0x0000000000000000000000000000008e7d2d4f520fc8d7ba527ca31dec2684db", - "0x000000000000000000000000000000000022baa8bf41dd0839e1ce9e23854fa3", - "0x000000000000000000000000000000c6dce6d9e3a3e8ecc5b56687176e87d5fb", - "0x00000000000000000000000000000000000cd36cd847aa3d09d80b61eb1a6f4e", - "0x000000000000000000000000000000fb3c8d1f27e0235a98862eba335ac570fa", - "0x0000000000000000000000000000000000092630d00a3cce40225b2faae2b480", - "0x000000000000000000000000000000373f94dc1386e104e0fda86892ca815c21", - "0x00000000000000000000000000000000002951cebaf9767894dd86fc20b222a1", - "0x000000000000000000000000000000580fb537e608023da88c8b752d0be47f93", - "0x00000000000000000000000000000000000dbc62b933fc7071435c3caa73b864", - "0x0000000000000000000000000000007df770121c09ca893104c8134c7230c8bf", - "0x00000000000000000000000000000000001ca17e965e5abe316a325576938ae7", - "0x000000000000000000000000000000d9933da06f7c26ba2ddb6c35d1bc04c633", - "0x000000000000000000000000000000000021d25e8b70928c791f32a7ec2d0d6c", - "0x0000000000000000000000000000004a40f2d393bf5b092d36b1547844549052", - "0x00000000000000000000000000000000001fd2d406ccc845824d0425d145f17e", - "0x0000000000000000000000000000009956df895bafd3cd8aea3527cb1095fb76", - "0x000000000000000000000000000000000003431e5d26ae0b14869a9d4444e72d", - "0x00000000000000000000000000000045b2802ce25dcd9d3fca28526e55ae5d22", - "0x0000000000000000000000000000000000275388f1502864311edc702d50e8ac", - "0x000000000000000000000000000000689c07b60737457b5af01ad6a8b2447260", - "0x0000000000000000000000000000000000218db48bf250e076d72087633ae0dd", - "0x000000000000000000000000000000df9ced1bc6c7cc83bdba04d6c598775f10", - "0x00000000000000000000000000000000001212f0148b13f0a12236aeebdfa3c8", - "0x0000000000000000000000000000004f943b44ec7da126388858cf0d9c52b779", - "0x00000000000000000000000000000000002bcd36154edbd06e4909a8f37b0323", - "0x00000000000000000000000000000052e019ddad254d88c4a950cf1396770985", - "0x0000000000000000000000000000000000187b9fe87963c5831fb689e3a5c22f", - "0x00000000000000000000000000000015c36276d1a9c8ddd8605509f4ffd938e7", - "0x00000000000000000000000000000000002f06428480c45c54af15ae782cba2c", - "0x000000000000000000000000000000f02643e70de5ee4e9c4c7083fac4cfd521", - "0x000000000000000000000000000000000016de1358ec943b3aca2b1d3785be84", - "0x000000000000000000000000000000139f285acc67641cb39817d4f4f0e1e535", - "0x00000000000000000000000000000000002131e7d49ed6b84a2069f9e619cb2e", - "0x000000000000000000000000000000c78f33493ee64845824f4281f6b7f98f01", - "0x00000000000000000000000000000000002cb30885093e78a32ba96d943c06f8", - "0x0000000000000000000000000000003b0ddb0ad0f6b36c1c593764b08bb103a3", - "0x000000000000000000000000000000000023d1a2a8f342e036a8c898837c3995", - "0x000000000000000000000000000000564b46b051507c5d88d6bc60c8c00fe51f", - "0x000000000000000000000000000000000011a5d138e3417265a21ef060d6febf", - "0x000000000000000000000000000000949ddfa010a539f944d7ab72ff27211157", - "0x00000000000000000000000000000000000305ceed727a787fc9d203c515af82", - "0x0000000000000000000000000000006fa71a49749e8c0d57cc0ae74d548513d4", - "0x0000000000000000000000000000000000188a8a2c16c8a087cf746ee07986b0", - "0x0000000000000000000000000000005c849dac486a1cdd87ec2abff14ac2aa44", - "0x00000000000000000000000000000000000c2a7f141da6ed300ff537a1c20bf7", - "0x000000000000000000000000000000fa840b0b9f0538277775f7fa268497c11d", - "0x0000000000000000000000000000000000115532703e7e72dda7f721f53a488c", - "0x0000000000000000000000000000000000000000000000000000000000000001", +[inputs.previous_rollup_data.vk] +key = [ + "0x0000000000000000000000000000000000000000000000000000000000800000", + "0x00000000000000000000000000000000000000000000000000000000000003ec", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x00000000000000000000000000000000000000000000000000000000000003dc", + "0x00000000000000000000000000000000000000000000000000000000000003dd", + "0x00000000000000000000000000000000000000000000000000000000000003de", + "0x00000000000000000000000000000000000000000000000000000000000003df", + "0x00000000000000000000000000000000000000000000000000000000000003e0", + "0x00000000000000000000000000000000000000000000000000000000000003e1", + "0x00000000000000000000000000000000000000000000000000000000000003e2", + "0x00000000000000000000000000000000000000000000000000000000000003e3", + "0x00000000000000000000000000000000000000000000000000000000000003e4", + "0x00000000000000000000000000000000000000000000000000000000000003e5", + "0x00000000000000000000000000000000000000000000000000000000000003e6", + "0x00000000000000000000000000000000000000000000000000000000000003e7", + "0x00000000000000000000000000000000000000000000000000000000000003e8", + "0x00000000000000000000000000000000000000000000000000000000000003e9", + "0x00000000000000000000000000000000000000000000000000000000000003ea", + "0x00000000000000000000000000000000000000000000000000000000000003eb", + "0x000000000000000000000000000000e2a70abf2db5a56e3b80b735d8fe93844f", + "0x000000000000000000000000000000000007d5e763ad00e11b46ba2c01874266", + "0x000000000000000000000000000000717f06f4849fabc0eb379038c2787f4f0a", + "0x00000000000000000000000000000000002432b88686a770539feb7073936af2", + "0x000000000000000000000000000000241b31d36d4fa2d3d0b65b60a0b30fbe1f", + "0x00000000000000000000000000000000001647b3c906eea3d9a936ca32d1d2cc", + "0x000000000000000000000000000000bf5b7e0e7905e95b6dd16f1549320f091a", + "0x00000000000000000000000000000000001d761d19f3a363e0dfeb81bb9d7b17", + "0x0000000000000000000000000000002de78f3b7bf60a3dcaef2403e7a480f674", + "0x000000000000000000000000000000000027a6694dc12546d2169a7af214d7d9", + "0x00000000000000000000000000000084e5ac9a2a9c89b7ba303748f68920fd59", + "0x00000000000000000000000000000000001bcb1558f8a5f2a022f5b21bc84c4f", + "0x000000000000000000000000000000cff61694d99e06f2f6cea24184c6faff45", + "0x000000000000000000000000000000000026def465f5e787af29baad942d31c9", + "0x000000000000000000000000000000d22e435b810b60fdb70b693cd4e9b502a4", + "0x00000000000000000000000000000000000021c68681bd4b10fbf975192b50c9", + "0x000000000000000000000000000000de2b147b0aeeb897830ec93888b8df2dfa", + "0x00000000000000000000000000000000000786effde53516b0c48c462f99a595", + "0x0000000000000000000000000000007627848e3f39e8b9eb64ea954d26f14549", + "0x00000000000000000000000000000000002144cf1b643ca17330f7e84cd5a655", + "0x00000000000000000000000000000084c15b6e7545324c008347e91d3c485e2d", + "0x00000000000000000000000000000000002bda8532a1ddbb20ef1d06d16a559c", + "0x000000000000000000000000000000285cd754d96c51c5d82a3e96b49a4703a8", + "0x000000000000000000000000000000000028849510d5ecb9fec5e503a8643a64", + "0x00000000000000000000000000000026d90971e11e22590bd1d23c26c3e60643", + "0x00000000000000000000000000000000000ac0ff4f2e738321956625babc98a2", + "0x000000000000000000000000000000e23e99370dee05182b2a6e288a3f1dbe78", + "0x000000000000000000000000000000000026423ab2c1b6c27161c560409b49b2", + "0x000000000000000000000000000000f12699521992cd11507cc3d857f365bda3", + "0x0000000000000000000000000000000000015a68530ca40650b503a2e93f04e4", + "0x0000000000000000000000000000005e671e550d38f3437820a475d19b334a8d", + "0x00000000000000000000000000000000001c572e9a754b84ff4f93feb3419f94", + "0x00000000000000000000000000000001af74368cb4e6c463f81d68f73147a827", + "0x00000000000000000000000000000000002a166f4d388c12d05337733d06f0d4", + "0x000000000000000000000000000000034a2ffe8bc843f57d8769875413c5f1a1", + "0x00000000000000000000000000000000001ede2a33e28cab3b0b987e1e42b23c", + "0x0000000000000000000000000000003052f5dda64a52abe35257bc568f5a6890", + "0x00000000000000000000000000000000002819569643e54119f9cfe02eed2540", + "0x0000000000000000000000000000009f53577bb68e274ee47b6cbe60d5156e44", + "0x00000000000000000000000000000000000a8a3bb75a45fcb1a20cf8b8ea179e", + "0x0000000000000000000000000000005984c45840392053bafefa6c0381d8f3e7", + "0x00000000000000000000000000000000001c5edf25521f683b0f073678aeba28", + "0x0000000000000000000000000000005a03cab51ad1c2b4d7e0c5692d4761bffa", + "0x000000000000000000000000000000000022381d8ee1f8d2b626b4f24c0c5eab", + "0x000000000000000000000000000000b4d4c6827fb665f5f762bec8b5409feba0", + "0x000000000000000000000000000000000013cbf0363025690914296b298c4a34", + "0x000000000000000000000000000000ce0770aa5228294769532c04a9ed052b7e", + "0x00000000000000000000000000000000001cf2c5ff4797fb3fa2f1f4e44d7fff", + "0x000000000000000000000000000000e1333724197aac54787a168048b74fd8ff", + "0x00000000000000000000000000000000002292de33028268f14f0f45a17d1b1b", + "0x000000000000000000000000000000ac1f66a28d7f48bafac5ba6c9f912a007d", + "0x00000000000000000000000000000000000fc04990a04b4db2e4b6934201b2d4", + "0x00000000000000000000000000000082c892d466f77738a2218d9a84669bcf91", + "0x00000000000000000000000000000000000eb8975fa3133acdefe25319c313a9", + "0x000000000000000000000000000000b85d8e7ef7fd09ef6cf3336fbabc64a0b8", + "0x000000000000000000000000000000000015b5395c80352154ac5b0420929c7b", + "0x0000000000000000000000000000002c89b9bf9c26e42c912d240d995cd305e8", + "0x0000000000000000000000000000000000038a3059e3934a59df7f5e6affdb7c", + "0x000000000000000000000000000000353cc4fe06b285bcf7b0420a2f4808d481", + "0x00000000000000000000000000000000002d9098560c035657987a3f0b03aa9f", + "0x000000000000000000000000000000f55966792a244309f68913edafc1a0e283", + "0x00000000000000000000000000000000002cd001744329f9bb8dcf7f706b64d5", + "0x0000000000000000000000000000002e510b8812fe71e3447efb2a703ecf3bbb", + "0x000000000000000000000000000000000003919d6cd79b6b0d98933eee1deed8", + "0x000000000000000000000000000000deb4123671f3d3a36aaf79bf942110ed26", + "0x0000000000000000000000000000000000092e04fd33c62c5b4cde24ef2bd9af", + "0x00000000000000000000000000000017c72822051e3880df0896d457633bb8a8", + "0x00000000000000000000000000000000001b4155a75c956f0335205bb32bb281", + "0x00000000000000000000000000000001a5624432f3837cffa189dd0901903dd4", + "0x000000000000000000000000000000000010ca437fe4ed9cd31e0d885ee10f49", + "0x000000000000000000000000000000eff4e55e0657194f731217645db19db66f", + "0x00000000000000000000000000000000002207f65676e67cbaae6c720b900062", + "0x000000000000000000000000000000db14f5d3c0c91e328f5e9cdf987b3287a6", + "0x00000000000000000000000000000000000815fd61ec34584686d6a57dfe619c", + "0x000000000000000000000000000000e511dcf88b34b04b43d5ac4b5c26bb226c", + "0x00000000000000000000000000000000000517d7a24181453772a8c1c18776a1", + "0x000000000000000000000000000000a94494c66e149dbd7aa3fddd9cc7b05873", + "0x0000000000000000000000000000000000243021ce1dd076e98f6e6d861a420c", + "0x0000000000000000000000000000000f71ef565bb081d1ebb049515d24264da4", + "0x00000000000000000000000000000000000afeee73f2aa3b02af56407bb6afdb", + "0x0000000000000000000000000000001afcdd7968ded28f10b0cf1107b36f4a44", + "0x00000000000000000000000000000000001e4246ba3dcd63b2b44f091fdd4077", + "0x000000000000000000000000000000453e4d4deaef89712bccd4a9f8486a5b2f", + "0x00000000000000000000000000000000000082ffd3cfc3dfbf1fffe287b1c2f3", + "0x0000000000000000000000000000002288034f3ba3cacc74e8cced5c7cd19155", + "0x00000000000000000000000000000000001910a3dc7e741c76c08252e1f2af7a", + "0x000000000000000000000000000000c4825137303952af837523fdb87c5f1a27", + "0x00000000000000000000000000000000000bf36ee00449ecfdcfcd449edb7be8", + "0x000000000000000000000000000000dc4567b52908f0d9ee79f3430c0773f1d4", + "0x00000000000000000000000000000000000b3d06ca98da125cf7c03671375105", + "0x0000000000000000000000000000004c9d6c653b35a4e41ce0c28b8f3bc05f80", + "0x00000000000000000000000000000000001c6cbebc523077127e76e48715e3f7", + "0x00000000000000000000000000000010e9f0c36c8d13bc65ae5dc83aafea4d93", + "0x00000000000000000000000000000000001e6c3234c3d66e62f619f122abcf08", + "0x0000000000000000000000000000007c90b604558cb0031b2786ccfb4b0f267b", + "0x000000000000000000000000000000000023a5e79143fd2d6f9a5d5de119fe03", + "0x000000000000000000000000000000de49bef47504163f244087cb488de2f99a", + "0x00000000000000000000000000000000002b09a5701c772dea31d0fdb450e27b", + "0x000000000000000000000000000000d42fc4da775de36979dfa33a903f61a055", + "0x000000000000000000000000000000000019af65682cd77e5a6b7c48b6900022", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000006862cdf7072422c5d915238fc5fc77e655", + "0x00000000000000000000000000000000000bcabfcf0533b67a88e1a1a2a14a31", + "0x00000000000000000000000000000091b77708688421f998b7f47d4a4ce9ec51", + "0x0000000000000000000000000000000000146762eab5e705427d962991cfa509" +] +hash = "0x23314c114e2e6d7d1dcc2c42f769b7eaa5a42c83e69cb9539ffbbb897d90363d" + +[inputs.previous_rollup_data.vk_witness] +leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000d" +sibling_path = [ + "0x19c9a76e17167348bb8b76d9d8c5de5df1aeecbb8aba20a1a0432659ca33152b", + "0x03eebb70e90e891dd8280fc233bca53f212597b12b308823c33a3c2c6dc8f28d", + "0x220ebe2ec739267877ea7a9dfdd070c92cc88f558917466660908410bd66dabc", + "0x268b4fb54bbdda64dd707ee86cb0729dfb9a9e8b6ae83e973b37bc7e4b18f875", + "0x1967335d7b185023afd52d8f7f40be4ced0d80ba63d4dce2de3e26bfe772e394", + "0x122cddd247164987e2287f8ce124bea7a68052e85bffebe2fc6cd71718689069" +] + +[[inputs.previous_rollup_data]] +[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs] +previous_block_hash = "0x002618b2ab9d69c78576160e237eab9c7b0e42bea8e433224af2abb5aa0ea51f" +end_block_hash = "0x205dc0e6c4055f045d9c226b52b42ccc6062d9ab2702e4e0acbf3209178b1e53" +out_hash = "0x00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb" +vk_tree_root = "0x0bee8f04d48c18c88f2b9dd3b87daba3b3c8d000f44d290587504ae770942c56" +protocol_contract_tree_root = "0x1c4e64cbb91a46bc2fd73590e1dacd3ddf84d1b5e7a7182795ab02fe80399caf" +prover_id = "0x0000000000000000000000000000000000000000000000000000000000000051" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.previous_archive] + root = "0x0781b1cc32dbe21aba1e27519e765bd44222b52ef464c6b63dfa97b399376c2e" + next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000009" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.new_archive] + root = "0x176c781186011b45fed098e21264ed31abe491d165380b1490641d5bc1c7ec85" + next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000a" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables] + chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" + version = "0x0000000000000000000000000000000000000000000000000000000000000001" + block_number = "0x0000000000000000000000000000000000000000000000000000000000000009" + slot_number = "0x0000000000000000000000000000000000000000000000000000000000000016" + timestamp = "0x00000000000000000000000000000000000000000000000000000000675c2eae" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.coinbase] + inner = "0x000000000000000000000000ed846b6f217c7084a6c108eda50abce8c8367eac" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.fee_recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.gas_fees] + fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd4533a" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables] + chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" + version = "0x0000000000000000000000000000000000000000000000000000000000000001" + block_number = "0x0000000000000000000000000000000000000000000000000000000000000009" + slot_number = "0x0000000000000000000000000000000000000000000000000000000000000016" + timestamp = "0x00000000000000000000000000000000000000000000000000000000675c2eae" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.coinbase] + inner = "0x000000000000000000000000ed846b6f217c7084a6c108eda50abce8c8367eac" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.fee_recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.gas_fees] + fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd4533a" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000011b417896f129a" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x000000000000000000000000ed846b6f217c7084a6c108eda50abce8c8367eac" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x172d7f736e107938e1bc1e8a4a11b55937b11a6d1bac463f17efe75495db19e5" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x3bb56352d775bd9572666507c876fa", + "0xabf177bc013f733764b4f023e81e66", + "0x19f1" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x00b4b024814b9a355c67327ec0af765ab3871da695c51a4bdfbe3407ab865fe2", + "0x00000000000000000000000000000074b4d39d0d3840c2a1e97f1924f19a4455" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000002", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000000000ab3a11c512f430ff96ccb37402e3ff5748", - "0x00000000000000000000000000000000000251f7429d622bfbb7ba97f611cf34", - "0x0000000000000000000000000000008beb763a22f5b29aafc414cb76f8fd8b89", - "0x00000000000000000000000000000000001657144d2a96e7a20f2d8551c8e586" + "0x0000000000000000000000000000000000000000000000000000000000000000" ] -hash = "0x1ad0aaec4acb45f84779eecdd9c22cdfd44b9994df4f5687e22a38b56d2df24c" -[inputs.previous_rollup_data.vk_witness] -leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000d" -sibling_path = [ - "0x27cab8a4703e6bbb336e65106dfb67e17d6f8019c38fdf08dff2ee8ffc69fd86", - "0x185b908d5cab33389293e9faecfd59ca8245e18763a43dcff2689148e19b2e60", - "0x07dcf10f13b75a0fee443823cce9ba4f4d0cf6b1244bd1a72c22388b2cf6044a", - "0x043018912588f9874fea852ab854ccaa9b13b8c1b201b55eda7a2fbdd1224ae0", - "0x022f5ac8ff86489f5492d016d0ac69cd39e93b518da3f5a15a8c3177b92bc008", - "0x122cddd247164987e2287f8ce124bea7a68052e85bffebe2fc6cd71718689069" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" ] -[[inputs.previous_rollup_data]] -[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs] -previous_block_hash = "0x0e002d2293d9c53278f88d908beeeaad4d9b622d3c1d6cb48fb6ddcef6735d4e" -end_block_hash = "0x1135231bcbc0b8388661794a5f3699dda422dec0d0928db2913229d53ef1b3e7" -out_hash = "0x00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb" -vk_tree_root = "0x0a118eae659eb1671e3f579a83c4ad3688cee1b9f23dcec48af4d3f3a2de1733" -protocol_contract_tree_root = "0x296690a67333fb896eff0ef812d31f9be26161726e47057bb688ddcf08164453" -prover_id = "0x0000000000000000000000000000000000000000000000000000000000000051" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.previous_archive] - root = "0x01efdcbcbea2494f71ea74a5d0d0ba5455129c180cec155418ee104e6d22b2fc" - next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000b" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.new_archive] - root = "0x2b8f360fd738b1934531cb9c1ccd888ff71f62cbe5043d7b08c331541579a261" - next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000c" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables] - chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x0000000000000000000000000000000000000000000000000000000000000001" - block_number = "0x000000000000000000000000000000000000000000000000000000000000000b" - slot_number = "0x0000000000000000000000000000000000000000000000000000000000000025" - timestamp = "0x00000000000000000000000000000000000000000000000000000000675b06ca" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.coinbase] - inner = "0x000000000000000000000000dde7ef1ed87eb5cbb0562efd27c3ad9eda8c800a" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.fee_recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.gas_fees] - fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd150e0" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables] - chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x0000000000000000000000000000000000000000000000000000000000000001" - block_number = "0x000000000000000000000000000000000000000000000000000000000000000b" - slot_number = "0x0000000000000000000000000000000000000000000000000000000000000025" - timestamp = "0x00000000000000000000000000000000000000000000000000000000675b06ca" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.coinbase] - inner = "0x000000000000000000000000dde7ef1ed87eb5cbb0562efd27c3ad9eda8c800a" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.fee_recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.gas_fees] - fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd150e0" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x00000000000000000000000000000000000000000000000000117815f5ec0920" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x000000000000000000000000dde7ef1ed87eb5cbb0562efd27c3ad9eda8c800a" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] [inputs.previous_rollup_data.proof] fields = [ @@ -1756,144 +6460,144 @@ fields = [ [inputs.previous_rollup_data.vk] key = [ - "0x0000000000000000000000000000000000000000000000000000000000400000", - "0x000000000000000000000000000000000000000000000000000000000000008c", + "0x0000000000000000000000000000000000000000000000000000000000800000", + "0x00000000000000000000000000000000000000000000000000000000000003ec", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x000000000000000000000000000000000000000000000000000000000000007c", - "0x000000000000000000000000000000000000000000000000000000000000007d", - "0x000000000000000000000000000000000000000000000000000000000000007e", - "0x000000000000000000000000000000000000000000000000000000000000007f", - "0x0000000000000000000000000000000000000000000000000000000000000080", - "0x0000000000000000000000000000000000000000000000000000000000000081", - "0x0000000000000000000000000000000000000000000000000000000000000082", - "0x0000000000000000000000000000000000000000000000000000000000000083", - "0x0000000000000000000000000000000000000000000000000000000000000084", - "0x0000000000000000000000000000000000000000000000000000000000000085", - "0x0000000000000000000000000000000000000000000000000000000000000086", - "0x0000000000000000000000000000000000000000000000000000000000000087", - "0x0000000000000000000000000000000000000000000000000000000000000088", - "0x0000000000000000000000000000000000000000000000000000000000000089", - "0x000000000000000000000000000000000000000000000000000000000000008a", - "0x000000000000000000000000000000000000000000000000000000000000008b", - "0x000000000000000000000000000000d8c91405f8fb9bfd6029f2af2c3429a3cc", - "0x000000000000000000000000000000000017d8037ef6ccb8b2703469bcfd7a0e", - "0x0000000000000000000000000000007ed042eeb77df4879c1f309445023be1c0", - "0x0000000000000000000000000000000000305a4ec056c7207488baca52e2db53", - "0x00000000000000000000000000000077f7d724ddbb3ca6569734c17a9286b42e", - "0x0000000000000000000000000000000000020c3d4810e6c59e1699a99ac594aa", - "0x000000000000000000000000000000e32248922f3c284ec69858e4daaa57b2c3", - "0x00000000000000000000000000000000000564f1867e959fd50e99e1465405ed", - "0x0000000000000000000000000000009c8e849dc636c12ed537b10f7114306cdf", - "0x00000000000000000000000000000000000ff87714a4df1631f9101dc89038a8", - "0x0000000000000000000000000000004dc60570d4ab025271c72c1f3b2d32b90e", - "0x000000000000000000000000000000000013a2fcccdaa78363da9eced679dd76", - "0x0000000000000000000000000000002b7435aa879636be854dc5e17cfa71de66", - "0x00000000000000000000000000000000001a43f68371d3feb4b727c62914175e", - "0x000000000000000000000000000000b8f304cb573220d00bc210300ca6ccba13", - "0x000000000000000000000000000000000010fb3733b724a013629368dea3f401", - "0x000000000000000000000000000000850e1c665f2cd3d8b630f78eea3def0684", - "0x000000000000000000000000000000000012e0a2a2a71c40c2c46c165285dae7", - "0x0000000000000000000000000000006b81c00e1428536e48019c7d0d50a2cd09", - "0x00000000000000000000000000000000002b99b7f5fdad15d504e9498b3d49ab", - "0x000000000000000000000000000000d2cb9e5e35bff5651e360d3f6f6d25b891", - "0x000000000000000000000000000000000002eede474b79a3d1e4a5a1a5d27e78", - "0x000000000000000000000000000000c1473a1ff4d797333f10c74f173a378e05", - "0x00000000000000000000000000000000001328cb7b2af9001f8db9e87801506b", - "0x000000000000000000000000000000d9ca296dd843db22cdddd233fae01a11ca", - "0x0000000000000000000000000000000000156b4f24588c035c8f8652b4df924c", - "0x000000000000000000000000000000df024adda9d497e66ac2d9aeec3a1871be", - "0x00000000000000000000000000000000001c388164162c6928cd4e1722862b23", - "0x00000000000000000000000000000093c64a10430e6c8a9e00f7d5a4a41e5be4", - "0x00000000000000000000000000000000001e1856d566faa4bf588fe5e9d7fa72", - "0x0000000000000000000000000000003cfa32ece4442a51aec52b5f10ef179702", - "0x0000000000000000000000000000000000292c1d65b1e12dcb2810d8b6bceb51", - "0x000000000000000000000000000000b95ceb1dc005ac06b590aee5db743221d4", - "0x000000000000000000000000000000000027a5ea4d7747e8d37de969d76a3ba8", - "0x0000000000000000000000000000002511c1c118c3d50e30042d7370ee6bb23f", - "0x00000000000000000000000000000000001c5198a67c078ec95ca74cb6a2b28b", - "0x000000000000000000000000000000179264c49d7545fa0bed16db0e344d7902", - "0x00000000000000000000000000000000002ac129a0e412577e4cf93f2a3798e0", - "0x0000000000000000000000000000001f7b1922370e0e09fdbc406fad696d7f18", - "0x0000000000000000000000000000000000077b09bd93d7919a498dcda077ebcc", - "0x0000000000000000000000000000005d462b2eee7bc3c1555c02d74c50d19017", - "0x000000000000000000000000000000000009442fa30df8046ad468f661a5890b", - "0x000000000000000000000000000000338d29c1a9dc2c3126e4abb2637878a32a", - "0x00000000000000000000000000000000002161e9f5ec10cc6bbb9c9700ab73d9", - "0x000000000000000000000000000000120ce408ada3f668e82006fab7f7fd81c0", - "0x00000000000000000000000000000000001284c6cfcc23c4fd57ac0a189b0167", - "0x000000000000000000000000000000861f1979d95e8f09b195b31e68ba8691d4", - "0x000000000000000000000000000000000002a027bfc156d838b4662f874ca121", - "0x00000000000000000000000000000071bc3fa358c655367437b4546ff0702248", - "0x00000000000000000000000000000000000a5c3e9cec0b1c01ae504bf35bffe0", - "0x00000000000000000000000000000021f65b4d0a62687fc96b0c732a5262075d", - "0x00000000000000000000000000000000002612107297abd9cffc6874a0753c56", - "0x0000000000000000000000000000008e7d2d4f520fc8d7ba527ca31dec2684db", - "0x000000000000000000000000000000000022baa8bf41dd0839e1ce9e23854fa3", - "0x000000000000000000000000000000c6dce6d9e3a3e8ecc5b56687176e87d5fb", - "0x00000000000000000000000000000000000cd36cd847aa3d09d80b61eb1a6f4e", - "0x000000000000000000000000000000fb3c8d1f27e0235a98862eba335ac570fa", - "0x0000000000000000000000000000000000092630d00a3cce40225b2faae2b480", - "0x000000000000000000000000000000373f94dc1386e104e0fda86892ca815c21", - "0x00000000000000000000000000000000002951cebaf9767894dd86fc20b222a1", - "0x000000000000000000000000000000580fb537e608023da88c8b752d0be47f93", - "0x00000000000000000000000000000000000dbc62b933fc7071435c3caa73b864", - "0x0000000000000000000000000000007df770121c09ca893104c8134c7230c8bf", - "0x00000000000000000000000000000000001ca17e965e5abe316a325576938ae7", - "0x000000000000000000000000000000d9933da06f7c26ba2ddb6c35d1bc04c633", - "0x000000000000000000000000000000000021d25e8b70928c791f32a7ec2d0d6c", - "0x0000000000000000000000000000004a40f2d393bf5b092d36b1547844549052", - "0x00000000000000000000000000000000001fd2d406ccc845824d0425d145f17e", - "0x0000000000000000000000000000009956df895bafd3cd8aea3527cb1095fb76", - "0x000000000000000000000000000000000003431e5d26ae0b14869a9d4444e72d", - "0x00000000000000000000000000000045b2802ce25dcd9d3fca28526e55ae5d22", - "0x0000000000000000000000000000000000275388f1502864311edc702d50e8ac", - "0x000000000000000000000000000000689c07b60737457b5af01ad6a8b2447260", - "0x0000000000000000000000000000000000218db48bf250e076d72087633ae0dd", - "0x000000000000000000000000000000df9ced1bc6c7cc83bdba04d6c598775f10", - "0x00000000000000000000000000000000001212f0148b13f0a12236aeebdfa3c8", - "0x0000000000000000000000000000004f943b44ec7da126388858cf0d9c52b779", - "0x00000000000000000000000000000000002bcd36154edbd06e4909a8f37b0323", - "0x00000000000000000000000000000052e019ddad254d88c4a950cf1396770985", - "0x0000000000000000000000000000000000187b9fe87963c5831fb689e3a5c22f", - "0x00000000000000000000000000000015c36276d1a9c8ddd8605509f4ffd938e7", - "0x00000000000000000000000000000000002f06428480c45c54af15ae782cba2c", - "0x000000000000000000000000000000f02643e70de5ee4e9c4c7083fac4cfd521", - "0x000000000000000000000000000000000016de1358ec943b3aca2b1d3785be84", - "0x000000000000000000000000000000139f285acc67641cb39817d4f4f0e1e535", - "0x00000000000000000000000000000000002131e7d49ed6b84a2069f9e619cb2e", - "0x000000000000000000000000000000c78f33493ee64845824f4281f6b7f98f01", - "0x00000000000000000000000000000000002cb30885093e78a32ba96d943c06f8", - "0x0000000000000000000000000000003b0ddb0ad0f6b36c1c593764b08bb103a3", - "0x000000000000000000000000000000000023d1a2a8f342e036a8c898837c3995", - "0x000000000000000000000000000000564b46b051507c5d88d6bc60c8c00fe51f", - "0x000000000000000000000000000000000011a5d138e3417265a21ef060d6febf", - "0x000000000000000000000000000000949ddfa010a539f944d7ab72ff27211157", - "0x00000000000000000000000000000000000305ceed727a787fc9d203c515af82", - "0x0000000000000000000000000000006fa71a49749e8c0d57cc0ae74d548513d4", - "0x0000000000000000000000000000000000188a8a2c16c8a087cf746ee07986b0", - "0x0000000000000000000000000000005c849dac486a1cdd87ec2abff14ac2aa44", - "0x00000000000000000000000000000000000c2a7f141da6ed300ff537a1c20bf7", - "0x000000000000000000000000000000fa840b0b9f0538277775f7fa268497c11d", - "0x0000000000000000000000000000000000115532703e7e72dda7f721f53a488c", + "0x00000000000000000000000000000000000000000000000000000000000003dc", + "0x00000000000000000000000000000000000000000000000000000000000003dd", + "0x00000000000000000000000000000000000000000000000000000000000003de", + "0x00000000000000000000000000000000000000000000000000000000000003df", + "0x00000000000000000000000000000000000000000000000000000000000003e0", + "0x00000000000000000000000000000000000000000000000000000000000003e1", + "0x00000000000000000000000000000000000000000000000000000000000003e2", + "0x00000000000000000000000000000000000000000000000000000000000003e3", + "0x00000000000000000000000000000000000000000000000000000000000003e4", + "0x00000000000000000000000000000000000000000000000000000000000003e5", + "0x00000000000000000000000000000000000000000000000000000000000003e6", + "0x00000000000000000000000000000000000000000000000000000000000003e7", + "0x00000000000000000000000000000000000000000000000000000000000003e8", + "0x00000000000000000000000000000000000000000000000000000000000003e9", + "0x00000000000000000000000000000000000000000000000000000000000003ea", + "0x00000000000000000000000000000000000000000000000000000000000003eb", + "0x000000000000000000000000000000e2a70abf2db5a56e3b80b735d8fe93844f", + "0x000000000000000000000000000000000007d5e763ad00e11b46ba2c01874266", + "0x000000000000000000000000000000717f06f4849fabc0eb379038c2787f4f0a", + "0x00000000000000000000000000000000002432b88686a770539feb7073936af2", + "0x000000000000000000000000000000241b31d36d4fa2d3d0b65b60a0b30fbe1f", + "0x00000000000000000000000000000000001647b3c906eea3d9a936ca32d1d2cc", + "0x000000000000000000000000000000bf5b7e0e7905e95b6dd16f1549320f091a", + "0x00000000000000000000000000000000001d761d19f3a363e0dfeb81bb9d7b17", + "0x0000000000000000000000000000002de78f3b7bf60a3dcaef2403e7a480f674", + "0x000000000000000000000000000000000027a6694dc12546d2169a7af214d7d9", + "0x00000000000000000000000000000084e5ac9a2a9c89b7ba303748f68920fd59", + "0x00000000000000000000000000000000001bcb1558f8a5f2a022f5b21bc84c4f", + "0x000000000000000000000000000000cff61694d99e06f2f6cea24184c6faff45", + "0x000000000000000000000000000000000026def465f5e787af29baad942d31c9", + "0x000000000000000000000000000000d22e435b810b60fdb70b693cd4e9b502a4", + "0x00000000000000000000000000000000000021c68681bd4b10fbf975192b50c9", + "0x000000000000000000000000000000de2b147b0aeeb897830ec93888b8df2dfa", + "0x00000000000000000000000000000000000786effde53516b0c48c462f99a595", + "0x0000000000000000000000000000007627848e3f39e8b9eb64ea954d26f14549", + "0x00000000000000000000000000000000002144cf1b643ca17330f7e84cd5a655", + "0x00000000000000000000000000000084c15b6e7545324c008347e91d3c485e2d", + "0x00000000000000000000000000000000002bda8532a1ddbb20ef1d06d16a559c", + "0x000000000000000000000000000000285cd754d96c51c5d82a3e96b49a4703a8", + "0x000000000000000000000000000000000028849510d5ecb9fec5e503a8643a64", + "0x00000000000000000000000000000026d90971e11e22590bd1d23c26c3e60643", + "0x00000000000000000000000000000000000ac0ff4f2e738321956625babc98a2", + "0x000000000000000000000000000000e23e99370dee05182b2a6e288a3f1dbe78", + "0x000000000000000000000000000000000026423ab2c1b6c27161c560409b49b2", + "0x000000000000000000000000000000f12699521992cd11507cc3d857f365bda3", + "0x0000000000000000000000000000000000015a68530ca40650b503a2e93f04e4", + "0x0000000000000000000000000000005e671e550d38f3437820a475d19b334a8d", + "0x00000000000000000000000000000000001c572e9a754b84ff4f93feb3419f94", + "0x00000000000000000000000000000001af74368cb4e6c463f81d68f73147a827", + "0x00000000000000000000000000000000002a166f4d388c12d05337733d06f0d4", + "0x000000000000000000000000000000034a2ffe8bc843f57d8769875413c5f1a1", + "0x00000000000000000000000000000000001ede2a33e28cab3b0b987e1e42b23c", + "0x0000000000000000000000000000003052f5dda64a52abe35257bc568f5a6890", + "0x00000000000000000000000000000000002819569643e54119f9cfe02eed2540", + "0x0000000000000000000000000000009f53577bb68e274ee47b6cbe60d5156e44", + "0x00000000000000000000000000000000000a8a3bb75a45fcb1a20cf8b8ea179e", + "0x0000000000000000000000000000005984c45840392053bafefa6c0381d8f3e7", + "0x00000000000000000000000000000000001c5edf25521f683b0f073678aeba28", + "0x0000000000000000000000000000005a03cab51ad1c2b4d7e0c5692d4761bffa", + "0x000000000000000000000000000000000022381d8ee1f8d2b626b4f24c0c5eab", + "0x000000000000000000000000000000b4d4c6827fb665f5f762bec8b5409feba0", + "0x000000000000000000000000000000000013cbf0363025690914296b298c4a34", + "0x000000000000000000000000000000ce0770aa5228294769532c04a9ed052b7e", + "0x00000000000000000000000000000000001cf2c5ff4797fb3fa2f1f4e44d7fff", + "0x000000000000000000000000000000e1333724197aac54787a168048b74fd8ff", + "0x00000000000000000000000000000000002292de33028268f14f0f45a17d1b1b", + "0x000000000000000000000000000000ac1f66a28d7f48bafac5ba6c9f912a007d", + "0x00000000000000000000000000000000000fc04990a04b4db2e4b6934201b2d4", + "0x00000000000000000000000000000082c892d466f77738a2218d9a84669bcf91", + "0x00000000000000000000000000000000000eb8975fa3133acdefe25319c313a9", + "0x000000000000000000000000000000b85d8e7ef7fd09ef6cf3336fbabc64a0b8", + "0x000000000000000000000000000000000015b5395c80352154ac5b0420929c7b", + "0x0000000000000000000000000000002c89b9bf9c26e42c912d240d995cd305e8", + "0x0000000000000000000000000000000000038a3059e3934a59df7f5e6affdb7c", + "0x000000000000000000000000000000353cc4fe06b285bcf7b0420a2f4808d481", + "0x00000000000000000000000000000000002d9098560c035657987a3f0b03aa9f", + "0x000000000000000000000000000000f55966792a244309f68913edafc1a0e283", + "0x00000000000000000000000000000000002cd001744329f9bb8dcf7f706b64d5", + "0x0000000000000000000000000000002e510b8812fe71e3447efb2a703ecf3bbb", + "0x000000000000000000000000000000000003919d6cd79b6b0d98933eee1deed8", + "0x000000000000000000000000000000deb4123671f3d3a36aaf79bf942110ed26", + "0x0000000000000000000000000000000000092e04fd33c62c5b4cde24ef2bd9af", + "0x00000000000000000000000000000017c72822051e3880df0896d457633bb8a8", + "0x00000000000000000000000000000000001b4155a75c956f0335205bb32bb281", + "0x00000000000000000000000000000001a5624432f3837cffa189dd0901903dd4", + "0x000000000000000000000000000000000010ca437fe4ed9cd31e0d885ee10f49", + "0x000000000000000000000000000000eff4e55e0657194f731217645db19db66f", + "0x00000000000000000000000000000000002207f65676e67cbaae6c720b900062", + "0x000000000000000000000000000000db14f5d3c0c91e328f5e9cdf987b3287a6", + "0x00000000000000000000000000000000000815fd61ec34584686d6a57dfe619c", + "0x000000000000000000000000000000e511dcf88b34b04b43d5ac4b5c26bb226c", + "0x00000000000000000000000000000000000517d7a24181453772a8c1c18776a1", + "0x000000000000000000000000000000a94494c66e149dbd7aa3fddd9cc7b05873", + "0x0000000000000000000000000000000000243021ce1dd076e98f6e6d861a420c", + "0x0000000000000000000000000000000f71ef565bb081d1ebb049515d24264da4", + "0x00000000000000000000000000000000000afeee73f2aa3b02af56407bb6afdb", + "0x0000000000000000000000000000001afcdd7968ded28f10b0cf1107b36f4a44", + "0x00000000000000000000000000000000001e4246ba3dcd63b2b44f091fdd4077", + "0x000000000000000000000000000000453e4d4deaef89712bccd4a9f8486a5b2f", + "0x00000000000000000000000000000000000082ffd3cfc3dfbf1fffe287b1c2f3", + "0x0000000000000000000000000000002288034f3ba3cacc74e8cced5c7cd19155", + "0x00000000000000000000000000000000001910a3dc7e741c76c08252e1f2af7a", + "0x000000000000000000000000000000c4825137303952af837523fdb87c5f1a27", + "0x00000000000000000000000000000000000bf36ee00449ecfdcfcd449edb7be8", + "0x000000000000000000000000000000dc4567b52908f0d9ee79f3430c0773f1d4", + "0x00000000000000000000000000000000000b3d06ca98da125cf7c03671375105", + "0x0000000000000000000000000000004c9d6c653b35a4e41ce0c28b8f3bc05f80", + "0x00000000000000000000000000000000001c6cbebc523077127e76e48715e3f7", + "0x00000000000000000000000000000010e9f0c36c8d13bc65ae5dc83aafea4d93", + "0x00000000000000000000000000000000001e6c3234c3d66e62f619f122abcf08", + "0x0000000000000000000000000000007c90b604558cb0031b2786ccfb4b0f267b", + "0x000000000000000000000000000000000023a5e79143fd2d6f9a5d5de119fe03", + "0x000000000000000000000000000000de49bef47504163f244087cb488de2f99a", + "0x00000000000000000000000000000000002b09a5701c772dea31d0fdb450e27b", + "0x000000000000000000000000000000d42fc4da775de36979dfa33a903f61a055", + "0x000000000000000000000000000000000019af65682cd77e5a6b7c48b6900022", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000000000ab3a11c512f430ff96ccb37402e3ff5748", - "0x00000000000000000000000000000000000251f7429d622bfbb7ba97f611cf34", - "0x0000000000000000000000000000008beb763a22f5b29aafc414cb76f8fd8b89", - "0x00000000000000000000000000000000001657144d2a96e7a20f2d8551c8e586" + "0x0000000000000000000000000000006862cdf7072422c5d915238fc5fc77e655", + "0x00000000000000000000000000000000000bcabfcf0533b67a88e1a1a2a14a31", + "0x00000000000000000000000000000091b77708688421f998b7f47d4a4ce9ec51", + "0x0000000000000000000000000000000000146762eab5e705427d962991cfa509" ] -hash = "0x1ad0aaec4acb45f84779eecdd9c22cdfd44b9994df4f5687e22a38b56d2df24c" +hash = "0x23314c114e2e6d7d1dcc2c42f769b7eaa5a42c83e69cb9539ffbbb897d90363d" [inputs.previous_rollup_data.vk_witness] leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000d" sibling_path = [ - "0x27cab8a4703e6bbb336e65106dfb67e17d6f8019c38fdf08dff2ee8ffc69fd86", - "0x185b908d5cab33389293e9faecfd59ca8245e18763a43dcff2689148e19b2e60", - "0x07dcf10f13b75a0fee443823cce9ba4f4d0cf6b1244bd1a72c22388b2cf6044a", - "0x043018912588f9874fea852ab854ccaa9b13b8c1b201b55eda7a2fbdd1224ae0", - "0x022f5ac8ff86489f5492d016d0ac69cd39e93b518da3f5a15a8c3177b92bc008", + "0x19c9a76e17167348bb8b76d9d8c5de5df1aeecbb8aba20a1a0432659ca33152b", + "0x03eebb70e90e891dd8280fc233bca53f212597b12b308823c33a3c2c6dc8f28d", + "0x220ebe2ec739267877ea7a9dfdd070c92cc88f558917466660908410bd66dabc", + "0x268b4fb54bbdda64dd707ee86cb0729dfb9a9e8b6ae83e973b37bc7e4b18f875", + "0x1967335d7b185023afd52d8f7f40be4ced0d80ba63d4dce2de3e26bfe772e394", "0x122cddd247164987e2287f8ce124bea7a68052e85bffebe2fc6cd71718689069" ] diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-block-root/Prover.toml b/noir-projects/noir-protocol-circuits/crates/rollup-block-root/Prover.toml index 946e7d0497f..fa054576428 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-block-root/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/rollup-block-root/Prover.toml @@ -56,9 +56,9 @@ l1_to_l2_message_subtree_sibling_path = [ ] new_archive_sibling_path = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x1e9ab3651d3118b0e789a225aacbee39a31d414fa349c4f1cc43a2df882264f6", + "0x0b63a53787021a4a962a452c2921b3663aff1ffd8d5510540f8e659e782956f1", "0x0e34ac2c09f45a503d2908bcb12f1cbae5fa4065759c88d501c097506a8b2290", - "0x270fe0381fdd00d06d8385a659b32b9316fef637f04fd981fbeb65f5a4680917", + "0x207f82708405f34873fadee80edfe9b399ab76b1182523986a388c1e9e560f69", "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e", "0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf", "0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76", @@ -85,67 +85,12395 @@ new_archive_sibling_path = [ "0x064769603ba3f6c41f664d266ecb9a3a0f6567cd3e48b40f34d4894ee4c361b3", "0x1595bb3cd19f84619dc2e368175a88d8627a7439eda9397202cdb1167531fd3f" ] -previous_block_hash = "0x148654793384eeab5a0c8b73d18ced24816c0cdc72c0ee5b18bbdaa2b8f9c126" +previous_block_hash = "0x022087729c552378b2572eb9be555e7dff2161a22e9a1d5e175d3558163a615b" prover_id = "0x0000000000000000000000000000000000000000000000000000000000000051" +blobs_fields = [ + "0x000000000000000000000000000000000074785f737461727400000900010000", + "0x0002000000000000000000000000000000000000000000000011b417896f129a", + "0x0000000000000000000000000000000000000000000000000000000004000001", + "0x1f402bc61864bc9d78571eb2ff08bd21be788986bfc07e9e7865cbe3dd0a905b", + "0x0000000000000000000000000000000000000000000000000000000006000004", + "0x0384c877dba0f9d849d02e07dac0d3105f8e09b0959c5ee77843b8c037b195bc", + "0x0000000000000000000000000000000000000000000000000000000000002328", + "0x0d38d167da0ccd3ba447ce36953062d88783b02447d5af2bd09519bcd2a928f4", + "0x00000000000000000000000000000000000000000000000000000000000003e8", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] +blobs_hash = "0x00694ef58caf7e83ff6c9a65d3667adff33912aec5d9564ce4d8994fd5e33290" [[inputs.previous_rollup_data]] [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs] -rollup_type = "0x0000000000000000000000000000000000000000000000000000000000000001" -num_txs = "0x0000000000000000000000000000000000000000000000000000000000000002" -txs_effects_hash = "0x00c2f365469715ac894b74bc10da3a8fa8a68a8befac2397a3d0e26673ce5852" -out_hash = "0x00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb" -accumulated_fees = "0x000000000000000000000000000000000000000000000000001901103bcdf680" -accumulated_mana_used = "0x000000000000000000000000000000000000000000000000000000000001fbac" +rollup_type = "0x0000000000000000000000000000000000000000000000000000000000000000" +num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" +out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" +accumulated_fees = "0x0000000000000000000000000000000000000000000000000011b417896f129a" +accumulated_mana_used = "0x0000000000000000000000000000000000000000000000000000000000016771" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants] - vk_tree_root = "0x0a118eae659eb1671e3f579a83c4ad3688cee1b9f23dcec48af4d3f3a2de1733" - protocol_contract_tree_root = "0x296690a67333fb896eff0ef812d31f9be26161726e47057bb688ddcf08164453" + vk_tree_root = "0x0bee8f04d48c18c88f2b9dd3b87daba3b3c8d000f44d290587504ae770942c56" + protocol_contract_tree_root = "0x1c4e64cbb91a46bc2fd73590e1dacd3ddf84d1b5e7a7182795ab02fe80399caf" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.last_archive] - root = "0x25c8c19c00ade5d9ee2e42a0b6ba0487a228c008c9216227b3cfe6483cc8c274" - next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000a" + root = "0x04b51aa5df89d177213335ca62dee74d15b920e231f5ea5198ed405967d188fd" + next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" version = "0x0000000000000000000000000000000000000000000000000000000000000001" - block_number = "0x000000000000000000000000000000000000000000000000000000000000000a" - slot_number = "0x0000000000000000000000000000000000000000000000000000000000000024" - timestamp = "0x00000000000000000000000000000000000000000000000000000000675b06b2" + block_number = "0x0000000000000000000000000000000000000000000000000000000000000008" + slot_number = "0x0000000000000000000000000000000000000000000000000000000000000015" + timestamp = "0x00000000000000000000000000000000000000000000000000000000675c2e96" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.coinbase] - inner = "0x000000000000000000000000dde7ef1ed87eb5cbb0562efd27c3ad9eda8c800a" + inner = "0x000000000000000000000000ed846b6f217c7084a6c108eda50abce8c8367eac" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd150e0" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd4533a" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.note_hash_tree] -root = "0x05cfddd64cd8186419dffde2648072f03e8e03b09f357ea09d6459d77a6ce474" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000480" +root = "0x266514a4f987058cb2deb71c37e845df4f7f85ab2a23f208dd98cf7eeeb7cbc4" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000380" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.nullifier_tree] -root = "0x2eaed0d2778fab648d143f4a309b323cef0f1e32e63a36b6f3c3620a1d89281e" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000500" +root = "0x085a35f42d569f7aac0404ce29055696f738a6c798a32632d15a8453e59115ff" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000400" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.public_data_tree] -root = "0x066ae819431599f4cfc5d66ecf7be666683baaba66da8d5e4b1d9d0c5004c505" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000097" +root = "0x0ff17010ab909b4a0c9581a9c33cf0af93280c6fcd6664cf27270b8762a9e418" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000096" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.note_hash_tree] -root = "0x05cfddd64cd8186419dffde2648072f03e8e03b09f357ea09d6459d77a6ce474" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000500" +root = "0x266514a4f987058cb2deb71c37e845df4f7f85ab2a23f208dd98cf7eeeb7cbc4" +next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000003c0" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.nullifier_tree] -root = "0x012525b5182961169eeda08b1acc8a4ef16de30010dd848ec7df8112d3aaed09" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000580" +root = "0x0b3cd059f3a14d1fc149e845404ee3733e58010456792a3f61c3803f4ddd1248" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000440" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.public_data_tree] -root = "0x0a1da5164b661cfe6ee6fb367dff660550d079aaa099c11d55c20c680ab56259" +root = "0x28b5d86e557e528de4452115c3b6ca2b8075465411e73f310c843fa8d2b5faad" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000097" + [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start_sponge_blob] + fields = "0x0000000000000000000000000000000000000000000000000000000000000000" + expected_fields = "0x0000000000000000000000000000000000000000000000000000000000000009" + + [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start_sponge_blob.sponge] + cache = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + state = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000090000000000000000" +] + cache_size = "0x0000000000000000000000000000000000000000000000000000000000000000" + squeeze_mode = false + + [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end_sponge_blob] + fields = "0x0000000000000000000000000000000000000000000000000000000000000009" + expected_fields = "0x0000000000000000000000000000000000000000000000000000000000000009" + + [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end_sponge_blob.sponge] + cache = [ + "0x0000000000000000000000000000000000000000000000000000000000002328", + "0x0d38d167da0ccd3ba447ce36953062d88783b02447d5af2bd09519bcd2a928f4", + "0x00000000000000000000000000000000000000000000000000000000000003e8" +] + state = [ + "0x05dc8cfb21681a19bd8e67518d2b9e22d31ba0380ecbb3653e00daa9dabe7e56", + "0x0ebafbb8e482cfd14bfe06b18ba8ef29493892e5c55e9b5ed16ede0e4cfe7562", + "0x22fa4ea0b8f5633a4701f717c52914a96bc5be0e69d2e84d86b4a1a717dfac6d", + "0x0991732e4b69f8065c9beb388f953e963baab29beb67084560f6116c9fdec042" +] + cache_size = "0x0000000000000000000000000000000000000000000000000000000000000003" + squeeze_mode = false + [inputs.previous_rollup_data.proof] fields = [ "0x0000000000000000000000000000000000000000000000000000000000000001", @@ -615,145 +12943,145 @@ fields = [ [inputs.previous_rollup_data.vk] key = [ - "0x0000000000000000000000000000000000000000000000000000000000200000", - "0x000000000000000000000000000000000000000000000000000000000000002f", + "0x0000000000000000000000000000000000000000000000000000000002000000", + "0x0000000000000000000000000000000000000000000000000000000000000044", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x000000000000000000000000000000000000000000000000000000000000001f", - "0x0000000000000000000000000000000000000000000000000000000000000020", - "0x0000000000000000000000000000000000000000000000000000000000000021", - "0x0000000000000000000000000000000000000000000000000000000000000022", - "0x0000000000000000000000000000000000000000000000000000000000000023", - "0x0000000000000000000000000000000000000000000000000000000000000024", - "0x0000000000000000000000000000000000000000000000000000000000000025", - "0x0000000000000000000000000000000000000000000000000000000000000026", - "0x0000000000000000000000000000000000000000000000000000000000000027", - "0x0000000000000000000000000000000000000000000000000000000000000028", - "0x0000000000000000000000000000000000000000000000000000000000000029", - "0x000000000000000000000000000000000000000000000000000000000000002a", - "0x000000000000000000000000000000000000000000000000000000000000002b", - "0x000000000000000000000000000000000000000000000000000000000000002c", - "0x000000000000000000000000000000000000000000000000000000000000002d", - "0x000000000000000000000000000000000000000000000000000000000000002e", - "0x00000000000000000000000000000058d5ba2ecf37fa40a2348ad78532310871", - "0x00000000000000000000000000000000002a2ba6f038c7eb55521f43a1d14538", - "0x00000000000000000000000000000089897a60406c99edcd342b59cff234deb8", - "0x000000000000000000000000000000000006fb7d80f2c07888cfdd1027985a08", - "0x000000000000000000000000000000a761788230fe2b246d0fa674fe30772bd4", - "0x00000000000000000000000000000000002da1ac6ff0970dd8c6c922af45d33d", - "0x000000000000000000000000000000e9f0330ed59f32ea50e96cc819bbb7b91f", - "0x000000000000000000000000000000000029306aef047c76c8606729b4ac1fd3", - "0x00000000000000000000000000000070247bcbc1ff62d4f88a1cb7ad7372f17a", - "0x00000000000000000000000000000000001c11c18e7b59a6f1c613a7e80c89d8", - "0x000000000000000000000000000000c6b39c6603d9bd26ae3d6b5082029e154e", - "0x0000000000000000000000000000000000101818198e8d423d8c768aa912a5a1", - "0x0000000000000000000000000000004476bf9f4ad40a6bc564b47badbd248bdd", - "0x00000000000000000000000000000000001716a17d5c8e5f95a53b1aad379954", - "0x000000000000000000000000000000f941c1fa31cea8e3e6935a70dce0c54abf", - "0x00000000000000000000000000000000002d34aa97fb1dc9ad761e83792f98ae", - "0x000000000000000000000000000000a39ab87e5eb84873c368a1c360cd961a03", - "0x000000000000000000000000000000000000b1ea088669ae2c49b1df230518f6", - "0x0000000000000000000000000000004a40c65b3e4e417e576a0cf3d2dc27229a", - "0x000000000000000000000000000000000005c35f438d635da71a8c6f3cc68b1c", - "0x000000000000000000000000000000c4d07ae5b32fc9e0771eb9d4efdd29211f", - "0x00000000000000000000000000000000000521b3ce36295c878e219a923da3fa", - "0x000000000000000000000000000000007375bb873591c803376d58456295c2c6", - "0x0000000000000000000000000000000000112df2a8d6901b30f011f01a201d93", - "0x000000000000000000000000000000b417f0cd1e907a0c3d153dd8ff1e86aedb", - "0x00000000000000000000000000000000002b2dbac860c9fb1c417e31e3574bec", - "0x000000000000000000000000000000dca21e26fe333e9dbba1d6a76782b778b3", - "0x0000000000000000000000000000000000144fe7d99670a1187302e96c050f97", - "0x0000000000000000000000000000006710cff876f227def42dbb5a724eb1ca40", - "0x00000000000000000000000000000000000e367b3930afd2d037bbbb9278d49f", - "0x000000000000000000000000000000de6fffae93f5da71544541f6ee63d404ad", - "0x00000000000000000000000000000000002dd3b83cbe54e6bc5e2c7e0271d55d", - "0x000000000000000000000000000000e8c53968377e0ad77165d93a430aa89531", - "0x000000000000000000000000000000000010daf97bbb42d3cc5c2a84ffb455cc", - "0x000000000000000000000000000000275625b84225b677c90726f01e707709ef", - "0x00000000000000000000000000000000000d631c5c542725befec452f8d8d2bb", - "0x0000000000000000000000000000005e2715d2ec497d34e6305d87f18c6e7295", - "0x0000000000000000000000000000000000232a12362f98986fac16716ce723f3", - "0x0000000000000000000000000000005315ac481ae7c5a5bfec9372d701118d0e", - "0x0000000000000000000000000000000000211ff7b7f12b2d7d448d1f818f85bd", - "0x000000000000000000000000000000851efeced77f9ed0080f21beb66c5c3e8f", - "0x000000000000000000000000000000000015e794e14818708bf0e09ab12c0c33", - "0x00000000000000000000000000000013bcf073e500a03ce932d35d36a6496170", - "0x00000000000000000000000000000000000e01ec64f899a0ad5e6a856d6aba56", - "0x0000000000000000000000000000002f07846c88c3f5482a31e232d69b967abf", - "0x00000000000000000000000000000000001a5e079290a9ad776939b261137b15", - "0x0000000000000000000000000000009402058d3ec555348a05a7ff8334ac7c4b", - "0x00000000000000000000000000000000000ae87d47e4e3cf39408fa4ed011b30", - "0x000000000000000000000000000000aecff7776c49f041f6d9ff90e7926b7855", - "0x00000000000000000000000000000000001d93570671380d72cde23f21debc04", - "0x00000000000000000000000000000060ecc38291e19f5fc2de4ca95a0c99494a", - "0x00000000000000000000000000000000001fbbfe659a05084e26d390295c238d", - "0x000000000000000000000000000000a8c7e06c2a1d3e68b3d5952d3c16807cd6", - "0x00000000000000000000000000000000002399a8e11b2b15d23a703c244f4121", - "0x0000000000000000000000000000005635e10e55b0a67cabc33e9a1572fd4d3d", - "0x00000000000000000000000000000000000aa240c4c2b188f60a0ea400f96306", - "0x000000000000000000000000000000629c12b66acb103ba82de420f865c7f75c", - "0x00000000000000000000000000000000002d5baddbe5dbf4dbd904656d3129e7", - "0x000000000000000000000000000000ce39d3fd27816bfbc70eabb9f6337391bb", - "0x0000000000000000000000000000000000225a3a95cec21a8471cf75c348c2d1", - "0x000000000000000000000000000000be69d7286047769deaea7bb7da73376d53", - "0x00000000000000000000000000000000002f3b15a8bdf5a029a5f1b42b9b398c", - "0x000000000000000000000000000000d9242e9f1503393091e04adabb242c6589", - "0x000000000000000000000000000000000005af4633bbff2f4a483bb671f06dc4", - "0x000000000000000000000000000000e78b068564c6fdaca5f061e49375af3e29", - "0x0000000000000000000000000000000000238eca568d31a7986b1ff52bc50d2b", - "0x000000000000000000000000000000fcca877b7b0f2511359eb71d2750b12e66", - "0x000000000000000000000000000000000026dfc25b717a69d2b8aeec795363e5", - "0x00000000000000000000000000000000dc63c2fa704a5089f6a51aa49de29b65", - "0x000000000000000000000000000000000014f77967fea4496d831ea452776b69", - "0x000000000000000000000000000000324ac7135b600b8e4c474da170b11f3681", - "0x00000000000000000000000000000000002d934ef31b177fb42cb1112952c181", - "0x00000000000000000000000000000060d631544346228ae4ccd44791ed45426a", - "0x0000000000000000000000000000000000191026aeae787516687233bf12da89", - "0x000000000000000000000000000000e8782155d0313dd2eb537fe07fa558e265", - "0x00000000000000000000000000000000001bdce73a31b12f0468de4b3e1ca2a8", - "0x0000000000000000000000000000003c6c425a066a55662863b969ea9ee75f69", - "0x0000000000000000000000000000000000051fa375342ed7ab7d794f9173b0c2", - "0x000000000000000000000000000000aad51b874c6dbc9ed2624b5233e4f08593", - "0x000000000000000000000000000000000011a315aa41b4bf8b3e821ae4582fdd", - "0x0000000000000000000000000000004c09721f58c7fb4d023b46f73da19a1b17", - "0x00000000000000000000000000000000001e69a310ea5dc429b13c82f2e2127b", - "0x000000000000000000000000000000418b08c670220f4fcc66f8f537e62ff242", - "0x00000000000000000000000000000000001f62e43b140817b603c8f33cb6c66b", - "0x000000000000000000000000000000f4e9295d1ea084e3f209fee83cecb68980", - "0x0000000000000000000000000000000000267618bcc3661919303de536816763", - "0x0000000000000000000000000000006ebc42395420901e46b6be306b3951fa6c", - "0x00000000000000000000000000000000002eccbf1e93404b4230f9e31ed9c3ac", - "0x0000000000000000000000000000008c339550435984aa17c9c37ba2bff4190c", - "0x000000000000000000000000000000000000c81232cbc2b091c3a2b40a96d342", - "0x000000000000000000000000000000dbdf73ea405e2f4e6c39c3a3ba4752d0ec", - "0x00000000000000000000000000000000002c0bb799a324ff2053bbc9b8637c37", - "0x0000000000000000000000000000003fe91e03445677018dced802ed8bc5a2b2", - "0x000000000000000000000000000000000020cdfcc25b7478bddb7e410f918374", - "0x000000000000000000000000000000e4e65049d4944b057421f4e47b92c0a642", - "0x000000000000000000000000000000000028ddb11d2b167fe52d18523392b14f", - "0x00000000000000000000000000000032e19d84d9b1a37504f117a43f59a03aa8", - "0x00000000000000000000000000000000001ccd89c68f7ff2e04d97bbf89a3ae0", - "0x000000000000000000000000000000a54c20cf5fd685d072a52674d098270f4d", - "0x00000000000000000000000000000000000a738179dfdd1d96a3827dd34df6ee", + "0x0000000000000000000000000000000000000000000000000000000000000034", + "0x0000000000000000000000000000000000000000000000000000000000000035", + "0x0000000000000000000000000000000000000000000000000000000000000036", + "0x0000000000000000000000000000000000000000000000000000000000000037", + "0x0000000000000000000000000000000000000000000000000000000000000038", + "0x0000000000000000000000000000000000000000000000000000000000000039", + "0x000000000000000000000000000000000000000000000000000000000000003a", + "0x000000000000000000000000000000000000000000000000000000000000003b", + "0x000000000000000000000000000000000000000000000000000000000000003c", + "0x000000000000000000000000000000000000000000000000000000000000003d", + "0x000000000000000000000000000000000000000000000000000000000000003e", + "0x000000000000000000000000000000000000000000000000000000000000003f", + "0x0000000000000000000000000000000000000000000000000000000000000040", + "0x0000000000000000000000000000000000000000000000000000000000000041", + "0x0000000000000000000000000000000000000000000000000000000000000042", + "0x0000000000000000000000000000000000000000000000000000000000000043", + "0x0000000000000000000000000000007acea76220f3dcf559941a7e87a6b28907", + "0x000000000000000000000000000000000017503e58c81a120517cdb8a4f99a55", + "0x00000000000000000000000000000030e0a46a7056ec5d122358957f34be6420", + "0x000000000000000000000000000000000019af3ba7be026356d5013338e6a9c8", + "0x000000000000000000000000000000941c8c03340dc6ac1ac21dfc245eec52ae", + "0x000000000000000000000000000000000028a50b16a95bfe8d5d5910fa14acf9", + "0x000000000000000000000000000000d750fd9b7a01bfd4e6553bf8ab2e513a06", + "0x000000000000000000000000000000000005cb7ef208180dc12701ec1bf16e6e", + "0x000000000000000000000000000000226a41a3cde055871146a14f69ceed3189", + "0x00000000000000000000000000000000001905f4d4e4516041c993103f21ed23", + "0x000000000000000000000000000000e1343257a50d0cf1554d5fa39b63807f82", + "0x000000000000000000000000000000000029c01e95b47fd55a3af50c144b0334", + "0x000000000000000000000000000000061cb8849db1149ba384d6eb537ec1d821", + "0x00000000000000000000000000000000001bd9e9b6b2864c7e76f8d6f987d224", + "0x000000000000000000000000000000fbd7c650b1b4c0ba0255b744ddd75e735c", + "0x000000000000000000000000000000000014ac90285cdead0ec12cad3d8d3a31", + "0x00000000000000000000000000000004bd04287093441c75d05b6cb594d378de", + "0x00000000000000000000000000000000001cfa05ce692088c27bb7e9a8a262c2", + "0x0000000000000000000000000000000943740754bb6d7f5fb55d5570754381c0", + "0x000000000000000000000000000000000006cfaa5c166143d59ab33b6f57b88c", + "0x000000000000000000000000000000c3f3c5edfca877fb6c14f7e913c178f044", + "0x00000000000000000000000000000000001def2c9873d161b5ffc87d4b9c60dc", + "0x0000000000000000000000000000002837ed4f4febbbe8635ac74a35ef13542d", + "0x00000000000000000000000000000000002e15fa9496d154e169360820b701f7", + "0x0000000000000000000000000000007f4ae2590c599ca3e076d8a504c9761169", + "0x000000000000000000000000000000000008d15a8f153ffea92236a73f8e00ec", + "0x0000000000000000000000000000009a5f9f5cc321cda5967ab3977408842a1b", + "0x00000000000000000000000000000000001aef0ad6d98239a10226c1e7a66701", + "0x00000000000000000000000000000013ed1c45df71665ea0553a8a92ef89b0ea", + "0x00000000000000000000000000000000001e6c3f8b5ee0db10934643cab5960c", + "0x000000000000000000000000000000e6fa0a76bfb524488e71aa8cba569d3273", + "0x00000000000000000000000000000000000e146846a27a9e994aa5eb95368e43", + "0x0000000000000000000000000000004722d45629beb72092ae034d7a116eea80", + "0x000000000000000000000000000000000011b3074e83b178395fdbf16779ecd4", + "0x000000000000000000000000000000a1560ad69fb0f87cbb68e2469c17405a88", + "0x000000000000000000000000000000000016664440497257aab435766cd8daa4", + "0x0000000000000000000000000000008c0e5d61ceae65541e501766f2133c9a05", + "0x00000000000000000000000000000000000348d59b536e2d9124401c032218d4", + "0x000000000000000000000000000000c3bec12bcd8c5519adc22cc13745a6a5ba", + "0x0000000000000000000000000000000000099b37362358ccfb574e08a5d589c5", + "0x0000000000000000000000000000001a7603f798b4001644ac6346536db682c3", + "0x0000000000000000000000000000000000294bc6e456c49353364126e7acfa5d", + "0x000000000000000000000000000000ab11980eb66b6674b9668c4bf810f2dbd8", + "0x00000000000000000000000000000000002a71b3517077a7e806ed8c7bd41fa5", + "0x0000000000000000000000000000005f94f02f427c74fe51265b2501485c6681", + "0x00000000000000000000000000000000001f6b4f952f28290b3907e9fd89a04d", + "0x0000000000000000000000000000000e0cb8cc77e8e0da284dfa81fb659ed69e", + "0x0000000000000000000000000000000000108d2a188563f05f8c03cc1a1478c1", + "0x0000000000000000000000000000001d68539ab56b251c9bdd606b72eae2fbe2", + "0x0000000000000000000000000000000000222d18f43c8767fbdc01e1149c5606", + "0x00000000000000000000000000000099b18017f081d6cde0fe1dba203d35f031", + "0x0000000000000000000000000000000000144df7fc0ec590f0ae163b2206b2a0", + "0x000000000000000000000000000000fe935114b354bc67d2668722921ebac6ba", + "0x0000000000000000000000000000000000075d80d0ccb2ebb8e503e0bc8830c2", + "0x0000000000000000000000000000003b90abab25d1cc86543ee6ff8bfb36a141", + "0x00000000000000000000000000000000002f2b5f13b32122f25179e756a5bfb6", + "0x000000000000000000000000000000897ab9f551efb564c420ec89c75f025c72", + "0x00000000000000000000000000000000001c0ea2c5e6ab8dbcb5c04b013def2b", + "0x000000000000000000000000000000a0075bff7fe7d309a4a62e4697e0910dee", + "0x00000000000000000000000000000000001dab25f9c69e46eea9ef77449361e4", + "0x00000000000000000000000000000099547f9d90555739ddb33d81f778b79663", + "0x000000000000000000000000000000000009900c88d768eb3db72dd478bde74a", + "0x000000000000000000000000000000d92c26c30401619e97a43b2187b1e133a2", + "0x00000000000000000000000000000000000f991e56504f78fa90c31cb1a39102", + "0x000000000000000000000000000000c2d41c0bbfbf46ba1250ac1c9e0fe538a7", + "0x00000000000000000000000000000000001a64c934662e4d7843869e10bcf0cc", + "0x00000000000000000000000000000060971ccd87ad954d4a3a53beb136a115e5", + "0x000000000000000000000000000000000010bd7c99936aad440199663e48b08c", + "0x0000000000000000000000000000002fdcaae4a7ea95151eaa408586b1860983", + "0x0000000000000000000000000000000000288a0ff0315966a7a54a4884071b87", + "0x0000000000000000000000000000002455cf89f168533af00a61b6cc5dff0b25", + "0x00000000000000000000000000000000002bd11c6ee070b426cbeab3ff2b61b9", + "0x000000000000000000000000000000253a264c658d6d8b3e4a96d1e60d4ddbcf", + "0x000000000000000000000000000000000019e1190a385281dc72fa0d1e6e3173", + "0x00000000000000000000000000000001ca9ee62603b8684b4435a11fbe81fe77", + "0x00000000000000000000000000000000000fb6c90cf416bdc5cad8fcc8c5b077", + "0x000000000000000000000000000000cbaabba02d5684703afd2db78a4f2a9440", + "0x000000000000000000000000000000000029ae159051a17e5ce8e48ac542d5fe", + "0x000000000000000000000000000000d3380d3fc8294269fb9db3fcc5a60a29ca", + "0x00000000000000000000000000000000002b6571e09ef0385e86a817eac71f02", + "0x000000000000000000000000000000dfbc5112ae66004756cc08168e703dbcdc", + "0x00000000000000000000000000000000000a1361207b6352bb3e47b8afdcdee4", + "0x000000000000000000000000000000e9d60c7571a644bd754d4bd8f89ce3f771", + "0x000000000000000000000000000000000025bcafa95e5c0470321ffae1ac1d1f", + "0x000000000000000000000000000000e3cb7b601f7eed6dca3e591857166b4d1c", + "0x0000000000000000000000000000000000125aad145d0dbafb8da2dc1b0700bc", + "0x0000000000000000000000000000007a67f2caa5046f4d1dfc3a63469566de81", + "0x000000000000000000000000000000000022a98cee0b4cc5268adc92e2229271", + "0x000000000000000000000000000000f7c7c14a69ad0052dced057951a74436f5", + "0x0000000000000000000000000000000000263b96899c9835ce217f54f6df4acd", + "0x0000000000000000000000000000006c8c4e747cb6085c5735b9c68f2db633ac", + "0x00000000000000000000000000000000001157b26152b34ab05419f38acc15da", + "0x00000000000000000000000000000054cf89815a06c242c5e433264079487fc0", + "0x0000000000000000000000000000000000049a97286033e7c6c80520a963c7a1", + "0x00000000000000000000000000000077cb47275a750777c993d845849365ae73", + "0x00000000000000000000000000000000001bef3fe6a136f8f3419040fb2fb9a8", + "0x000000000000000000000000000000cb5bdeb788a62ab7fefa163b44aa4fe480", + "0x000000000000000000000000000000000019c8da60322e5b15147bb67ee97c3c", + "0x0000000000000000000000000000001f35e0f8d62d480f37b4aa13b09005e059", + "0x00000000000000000000000000000000002eaf8692eeea251928fb9c16523574", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000000000721c1b01002ce0e252d57ffa446dc0bdf7", - "0x00000000000000000000000000000000000cdf409e764e95cb41fe0eb378a745", - "0x00000000000000000000000000000018f445bc011166a289f9be7a8facfa097f", - "0x000000000000000000000000000000000016ed1d001a264d087cf632b80219d9" + "0x00000000000000000000000000000048e3a765d915435b20c18944c02674e924", + "0x000000000000000000000000000000000008468b14fb49e8f7fdd86769c0e96e", + "0x000000000000000000000000000000b79ddc3696c5d21245a4e6e20e566201f1", + "0x00000000000000000000000000000000002a3a1bf035af4b9fb6bf9c890d61ec" ] -hash = "0x27cab8a4703e6bbb336e65106dfb67e17d6f8019c38fdf08dff2ee8ffc69fd86" +hash = "0x1f07a2890c9deb79fe6cc78935c6dfa810ee56922785f37307cb463f7797f73e" [inputs.previous_rollup_data.vk_witness] -leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000c" +leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000009" sibling_path = [ - "0x1ad0aaec4acb45f84779eecdd9c22cdfd44b9994df4f5687e22a38b56d2df24c", - "0x185b908d5cab33389293e9faecfd59ca8245e18763a43dcff2689148e19b2e60", - "0x07dcf10f13b75a0fee443823cce9ba4f4d0cf6b1244bd1a72c22388b2cf6044a", - "0x043018912588f9874fea852ab854ccaa9b13b8c1b201b55eda7a2fbdd1224ae0", - "0x022f5ac8ff86489f5492d016d0ac69cd39e93b518da3f5a15a8c3177b92bc008", + "0x03cde467306e7d05bcd957b9dde81fdb644d6a7e21d7857bc1bf647f78bfde83", + "0x19861a044ec84aaf6e41d02a20051d349f07206356e10a0846d4fa892534e306", + "0x236d849434a03c2e9d181e5365fe087cb14fd703bff61e5676bfa24c4f4509b7", + "0x268b4fb54bbdda64dd707ee86cb0729dfb9a9e8b6ae83e973b37bc7e4b18f875", + "0x1967335d7b185023afd52d8f7f40be4ced0d80ba63d4dce2de3e26bfe772e394", "0x122cddd247164987e2287f8ce124bea7a68052e85bffebe2fc6cd71718689069" ] @@ -761,60 +13089,97 @@ sibling_path = [ [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs] rollup_type = "0x0000000000000000000000000000000000000000000000000000000000000000" num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" -txs_effects_hash = "0x00be44e9a8a4d6b1dcf63645a435001b61748248dde6df63c6969b3cfdd01d73" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" -accumulated_fees = "0x0000000000000000000000000000000000000000000000000003a83175b4f800" -accumulated_mana_used = "0x0000000000000000000000000000000000000000000000000000000000004a40" +accumulated_fees = "0x0000000000000000000000000000000000000000000000000000000000000000" +accumulated_mana_used = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants] - vk_tree_root = "0x0a118eae659eb1671e3f579a83c4ad3688cee1b9f23dcec48af4d3f3a2de1733" - protocol_contract_tree_root = "0x296690a67333fb896eff0ef812d31f9be26161726e47057bb688ddcf08164453" + vk_tree_root = "0x0bee8f04d48c18c88f2b9dd3b87daba3b3c8d000f44d290587504ae770942c56" + protocol_contract_tree_root = "0x1c4e64cbb91a46bc2fd73590e1dacd3ddf84d1b5e7a7182795ab02fe80399caf" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.last_archive] - root = "0x25c8c19c00ade5d9ee2e42a0b6ba0487a228c008c9216227b3cfe6483cc8c274" - next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000a" + root = "0x04b51aa5df89d177213335ca62dee74d15b920e231f5ea5198ed405967d188fd" + next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" version = "0x0000000000000000000000000000000000000000000000000000000000000001" - block_number = "0x000000000000000000000000000000000000000000000000000000000000000a" - slot_number = "0x0000000000000000000000000000000000000000000000000000000000000024" - timestamp = "0x00000000000000000000000000000000000000000000000000000000675b06b2" + block_number = "0x0000000000000000000000000000000000000000000000000000000000000008" + slot_number = "0x0000000000000000000000000000000000000000000000000000000000000015" + timestamp = "0x00000000000000000000000000000000000000000000000000000000675c2e96" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.coinbase] - inner = "0x000000000000000000000000dde7ef1ed87eb5cbb0562efd27c3ad9eda8c800a" + inner = "0x000000000000000000000000ed846b6f217c7084a6c108eda50abce8c8367eac" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd150e0" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd4533a" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.note_hash_tree] -root = "0x05cfddd64cd8186419dffde2648072f03e8e03b09f357ea09d6459d77a6ce474" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000500" +root = "0x266514a4f987058cb2deb71c37e845df4f7f85ab2a23f208dd98cf7eeeb7cbc4" +next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000003c0" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.nullifier_tree] -root = "0x012525b5182961169eeda08b1acc8a4ef16de30010dd848ec7df8112d3aaed09" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000580" +root = "0x0b3cd059f3a14d1fc149e845404ee3733e58010456792a3f61c3803f4ddd1248" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000440" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.public_data_tree] -root = "0x0a1da5164b661cfe6ee6fb367dff660550d079aaa099c11d55c20c680ab56259" +root = "0x28b5d86e557e528de4452115c3b6ca2b8075465411e73f310c843fa8d2b5faad" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000097" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.note_hash_tree] -root = "0x2580c4cf35070b1a6513d8356c751ba43b73343ea9bbd82ec54b7c280c60ebb0" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000540" +root = "0x266514a4f987058cb2deb71c37e845df4f7f85ab2a23f208dd98cf7eeeb7cbc4" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000400" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.nullifier_tree] -root = "0x1de16c24b47e0ce09146c3170726c175b8c412cbe7b360b720d4bfd9bdcb2898" -next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000005c0" +root = "0x0b3cd059f3a14d1fc149e845404ee3733e58010456792a3f61c3803f4ddd1248" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000480" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.public_data_tree] -root = "0x0a1da5164b661cfe6ee6fb367dff660550d079aaa099c11d55c20c680ab56259" +root = "0x28b5d86e557e528de4452115c3b6ca2b8075465411e73f310c843fa8d2b5faad" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000097" + [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start_sponge_blob] + fields = "0x0000000000000000000000000000000000000000000000000000000000000009" + expected_fields = "0x0000000000000000000000000000000000000000000000000000000000000009" + + [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start_sponge_blob.sponge] + cache = [ + "0x0000000000000000000000000000000000000000000000000000000000002328", + "0x0d38d167da0ccd3ba447ce36953062d88783b02447d5af2bd09519bcd2a928f4", + "0x00000000000000000000000000000000000000000000000000000000000003e8" +] + state = [ + "0x05dc8cfb21681a19bd8e67518d2b9e22d31ba0380ecbb3653e00daa9dabe7e56", + "0x0ebafbb8e482cfd14bfe06b18ba8ef29493892e5c55e9b5ed16ede0e4cfe7562", + "0x22fa4ea0b8f5633a4701f717c52914a96bc5be0e69d2e84d86b4a1a717dfac6d", + "0x0991732e4b69f8065c9beb388f953e963baab29beb67084560f6116c9fdec042" +] + cache_size = "0x0000000000000000000000000000000000000000000000000000000000000003" + squeeze_mode = false + + [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end_sponge_blob] + fields = "0x0000000000000000000000000000000000000000000000000000000000000009" + expected_fields = "0x0000000000000000000000000000000000000000000000000000000000000009" + + [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end_sponge_blob.sponge] + cache = [ + "0x0000000000000000000000000000000000000000000000000000000000002328", + "0x0d38d167da0ccd3ba447ce36953062d88783b02447d5af2bd09519bcd2a928f4", + "0x00000000000000000000000000000000000000000000000000000000000003e8" +] + state = [ + "0x05dc8cfb21681a19bd8e67518d2b9e22d31ba0380ecbb3653e00daa9dabe7e56", + "0x0ebafbb8e482cfd14bfe06b18ba8ef29493892e5c55e9b5ed16ede0e4cfe7562", + "0x22fa4ea0b8f5633a4701f717c52914a96bc5be0e69d2e84d86b4a1a717dfac6d", + "0x0991732e4b69f8065c9beb388f953e963baab29beb67084560f6116c9fdec042" +] + cache_size = "0x0000000000000000000000000000000000000000000000000000000000000003" + squeeze_mode = false + [inputs.previous_rollup_data.proof] fields = [ "0x0000000000000000000000000000000000000000000000000000000000000001", @@ -1284,155 +13649,155 @@ fields = [ [inputs.previous_rollup_data.vk] key = [ - "0x0000000000000000000000000000000000000000000000000000000000800000", - "0x000000000000000000000000000000000000000000000000000000000000002f", + "0x0000000000000000000000000000000000000000000000000000000001000000", + "0x0000000000000000000000000000000000000000000000000000000000000044", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x000000000000000000000000000000000000000000000000000000000000001f", - "0x0000000000000000000000000000000000000000000000000000000000000020", - "0x0000000000000000000000000000000000000000000000000000000000000021", - "0x0000000000000000000000000000000000000000000000000000000000000022", - "0x0000000000000000000000000000000000000000000000000000000000000023", - "0x0000000000000000000000000000000000000000000000000000000000000024", - "0x0000000000000000000000000000000000000000000000000000000000000025", - "0x0000000000000000000000000000000000000000000000000000000000000026", - "0x0000000000000000000000000000000000000000000000000000000000000027", - "0x0000000000000000000000000000000000000000000000000000000000000028", - "0x0000000000000000000000000000000000000000000000000000000000000029", - "0x000000000000000000000000000000000000000000000000000000000000002a", - "0x000000000000000000000000000000000000000000000000000000000000002b", - "0x000000000000000000000000000000000000000000000000000000000000002c", - "0x000000000000000000000000000000000000000000000000000000000000002d", - "0x000000000000000000000000000000000000000000000000000000000000002e", - "0x00000000000000000000000000000058ec08b377c45ba48ec9f25cfb71d78fba", - "0x00000000000000000000000000000000002f4bcf82a13184a02a1cf3b3eedb0c", - "0x00000000000000000000000000000031706b6e7231f1f2cef9171a488d9348f9", - "0x00000000000000000000000000000000002a26e95922fdcaa2e18e18588952f7", - "0x00000000000000000000000000000023ef5a193ef6ff15daa847d3dc6bc23528", - "0x000000000000000000000000000000000004ca95831b15fa0207ad4d0dcf83cb", - "0x000000000000000000000000000000cc7f055a6353a8139a2d1dd2566d44344c", - "0x00000000000000000000000000000000000746c7b005109f28af4618706f7789", - "0x0000000000000000000000000000002b8efb6e26cd5a1b6382c8f1ce2fb6e8f3", - "0x00000000000000000000000000000000000ef4b5340cdb537a2081fc9e8cb038", - "0x0000000000000000000000000000009aca6ecc0720c591c33b420b581d0289fc", - "0x000000000000000000000000000000000026e6b25191b6ff6bf9097fb76972ae", - "0x000000000000000000000000000000ab4c183727df7d34b54c06e2b262681f6a", - "0x000000000000000000000000000000000008925775ec79059f10cfed1b7c183e", - "0x000000000000000000000000000000b1cb06814a853bf302f338fb567f7adbfc", - "0x000000000000000000000000000000000019ce171f9e13f79b425f8d64cb9037", - "0x000000000000000000000000000000a3d5c2d7b893af8a8c0a02bac6581e7fb4", - "0x00000000000000000000000000000000000b3bbf81b669db7302b77ea43fd79a", - "0x000000000000000000000000000000591b25d05490ed50e4b27f58d19c5403f4", - "0x00000000000000000000000000000000001ee066b67024925ec90a5a842a39fd", - "0x0000000000000000000000000000007d518679c19ea04e4b7e8d33e1a7e238c1", - "0x000000000000000000000000000000000010c58ffe84e59601b7f288df91e367", - "0x0000000000000000000000000000003c280234fc9fb27cad799dcd9ba4329805", - "0x0000000000000000000000000000000000303289d37a08932af35609261c2c81", - "0x0000000000000000000000000000008be3eaf23ce7ca4b4f8722ce0dc2234737", - "0x000000000000000000000000000000000005c02b35d4247bc402903081315d1e", - "0x000000000000000000000000000000fd11acb6e9762024de6e26f1a4a53e7aa4", - "0x00000000000000000000000000000000000e213dfddc5048687609107a59105e", - "0x000000000000000000000000000000cda5a24a528f13ab2a6fba0f370e318b2d", - "0x00000000000000000000000000000000001570b421478cd9128848c64088942e", - "0x000000000000000000000000000000813999cc71e3df115832c272206a89e968", - "0x000000000000000000000000000000000004b1340bee347f58d1e3cca66f5891", - "0x000000000000000000000000000000db5a3841b518839fe037b7e08f674265a7", - "0x00000000000000000000000000000000002d0f9c50181b9f57b107b53b34f9c3", - "0x000000000000000000000000000000506d1f3cd50950dbedfa959df9439476c6", - "0x000000000000000000000000000000000014b7183479b5a6080387d02424aaed", - "0x0000000000000000000000000000009fa64663c21bf883f2cc74c81da0ee5ef0", - "0x00000000000000000000000000000000000150bcdf0ea686e3bea5d0fbf5ffbe", - "0x00000000000000000000000000000058d2ed5068690766d7117a11e135fb8d78", - "0x00000000000000000000000000000000000f2ff6f6da8d4049777df111e52c2e", - "0x0000000000000000000000000000009bb6deaaa588f03ac983fcb5758c3b2216", - "0x000000000000000000000000000000000003ca20932337b2577cd016a850dd7f", - "0x000000000000000000000000000000769c6e7a23a6d475eb28b45a64e4a61bd0", - "0x00000000000000000000000000000000001208f6ea3c172944f81ddf2b3404ef", - "0x000000000000000000000000000000fb047d38922df5bc6cf920b1a26901a8f6", - "0x00000000000000000000000000000000000ca39c89aa04be129dac259c7a7482", - "0x000000000000000000000000000000526a3404633aba30476727f1f02cac86dd", - "0x000000000000000000000000000000000014ec206cff8d053e97c71cf54555ab", - "0x0000000000000000000000000000002959e459c91aa8b7368fc04104f7fa9a60", - "0x00000000000000000000000000000000001d1003fbdf4296358c6daaba647341", - "0x000000000000000000000000000000700d6dc1e94e1d67cdb0a2ada09fd7a4f2", - "0x00000000000000000000000000000000002ccfcad5481df26556499fbe57bf78", - "0x00000000000000000000000000000074171e5f4cee3c9b7398bca1b0d4be7818", - "0x0000000000000000000000000000000000064cee26af6bb7424f732fa226f876", - "0x0000000000000000000000000000005138dfbcc7d9193c62b7f6a8a331fb0c73", - "0x00000000000000000000000000000000002584a9801e2afe777c40f3f91534f2", - "0x000000000000000000000000000000ead025ebcad6c661ec10018c7ef4219906", - "0x000000000000000000000000000000000007e7ecae3969903691bc9a1c9b72d4", - "0x000000000000000000000000000000142086fa4bf466ae837ca6e3d3270240e5", - "0x000000000000000000000000000000000012f65ed819a3d4a224fd0bfbff5a6b", - "0x000000000000000000000000000000f2cbae4d23e4ea8817442cf7d52291d85a", - "0x000000000000000000000000000000000019d6456eb79a6254f89b41dd568820", - "0x000000000000000000000000000000cd090fed27499280c5f7b1343f2a28280e", - "0x000000000000000000000000000000000009375039c88dc8a163e8213a0e65e2", - "0x00000000000000000000000000000008eb74b481ab9e2a28371c562937adafae", - "0x0000000000000000000000000000000000226d4b8cc796aa4bce512554640a19", - "0x0000000000000000000000000000002d51c7b4bf8ba7022c0fb979db6ec5f9e2", - "0x00000000000000000000000000000000002c5e75d5ddbb6649e4dd0b29707ed8", - "0x000000000000000000000000000000123e40db7e97cea79a814077e812a6c81c", - "0x00000000000000000000000000000000001ff92a960934ae98bff0c82652725d", - "0x00000000000000000000000000000046f3e0d6ad9352960e4563c76bab466094", - "0x0000000000000000000000000000000000070c369bed233a801e38f763bd5405", - "0x0000000000000000000000000000006d2346a48c5b60a598e3256b2b61e0ce3c", - "0x00000000000000000000000000000000000e9ab1c6330cf61840f3c1ef6ae042", - "0x000000000000000000000000000000ed3afe2c1e708dde0bdd088172f878605d", - "0x00000000000000000000000000000000001b77975ea717f0f048ffd4c62bd215", - "0x000000000000000000000000000000d0cb10ebbeaded48919d4f7850ef238d0e", - "0x00000000000000000000000000000000000b823192c4c76a2702013e386a7271", - "0x00000000000000000000000000000066ad11d88307111457d60c1ccd850ff7cb", - "0x00000000000000000000000000000000001ac8658d70716f82d062bfb443f631", - "0x0000000000000000000000000000000a8c95e6d43bbca25b774fd6e8a355a5cd", - "0x000000000000000000000000000000000011d28f26150e8443ea37efb93d3ae6", - "0x00000000000000000000000000000023e2d340c1be3c0d4b6c60acb1f2edd621", - "0x00000000000000000000000000000000002cdcb34fd02187f6ff7c5cd4ff2ec8", - "0x000000000000000000000000000000e2c0aece308c77ebaa0c3ce5f894704744", - "0x00000000000000000000000000000000002d9f645b8da4dcaea6be70f0e5f4ed", - "0x0000000000000000000000000000001dbd3c6d90adcae5f392735e5c1af75486", - "0x000000000000000000000000000000000023cc4b8ae47f1c7dece6aeae31cca9", - "0x0000000000000000000000000000003bc4ab48dc91bdf2962e75b69c804d138d", - "0x00000000000000000000000000000000000f80a6e0bfd175213baaa733e53587", - "0x000000000000000000000000000000f40df2cedbdc30de272e36414fee08e932", - "0x0000000000000000000000000000000000037cf8650721cb127c6609d69a7638", - "0x000000000000000000000000000000383c3d186d640833e9f76ef047574a951b", - "0x000000000000000000000000000000000019c07a81e5910275443d9f94d80141", - "0x0000000000000000000000000000004b9a3c2496956e735bdad6f679edec721e", - "0x00000000000000000000000000000000002ddeab336e52d19e9d30ed497ffbb8", - "0x000000000000000000000000000000f97eae21a954b6f28b40d07f10fdca5cec", - "0x00000000000000000000000000000000001e47a419f14cc1b89ec4001d0c6b00", - "0x0000000000000000000000000000000d4d1cc96bd3d34514c4b37933db648e03", - "0x000000000000000000000000000000000023829d822ed876ea3e9b6eb16c0714", + "0x0000000000000000000000000000000000000000000000000000000000000034", + "0x0000000000000000000000000000000000000000000000000000000000000035", + "0x0000000000000000000000000000000000000000000000000000000000000036", + "0x0000000000000000000000000000000000000000000000000000000000000037", + "0x0000000000000000000000000000000000000000000000000000000000000038", + "0x0000000000000000000000000000000000000000000000000000000000000039", + "0x000000000000000000000000000000000000000000000000000000000000003a", + "0x000000000000000000000000000000000000000000000000000000000000003b", + "0x000000000000000000000000000000000000000000000000000000000000003c", + "0x000000000000000000000000000000000000000000000000000000000000003d", + "0x000000000000000000000000000000000000000000000000000000000000003e", + "0x000000000000000000000000000000000000000000000000000000000000003f", + "0x0000000000000000000000000000000000000000000000000000000000000040", + "0x0000000000000000000000000000000000000000000000000000000000000041", + "0x0000000000000000000000000000000000000000000000000000000000000042", + "0x0000000000000000000000000000000000000000000000000000000000000043", + "0x000000000000000000000000000000222d2b638470648efe806272902759bfe4", + "0x000000000000000000000000000000000026717cb116c9f379f6053d43ed7131", + "0x000000000000000000000000000000d72dc52e13931348a07d4d75dbdef7b696", + "0x000000000000000000000000000000000007a17849605cd5acdf47218d8ff6ab", + "0x0000000000000000000000000000000ead8b79c9d9733b45796b315aed219c46", + "0x000000000000000000000000000000000001520cbd65e9f9c12d2d804e5408a8", + "0x000000000000000000000000000000d4fd951f0c8b3f5c93c914a9ca3e3ad82b", + "0x00000000000000000000000000000000000c06cda5de6eb85a2dc3a3e461edf4", + "0x0000000000000000000000000000008fda111b457d9cbb2c2140e6e29baaa93d", + "0x000000000000000000000000000000000019250c98c82093236c18a9efa7bbcb", + "0x000000000000000000000000000000809dff0c74860533c531966cefa5e6b82f", + "0x0000000000000000000000000000000000096b5c6f4eb1c8d72e0812cabe6b20", + "0x0000000000000000000000000000002b40eba3c1a07bab631194a295de31fa39", + "0x00000000000000000000000000000000000053902748ef91505fca0d1db29c64", + "0x000000000000000000000000000000aa3b1b8cf6fbc5c81dc722111d10e6940b", + "0x0000000000000000000000000000000000206cb99da8d346b786537ed3b15446", + "0x0000000000000000000000000000001271113c751d045274a3317a01895808c9", + "0x00000000000000000000000000000000000ae017203dd40d764ddbaa912b9d03", + "0x000000000000000000000000000000f46fc3542fcfee505d2e9eacb7f397bb36", + "0x00000000000000000000000000000000002e5a0e507a80a266a9e62a94a7bb97", + "0x000000000000000000000000000000b44304dbc2fc1d02d3d903d01d29e76efb", + "0x00000000000000000000000000000000000fb528b629b4fbbf48fddeca9f54de", + "0x000000000000000000000000000000ffa188c0ab2f8df7c201783dc282a782cd", + "0x00000000000000000000000000000000000edbbec3674d50e52b6e83867b3007", + "0x00000000000000000000000000000058ea22bca57bfe9a1c46ce63c2c240901f", + "0x000000000000000000000000000000000028cce7cf665942fee68c3ffd344c71", + "0x000000000000000000000000000000bbda5287b41d69b0a203243ebb2d861d58", + "0x0000000000000000000000000000000000136b53ea88a30b784ec14018041c4e", + "0x0000000000000000000000000000004702b68f21e97f4ec2533229bdb2172de3", + "0x00000000000000000000000000000000002c307c0f773885110a0d7188d22899", + "0x000000000000000000000000000000ccfc8d16713b3ac84c531b3a09b57a5632", + "0x000000000000000000000000000000000018177fc15055bc6ded75133159116e", + "0x000000000000000000000000000000bf31ddaed25f6a3812d47d47eb1003c336", + "0x000000000000000000000000000000000030301fd8ac21f9dd93ae4de2223f3a", + "0x000000000000000000000000000000d8b510b22cee8d476c3ae3a5a643c12fcd", + "0x00000000000000000000000000000000001ed2d09f2ac6322b815bc0e35be630", + "0x0000000000000000000000000000005c2e45d0fa6b1156c250a016a8d6025717", + "0x0000000000000000000000000000000000116ef26a99b319f7ddf9a72b920d7e", + "0x000000000000000000000000000000887bef3a2f390f75c5c1c7d2804839dc40", + "0x0000000000000000000000000000000000241d35489e5ec7ae0ec539a511f4bb", + "0x0000000000000000000000000000001e9eed55f46c30f0a643e7fadc0f1c5b5f", + "0x00000000000000000000000000000000002d224bdb537e45356dad6719a44670", + "0x000000000000000000000000000000905b34d9aeffbef40ad032415b3b0e66bd", + "0x0000000000000000000000000000000000147a5bb3c75194935a583029501d7c", + "0x0000000000000000000000000000001a183288e3ecb3c21f96eb8e6c8fa774db", + "0x00000000000000000000000000000000001ef984af2d88e47be0e9664b8fd752", + "0x00000000000000000000000000000039f3dad17da7386018cab36996698755d5", + "0x00000000000000000000000000000000001561ce1450ac8840dbcf97e91bd5b6", + "0x000000000000000000000000000000f1b27c35585e11cbbf5612de0413672d01", + "0x0000000000000000000000000000000000012046c089f10f8c8c82265e2d6825", + "0x000000000000000000000000000000a2b89785fa94123ec142277619e45360fd", + "0x0000000000000000000000000000000000159d0140b54b1703d4f4ebdd75d849", + "0x000000000000000000000000000000539cb47199bd3c2245bc3044a89cf91958", + "0x0000000000000000000000000000000000096f804be4f55c1c25b387dc128f12", + "0x0000000000000000000000000000000d6ea4f662ce5d29fe8d5c30e717ed3f45", + "0x00000000000000000000000000000000000505aeb30b5f6acb1c0e335e27c510", + "0x0000000000000000000000000000003bafc94403ed6cbde5cd3bcd4b14d6c0fa", + "0x00000000000000000000000000000000001ad585be43d722b6a37d8b3832a770", + "0x000000000000000000000000000000d0ecec90f37a38b0b770d04148856f191a", + "0x0000000000000000000000000000000000195175c4eceb80ac5b567c05686b6a", + "0x00000000000000000000000000000018d09a6452cffee1251ce810df1987c3fe", + "0x000000000000000000000000000000000018a58c0116caf02d8187113b216b50", + "0x000000000000000000000000000000786c72f5cb45e0b2ef50d429284962d8f2", + "0x00000000000000000000000000000000001edecd8d2daf475aea627cddc4bf83", + "0x000000000000000000000000000000f11f76923fbc94bb9da677ef4ea48d8e5d", + "0x000000000000000000000000000000000009e363fd3b9fba1921f8a620453c8b", + "0x000000000000000000000000000000130337f88d1a3501deb7548bf12f3bf8c7", + "0x00000000000000000000000000000000001caf1ae2f1b7c284d4fa064660e2d4", + "0x0000000000000000000000000000001f3243dcfe519ae43f5fda7c4e071489ec", + "0x000000000000000000000000000000000028ddb68ba85ec82fbe2c3d13f3f4f3", + "0x000000000000000000000000000000b8d7efb798a996ad6f6cc79bbb2c23e051", + "0x000000000000000000000000000000000014064ac87a8676a6c0701105a76924", + "0x000000000000000000000000000000c4f5d6ec595af7e188571eb533255210bb", + "0x00000000000000000000000000000000000b751e85d1d0a4d12321b8f3001d93", + "0x00000000000000000000000000000053c44079c3fbeb350e7347576b96a518a2", + "0x00000000000000000000000000000000002cf5eeea78f9cc5b1c698613d5a0ac", + "0x0000000000000000000000000000006ebb8205fddf556a03c81473e3d7f128da", + "0x000000000000000000000000000000000005e04349dee59bf22cab15fbcf6579", + "0x000000000000000000000000000000119e7803dc1f0d42d610c1e636b763e84a", + "0x0000000000000000000000000000000000150cdd897a47b83debe2a86b41df03", + "0x000000000000000000000000000000b2627cae7ef76e48877e5f65dda01de6fa", + "0x00000000000000000000000000000000002df31114d6ea625d30f40fcd6501ae", + "0x000000000000000000000000000000d9ff339dabc896850436795e686c8b7892", + "0x0000000000000000000000000000000000045d737d25201a48aabff3f6bca6b3", + "0x000000000000000000000000000000de93c07b11d2e6fa6550a3cefb321e16d7", + "0x00000000000000000000000000000000001752e736d3439003c65c42a97c0f09", + "0x0000000000000000000000000000009365c7dc3d4484e835a8c4cd523db7cb52", + "0x000000000000000000000000000000000004bd96b70a7ceca6e250998dd29d04", + "0x000000000000000000000000000000383c0eef46c0b99e9af36ae88ed755eab8", + "0x000000000000000000000000000000000017750cb080368dc310dba9dc7b1627", + "0x000000000000000000000000000000ce7ee23afcb014b28d8ad4a8ca1576f27c", + "0x000000000000000000000000000000000029e9346b8314cc77921b3d989c68a0", + "0x0000000000000000000000000000009c8ee8e93120da7baa9e1aa23de4ebf086", + "0x00000000000000000000000000000000002d2475bbb16b1577d3933a25e17410", + "0x0000000000000000000000000000001c775e636250539aa55b35901031d8a234", + "0x000000000000000000000000000000000027a3acd1183085d9619ddfb13ce036", + "0x000000000000000000000000000000258cb84ffd27a5cb5a91a096c098cbcd14", + "0x00000000000000000000000000000000000cc296cc5967bc2eca88c4b55ec976", + "0x0000000000000000000000000000007b6f66567f2710b238fadf1e211206376b", + "0x00000000000000000000000000000000001c58cff4dbc4ad672c2b263cc7b065", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000005bbcea26b167261fea54d0be02a3043d9e", - "0x00000000000000000000000000000000002dc5b922ece29ac830c9294d5f1728", - "0x00000000000000000000000000000099c027ac44681d095efed2cca1d43ed001", - "0x0000000000000000000000000000000000073799e2a09bb8c32fd891288c00a7" + "0x000000000000000000000000000000a653c3ebcdb2ec03f5bededc1780032446", + "0x0000000000000000000000000000000000143112234ac9aa9f7ef289152fccda", + "0x00000000000000000000000000000073d1f6ce5b511d1a45307e35b4e146876d", + "0x00000000000000000000000000000000002ca743c017d5c16d5953d03410d5a5" ] -hash = "0x299b192491e94c05248e76e1d3c86618d5aecacaa6bd0dcbb0c13e2aa8aa1ac0" +hash = "0x03cde467306e7d05bcd957b9dde81fdb644d6a7e21d7857bc1bf647f78bfde83" [inputs.previous_rollup_data.vk_witness] leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" sibling_path = [ - "0x223bbdb2bb9d1f509352b9a309c1de4f5edd4ba1808b2531f1d62240ff620022", + "0x1f07a2890c9deb79fe6cc78935c6dfa810ee56922785f37307cb463f7797f73e", "0x19861a044ec84aaf6e41d02a20051d349f07206356e10a0846d4fa892534e306", - "0x03e1060f8526313167802152f0c203b5a67428ee85deba69b04d6fbfb5394866", - "0x043018912588f9874fea852ab854ccaa9b13b8c1b201b55eda7a2fbdd1224ae0", - "0x022f5ac8ff86489f5492d016d0ac69cd39e93b518da3f5a15a8c3177b92bc008", + "0x236d849434a03c2e9d181e5365fe087cb14fd703bff61e5676bfa24c4f4509b7", + "0x268b4fb54bbdda64dd707ee86cb0729dfb9a9e8b6ae83e973b37bc7e4b18f875", + "0x1967335d7b185023afd52d8f7f40be4ced0d80ba63d4dce2de3e26bfe772e394", "0x122cddd247164987e2287f8ce124bea7a68052e85bffebe2fc6cd71718689069" ] [inputs.l1_to_l2_roots] vk_path = [ "0x161b493a1213baf6622d929c1fc116cc43fe1814a596e068cead7d06be55329d", - "0x1021275985b5d48b2169878dd04cecdf18e7d81d2df3e4f198cfaad1b1c6d828", - "0x03e1060f8526313167802152f0c203b5a67428ee85deba69b04d6fbfb5394866", - "0x043018912588f9874fea852ab854ccaa9b13b8c1b201b55eda7a2fbdd1224ae0", - "0x022f5ac8ff86489f5492d016d0ac69cd39e93b518da3f5a15a8c3177b92bc008", + "0x0339cf04d96013da57fbdde5b8fc0ef4715a16f28de5d42966ffd1394729cd51", + "0x236d849434a03c2e9d181e5365fe087cb14fd703bff61e5676bfa24c4f4509b7", + "0x268b4fb54bbdda64dd707ee86cb0729dfb9a9e8b6ae83e973b37bc7e4b18f875", + "0x1967335d7b185023afd52d8f7f40be4ced0d80ba63d4dce2de3e26bfe772e394", "0x122cddd247164987e2287f8ce124bea7a68052e85bffebe2fc6cd71718689069" ] @@ -2039,12 +14404,30 @@ sibling_path = [ [inputs.l1_to_l2_roots.public_inputs] sha_root = "0x00089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c" converted_root = "0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e" - vk_tree_root = "0x0a118eae659eb1671e3f579a83c4ad3688cee1b9f23dcec48af4d3f3a2de1733" + vk_tree_root = "0x0bee8f04d48c18c88f2b9dd3b87daba3b3c8d000f44d290587504ae770942c56" [inputs.start_l1_to_l2_message_tree_snapshot] root = "0x2e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d6" - next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000090" + next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000070" [inputs.start_archive_snapshot] - root = "0x25c8c19c00ade5d9ee2e42a0b6ba0487a228c008c9216227b3cfe6483cc8c274" - next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000a" + root = "0x04b51aa5df89d177213335ca62dee74d15b920e231f5ea5198ed405967d188fd" + next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" + + [[inputs.blob_commitments]] + inner = [ + "0x00aae0654b3ba2a2f1e2fa2c7d23b35ab21cfba67951dcf917925cc2325eb866", + "0x0000000000000000000000000000001eea78b1856d5770ee11f410332f1be2af" +] + + [[inputs.blob_commitments]] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.blob_commitments]] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-merge/Prover.toml b/noir-projects/noir-protocol-circuits/crates/rollup-merge/Prover.toml index 9b02aa7488c..a405158a2df 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-merge/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/rollup-merge/Prover.toml @@ -2,59 +2,96 @@ [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs] rollup_type = "0x0000000000000000000000000000000000000000000000000000000000000000" num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" -txs_effects_hash = "0x00bb7e63ca709fd2ef9ef79a84683fcf8d54b9deedcb234151723e1b7cf95c37" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" -accumulated_fees = "0x000000000000000000000000000000000000000000000000000788fa45e1ed60" -accumulated_mana_used = "0x00000000000000000000000000000000000000000000000000000000000098fd" +accumulated_fees = "0x0000000000000000000000000000000000000000000000000007a1b1bce60cc8" +accumulated_mana_used = "0x0000000000000000000000000000000000000000000000000000000000009af2" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants] - vk_tree_root = "0x0a118eae659eb1671e3f579a83c4ad3688cee1b9f23dcec48af4d3f3a2de1733" - protocol_contract_tree_root = "0x296690a67333fb896eff0ef812d31f9be26161726e47057bb688ddcf08164453" + vk_tree_root = "0x257719447a2c71ab94f300207f5a8096a1b8c9f15a614e409d7d48f95c6bdff9" + protocol_contract_tree_root = "0x1c4e64cbb91a46bc2fd73590e1dacd3ddf84d1b5e7a7182795ab02fe80399caf" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.last_archive] - root = "0x25c8c19c00ade5d9ee2e42a0b6ba0487a228c008c9216227b3cfe6483cc8c274" - next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000a" + root = "0x22697e2f4dca9f7c06b64c9a987d5e3411f2f28786d9f1d48ce27b61b8d8abe3" + next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000007" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" version = "0x0000000000000000000000000000000000000000000000000000000000000001" - block_number = "0x000000000000000000000000000000000000000000000000000000000000000a" - slot_number = "0x0000000000000000000000000000000000000000000000000000000000000024" - timestamp = "0x00000000000000000000000000000000000000000000000000000000675b06b2" + block_number = "0x0000000000000000000000000000000000000000000000000000000000000007" + slot_number = "0x0000000000000000000000000000000000000000000000000000000000000014" + timestamp = "0x00000000000000000000000000000000000000000000000000000000675c2d53" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.coinbase] - inner = "0x000000000000000000000000dde7ef1ed87eb5cbb0562efd27c3ad9eda8c800a" + inner = "0x000000000000000000000000b5b0e9c243b20a09c501dee16790e9dfc23506bc" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd150e0" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9be2b484" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.note_hash_tree] -root = "0x05cfddd64cd8186419dffde2648072f03e8e03b09f357ea09d6459d77a6ce474" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000480" +root = "0x2b93be1d42d6277477a71a288ca7f05209d7edefdde05a5fc7e424d8ba4882a7" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000300" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.nullifier_tree] -root = "0x2eaed0d2778fab648d143f4a309b323cef0f1e32e63a36b6f3c3620a1d89281e" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000500" +root = "0x26f5b03416869c68bccb4bbf106ec858d6a3e822527bc8c48fdd6ba7cfd884ec" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000380" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.public_data_tree] -root = "0x066ae819431599f4cfc5d66ecf7be666683baaba66da8d5e4b1d9d0c5004c505" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000097" +root = "0x2da9b69e8a02d9a3b9372d63f6eb07578d3a901d7d9bb5eed7e0723edbe02da1" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000096" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.note_hash_tree] -root = "0x05cfddd64cd8186419dffde2648072f03e8e03b09f357ea09d6459d77a6ce474" -next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000004c0" +root = "0x2b93be1d42d6277477a71a288ca7f05209d7edefdde05a5fc7e424d8ba4882a7" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000340" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.nullifier_tree] -root = "0x0767eded84fac9cfc5e5368549dc35085a3e5a4652a82b59d9e2d315f6046407" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000540" +root = "0x24ede285714e37dbc99f53093e640034e671b219229c72f354bf78f409f9f383" +next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000003c0" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.public_data_tree] -root = "0x066ae819431599f4cfc5d66ecf7be666683baaba66da8d5e4b1d9d0c5004c505" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000097" +root = "0x2da9b69e8a02d9a3b9372d63f6eb07578d3a901d7d9bb5eed7e0723edbe02da1" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000096" + + [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start_sponge_blob] + fields = "0x0000000000000000000000000000000000000000000000000000000000000000" + expected_fields = "0x000000000000000000000000000000000000000000000000000000000000004f" + + [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start_sponge_blob.sponge] + cache = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + state = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x00000000000000000000000000000000000000000000004f0000000000000000" +] + cache_size = "0x0000000000000000000000000000000000000000000000000000000000000000" + squeeze_mode = false + + [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end_sponge_blob] + fields = "0x0000000000000000000000000000000000000000000000000000000000000007" + expected_fields = "0x000000000000000000000000000000000000000000000000000000000000004f" + + [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end_sponge_blob.sponge] + cache = [ + "0x12e7b967d4eedec7cbc843b52b7413174df59b4d212a07cd5137bfb5914e9387", + "0x0000000000000000000000000000000000000000000000000000000006000002", + "0x02f71e7f13a0520af9e75ee37b71703ace10b7df98538c8384614743dc310151" +] + state = [ + "0x0212f33afeb25b4d2de9e2d9a2d20e3c8995c949b22f3e6f5d2839c84a236d6f", + "0x23c128d8c6faf52fbd5408e415baad147807a63384a20e0b177d8ebc8d1bb0f4", + "0x165d09f061a90bac1945fde4922ec437a8a7a21138819bcb78c0079297bece5f", + "0x0ba3a0bbbc38b7389727f6bce882b3c584b85ce4830bb22c3068eb02e28ab0ab" +] + cache_size = "0x0000000000000000000000000000000000000000000000000000000000000001" + squeeze_mode = false [inputs.previous_rollup_data.proof] fields = [ @@ -525,145 +562,145 @@ fields = [ [inputs.previous_rollup_data.vk] key = [ - "0x0000000000000000000000000000000000000000000000000000000001000000", - "0x000000000000000000000000000000000000000000000000000000000000002f", + "0x0000000000000000000000000000000000000000000000000000000002000000", + "0x0000000000000000000000000000000000000000000000000000000000000044", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x000000000000000000000000000000000000000000000000000000000000001f", - "0x0000000000000000000000000000000000000000000000000000000000000020", - "0x0000000000000000000000000000000000000000000000000000000000000021", - "0x0000000000000000000000000000000000000000000000000000000000000022", - "0x0000000000000000000000000000000000000000000000000000000000000023", - "0x0000000000000000000000000000000000000000000000000000000000000024", - "0x0000000000000000000000000000000000000000000000000000000000000025", - "0x0000000000000000000000000000000000000000000000000000000000000026", - "0x0000000000000000000000000000000000000000000000000000000000000027", - "0x0000000000000000000000000000000000000000000000000000000000000028", - "0x0000000000000000000000000000000000000000000000000000000000000029", - "0x000000000000000000000000000000000000000000000000000000000000002a", - "0x000000000000000000000000000000000000000000000000000000000000002b", - "0x000000000000000000000000000000000000000000000000000000000000002c", - "0x000000000000000000000000000000000000000000000000000000000000002d", - "0x000000000000000000000000000000000000000000000000000000000000002e", - "0x00000000000000000000000000000083f105d263693d959f465d577afde3e241", - "0x0000000000000000000000000000000000186aab73e6a6c1c1ddaa602ab8ba41", - "0x0000000000000000000000000000004f5009e76e681e827783f89feeab0f4f38", - "0x000000000000000000000000000000000012f1622c70b18614746b2af97418c3", - "0x0000000000000000000000000000004036f1577f0e264b6dd0bbc94b606a4284", - "0x000000000000000000000000000000000023b936c261305c9888ed4a54fcf392", - "0x000000000000000000000000000000c7121709d2983258a0468f82ff6a712766", - "0x00000000000000000000000000000000001eb29d9f01519896a78cc8d520c2e1", - "0x00000000000000000000000000000064c4e37642c930816d0d27b8f7499aa95f", - "0x00000000000000000000000000000000002bd72570325193956fbe793d39790d", - "0x000000000000000000000000000000ffeece4e1c9ae08fb5c2e1fb0885661ebb", - "0x000000000000000000000000000000000007e021557b16e493f848a50b82a690", - "0x00000000000000000000000000000023f9d53ff68a92dce4be03b7b90188bf7e", - "0x000000000000000000000000000000000012a11b23d00399517120fb7b2f4d74", - "0x000000000000000000000000000000049bbacffa3c2f83db0386b762139b15c6", - "0x00000000000000000000000000000000001077134df0014bdcfd303c49cfb3b2", - "0x0000000000000000000000000000003907a06b2d7ed38d97af6aab631cf5c216", - "0x00000000000000000000000000000000002b1675ce865ca3aef4d79da5e3d75f", - "0x000000000000000000000000000000f1be5335d9fc52555545754607d79e7e76", - "0x0000000000000000000000000000000000300a823055bd1b2a7895989cb91ae0", - "0x0000000000000000000000000000003869c9e8e0ab558c4ee722ac4737634543", - "0x00000000000000000000000000000000000e895c2fd009e1bf04a69e19bad5b0", - "0x0000000000000000000000000000003090308f6a4ac2dff8bdcb80ff203c9158", - "0x00000000000000000000000000000000001399681108d2316780a7b407b6dbc7", - "0x00000000000000000000000000000049b407643f80d9b31c1f2f2dcc099c4606", - "0x000000000000000000000000000000000002c5a451b2c2118b7ce510976ea543", - "0x000000000000000000000000000000159d3e33dbc32898f038a861dd3b87cfd8", - "0x000000000000000000000000000000000005217438ff1b3072b4bfea60d5189a", - "0x0000000000000000000000000000009022d610e583e74f37e612f7989c6993e1", - "0x000000000000000000000000000000000023b676af3093f940b07b9d3bf47e79", - "0x000000000000000000000000000000d43abc29cabff6162df3767124f54ab25d", - "0x00000000000000000000000000000000002b8bf715ac3a1174d21841efc41401", - "0x0000000000000000000000000000006a7a4e5727eedc1b6ab167ef99f26ae8d6", - "0x00000000000000000000000000000000000d169455bcd8815833fdced4dc689f", - "0x000000000000000000000000000000ffef33dde5b03977a18b37f6b2d884a382", - "0x00000000000000000000000000000000001a3f922fbc93ccff714edbf1a87af4", - "0x000000000000000000000000000000c693930ccb0e7122f9e961134cb44e728f", - "0x00000000000000000000000000000000001b68d917260647b8a09ad5da400ef6", - "0x0000000000000000000000000000007a6e6523820fa77cc1806496d23b0ea6d0", - "0x000000000000000000000000000000000018276ed72a3cb27c255ea622eb266c", - "0x000000000000000000000000000000989f1ede95d0c94aaabc55bc55bdb672be", - "0x000000000000000000000000000000000001a2ad141e9724b7bb6a2852830c8f", - "0x000000000000000000000000000000a0592e2990fa9b3f2ecc5e279e7da90dde", - "0x00000000000000000000000000000000001f6b98a86759a35f4e88018dd3a292", - "0x000000000000000000000000000000530e8d56910110cde046756101980444da", - "0x000000000000000000000000000000000000c18f8892a990cf12de7a893f8632", - "0x000000000000000000000000000000c3f12c80dd0ef51c31746d7bd541e1bc8d", - "0x000000000000000000000000000000000000280053da50be2c962303074a3cb2", - "0x000000000000000000000000000000dd00e37d8f707652bcaba8444acb20687a", - "0x00000000000000000000000000000000000bf8cdc44a398e3fa9c53b48a8788a", - "0x000000000000000000000000000000279047418e694306e2ee5a9302901040b9", - "0x00000000000000000000000000000000002e0405cc475fde29c4733e3adad557", - "0x0000000000000000000000000000001b68dacddf9d72adbb75dc7d15ca77ec00", - "0x0000000000000000000000000000000000120c1f216f66083e04582b5c7c1742", - "0x0000000000000000000000000000001809ad090eb2d9801d3676d9a3c5577dc9", - "0x000000000000000000000000000000000010e54ee59dce0a67a1ba2eb46c5ab9", - "0x000000000000000000000000000000162ed0badb460b92cc1261e1481e402163", - "0x0000000000000000000000000000000000021839ec7b765ffa1bfad5774238c8", - "0x000000000000000000000000000000e3223825e8a774caba8fcd773c36ec5539", - "0x00000000000000000000000000000000000cbd2ef8bcf01d03f3e759a0dbd085", - "0x00000000000000000000000000000022d75e8063b9f4451d7f21d87467d49649", - "0x000000000000000000000000000000000028e85b85d3acb0a14af02370313f90", - "0x0000000000000000000000000000003e4828093c7bc1be74a2267ed651ae163e", - "0x00000000000000000000000000000000000c207e4c4d40b2b38b38d9ef7656f1", - "0x000000000000000000000000000000be7af6b8071282c3b803d326f481450a59", - "0x00000000000000000000000000000000000c293a307bf84f157d14174d02eaa2", - "0x0000000000000000000000000000003623914be8bb928ec2f815c90f09165a27", - "0x000000000000000000000000000000000026c1fc2705a675708bab9f69a9faac", - "0x000000000000000000000000000000d0b3f4435c14f59ff058e31e79bfafa389", - "0x000000000000000000000000000000000004681dcb0c4797cfa3edab42091840", - "0x0000000000000000000000000000006591ad7d065f963ce12c6dfc1d0d2ce92f", - "0x000000000000000000000000000000000006636c8e94f7be39e14272ffccc343", - "0x00000000000000000000000000000078b2411d0f8878118d7133d72edc2534e7", - "0x00000000000000000000000000000000000b366d4942ec4a76cc3af583187eb0", - "0x00000000000000000000000000000010dfa542bdc4072c27dc1075bff39fc21c", - "0x00000000000000000000000000000000002f3e47fe83b12cfc9d35c49ed22de4", - "0x000000000000000000000000000000e9edb2c562e36397c624f09ebaee3d89a5", - "0x000000000000000000000000000000000009a38f4df3abf42fef1bc3c809049e", - "0x0000000000000000000000000000000a5eb99a1dd75d35f6568cdb66b368d3e5", - "0x000000000000000000000000000000000027ef5961db7a52c1214c21c7827661", - "0x000000000000000000000000000000b273d452dc547023ecad814fb0bda5d0b6", - "0x0000000000000000000000000000000000095fb932c37134e068387cc00c8f46", - "0x0000000000000000000000000000004d435aef40bb631c70b08bd32b2b6d44d5", - "0x00000000000000000000000000000000001d518c93340c8024c4db1020586a67", - "0x000000000000000000000000000000de93c07b11d2e6fa6550a3cefb321e16d7", - "0x00000000000000000000000000000000001752e736d3439003c65c42a97c0f09", - "0x0000000000000000000000000000009365c7dc3d4484e835a8c4cd523db7cb52", - "0x000000000000000000000000000000000004bd96b70a7ceca6e250998dd29d04", - "0x000000000000000000000000000000383c0eef46c0b99e9af36ae88ed755eab8", - "0x000000000000000000000000000000000017750cb080368dc310dba9dc7b1627", - "0x000000000000000000000000000000ce7ee23afcb014b28d8ad4a8ca1576f27c", - "0x000000000000000000000000000000000029e9346b8314cc77921b3d989c68a0", - "0x0000000000000000000000000000009c8ee8e93120da7baa9e1aa23de4ebf086", - "0x00000000000000000000000000000000002d2475bbb16b1577d3933a25e17410", - "0x0000000000000000000000000000001c775e636250539aa55b35901031d8a234", - "0x000000000000000000000000000000000027a3acd1183085d9619ddfb13ce036", - "0x000000000000000000000000000000258cb84ffd27a5cb5a91a096c098cbcd14", - "0x00000000000000000000000000000000000cc296cc5967bc2eca88c4b55ec976", - "0x0000000000000000000000000000007b6f66567f2710b238fadf1e211206376b", - "0x00000000000000000000000000000000001c58cff4dbc4ad672c2b263cc7b065", + "0x0000000000000000000000000000000000000000000000000000000000000034", + "0x0000000000000000000000000000000000000000000000000000000000000035", + "0x0000000000000000000000000000000000000000000000000000000000000036", + "0x0000000000000000000000000000000000000000000000000000000000000037", + "0x0000000000000000000000000000000000000000000000000000000000000038", + "0x0000000000000000000000000000000000000000000000000000000000000039", + "0x000000000000000000000000000000000000000000000000000000000000003a", + "0x000000000000000000000000000000000000000000000000000000000000003b", + "0x000000000000000000000000000000000000000000000000000000000000003c", + "0x000000000000000000000000000000000000000000000000000000000000003d", + "0x000000000000000000000000000000000000000000000000000000000000003e", + "0x000000000000000000000000000000000000000000000000000000000000003f", + "0x0000000000000000000000000000000000000000000000000000000000000040", + "0x0000000000000000000000000000000000000000000000000000000000000041", + "0x0000000000000000000000000000000000000000000000000000000000000042", + "0x0000000000000000000000000000000000000000000000000000000000000043", + "0x0000000000000000000000000000007acea76220f3dcf559941a7e87a6b28907", + "0x000000000000000000000000000000000017503e58c81a120517cdb8a4f99a55", + "0x00000000000000000000000000000030e0a46a7056ec5d122358957f34be6420", + "0x000000000000000000000000000000000019af3ba7be026356d5013338e6a9c8", + "0x000000000000000000000000000000941c8c03340dc6ac1ac21dfc245eec52ae", + "0x000000000000000000000000000000000028a50b16a95bfe8d5d5910fa14acf9", + "0x000000000000000000000000000000d750fd9b7a01bfd4e6553bf8ab2e513a06", + "0x000000000000000000000000000000000005cb7ef208180dc12701ec1bf16e6e", + "0x000000000000000000000000000000226a41a3cde055871146a14f69ceed3189", + "0x00000000000000000000000000000000001905f4d4e4516041c993103f21ed23", + "0x000000000000000000000000000000e1343257a50d0cf1554d5fa39b63807f82", + "0x000000000000000000000000000000000029c01e95b47fd55a3af50c144b0334", + "0x000000000000000000000000000000061cb8849db1149ba384d6eb537ec1d821", + "0x00000000000000000000000000000000001bd9e9b6b2864c7e76f8d6f987d224", + "0x000000000000000000000000000000fbd7c650b1b4c0ba0255b744ddd75e735c", + "0x000000000000000000000000000000000014ac90285cdead0ec12cad3d8d3a31", + "0x00000000000000000000000000000004bd04287093441c75d05b6cb594d378de", + "0x00000000000000000000000000000000001cfa05ce692088c27bb7e9a8a262c2", + "0x0000000000000000000000000000000943740754bb6d7f5fb55d5570754381c0", + "0x000000000000000000000000000000000006cfaa5c166143d59ab33b6f57b88c", + "0x000000000000000000000000000000c3f3c5edfca877fb6c14f7e913c178f044", + "0x00000000000000000000000000000000001def2c9873d161b5ffc87d4b9c60dc", + "0x0000000000000000000000000000002837ed4f4febbbe8635ac74a35ef13542d", + "0x00000000000000000000000000000000002e15fa9496d154e169360820b701f7", + "0x0000000000000000000000000000007f4ae2590c599ca3e076d8a504c9761169", + "0x000000000000000000000000000000000008d15a8f153ffea92236a73f8e00ec", + "0x0000000000000000000000000000009a5f9f5cc321cda5967ab3977408842a1b", + "0x00000000000000000000000000000000001aef0ad6d98239a10226c1e7a66701", + "0x00000000000000000000000000000013ed1c45df71665ea0553a8a92ef89b0ea", + "0x00000000000000000000000000000000001e6c3f8b5ee0db10934643cab5960c", + "0x000000000000000000000000000000e6fa0a76bfb524488e71aa8cba569d3273", + "0x00000000000000000000000000000000000e146846a27a9e994aa5eb95368e43", + "0x0000000000000000000000000000004722d45629beb72092ae034d7a116eea80", + "0x000000000000000000000000000000000011b3074e83b178395fdbf16779ecd4", + "0x000000000000000000000000000000a1560ad69fb0f87cbb68e2469c17405a88", + "0x000000000000000000000000000000000016664440497257aab435766cd8daa4", + "0x0000000000000000000000000000008c0e5d61ceae65541e501766f2133c9a05", + "0x00000000000000000000000000000000000348d59b536e2d9124401c032218d4", + "0x000000000000000000000000000000c3bec12bcd8c5519adc22cc13745a6a5ba", + "0x0000000000000000000000000000000000099b37362358ccfb574e08a5d589c5", + "0x0000000000000000000000000000001a7603f798b4001644ac6346536db682c3", + "0x0000000000000000000000000000000000294bc6e456c49353364126e7acfa5d", + "0x000000000000000000000000000000ab11980eb66b6674b9668c4bf810f2dbd8", + "0x00000000000000000000000000000000002a71b3517077a7e806ed8c7bd41fa5", + "0x0000000000000000000000000000005f94f02f427c74fe51265b2501485c6681", + "0x00000000000000000000000000000000001f6b4f952f28290b3907e9fd89a04d", + "0x0000000000000000000000000000000e0cb8cc77e8e0da284dfa81fb659ed69e", + "0x0000000000000000000000000000000000108d2a188563f05f8c03cc1a1478c1", + "0x0000000000000000000000000000001d68539ab56b251c9bdd606b72eae2fbe2", + "0x0000000000000000000000000000000000222d18f43c8767fbdc01e1149c5606", + "0x00000000000000000000000000000099b18017f081d6cde0fe1dba203d35f031", + "0x0000000000000000000000000000000000144df7fc0ec590f0ae163b2206b2a0", + "0x000000000000000000000000000000fe935114b354bc67d2668722921ebac6ba", + "0x0000000000000000000000000000000000075d80d0ccb2ebb8e503e0bc8830c2", + "0x0000000000000000000000000000003b90abab25d1cc86543ee6ff8bfb36a141", + "0x00000000000000000000000000000000002f2b5f13b32122f25179e756a5bfb6", + "0x000000000000000000000000000000897ab9f551efb564c420ec89c75f025c72", + "0x00000000000000000000000000000000001c0ea2c5e6ab8dbcb5c04b013def2b", + "0x000000000000000000000000000000a0075bff7fe7d309a4a62e4697e0910dee", + "0x00000000000000000000000000000000001dab25f9c69e46eea9ef77449361e4", + "0x00000000000000000000000000000099547f9d90555739ddb33d81f778b79663", + "0x000000000000000000000000000000000009900c88d768eb3db72dd478bde74a", + "0x000000000000000000000000000000d92c26c30401619e97a43b2187b1e133a2", + "0x00000000000000000000000000000000000f991e56504f78fa90c31cb1a39102", + "0x000000000000000000000000000000c2d41c0bbfbf46ba1250ac1c9e0fe538a7", + "0x00000000000000000000000000000000001a64c934662e4d7843869e10bcf0cc", + "0x00000000000000000000000000000060971ccd87ad954d4a3a53beb136a115e5", + "0x000000000000000000000000000000000010bd7c99936aad440199663e48b08c", + "0x0000000000000000000000000000002fdcaae4a7ea95151eaa408586b1860983", + "0x0000000000000000000000000000000000288a0ff0315966a7a54a4884071b87", + "0x0000000000000000000000000000002455cf89f168533af00a61b6cc5dff0b25", + "0x00000000000000000000000000000000002bd11c6ee070b426cbeab3ff2b61b9", + "0x000000000000000000000000000000253a264c658d6d8b3e4a96d1e60d4ddbcf", + "0x000000000000000000000000000000000019e1190a385281dc72fa0d1e6e3173", + "0x00000000000000000000000000000001ca9ee62603b8684b4435a11fbe81fe77", + "0x00000000000000000000000000000000000fb6c90cf416bdc5cad8fcc8c5b077", + "0x000000000000000000000000000000cbaabba02d5684703afd2db78a4f2a9440", + "0x000000000000000000000000000000000029ae159051a17e5ce8e48ac542d5fe", + "0x000000000000000000000000000000d3380d3fc8294269fb9db3fcc5a60a29ca", + "0x00000000000000000000000000000000002b6571e09ef0385e86a817eac71f02", + "0x000000000000000000000000000000dfbc5112ae66004756cc08168e703dbcdc", + "0x00000000000000000000000000000000000a1361207b6352bb3e47b8afdcdee4", + "0x000000000000000000000000000000e9d60c7571a644bd754d4bd8f89ce3f771", + "0x000000000000000000000000000000000025bcafa95e5c0470321ffae1ac1d1f", + "0x000000000000000000000000000000e3cb7b601f7eed6dca3e591857166b4d1c", + "0x0000000000000000000000000000000000125aad145d0dbafb8da2dc1b0700bc", + "0x0000000000000000000000000000007a67f2caa5046f4d1dfc3a63469566de81", + "0x000000000000000000000000000000000022a98cee0b4cc5268adc92e2229271", + "0x000000000000000000000000000000f7c7c14a69ad0052dced057951a74436f5", + "0x0000000000000000000000000000000000263b96899c9835ce217f54f6df4acd", + "0x0000000000000000000000000000006c8c4e747cb6085c5735b9c68f2db633ac", + "0x00000000000000000000000000000000001157b26152b34ab05419f38acc15da", + "0x00000000000000000000000000000054cf89815a06c242c5e433264079487fc0", + "0x0000000000000000000000000000000000049a97286033e7c6c80520a963c7a1", + "0x00000000000000000000000000000077cb47275a750777c993d845849365ae73", + "0x00000000000000000000000000000000001bef3fe6a136f8f3419040fb2fb9a8", + "0x000000000000000000000000000000cb5bdeb788a62ab7fefa163b44aa4fe480", + "0x000000000000000000000000000000000019c8da60322e5b15147bb67ee97c3c", + "0x0000000000000000000000000000001f35e0f8d62d480f37b4aa13b09005e059", + "0x00000000000000000000000000000000002eaf8692eeea251928fb9c16523574", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000000000b060d912f36c7a49fde3bf3558237bdb2a", - "0x0000000000000000000000000000000000249696c605a9974fa15fbec16160b2", - "0x0000000000000000000000000000004e934ad9d35a26b55d1a6e5a526f13a3f0", - "0x0000000000000000000000000000000000187a3909db9a17fe07a067c0f5b370" + "0x00000000000000000000000000000048e3a765d915435b20c18944c02674e924", + "0x000000000000000000000000000000000008468b14fb49e8f7fdd86769c0e96e", + "0x000000000000000000000000000000b79ddc3696c5d21245a4e6e20e566201f1", + "0x00000000000000000000000000000000002a3a1bf035af4b9fb6bf9c890d61ec" ] -hash = "0x223bbdb2bb9d1f509352b9a309c1de4f5edd4ba1808b2531f1d62240ff620022" +hash = "0x1f07a2890c9deb79fe6cc78935c6dfa810ee56922785f37307cb463f7797f73e" [inputs.previous_rollup_data.vk_witness] leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000009" sibling_path = [ - "0x299b192491e94c05248e76e1d3c86618d5aecacaa6bd0dcbb0c13e2aa8aa1ac0", + "0x03cde467306e7d05bcd957b9dde81fdb644d6a7e21d7857bc1bf647f78bfde83", "0x19861a044ec84aaf6e41d02a20051d349f07206356e10a0846d4fa892534e306", - "0x03e1060f8526313167802152f0c203b5a67428ee85deba69b04d6fbfb5394866", - "0x043018912588f9874fea852ab854ccaa9b13b8c1b201b55eda7a2fbdd1224ae0", - "0x022f5ac8ff86489f5492d016d0ac69cd39e93b518da3f5a15a8c3177b92bc008", + "0x236d849434a03c2e9d181e5365fe087cb14fd703bff61e5676bfa24c4f4509b7", + "0x019a340a354ef9114e2e61774efec255560cbbdd81448834fe6d764cae443a44", + "0x1967335d7b185023afd52d8f7f40be4ced0d80ba63d4dce2de3e26bfe772e394", "0x122cddd247164987e2287f8ce124bea7a68052e85bffebe2fc6cd71718689069" ] @@ -671,59 +708,96 @@ sibling_path = [ [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs] rollup_type = "0x0000000000000000000000000000000000000000000000000000000000000000" num_txs = "0x0000000000000000000000000000000000000000000000000000000000000001" -txs_effects_hash = "0x00a267596c207f98db09944b52d88e1357b162e1e353e5b373dfe945e164cfeb" out_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" -accumulated_fees = "0x00000000000000000000000000000000000000000000000000117815f5ec0920" -accumulated_mana_used = "0x00000000000000000000000000000000000000000000000000000000000162af" +accumulated_fees = "0x0000000000000000000000000000000000000000000000000003a83680db4900" +accumulated_mana_used = "0x0000000000000000000000000000000000000000000000000000000000004a40" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants] - vk_tree_root = "0x0a118eae659eb1671e3f579a83c4ad3688cee1b9f23dcec48af4d3f3a2de1733" - protocol_contract_tree_root = "0x296690a67333fb896eff0ef812d31f9be26161726e47057bb688ddcf08164453" + vk_tree_root = "0x257719447a2c71ab94f300207f5a8096a1b8c9f15a614e409d7d48f95c6bdff9" + protocol_contract_tree_root = "0x1c4e64cbb91a46bc2fd73590e1dacd3ddf84d1b5e7a7182795ab02fe80399caf" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.last_archive] - root = "0x25c8c19c00ade5d9ee2e42a0b6ba0487a228c008c9216227b3cfe6483cc8c274" - next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000a" + root = "0x22697e2f4dca9f7c06b64c9a987d5e3411f2f28786d9f1d48ce27b61b8d8abe3" + next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000007" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" version = "0x0000000000000000000000000000000000000000000000000000000000000001" - block_number = "0x000000000000000000000000000000000000000000000000000000000000000a" - slot_number = "0x0000000000000000000000000000000000000000000000000000000000000024" - timestamp = "0x00000000000000000000000000000000000000000000000000000000675b06b2" + block_number = "0x0000000000000000000000000000000000000000000000000000000000000007" + slot_number = "0x0000000000000000000000000000000000000000000000000000000000000014" + timestamp = "0x00000000000000000000000000000000000000000000000000000000675c2d53" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.coinbase] - inner = "0x000000000000000000000000dde7ef1ed87eb5cbb0562efd27c3ad9eda8c800a" + inner = "0x000000000000000000000000b5b0e9c243b20a09c501dee16790e9dfc23506bc" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.constants.global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd150e0" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9be2b484" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.note_hash_tree] -root = "0x05cfddd64cd8186419dffde2648072f03e8e03b09f357ea09d6459d77a6ce474" -next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000004c0" +root = "0x2b93be1d42d6277477a71a288ca7f05209d7edefdde05a5fc7e424d8ba4882a7" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000340" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.nullifier_tree] -root = "0x0767eded84fac9cfc5e5368549dc35085a3e5a4652a82b59d9e2d315f6046407" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000540" +root = "0x24ede285714e37dbc99f53093e640034e671b219229c72f354bf78f409f9f383" +next_available_leaf_index = "0x00000000000000000000000000000000000000000000000000000000000003c0" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start.public_data_tree] -root = "0x066ae819431599f4cfc5d66ecf7be666683baaba66da8d5e4b1d9d0c5004c505" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000097" +root = "0x2da9b69e8a02d9a3b9372d63f6eb07578d3a901d7d9bb5eed7e0723edbe02da1" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000096" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.note_hash_tree] -root = "0x05cfddd64cd8186419dffde2648072f03e8e03b09f357ea09d6459d77a6ce474" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000500" +root = "0x28083f11c306105343805c8c26a5e3d1c2c03714f4fb38d18661a9a1cd97fb44" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000380" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.nullifier_tree] -root = "0x012525b5182961169eeda08b1acc8a4ef16de30010dd848ec7df8112d3aaed09" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000580" +root = "0x2b4981e52a2918a8536adf5416354b20f0667537b35073f608c1f126cdf2556a" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000400" [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end.public_data_tree] -root = "0x0a1da5164b661cfe6ee6fb367dff660550d079aaa099c11d55c20c680ab56259" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000097" +root = "0x2da9b69e8a02d9a3b9372d63f6eb07578d3a901d7d9bb5eed7e0723edbe02da1" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000096" + + [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start_sponge_blob] + fields = "0x0000000000000000000000000000000000000000000000000000000000000007" + expected_fields = "0x000000000000000000000000000000000000000000000000000000000000004f" + + [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.start_sponge_blob.sponge] + cache = [ + "0x12e7b967d4eedec7cbc843b52b7413174df59b4d212a07cd5137bfb5914e9387", + "0x0000000000000000000000000000000000000000000000000000000006000002", + "0x02f71e7f13a0520af9e75ee37b71703ace10b7df98538c8384614743dc310151" +] + state = [ + "0x0212f33afeb25b4d2de9e2d9a2d20e3c8995c949b22f3e6f5d2839c84a236d6f", + "0x23c128d8c6faf52fbd5408e415baad147807a63384a20e0b177d8ebc8d1bb0f4", + "0x165d09f061a90bac1945fde4922ec437a8a7a21138819bcb78c0079297bece5f", + "0x0ba3a0bbbc38b7389727f6bce882b3c584b85ce4830bb22c3068eb02e28ab0ab" +] + cache_size = "0x0000000000000000000000000000000000000000000000000000000000000001" + squeeze_mode = false + + [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end_sponge_blob] + fields = "0x0000000000000000000000000000000000000000000000000000000000000046" + expected_fields = "0x000000000000000000000000000000000000000000000000000000000000004f" + + [inputs.previous_rollup_data.base_or_merge_rollup_public_inputs.end_sponge_blob.sponge] + cache = [ + "0x00833cb4e0eb2519f668205a47679cd3da9cfd6f817b0493e5caf180f5d228ce", + "0x00c00794884e2bdeeb17481a11e8802ac0eb406aa32abaef06b8c16d2e02ba31", + "0x00e02685013c43900fb8432a4093ea7be3f7d9becbb5d9c4e4ed46bace2ba444" +] + state = [ + "0x105393772749b65609043d8ecdb2dd3fe0aace54ea61fae3c276d9b67475a44b", + "0x01afc140f5e9024433e2cbbcae49e8b524d8bc02e466d9ffaa75236f2eb78d47", + "0x0d50121d0d96b893589dc71b0317bd18054d85feeef5d9e0fd7594c224a2b1a7", + "0x1948c14f493f80c6b0fafe96ff051c386154b81021106ba7fb5cd7db85abb6a2" +] + cache_size = "0x0000000000000000000000000000000000000000000000000000000000000001" + squeeze_mode = false [inputs.previous_rollup_data.proof] fields = [ @@ -1195,109 +1269,109 @@ fields = [ [inputs.previous_rollup_data.vk] key = [ "0x0000000000000000000000000000000000000000000000000000000001000000", - "0x000000000000000000000000000000000000000000000000000000000000002f", + "0x0000000000000000000000000000000000000000000000000000000000000044", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x000000000000000000000000000000000000000000000000000000000000001f", - "0x0000000000000000000000000000000000000000000000000000000000000020", - "0x0000000000000000000000000000000000000000000000000000000000000021", - "0x0000000000000000000000000000000000000000000000000000000000000022", - "0x0000000000000000000000000000000000000000000000000000000000000023", - "0x0000000000000000000000000000000000000000000000000000000000000024", - "0x0000000000000000000000000000000000000000000000000000000000000025", - "0x0000000000000000000000000000000000000000000000000000000000000026", - "0x0000000000000000000000000000000000000000000000000000000000000027", - "0x0000000000000000000000000000000000000000000000000000000000000028", - "0x0000000000000000000000000000000000000000000000000000000000000029", - "0x000000000000000000000000000000000000000000000000000000000000002a", - "0x000000000000000000000000000000000000000000000000000000000000002b", - "0x000000000000000000000000000000000000000000000000000000000000002c", - "0x000000000000000000000000000000000000000000000000000000000000002d", - "0x000000000000000000000000000000000000000000000000000000000000002e", - "0x00000000000000000000000000000083f105d263693d959f465d577afde3e241", - "0x0000000000000000000000000000000000186aab73e6a6c1c1ddaa602ab8ba41", - "0x0000000000000000000000000000004f5009e76e681e827783f89feeab0f4f38", - "0x000000000000000000000000000000000012f1622c70b18614746b2af97418c3", - "0x0000000000000000000000000000004036f1577f0e264b6dd0bbc94b606a4284", - "0x000000000000000000000000000000000023b936c261305c9888ed4a54fcf392", - "0x000000000000000000000000000000c7121709d2983258a0468f82ff6a712766", - "0x00000000000000000000000000000000001eb29d9f01519896a78cc8d520c2e1", - "0x00000000000000000000000000000064c4e37642c930816d0d27b8f7499aa95f", - "0x00000000000000000000000000000000002bd72570325193956fbe793d39790d", - "0x000000000000000000000000000000ffeece4e1c9ae08fb5c2e1fb0885661ebb", - "0x000000000000000000000000000000000007e021557b16e493f848a50b82a690", - "0x00000000000000000000000000000023f9d53ff68a92dce4be03b7b90188bf7e", - "0x000000000000000000000000000000000012a11b23d00399517120fb7b2f4d74", - "0x000000000000000000000000000000049bbacffa3c2f83db0386b762139b15c6", - "0x00000000000000000000000000000000001077134df0014bdcfd303c49cfb3b2", - "0x0000000000000000000000000000003907a06b2d7ed38d97af6aab631cf5c216", - "0x00000000000000000000000000000000002b1675ce865ca3aef4d79da5e3d75f", - "0x000000000000000000000000000000f1be5335d9fc52555545754607d79e7e76", - "0x0000000000000000000000000000000000300a823055bd1b2a7895989cb91ae0", - "0x0000000000000000000000000000003869c9e8e0ab558c4ee722ac4737634543", - "0x00000000000000000000000000000000000e895c2fd009e1bf04a69e19bad5b0", - "0x0000000000000000000000000000003090308f6a4ac2dff8bdcb80ff203c9158", - "0x00000000000000000000000000000000001399681108d2316780a7b407b6dbc7", - "0x00000000000000000000000000000049b407643f80d9b31c1f2f2dcc099c4606", - "0x000000000000000000000000000000000002c5a451b2c2118b7ce510976ea543", - "0x000000000000000000000000000000159d3e33dbc32898f038a861dd3b87cfd8", - "0x000000000000000000000000000000000005217438ff1b3072b4bfea60d5189a", - "0x0000000000000000000000000000009022d610e583e74f37e612f7989c6993e1", - "0x000000000000000000000000000000000023b676af3093f940b07b9d3bf47e79", - "0x000000000000000000000000000000d43abc29cabff6162df3767124f54ab25d", - "0x00000000000000000000000000000000002b8bf715ac3a1174d21841efc41401", - "0x0000000000000000000000000000006a7a4e5727eedc1b6ab167ef99f26ae8d6", - "0x00000000000000000000000000000000000d169455bcd8815833fdced4dc689f", - "0x000000000000000000000000000000ffef33dde5b03977a18b37f6b2d884a382", - "0x00000000000000000000000000000000001a3f922fbc93ccff714edbf1a87af4", - "0x000000000000000000000000000000c693930ccb0e7122f9e961134cb44e728f", - "0x00000000000000000000000000000000001b68d917260647b8a09ad5da400ef6", - "0x0000000000000000000000000000007a6e6523820fa77cc1806496d23b0ea6d0", - "0x000000000000000000000000000000000018276ed72a3cb27c255ea622eb266c", - "0x000000000000000000000000000000989f1ede95d0c94aaabc55bc55bdb672be", - "0x000000000000000000000000000000000001a2ad141e9724b7bb6a2852830c8f", - "0x000000000000000000000000000000a0592e2990fa9b3f2ecc5e279e7da90dde", - "0x00000000000000000000000000000000001f6b98a86759a35f4e88018dd3a292", - "0x000000000000000000000000000000530e8d56910110cde046756101980444da", - "0x000000000000000000000000000000000000c18f8892a990cf12de7a893f8632", - "0x000000000000000000000000000000c3f12c80dd0ef51c31746d7bd541e1bc8d", - "0x000000000000000000000000000000000000280053da50be2c962303074a3cb2", - "0x000000000000000000000000000000dd00e37d8f707652bcaba8444acb20687a", - "0x00000000000000000000000000000000000bf8cdc44a398e3fa9c53b48a8788a", - "0x000000000000000000000000000000279047418e694306e2ee5a9302901040b9", - "0x00000000000000000000000000000000002e0405cc475fde29c4733e3adad557", - "0x0000000000000000000000000000001b68dacddf9d72adbb75dc7d15ca77ec00", - "0x0000000000000000000000000000000000120c1f216f66083e04582b5c7c1742", - "0x0000000000000000000000000000001809ad090eb2d9801d3676d9a3c5577dc9", - "0x000000000000000000000000000000000010e54ee59dce0a67a1ba2eb46c5ab9", - "0x000000000000000000000000000000162ed0badb460b92cc1261e1481e402163", - "0x0000000000000000000000000000000000021839ec7b765ffa1bfad5774238c8", - "0x000000000000000000000000000000e3223825e8a774caba8fcd773c36ec5539", - "0x00000000000000000000000000000000000cbd2ef8bcf01d03f3e759a0dbd085", - "0x00000000000000000000000000000022d75e8063b9f4451d7f21d87467d49649", - "0x000000000000000000000000000000000028e85b85d3acb0a14af02370313f90", - "0x0000000000000000000000000000003e4828093c7bc1be74a2267ed651ae163e", - "0x00000000000000000000000000000000000c207e4c4d40b2b38b38d9ef7656f1", - "0x000000000000000000000000000000be7af6b8071282c3b803d326f481450a59", - "0x00000000000000000000000000000000000c293a307bf84f157d14174d02eaa2", - "0x0000000000000000000000000000003623914be8bb928ec2f815c90f09165a27", - "0x000000000000000000000000000000000026c1fc2705a675708bab9f69a9faac", - "0x000000000000000000000000000000d0b3f4435c14f59ff058e31e79bfafa389", - "0x000000000000000000000000000000000004681dcb0c4797cfa3edab42091840", - "0x0000000000000000000000000000006591ad7d065f963ce12c6dfc1d0d2ce92f", - "0x000000000000000000000000000000000006636c8e94f7be39e14272ffccc343", - "0x00000000000000000000000000000078b2411d0f8878118d7133d72edc2534e7", - "0x00000000000000000000000000000000000b366d4942ec4a76cc3af583187eb0", - "0x00000000000000000000000000000010dfa542bdc4072c27dc1075bff39fc21c", - "0x00000000000000000000000000000000002f3e47fe83b12cfc9d35c49ed22de4", - "0x000000000000000000000000000000e9edb2c562e36397c624f09ebaee3d89a5", - "0x000000000000000000000000000000000009a38f4df3abf42fef1bc3c809049e", - "0x0000000000000000000000000000000a5eb99a1dd75d35f6568cdb66b368d3e5", - "0x000000000000000000000000000000000027ef5961db7a52c1214c21c7827661", - "0x000000000000000000000000000000b273d452dc547023ecad814fb0bda5d0b6", - "0x0000000000000000000000000000000000095fb932c37134e068387cc00c8f46", - "0x0000000000000000000000000000004d435aef40bb631c70b08bd32b2b6d44d5", - "0x00000000000000000000000000000000001d518c93340c8024c4db1020586a67", + "0x0000000000000000000000000000000000000000000000000000000000000034", + "0x0000000000000000000000000000000000000000000000000000000000000035", + "0x0000000000000000000000000000000000000000000000000000000000000036", + "0x0000000000000000000000000000000000000000000000000000000000000037", + "0x0000000000000000000000000000000000000000000000000000000000000038", + "0x0000000000000000000000000000000000000000000000000000000000000039", + "0x000000000000000000000000000000000000000000000000000000000000003a", + "0x000000000000000000000000000000000000000000000000000000000000003b", + "0x000000000000000000000000000000000000000000000000000000000000003c", + "0x000000000000000000000000000000000000000000000000000000000000003d", + "0x000000000000000000000000000000000000000000000000000000000000003e", + "0x000000000000000000000000000000000000000000000000000000000000003f", + "0x0000000000000000000000000000000000000000000000000000000000000040", + "0x0000000000000000000000000000000000000000000000000000000000000041", + "0x0000000000000000000000000000000000000000000000000000000000000042", + "0x0000000000000000000000000000000000000000000000000000000000000043", + "0x000000000000000000000000000000222d2b638470648efe806272902759bfe4", + "0x000000000000000000000000000000000026717cb116c9f379f6053d43ed7131", + "0x000000000000000000000000000000d72dc52e13931348a07d4d75dbdef7b696", + "0x000000000000000000000000000000000007a17849605cd5acdf47218d8ff6ab", + "0x0000000000000000000000000000000ead8b79c9d9733b45796b315aed219c46", + "0x000000000000000000000000000000000001520cbd65e9f9c12d2d804e5408a8", + "0x000000000000000000000000000000d4fd951f0c8b3f5c93c914a9ca3e3ad82b", + "0x00000000000000000000000000000000000c06cda5de6eb85a2dc3a3e461edf4", + "0x0000000000000000000000000000008fda111b457d9cbb2c2140e6e29baaa93d", + "0x000000000000000000000000000000000019250c98c82093236c18a9efa7bbcb", + "0x000000000000000000000000000000809dff0c74860533c531966cefa5e6b82f", + "0x0000000000000000000000000000000000096b5c6f4eb1c8d72e0812cabe6b20", + "0x0000000000000000000000000000002b40eba3c1a07bab631194a295de31fa39", + "0x00000000000000000000000000000000000053902748ef91505fca0d1db29c64", + "0x000000000000000000000000000000aa3b1b8cf6fbc5c81dc722111d10e6940b", + "0x0000000000000000000000000000000000206cb99da8d346b786537ed3b15446", + "0x0000000000000000000000000000001271113c751d045274a3317a01895808c9", + "0x00000000000000000000000000000000000ae017203dd40d764ddbaa912b9d03", + "0x000000000000000000000000000000f46fc3542fcfee505d2e9eacb7f397bb36", + "0x00000000000000000000000000000000002e5a0e507a80a266a9e62a94a7bb97", + "0x000000000000000000000000000000b44304dbc2fc1d02d3d903d01d29e76efb", + "0x00000000000000000000000000000000000fb528b629b4fbbf48fddeca9f54de", + "0x000000000000000000000000000000ffa188c0ab2f8df7c201783dc282a782cd", + "0x00000000000000000000000000000000000edbbec3674d50e52b6e83867b3007", + "0x00000000000000000000000000000058ea22bca57bfe9a1c46ce63c2c240901f", + "0x000000000000000000000000000000000028cce7cf665942fee68c3ffd344c71", + "0x000000000000000000000000000000bbda5287b41d69b0a203243ebb2d861d58", + "0x0000000000000000000000000000000000136b53ea88a30b784ec14018041c4e", + "0x0000000000000000000000000000004702b68f21e97f4ec2533229bdb2172de3", + "0x00000000000000000000000000000000002c307c0f773885110a0d7188d22899", + "0x000000000000000000000000000000ccfc8d16713b3ac84c531b3a09b57a5632", + "0x000000000000000000000000000000000018177fc15055bc6ded75133159116e", + "0x000000000000000000000000000000bf31ddaed25f6a3812d47d47eb1003c336", + "0x000000000000000000000000000000000030301fd8ac21f9dd93ae4de2223f3a", + "0x000000000000000000000000000000d8b510b22cee8d476c3ae3a5a643c12fcd", + "0x00000000000000000000000000000000001ed2d09f2ac6322b815bc0e35be630", + "0x0000000000000000000000000000005c2e45d0fa6b1156c250a016a8d6025717", + "0x0000000000000000000000000000000000116ef26a99b319f7ddf9a72b920d7e", + "0x000000000000000000000000000000887bef3a2f390f75c5c1c7d2804839dc40", + "0x0000000000000000000000000000000000241d35489e5ec7ae0ec539a511f4bb", + "0x0000000000000000000000000000001e9eed55f46c30f0a643e7fadc0f1c5b5f", + "0x00000000000000000000000000000000002d224bdb537e45356dad6719a44670", + "0x000000000000000000000000000000905b34d9aeffbef40ad032415b3b0e66bd", + "0x0000000000000000000000000000000000147a5bb3c75194935a583029501d7c", + "0x0000000000000000000000000000001a183288e3ecb3c21f96eb8e6c8fa774db", + "0x00000000000000000000000000000000001ef984af2d88e47be0e9664b8fd752", + "0x00000000000000000000000000000039f3dad17da7386018cab36996698755d5", + "0x00000000000000000000000000000000001561ce1450ac8840dbcf97e91bd5b6", + "0x000000000000000000000000000000f1b27c35585e11cbbf5612de0413672d01", + "0x0000000000000000000000000000000000012046c089f10f8c8c82265e2d6825", + "0x000000000000000000000000000000a2b89785fa94123ec142277619e45360fd", + "0x0000000000000000000000000000000000159d0140b54b1703d4f4ebdd75d849", + "0x000000000000000000000000000000539cb47199bd3c2245bc3044a89cf91958", + "0x0000000000000000000000000000000000096f804be4f55c1c25b387dc128f12", + "0x0000000000000000000000000000000d6ea4f662ce5d29fe8d5c30e717ed3f45", + "0x00000000000000000000000000000000000505aeb30b5f6acb1c0e335e27c510", + "0x0000000000000000000000000000003bafc94403ed6cbde5cd3bcd4b14d6c0fa", + "0x00000000000000000000000000000000001ad585be43d722b6a37d8b3832a770", + "0x000000000000000000000000000000d0ecec90f37a38b0b770d04148856f191a", + "0x0000000000000000000000000000000000195175c4eceb80ac5b567c05686b6a", + "0x00000000000000000000000000000018d09a6452cffee1251ce810df1987c3fe", + "0x000000000000000000000000000000000018a58c0116caf02d8187113b216b50", + "0x000000000000000000000000000000786c72f5cb45e0b2ef50d429284962d8f2", + "0x00000000000000000000000000000000001edecd8d2daf475aea627cddc4bf83", + "0x000000000000000000000000000000f11f76923fbc94bb9da677ef4ea48d8e5d", + "0x000000000000000000000000000000000009e363fd3b9fba1921f8a620453c8b", + "0x000000000000000000000000000000130337f88d1a3501deb7548bf12f3bf8c7", + "0x00000000000000000000000000000000001caf1ae2f1b7c284d4fa064660e2d4", + "0x0000000000000000000000000000001f3243dcfe519ae43f5fda7c4e071489ec", + "0x000000000000000000000000000000000028ddb68ba85ec82fbe2c3d13f3f4f3", + "0x000000000000000000000000000000b8d7efb798a996ad6f6cc79bbb2c23e051", + "0x000000000000000000000000000000000014064ac87a8676a6c0701105a76924", + "0x000000000000000000000000000000c4f5d6ec595af7e188571eb533255210bb", + "0x00000000000000000000000000000000000b751e85d1d0a4d12321b8f3001d93", + "0x00000000000000000000000000000053c44079c3fbeb350e7347576b96a518a2", + "0x00000000000000000000000000000000002cf5eeea78f9cc5b1c698613d5a0ac", + "0x0000000000000000000000000000006ebb8205fddf556a03c81473e3d7f128da", + "0x000000000000000000000000000000000005e04349dee59bf22cab15fbcf6579", + "0x000000000000000000000000000000119e7803dc1f0d42d610c1e636b763e84a", + "0x0000000000000000000000000000000000150cdd897a47b83debe2a86b41df03", + "0x000000000000000000000000000000b2627cae7ef76e48877e5f65dda01de6fa", + "0x00000000000000000000000000000000002df31114d6ea625d30f40fcd6501ae", + "0x000000000000000000000000000000d9ff339dabc896850436795e686c8b7892", + "0x0000000000000000000000000000000000045d737d25201a48aabff3f6bca6b3", "0x000000000000000000000000000000de93c07b11d2e6fa6550a3cefb321e16d7", "0x00000000000000000000000000000000001752e736d3439003c65c42a97c0f09", "0x0000000000000000000000000000009365c7dc3d4484e835a8c4cd523db7cb52", @@ -1318,20 +1392,20 @@ key = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000000000b060d912f36c7a49fde3bf3558237bdb2a", - "0x0000000000000000000000000000000000249696c605a9974fa15fbec16160b2", - "0x0000000000000000000000000000004e934ad9d35a26b55d1a6e5a526f13a3f0", - "0x0000000000000000000000000000000000187a3909db9a17fe07a067c0f5b370" + "0x000000000000000000000000000000a653c3ebcdb2ec03f5bededc1780032446", + "0x0000000000000000000000000000000000143112234ac9aa9f7ef289152fccda", + "0x00000000000000000000000000000073d1f6ce5b511d1a45307e35b4e146876d", + "0x00000000000000000000000000000000002ca743c017d5c16d5953d03410d5a5" ] -hash = "0x223bbdb2bb9d1f509352b9a309c1de4f5edd4ba1808b2531f1d62240ff620022" +hash = "0x03cde467306e7d05bcd957b9dde81fdb644d6a7e21d7857bc1bf647f78bfde83" [inputs.previous_rollup_data.vk_witness] -leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000009" +leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" sibling_path = [ - "0x299b192491e94c05248e76e1d3c86618d5aecacaa6bd0dcbb0c13e2aa8aa1ac0", + "0x1f07a2890c9deb79fe6cc78935c6dfa810ee56922785f37307cb463f7797f73e", "0x19861a044ec84aaf6e41d02a20051d349f07206356e10a0846d4fa892534e306", - "0x03e1060f8526313167802152f0c203b5a67428ee85deba69b04d6fbfb5394866", - "0x043018912588f9874fea852ab854ccaa9b13b8c1b201b55eda7a2fbdd1224ae0", - "0x022f5ac8ff86489f5492d016d0ac69cd39e93b518da3f5a15a8c3177b92bc008", + "0x236d849434a03c2e9d181e5365fe087cb14fd703bff61e5676bfa24c4f4509b7", + "0x019a340a354ef9114e2e61774efec255560cbbdd81448834fe6d764cae443a44", + "0x1967335d7b185023afd52d8f7f40be4ced0d80ba63d4dce2de3e26bfe772e394", "0x122cddd247164987e2287f8ce124bea7a68052e85bffebe2fc6cd71718689069" ] diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-root/Prover.toml b/noir-projects/noir-protocol-circuits/crates/rollup-root/Prover.toml index 5fee799a348..c8ed964761f 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-root/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/rollup-root/Prover.toml @@ -3,66 +3,66 @@ prover_id = "0x0000000000000000000000000000000000000000000000000000000000000051" [[inputs.previous_rollup_data]] [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs] -previous_block_hash = "0x1ca2a3310ac824bf892fb4c5f88ad040a32eb6514ddbf9caad18882a562942cd" -end_block_hash = "0x148654793384eeab5a0c8b73d18ced24816c0cdc72c0ee5b18bbdaa2b8f9c126" +previous_block_hash = "0x0cbe9ba8209cff81f755fb74efb4e92a9227a891378316ad62c685d6750b3a47" +end_block_hash = "0x022087729c552378b2572eb9be555e7dff2161a22e9a1d5e175d3558163a615b" out_hash = "0x0007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c3" -vk_tree_root = "0x0a118eae659eb1671e3f579a83c4ad3688cee1b9f23dcec48af4d3f3a2de1733" -protocol_contract_tree_root = "0x296690a67333fb896eff0ef812d31f9be26161726e47057bb688ddcf08164453" +vk_tree_root = "0x0bee8f04d48c18c88f2b9dd3b87daba3b3c8d000f44d290587504ae770942c56" +protocol_contract_tree_root = "0x1c4e64cbb91a46bc2fd73590e1dacd3ddf84d1b5e7a7182795ab02fe80399caf" prover_id = "0x0000000000000000000000000000000000000000000000000000000000000051" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.previous_archive] - root = "0x0b2a28d7d3a37f2835056faedca93b9b5194fadb559b08cb66d3ad18f700c18d" - next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" + root = "0x12a67a275560c583960931231ad3a43c5446c4ecf990edce34f69e4a8924e2a6" + next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000006" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.new_archive] - root = "0x25c8c19c00ade5d9ee2e42a0b6ba0487a228c008c9216227b3cfe6483cc8c274" - next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000a" + root = "0x04b51aa5df89d177213335ca62dee74d15b920e231f5ea5198ed405967d188fd" + next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" version = "0x0000000000000000000000000000000000000000000000000000000000000001" - block_number = "0x0000000000000000000000000000000000000000000000000000000000000008" - slot_number = "0x0000000000000000000000000000000000000000000000000000000000000021" - timestamp = "0x00000000000000000000000000000000000000000000000000000000675b066a" + block_number = "0x0000000000000000000000000000000000000000000000000000000000000006" + slot_number = "0x0000000000000000000000000000000000000000000000000000000000000013" + timestamp = "0x00000000000000000000000000000000000000000000000000000000675c2e66" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.coinbase] - inner = "0x000000000000000000000000dde7ef1ed87eb5cbb0562efd27c3ad9eda8c800a" + inner = "0x000000000000000000000000ed846b6f217c7084a6c108eda50abce8c8367eac" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd45dda" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9be2b484" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables] chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" version = "0x0000000000000000000000000000000000000000000000000000000000000001" - block_number = "0x0000000000000000000000000000000000000000000000000000000000000009" - slot_number = "0x0000000000000000000000000000000000000000000000000000000000000023" - timestamp = "0x00000000000000000000000000000000000000000000000000000000675b069a" + block_number = "0x0000000000000000000000000000000000000000000000000000000000000007" + slot_number = "0x0000000000000000000000000000000000000000000000000000000000000014" + timestamp = "0x00000000000000000000000000000000000000000000000000000000675c2e7e" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.coinbase] - inner = "0x000000000000000000000000dde7ef1ed87eb5cbb0562efd27c3ad9eda8c800a" + inner = "0x000000000000000000000000ed846b6f217c7084a6c108eda50abce8c8367eac" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.fee_recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.gas_fees] fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd150e0" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9be2b484" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000003a83258387a80" + value = "0x0000000000000000000000000000000000000000000000000003a83680db4900" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x000000000000000000000000dde7ef1ed87eb5cbb0562efd27c3ad9eda8c800a" + inner = "0x000000000000000000000000ed846b6f217c7084a6c108eda50abce8c8367eac" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000003a83175b4f800" + value = "0x000000000000000000000000000000000000000000000000000b49e83dc155c8" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x000000000000000000000000dde7ef1ed87eb5cbb0562efd27c3ad9eda8c800a" + inner = "0x000000000000000000000000ed846b6f217c7084a6c108eda50abce8c8367eac" [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] value = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -340,257 +340,2609 @@ prover_id = "0x0000000000000000000000000000000000000000000000000000000000000051" [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] inner = "0x0000000000000000000000000000000000000000000000000000000000000000" -[inputs.previous_rollup_data.proof] -fields = [ - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000002", - "0x0000000000000000000000000000000000000000000000000000000000000003", - "0x0000000000000000000000000000000000000000000000000000000000000004", - "0x0000000000000000000000000000000000000000000000000000000000000005", - "0x0000000000000000000000000000000000000000000000000000000000000006", - "0x0000000000000000000000000000000000000000000000000000000000000007", - "0x0000000000000000000000000000000000000000000000000000000000000008", - "0x0000000000000000000000000000000000000000000000000000000000000009", - "0x000000000000000000000000000000000000000000000000000000000000000a", - "0x000000000000000000000000000000000000000000000000000000000000000b", - "0x000000000000000000000000000000000000000000000000000000000000000c", - "0x000000000000000000000000000000000000000000000000000000000000000d", - "0x000000000000000000000000000000000000000000000000000000000000000e", - "0x000000000000000000000000000000000000000000000000000000000000000f", - "0x0000000000000000000000000000000000000000000000000000000000000010", - "0x0000000000000000000000000000000000000000000000000000000000000011", - "0x0000000000000000000000000000000000000000000000000000000000000012", - "0x0000000000000000000000000000000000000000000000000000000000000013", - "0x0000000000000000000000000000000000000000000000000000000000000014", - "0x0000000000000000000000000000000000000000000000000000000000000015", - "0x0000000000000000000000000000000000000000000000000000000000000016", - "0x0000000000000000000000000000000000000000000000000000000000000017", - "0x0000000000000000000000000000000000000000000000000000000000000018", - "0x0000000000000000000000000000000000000000000000000000000000000019", - "0x000000000000000000000000000000000000000000000000000000000000001a", - "0x000000000000000000000000000000000000000000000000000000000000001b", - "0x000000000000000000000000000000000000000000000000000000000000001c", - "0x000000000000000000000000000000000000000000000000000000000000001d", - "0x000000000000000000000000000000000000000000000000000000000000001e", - "0x000000000000000000000000000000000000000000000000000000000000001f", - "0x0000000000000000000000000000000000000000000000000000000000000020", - "0x0000000000000000000000000000000000000000000000000000000000000021", - "0x0000000000000000000000000000000000000000000000000000000000000022", - "0x0000000000000000000000000000000000000000000000000000000000000023", - "0x0000000000000000000000000000000000000000000000000000000000000024", - "0x0000000000000000000000000000000000000000000000000000000000000025", - "0x0000000000000000000000000000000000000000000000000000000000000026", - "0x0000000000000000000000000000000000000000000000000000000000000027", - "0x0000000000000000000000000000000000000000000000000000000000000028", - "0x0000000000000000000000000000000000000000000000000000000000000029", - "0x000000000000000000000000000000000000000000000000000000000000002a", - "0x000000000000000000000000000000000000000000000000000000000000002b", - "0x000000000000000000000000000000000000000000000000000000000000002c", - "0x000000000000000000000000000000000000000000000000000000000000002d", - "0x000000000000000000000000000000000000000000000000000000000000002e", - "0x000000000000000000000000000000000000000000000000000000000000002f", - "0x0000000000000000000000000000000000000000000000000000000000000030", - "0x0000000000000000000000000000000000000000000000000000000000000031", - "0x0000000000000000000000000000000000000000000000000000000000000032", - "0x0000000000000000000000000000000000000000000000000000000000000033", - "0x0000000000000000000000000000000000000000000000000000000000000034", - "0x0000000000000000000000000000000000000000000000000000000000000035", - "0x0000000000000000000000000000000000000000000000000000000000000036", - "0x0000000000000000000000000000000000000000000000000000000000000037", - "0x0000000000000000000000000000000000000000000000000000000000000038", - "0x0000000000000000000000000000000000000000000000000000000000000039", - "0x000000000000000000000000000000000000000000000000000000000000003a", - "0x000000000000000000000000000000000000000000000000000000000000003b", - "0x000000000000000000000000000000000000000000000000000000000000003c", - "0x000000000000000000000000000000000000000000000000000000000000003d", - "0x000000000000000000000000000000000000000000000000000000000000003e", - "0x000000000000000000000000000000000000000000000000000000000000003f", - "0x0000000000000000000000000000000000000000000000000000000000000040", - "0x0000000000000000000000000000000000000000000000000000000000000041", - "0x0000000000000000000000000000000000000000000000000000000000000042", - "0x0000000000000000000000000000000000000000000000000000000000000043", - "0x0000000000000000000000000000000000000000000000000000000000000044", - "0x0000000000000000000000000000000000000000000000000000000000000045", - "0x0000000000000000000000000000000000000000000000000000000000000046", - "0x0000000000000000000000000000000000000000000000000000000000000047", - "0x0000000000000000000000000000000000000000000000000000000000000048", - "0x0000000000000000000000000000000000000000000000000000000000000049", - "0x000000000000000000000000000000000000000000000000000000000000004a", - "0x000000000000000000000000000000000000000000000000000000000000004b", - "0x000000000000000000000000000000000000000000000000000000000000004c", - "0x000000000000000000000000000000000000000000000000000000000000004d", - "0x000000000000000000000000000000000000000000000000000000000000004e", - "0x000000000000000000000000000000000000000000000000000000000000004f", - "0x0000000000000000000000000000000000000000000000000000000000000050", - "0x0000000000000000000000000000000000000000000000000000000000000051", - "0x0000000000000000000000000000000000000000000000000000000000000052", - "0x0000000000000000000000000000000000000000000000000000000000000053", - "0x0000000000000000000000000000000000000000000000000000000000000054", - "0x0000000000000000000000000000000000000000000000000000000000000055", - "0x0000000000000000000000000000000000000000000000000000000000000056", - "0x0000000000000000000000000000000000000000000000000000000000000057", - "0x0000000000000000000000000000000000000000000000000000000000000058", - "0x0000000000000000000000000000000000000000000000000000000000000059", - "0x000000000000000000000000000000000000000000000000000000000000005a", - "0x000000000000000000000000000000000000000000000000000000000000005b", - "0x000000000000000000000000000000000000000000000000000000000000005c", - "0x000000000000000000000000000000000000000000000000000000000000005d", - "0x000000000000000000000000000000000000000000000000000000000000005e", - "0x000000000000000000000000000000000000000000000000000000000000005f", - "0x0000000000000000000000000000000000000000000000000000000000000060", - "0x0000000000000000000000000000000000000000000000000000000000000061", - "0x0000000000000000000000000000000000000000000000000000000000000062", - "0x0000000000000000000000000000000000000000000000000000000000000063", - "0x0000000000000000000000000000000000000000000000000000000000000064", - "0x0000000000000000000000000000000000000000000000000000000000000065", - "0x0000000000000000000000000000000000000000000000000000000000000066", - "0x0000000000000000000000000000000000000000000000000000000000000067", - "0x0000000000000000000000000000000000000000000000000000000000000068", - "0x0000000000000000000000000000000000000000000000000000000000000069", - "0x000000000000000000000000000000000000000000000000000000000000006a", - "0x000000000000000000000000000000000000000000000000000000000000006b", - "0x000000000000000000000000000000000000000000000000000000000000006c", - "0x000000000000000000000000000000000000000000000000000000000000006d", - "0x000000000000000000000000000000000000000000000000000000000000006e", - "0x000000000000000000000000000000000000000000000000000000000000006f", - "0x0000000000000000000000000000000000000000000000000000000000000070", - "0x0000000000000000000000000000000000000000000000000000000000000071", - "0x0000000000000000000000000000000000000000000000000000000000000072", - "0x0000000000000000000000000000000000000000000000000000000000000073", - "0x0000000000000000000000000000000000000000000000000000000000000074", - "0x0000000000000000000000000000000000000000000000000000000000000075", - "0x0000000000000000000000000000000000000000000000000000000000000076", - "0x0000000000000000000000000000000000000000000000000000000000000077", - "0x0000000000000000000000000000000000000000000000000000000000000078", - "0x0000000000000000000000000000000000000000000000000000000000000079", - "0x000000000000000000000000000000000000000000000000000000000000007a", - "0x000000000000000000000000000000000000000000000000000000000000007b", - "0x000000000000000000000000000000000000000000000000000000000000007c", - "0x000000000000000000000000000000000000000000000000000000000000007d", - "0x000000000000000000000000000000000000000000000000000000000000007e", - "0x000000000000000000000000000000000000000000000000000000000000007f", - "0x0000000000000000000000000000000000000000000000000000000000000080", - "0x0000000000000000000000000000000000000000000000000000000000000081", - "0x0000000000000000000000000000000000000000000000000000000000000082", - "0x0000000000000000000000000000000000000000000000000000000000000083", - "0x0000000000000000000000000000000000000000000000000000000000000084", - "0x0000000000000000000000000000000000000000000000000000000000000085", - "0x0000000000000000000000000000000000000000000000000000000000000086", - "0x0000000000000000000000000000000000000000000000000000000000000087", - "0x0000000000000000000000000000000000000000000000000000000000000088", - "0x0000000000000000000000000000000000000000000000000000000000000089", - "0x000000000000000000000000000000000000000000000000000000000000008a", - "0x000000000000000000000000000000000000000000000000000000000000008b", - "0x000000000000000000000000000000000000000000000000000000000000008c", - "0x000000000000000000000000000000000000000000000000000000000000008d", - "0x000000000000000000000000000000000000000000000000000000000000008e", - "0x000000000000000000000000000000000000000000000000000000000000008f", - "0x0000000000000000000000000000000000000000000000000000000000000090", - "0x0000000000000000000000000000000000000000000000000000000000000091", - "0x0000000000000000000000000000000000000000000000000000000000000092", - "0x0000000000000000000000000000000000000000000000000000000000000093", - "0x0000000000000000000000000000000000000000000000000000000000000094", - "0x0000000000000000000000000000000000000000000000000000000000000095", - "0x0000000000000000000000000000000000000000000000000000000000000096", - "0x0000000000000000000000000000000000000000000000000000000000000097", - "0x0000000000000000000000000000000000000000000000000000000000000098", - "0x0000000000000000000000000000000000000000000000000000000000000099", - "0x000000000000000000000000000000000000000000000000000000000000009a", - "0x000000000000000000000000000000000000000000000000000000000000009b", - "0x000000000000000000000000000000000000000000000000000000000000009c", - "0x000000000000000000000000000000000000000000000000000000000000009d", - "0x000000000000000000000000000000000000000000000000000000000000009e", - "0x000000000000000000000000000000000000000000000000000000000000009f", - "0x00000000000000000000000000000000000000000000000000000000000000a0", - "0x00000000000000000000000000000000000000000000000000000000000000a1", - "0x00000000000000000000000000000000000000000000000000000000000000a2", - "0x00000000000000000000000000000000000000000000000000000000000000a3", - "0x00000000000000000000000000000000000000000000000000000000000000a4", - "0x00000000000000000000000000000000000000000000000000000000000000a5", - "0x00000000000000000000000000000000000000000000000000000000000000a6", - "0x00000000000000000000000000000000000000000000000000000000000000a7", - "0x00000000000000000000000000000000000000000000000000000000000000a8", - "0x00000000000000000000000000000000000000000000000000000000000000a9", - "0x00000000000000000000000000000000000000000000000000000000000000aa", - "0x00000000000000000000000000000000000000000000000000000000000000ab", - "0x00000000000000000000000000000000000000000000000000000000000000ac", - "0x00000000000000000000000000000000000000000000000000000000000000ad", - "0x00000000000000000000000000000000000000000000000000000000000000ae", - "0x00000000000000000000000000000000000000000000000000000000000000af", - "0x00000000000000000000000000000000000000000000000000000000000000b0", - "0x00000000000000000000000000000000000000000000000000000000000000b1", - "0x00000000000000000000000000000000000000000000000000000000000000b2", - "0x00000000000000000000000000000000000000000000000000000000000000b3", - "0x00000000000000000000000000000000000000000000000000000000000000b4", - "0x00000000000000000000000000000000000000000000000000000000000000b5", - "0x00000000000000000000000000000000000000000000000000000000000000b6", - "0x00000000000000000000000000000000000000000000000000000000000000b7", - "0x00000000000000000000000000000000000000000000000000000000000000b8", - "0x00000000000000000000000000000000000000000000000000000000000000b9", - "0x00000000000000000000000000000000000000000000000000000000000000ba", - "0x00000000000000000000000000000000000000000000000000000000000000bb", - "0x00000000000000000000000000000000000000000000000000000000000000bc", - "0x00000000000000000000000000000000000000000000000000000000000000bd", - "0x00000000000000000000000000000000000000000000000000000000000000be", - "0x00000000000000000000000000000000000000000000000000000000000000bf", - "0x00000000000000000000000000000000000000000000000000000000000000c0", - "0x00000000000000000000000000000000000000000000000000000000000000c1", - "0x00000000000000000000000000000000000000000000000000000000000000c2", - "0x00000000000000000000000000000000000000000000000000000000000000c3", - "0x00000000000000000000000000000000000000000000000000000000000000c4", - "0x00000000000000000000000000000000000000000000000000000000000000c5", - "0x00000000000000000000000000000000000000000000000000000000000000c6", - "0x00000000000000000000000000000000000000000000000000000000000000c7", - "0x00000000000000000000000000000000000000000000000000000000000000c8", - "0x00000000000000000000000000000000000000000000000000000000000000c9", - "0x00000000000000000000000000000000000000000000000000000000000000ca", - "0x00000000000000000000000000000000000000000000000000000000000000cb", - "0x00000000000000000000000000000000000000000000000000000000000000cc", - "0x00000000000000000000000000000000000000000000000000000000000000cd", - "0x00000000000000000000000000000000000000000000000000000000000000ce", - "0x00000000000000000000000000000000000000000000000000000000000000cf", - "0x00000000000000000000000000000000000000000000000000000000000000d0", - "0x00000000000000000000000000000000000000000000000000000000000000d1", - "0x00000000000000000000000000000000000000000000000000000000000000d2", - "0x00000000000000000000000000000000000000000000000000000000000000d3", - "0x00000000000000000000000000000000000000000000000000000000000000d4", - "0x00000000000000000000000000000000000000000000000000000000000000d5", - "0x00000000000000000000000000000000000000000000000000000000000000d6", - "0x00000000000000000000000000000000000000000000000000000000000000d7", - "0x00000000000000000000000000000000000000000000000000000000000000d8", - "0x00000000000000000000000000000000000000000000000000000000000000d9", - "0x00000000000000000000000000000000000000000000000000000000000000da", - "0x00000000000000000000000000000000000000000000000000000000000000db", - "0x00000000000000000000000000000000000000000000000000000000000000dc", - "0x00000000000000000000000000000000000000000000000000000000000000dd", - "0x00000000000000000000000000000000000000000000000000000000000000de", - "0x00000000000000000000000000000000000000000000000000000000000000df", - "0x00000000000000000000000000000000000000000000000000000000000000e0", - "0x00000000000000000000000000000000000000000000000000000000000000e1", - "0x00000000000000000000000000000000000000000000000000000000000000e2", - "0x00000000000000000000000000000000000000000000000000000000000000e3", - "0x00000000000000000000000000000000000000000000000000000000000000e4", - "0x00000000000000000000000000000000000000000000000000000000000000e5", - "0x00000000000000000000000000000000000000000000000000000000000000e6", - "0x00000000000000000000000000000000000000000000000000000000000000e7", - "0x00000000000000000000000000000000000000000000000000000000000000e8", - "0x00000000000000000000000000000000000000000000000000000000000000e9", - "0x00000000000000000000000000000000000000000000000000000000000000ea", - "0x00000000000000000000000000000000000000000000000000000000000000eb", - "0x00000000000000000000000000000000000000000000000000000000000000ec", - "0x00000000000000000000000000000000000000000000000000000000000000ed", - "0x00000000000000000000000000000000000000000000000000000000000000ee", - "0x00000000000000000000000000000000000000000000000000000000000000ef", - "0x00000000000000000000000000000000000000000000000000000000000000f0", - "0x00000000000000000000000000000000000000000000000000000000000000f1", - "0x00000000000000000000000000000000000000000000000000000000000000f2", - "0x00000000000000000000000000000000000000000000000000000000000000f3", - "0x00000000000000000000000000000000000000000000000000000000000000f4", - "0x00000000000000000000000000000000000000000000000000000000000000f5", - "0x00000000000000000000000000000000000000000000000000000000000000f6", - "0x00000000000000000000000000000000000000000000000000000000000000f7", - "0x00000000000000000000000000000000000000000000000000000000000000f8", - "0x00000000000000000000000000000000000000000000000000000000000000f9", + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x08096b8a07dd58a4075534aa941683d65b968c85454e4127a93a2441c4e481ba" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x0f27c0c90ff3d54ed9057f9d961481", + "0x10f7712b10865230fc579fcf643ffb", + "0x5af9" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x008890c7177b340e82eef47e7b4364d2bd8425cfecd2ce2e1657247d960b3592", + "0x0000000000000000000000000000005c40f1b8daf1afa2af8971237b4faf5888" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x2680a618cce5a117fe2420af8070f94769bf55e2a342fdc5c500d65bf128f97c" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x2c225f699251daa2795d209a680710", + "0xe870212bf38b51bf54abe6a2b87dd9", + "0x459c" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x00a1f4b43df5cca374ba67b1201841744deb0c9ca51b45320341378839870643", + "0x000000000000000000000000000000b7c11d8b7e10d09c979df87e342a9f281e" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[inputs.previous_rollup_data.proof] +fields = [ + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0x0000000000000000000000000000000000000000000000000000000000000003", + "0x0000000000000000000000000000000000000000000000000000000000000004", + "0x0000000000000000000000000000000000000000000000000000000000000005", + "0x0000000000000000000000000000000000000000000000000000000000000006", + "0x0000000000000000000000000000000000000000000000000000000000000007", + "0x0000000000000000000000000000000000000000000000000000000000000008", + "0x0000000000000000000000000000000000000000000000000000000000000009", + "0x000000000000000000000000000000000000000000000000000000000000000a", + "0x000000000000000000000000000000000000000000000000000000000000000b", + "0x000000000000000000000000000000000000000000000000000000000000000c", + "0x000000000000000000000000000000000000000000000000000000000000000d", + "0x000000000000000000000000000000000000000000000000000000000000000e", + "0x000000000000000000000000000000000000000000000000000000000000000f", + "0x0000000000000000000000000000000000000000000000000000000000000010", + "0x0000000000000000000000000000000000000000000000000000000000000011", + "0x0000000000000000000000000000000000000000000000000000000000000012", + "0x0000000000000000000000000000000000000000000000000000000000000013", + "0x0000000000000000000000000000000000000000000000000000000000000014", + "0x0000000000000000000000000000000000000000000000000000000000000015", + "0x0000000000000000000000000000000000000000000000000000000000000016", + "0x0000000000000000000000000000000000000000000000000000000000000017", + "0x0000000000000000000000000000000000000000000000000000000000000018", + "0x0000000000000000000000000000000000000000000000000000000000000019", + "0x000000000000000000000000000000000000000000000000000000000000001a", + "0x000000000000000000000000000000000000000000000000000000000000001b", + "0x000000000000000000000000000000000000000000000000000000000000001c", + "0x000000000000000000000000000000000000000000000000000000000000001d", + "0x000000000000000000000000000000000000000000000000000000000000001e", + "0x000000000000000000000000000000000000000000000000000000000000001f", + "0x0000000000000000000000000000000000000000000000000000000000000020", + "0x0000000000000000000000000000000000000000000000000000000000000021", + "0x0000000000000000000000000000000000000000000000000000000000000022", + "0x0000000000000000000000000000000000000000000000000000000000000023", + "0x0000000000000000000000000000000000000000000000000000000000000024", + "0x0000000000000000000000000000000000000000000000000000000000000025", + "0x0000000000000000000000000000000000000000000000000000000000000026", + "0x0000000000000000000000000000000000000000000000000000000000000027", + "0x0000000000000000000000000000000000000000000000000000000000000028", + "0x0000000000000000000000000000000000000000000000000000000000000029", + "0x000000000000000000000000000000000000000000000000000000000000002a", + "0x000000000000000000000000000000000000000000000000000000000000002b", + "0x000000000000000000000000000000000000000000000000000000000000002c", + "0x000000000000000000000000000000000000000000000000000000000000002d", + "0x000000000000000000000000000000000000000000000000000000000000002e", + "0x000000000000000000000000000000000000000000000000000000000000002f", + "0x0000000000000000000000000000000000000000000000000000000000000030", + "0x0000000000000000000000000000000000000000000000000000000000000031", + "0x0000000000000000000000000000000000000000000000000000000000000032", + "0x0000000000000000000000000000000000000000000000000000000000000033", + "0x0000000000000000000000000000000000000000000000000000000000000034", + "0x0000000000000000000000000000000000000000000000000000000000000035", + "0x0000000000000000000000000000000000000000000000000000000000000036", + "0x0000000000000000000000000000000000000000000000000000000000000037", + "0x0000000000000000000000000000000000000000000000000000000000000038", + "0x0000000000000000000000000000000000000000000000000000000000000039", + "0x000000000000000000000000000000000000000000000000000000000000003a", + "0x000000000000000000000000000000000000000000000000000000000000003b", + "0x000000000000000000000000000000000000000000000000000000000000003c", + "0x000000000000000000000000000000000000000000000000000000000000003d", + "0x000000000000000000000000000000000000000000000000000000000000003e", + "0x000000000000000000000000000000000000000000000000000000000000003f", + "0x0000000000000000000000000000000000000000000000000000000000000040", + "0x0000000000000000000000000000000000000000000000000000000000000041", + "0x0000000000000000000000000000000000000000000000000000000000000042", + "0x0000000000000000000000000000000000000000000000000000000000000043", + "0x0000000000000000000000000000000000000000000000000000000000000044", + "0x0000000000000000000000000000000000000000000000000000000000000045", + "0x0000000000000000000000000000000000000000000000000000000000000046", + "0x0000000000000000000000000000000000000000000000000000000000000047", + "0x0000000000000000000000000000000000000000000000000000000000000048", + "0x0000000000000000000000000000000000000000000000000000000000000049", + "0x000000000000000000000000000000000000000000000000000000000000004a", + "0x000000000000000000000000000000000000000000000000000000000000004b", + "0x000000000000000000000000000000000000000000000000000000000000004c", + "0x000000000000000000000000000000000000000000000000000000000000004d", + "0x000000000000000000000000000000000000000000000000000000000000004e", + "0x000000000000000000000000000000000000000000000000000000000000004f", + "0x0000000000000000000000000000000000000000000000000000000000000050", + "0x0000000000000000000000000000000000000000000000000000000000000051", + "0x0000000000000000000000000000000000000000000000000000000000000052", + "0x0000000000000000000000000000000000000000000000000000000000000053", + "0x0000000000000000000000000000000000000000000000000000000000000054", + "0x0000000000000000000000000000000000000000000000000000000000000055", + "0x0000000000000000000000000000000000000000000000000000000000000056", + "0x0000000000000000000000000000000000000000000000000000000000000057", + "0x0000000000000000000000000000000000000000000000000000000000000058", + "0x0000000000000000000000000000000000000000000000000000000000000059", + "0x000000000000000000000000000000000000000000000000000000000000005a", + "0x000000000000000000000000000000000000000000000000000000000000005b", + "0x000000000000000000000000000000000000000000000000000000000000005c", + "0x000000000000000000000000000000000000000000000000000000000000005d", + "0x000000000000000000000000000000000000000000000000000000000000005e", + "0x000000000000000000000000000000000000000000000000000000000000005f", + "0x0000000000000000000000000000000000000000000000000000000000000060", + "0x0000000000000000000000000000000000000000000000000000000000000061", + "0x0000000000000000000000000000000000000000000000000000000000000062", + "0x0000000000000000000000000000000000000000000000000000000000000063", + "0x0000000000000000000000000000000000000000000000000000000000000064", + "0x0000000000000000000000000000000000000000000000000000000000000065", + "0x0000000000000000000000000000000000000000000000000000000000000066", + "0x0000000000000000000000000000000000000000000000000000000000000067", + "0x0000000000000000000000000000000000000000000000000000000000000068", + "0x0000000000000000000000000000000000000000000000000000000000000069", + "0x000000000000000000000000000000000000000000000000000000000000006a", + "0x000000000000000000000000000000000000000000000000000000000000006b", + "0x000000000000000000000000000000000000000000000000000000000000006c", + "0x000000000000000000000000000000000000000000000000000000000000006d", + "0x000000000000000000000000000000000000000000000000000000000000006e", + "0x000000000000000000000000000000000000000000000000000000000000006f", + "0x0000000000000000000000000000000000000000000000000000000000000070", + "0x0000000000000000000000000000000000000000000000000000000000000071", + "0x0000000000000000000000000000000000000000000000000000000000000072", + "0x0000000000000000000000000000000000000000000000000000000000000073", + "0x0000000000000000000000000000000000000000000000000000000000000074", + "0x0000000000000000000000000000000000000000000000000000000000000075", + "0x0000000000000000000000000000000000000000000000000000000000000076", + "0x0000000000000000000000000000000000000000000000000000000000000077", + "0x0000000000000000000000000000000000000000000000000000000000000078", + "0x0000000000000000000000000000000000000000000000000000000000000079", + "0x000000000000000000000000000000000000000000000000000000000000007a", + "0x000000000000000000000000000000000000000000000000000000000000007b", + "0x000000000000000000000000000000000000000000000000000000000000007c", + "0x000000000000000000000000000000000000000000000000000000000000007d", + "0x000000000000000000000000000000000000000000000000000000000000007e", + "0x000000000000000000000000000000000000000000000000000000000000007f", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000081", + "0x0000000000000000000000000000000000000000000000000000000000000082", + "0x0000000000000000000000000000000000000000000000000000000000000083", + "0x0000000000000000000000000000000000000000000000000000000000000084", + "0x0000000000000000000000000000000000000000000000000000000000000085", + "0x0000000000000000000000000000000000000000000000000000000000000086", + "0x0000000000000000000000000000000000000000000000000000000000000087", + "0x0000000000000000000000000000000000000000000000000000000000000088", + "0x0000000000000000000000000000000000000000000000000000000000000089", + "0x000000000000000000000000000000000000000000000000000000000000008a", + "0x000000000000000000000000000000000000000000000000000000000000008b", + "0x000000000000000000000000000000000000000000000000000000000000008c", + "0x000000000000000000000000000000000000000000000000000000000000008d", + "0x000000000000000000000000000000000000000000000000000000000000008e", + "0x000000000000000000000000000000000000000000000000000000000000008f", + "0x0000000000000000000000000000000000000000000000000000000000000090", + "0x0000000000000000000000000000000000000000000000000000000000000091", + "0x0000000000000000000000000000000000000000000000000000000000000092", + "0x0000000000000000000000000000000000000000000000000000000000000093", + "0x0000000000000000000000000000000000000000000000000000000000000094", + "0x0000000000000000000000000000000000000000000000000000000000000095", + "0x0000000000000000000000000000000000000000000000000000000000000096", + "0x0000000000000000000000000000000000000000000000000000000000000097", + "0x0000000000000000000000000000000000000000000000000000000000000098", + "0x0000000000000000000000000000000000000000000000000000000000000099", + "0x000000000000000000000000000000000000000000000000000000000000009a", + "0x000000000000000000000000000000000000000000000000000000000000009b", + "0x000000000000000000000000000000000000000000000000000000000000009c", + "0x000000000000000000000000000000000000000000000000000000000000009d", + "0x000000000000000000000000000000000000000000000000000000000000009e", + "0x000000000000000000000000000000000000000000000000000000000000009f", + "0x00000000000000000000000000000000000000000000000000000000000000a0", + "0x00000000000000000000000000000000000000000000000000000000000000a1", + "0x00000000000000000000000000000000000000000000000000000000000000a2", + "0x00000000000000000000000000000000000000000000000000000000000000a3", + "0x00000000000000000000000000000000000000000000000000000000000000a4", + "0x00000000000000000000000000000000000000000000000000000000000000a5", + "0x00000000000000000000000000000000000000000000000000000000000000a6", + "0x00000000000000000000000000000000000000000000000000000000000000a7", + "0x00000000000000000000000000000000000000000000000000000000000000a8", + "0x00000000000000000000000000000000000000000000000000000000000000a9", + "0x00000000000000000000000000000000000000000000000000000000000000aa", + "0x00000000000000000000000000000000000000000000000000000000000000ab", + "0x00000000000000000000000000000000000000000000000000000000000000ac", + "0x00000000000000000000000000000000000000000000000000000000000000ad", + "0x00000000000000000000000000000000000000000000000000000000000000ae", + "0x00000000000000000000000000000000000000000000000000000000000000af", + "0x00000000000000000000000000000000000000000000000000000000000000b0", + "0x00000000000000000000000000000000000000000000000000000000000000b1", + "0x00000000000000000000000000000000000000000000000000000000000000b2", + "0x00000000000000000000000000000000000000000000000000000000000000b3", + "0x00000000000000000000000000000000000000000000000000000000000000b4", + "0x00000000000000000000000000000000000000000000000000000000000000b5", + "0x00000000000000000000000000000000000000000000000000000000000000b6", + "0x00000000000000000000000000000000000000000000000000000000000000b7", + "0x00000000000000000000000000000000000000000000000000000000000000b8", + "0x00000000000000000000000000000000000000000000000000000000000000b9", + "0x00000000000000000000000000000000000000000000000000000000000000ba", + "0x00000000000000000000000000000000000000000000000000000000000000bb", + "0x00000000000000000000000000000000000000000000000000000000000000bc", + "0x00000000000000000000000000000000000000000000000000000000000000bd", + "0x00000000000000000000000000000000000000000000000000000000000000be", + "0x00000000000000000000000000000000000000000000000000000000000000bf", + "0x00000000000000000000000000000000000000000000000000000000000000c0", + "0x00000000000000000000000000000000000000000000000000000000000000c1", + "0x00000000000000000000000000000000000000000000000000000000000000c2", + "0x00000000000000000000000000000000000000000000000000000000000000c3", + "0x00000000000000000000000000000000000000000000000000000000000000c4", + "0x00000000000000000000000000000000000000000000000000000000000000c5", + "0x00000000000000000000000000000000000000000000000000000000000000c6", + "0x00000000000000000000000000000000000000000000000000000000000000c7", + "0x00000000000000000000000000000000000000000000000000000000000000c8", + "0x00000000000000000000000000000000000000000000000000000000000000c9", + "0x00000000000000000000000000000000000000000000000000000000000000ca", + "0x00000000000000000000000000000000000000000000000000000000000000cb", + "0x00000000000000000000000000000000000000000000000000000000000000cc", + "0x00000000000000000000000000000000000000000000000000000000000000cd", + "0x00000000000000000000000000000000000000000000000000000000000000ce", + "0x00000000000000000000000000000000000000000000000000000000000000cf", + "0x00000000000000000000000000000000000000000000000000000000000000d0", + "0x00000000000000000000000000000000000000000000000000000000000000d1", + "0x00000000000000000000000000000000000000000000000000000000000000d2", + "0x00000000000000000000000000000000000000000000000000000000000000d3", + "0x00000000000000000000000000000000000000000000000000000000000000d4", + "0x00000000000000000000000000000000000000000000000000000000000000d5", + "0x00000000000000000000000000000000000000000000000000000000000000d6", + "0x00000000000000000000000000000000000000000000000000000000000000d7", + "0x00000000000000000000000000000000000000000000000000000000000000d8", + "0x00000000000000000000000000000000000000000000000000000000000000d9", + "0x00000000000000000000000000000000000000000000000000000000000000da", + "0x00000000000000000000000000000000000000000000000000000000000000db", + "0x00000000000000000000000000000000000000000000000000000000000000dc", + "0x00000000000000000000000000000000000000000000000000000000000000dd", + "0x00000000000000000000000000000000000000000000000000000000000000de", + "0x00000000000000000000000000000000000000000000000000000000000000df", + "0x00000000000000000000000000000000000000000000000000000000000000e0", + "0x00000000000000000000000000000000000000000000000000000000000000e1", + "0x00000000000000000000000000000000000000000000000000000000000000e2", + "0x00000000000000000000000000000000000000000000000000000000000000e3", + "0x00000000000000000000000000000000000000000000000000000000000000e4", + "0x00000000000000000000000000000000000000000000000000000000000000e5", + "0x00000000000000000000000000000000000000000000000000000000000000e6", + "0x00000000000000000000000000000000000000000000000000000000000000e7", + "0x00000000000000000000000000000000000000000000000000000000000000e8", + "0x00000000000000000000000000000000000000000000000000000000000000e9", + "0x00000000000000000000000000000000000000000000000000000000000000ea", + "0x00000000000000000000000000000000000000000000000000000000000000eb", + "0x00000000000000000000000000000000000000000000000000000000000000ec", + "0x00000000000000000000000000000000000000000000000000000000000000ed", + "0x00000000000000000000000000000000000000000000000000000000000000ee", + "0x00000000000000000000000000000000000000000000000000000000000000ef", + "0x00000000000000000000000000000000000000000000000000000000000000f0", + "0x00000000000000000000000000000000000000000000000000000000000000f1", + "0x00000000000000000000000000000000000000000000000000000000000000f2", + "0x00000000000000000000000000000000000000000000000000000000000000f3", + "0x00000000000000000000000000000000000000000000000000000000000000f4", + "0x00000000000000000000000000000000000000000000000000000000000000f5", + "0x00000000000000000000000000000000000000000000000000000000000000f6", + "0x00000000000000000000000000000000000000000000000000000000000000f7", + "0x00000000000000000000000000000000000000000000000000000000000000f8", + "0x00000000000000000000000000000000000000000000000000000000000000f9", "0x00000000000000000000000000000000000000000000000000000000000000fa", "0x00000000000000000000000000000000000000000000000000000000000000fb", "0x00000000000000000000000000000000000000000000000000000000000000fc", @@ -807,488 +3159,2840 @@ fields = [ "0x00000000000000000000000000000000000000000000000000000000000001cf" ] -[inputs.previous_rollup_data.vk] -key = [ - "0x0000000000000000000000000000000000000000000000000000000000200000", - "0x000000000000000000000000000000000000000000000000000000000000008c", - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x000000000000000000000000000000000000000000000000000000000000007c", - "0x000000000000000000000000000000000000000000000000000000000000007d", - "0x000000000000000000000000000000000000000000000000000000000000007e", - "0x000000000000000000000000000000000000000000000000000000000000007f", - "0x0000000000000000000000000000000000000000000000000000000000000080", - "0x0000000000000000000000000000000000000000000000000000000000000081", - "0x0000000000000000000000000000000000000000000000000000000000000082", - "0x0000000000000000000000000000000000000000000000000000000000000083", - "0x0000000000000000000000000000000000000000000000000000000000000084", - "0x0000000000000000000000000000000000000000000000000000000000000085", - "0x0000000000000000000000000000000000000000000000000000000000000086", - "0x0000000000000000000000000000000000000000000000000000000000000087", - "0x0000000000000000000000000000000000000000000000000000000000000088", - "0x0000000000000000000000000000000000000000000000000000000000000089", - "0x000000000000000000000000000000000000000000000000000000000000008a", - "0x000000000000000000000000000000000000000000000000000000000000008b", - "0x000000000000000000000000000000f4ee8be5575eecc1ce0bb8fd11bd6e11ff", - "0x00000000000000000000000000000000000c56851f5bd830a1b9dd37809d4d09", - "0x00000000000000000000000000000072ce15a2d8b5fe7a609f60fc569fcbbca8", - "0x0000000000000000000000000000000000184b9e0f7a76592bf43c04b5de5db9", - "0x000000000000000000000000000000b8d69a85dae9b151995edb90a081f56664", - "0x000000000000000000000000000000000024b3ba576df2b9009acb1a60a895b9", - "0x000000000000000000000000000000541cc83b461e17f3a9f1bed0227d940f60", - "0x00000000000000000000000000000000000591523a5e136546c8f91e9cd76ab9", - "0x000000000000000000000000000000105950ac85bd4ed877612b0c99b2904064", - "0x00000000000000000000000000000000000d566ab60ea805cdac5c87abc5f75a", - "0x0000000000000000000000000000000c8f6b43b79e806d153e00ba966446d51b", - "0x000000000000000000000000000000000024720ff1978cc7fe927656261c96cf", - "0x000000000000000000000000000000679dd6fd40b02b9a2725a8d05410e662e8", - "0x000000000000000000000000000000000025879f8fb1f2b326f2ede9072667b8", - "0x000000000000000000000000000000b61b3f79d513a4db161c85b957a1813633", - "0x00000000000000000000000000000000002cafef84602e3df50af5fccd5c22d9", - "0x000000000000000000000000000000ebdf68631550a455b92856ab585bde77ef", - "0x00000000000000000000000000000000002d622b91afe8b8bb10026e43596d06", - "0x00000000000000000000000000000059eff4e2a20ecb7af04a279dbf81237e60", - "0x000000000000000000000000000000000004e5dc2ea5f6a693b839becd60ec05", - "0x000000000000000000000000000000c49ba2b5e195c97b452a8931ff80fdb2ab", - "0x000000000000000000000000000000000022d687491b3a279bb9746fdfbb1ef6", - "0x0000000000000000000000000000001e2d0a8be50078d192f671b9939919c9f2", - "0x000000000000000000000000000000000011f94691b88c5c78972dc1fed0b641", - "0x000000000000000000000000000000b3f4fb5f1cad97a6f4b0deada9739bd9f1", - "0x0000000000000000000000000000000000244216513805b5004e59fb1684f24b", - "0x000000000000000000000000000000f319b59aa77e4f8b3a122c5b1e724d328f", - "0x00000000000000000000000000000000000a249d6704db26c50848809c885cdc", - "0x0000000000000000000000000000004822e7c5602d5f7ee0369b59db676af679", - "0x0000000000000000000000000000000000180517396615de73c7c9d9222348ce", - "0x000000000000000000000000000000cd6b3068f49beb56fba8f3d9154ae91d8b", - "0x00000000000000000000000000000000000e2f471e416785b063f730cfcc788e", - "0x000000000000000000000000000000e52e3f8737041d3735596ffe70e6d0ea69", - "0x000000000000000000000000000000000025079307b8c86810ff149092bfab7c", - "0x000000000000000000000000000000a68bc19a8ebc1d56a12672f444a2f2cb4e", - "0x00000000000000000000000000000000002aa855c7f839ea5ac7cd60401c7b1f", - "0x0000000000000000000000000000003cb5e65aba7e5f5825e2e61300f002cb9a", - "0x0000000000000000000000000000000000231d43a2559ea389fa052b48888368", - "0x0000000000000000000000000000003998e0a8b7e8c3eb9e40fd3f7f9c843022", - "0x00000000000000000000000000000000000b34f8a6beb8327ca2f823a55bb049", - "0x0000000000000000000000000000008f84fe988554d61de1e4c1ab8bb6796467", - "0x00000000000000000000000000000000000c837e7a978aaea1511eeb4239173e", - "0x000000000000000000000000000000540908c87504bfda2fb41e4a6aea952914", - "0x000000000000000000000000000000000001d76f7b4026a470464c407055ed34", - "0x000000000000000000000000000000b61d74211cc2edc76e7ec356f10a1e2f20", - "0x00000000000000000000000000000000000316a146fa461532db18190ec45133", - "0x000000000000000000000000000000b9eda82c16ed70a83d999c13068ce11b96", - "0x00000000000000000000000000000000000b1cf3f3d2673a7f5819b32403dcfd", - "0x00000000000000000000000000000086405be1c6dd9e35ade1be0ad249e52a57", - "0x00000000000000000000000000000000001053ec579c6e88ac1a82e0a677efda", - "0x000000000000000000000000000000b48d10978c149ff9068911f2d50b3256b6", - "0x00000000000000000000000000000000000a1c18aa1928c5755fad365ae4c7ef", - "0x00000000000000000000000000000023238b3808175b7298ecfe1aa260c4ff72", - "0x00000000000000000000000000000000002554b9762cfaa5dc45c8099e873691", - "0x000000000000000000000000000000b743fc16f8b029f5451d85f47ebe02c6fa", - "0x000000000000000000000000000000000027074d495f77efc3f1ed63ef77c12a", - "0x00000000000000000000000000000016e7a036e20a7aeaccfc888bec45181c2f", - "0x000000000000000000000000000000000007eeb84661d5f2974c13819b8165ec", - "0x000000000000000000000000000000c05c48ac284466869ebbb13534841a5cc3", - "0x0000000000000000000000000000000000117324c145bb49e13978b507470b9d", - "0x0000000000000000000000000000005d0ee9ae5f5b507845ef22adf271b2ec34", - "0x00000000000000000000000000000000002419da7cdaeb97e685d0253b2fe7f9", - "0x0000000000000000000000000000000a0aa2fa7fd61da2cd7cf383de61bd807d", - "0x0000000000000000000000000000000000029673e8f6d032d1e71476643d1c15", - "0x0000000000000000000000000000005b1bf6643c04c1dd9c398faeaac392481a", - "0x0000000000000000000000000000000000150ef899b718ad11e2c0d0de2ffde4", - "0x000000000000000000000000000000c67733285978d428d0d2374bd0e8c4119e", - "0x00000000000000000000000000000000000c3cdde5ffb9e97664a79102f72051", - "0x000000000000000000000000000000ac700a1bbaef67d50083cebf2c456902e8", - "0x00000000000000000000000000000000002c6436bc2425bfb7a7fcd169083cc4", - "0x000000000000000000000000000000d899bd52fd4c87f64c271a814da8300fa5", - "0x00000000000000000000000000000000002f20391807148121873dad080988a8", - "0x000000000000000000000000000000132e2187f7423b76d4ba35ac1e80f39219", - "0x00000000000000000000000000000000000ec5361f9a757254f5cfd931d86b54", - "0x000000000000000000000000000000f6c9378e57db43358fc9777267ac279eaf", - "0x000000000000000000000000000000000009f23862ddd7d2a9a5a15f5d7e686b", - "0x000000000000000000000000000000346e91e21cb76c83b0de4140d5858302dc", - "0x0000000000000000000000000000000000183e3d022a1dd32c06a068088da3e2", - "0x00000000000000000000000000000089254fa07a65aa2fd402ed5a3201de8936", - "0x00000000000000000000000000000000000e1eec1221f0ae5ea7d3b81dc6507e", - "0x000000000000000000000000000000952518581beaf50fa238729a53010d4e27", - "0x00000000000000000000000000000000001adff32cff238194792ea8205f46f7", - "0x000000000000000000000000000000ee8b6734284bd458bd29554520126ee692", - "0x00000000000000000000000000000000002b679c59d44da62711edba6395bc36", - "0x00000000000000000000000000000095fce621e5d13adb1600ff34a7cab78ce7", - "0x0000000000000000000000000000000000138f458a343844776fda405a5271cf", - "0x00000000000000000000000000000046a68a67cbd929d663206821ce8fc5e230", - "0x00000000000000000000000000000000000baad17f09e16020481a4d67f735a2", - "0x0000000000000000000000000000005d157a3ade75ffbbc28195549243fd12a3", - "0x000000000000000000000000000000000017cabc064e4238d6844b8703d41d24", - "0x000000000000000000000000000000152ce071b703eb0716af995f8c91e13ce9", - "0x00000000000000000000000000000000002299066301428e31449b88fe5a4a76", - "0x00000000000000000000000000000039d0f4c6ba5eb83fd6fe632dba5ccd9361", - "0x00000000000000000000000000000000001bbb5e0fe4c482f456058dfb96f9ab", - "0x0000000000000000000000000000006ada264c4d8f433774b81314666f8e9d09", - "0x00000000000000000000000000000000002889ea5c1cdd05bca629fc629023cf", - "0x0000000000000000000000000000002b819d712cc9b72347f629fa9ae632b155", - "0x0000000000000000000000000000000000257b6eabdd8823096556a6263402b1", - "0x000000000000000000000000000000460b98103674e0ac00918e8877f22f1b71", - "0x0000000000000000000000000000000000054eae798f898372c126db4bd48259", - "0x0000000000000000000000000000000000000000000000000000000000000001", +[inputs.previous_rollup_data.vk] +key = [ + "0x0000000000000000000000000000000000000000000000000000000000200000", + "0x00000000000000000000000000000000000000000000000000000000000003ec", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x00000000000000000000000000000000000000000000000000000000000003dc", + "0x00000000000000000000000000000000000000000000000000000000000003dd", + "0x00000000000000000000000000000000000000000000000000000000000003de", + "0x00000000000000000000000000000000000000000000000000000000000003df", + "0x00000000000000000000000000000000000000000000000000000000000003e0", + "0x00000000000000000000000000000000000000000000000000000000000003e1", + "0x00000000000000000000000000000000000000000000000000000000000003e2", + "0x00000000000000000000000000000000000000000000000000000000000003e3", + "0x00000000000000000000000000000000000000000000000000000000000003e4", + "0x00000000000000000000000000000000000000000000000000000000000003e5", + "0x00000000000000000000000000000000000000000000000000000000000003e6", + "0x00000000000000000000000000000000000000000000000000000000000003e7", + "0x00000000000000000000000000000000000000000000000000000000000003e8", + "0x00000000000000000000000000000000000000000000000000000000000003e9", + "0x00000000000000000000000000000000000000000000000000000000000003ea", + "0x00000000000000000000000000000000000000000000000000000000000003eb", + "0x000000000000000000000000000000998e5be31abe68fe2f1d08ec68178d5e55", + "0x000000000000000000000000000000000025ab0352159abdadfb1c5163f7d202", + "0x000000000000000000000000000000bcd393b12573d6d5e53fc42c17f71d4c8b", + "0x000000000000000000000000000000000027925c9ebd2056d20410e57df614ed", + "0x0000000000000000000000000000004a0d4495d868843067a6d1ad3607e091a7", + "0x00000000000000000000000000000000001958c78407cbcd95b771b31d38a1c1", + "0x0000000000000000000000000000007e68740a53fd37e46590ab1c6f5b58b328", + "0x00000000000000000000000000000000002980bcd4948a9fbb5723af68df31da", + "0x000000000000000000000000000000dcdb1d1d1c5173490b696673e0313c62bd", + "0x000000000000000000000000000000000028d0610e818fedd71ec3a9281a7781", + "0x000000000000000000000000000000d17c67572cce970c5757a9a84445102eed", + "0x00000000000000000000000000000000002f4c160a312790dabbd93d572f07bb", + "0x0000000000000000000000000000004c61674567376a482c90a5bf7c53976cfe", + "0x00000000000000000000000000000000002d7f4779d914d01d064e7b406fb808", + "0x0000000000000000000000000000006c3b45eb8698c1e59dfeea80a9c3db9f5f", + "0x0000000000000000000000000000000000060a2cfa606a2ce7d86eb2162d7e71", + "0x00000000000000000000000000000062f1da156b5112d7cb9f320d5452e60627", + "0x000000000000000000000000000000000023325f29f5d61154778ac60e962c31", + "0x000000000000000000000000000000071a7bd0219e592d3a65f399b2a4964241", + "0x0000000000000000000000000000000000162558d3b4de45fdbde1b0d8f89bf8", + "0x000000000000000000000000000000488d6af9e2b2c6dfed9a16bef551a40255", + "0x0000000000000000000000000000000000099f9e36cd0b4f59b9c98c01b88003", + "0x000000000000000000000000000000a9267458a56c12b55c15b7c51e505b8e6c", + "0x000000000000000000000000000000000015ca0f8807b968cf2dc4222c0ec955", + "0x0000000000000000000000000000004b4b7c7b2144700873a7af327468d6edf5", + "0x00000000000000000000000000000000001f0c1785ec10d742cdd7817c9ff404", + "0x0000000000000000000000000000004ade21f14ed1ff588175882ce70339db26", + "0x0000000000000000000000000000000000279f17c283202f883245d3a4c47747", + "0x00000000000000000000000000000085157b1b29066dfe5edf96c38344140801", + "0x000000000000000000000000000000000023791cefa64559dbdade3a6190f039", + "0x000000000000000000000000000000164cfe1d74198193dd30197a589b236f88", + "0x00000000000000000000000000000000000c70733b2a932741394e86bd8a57e2", + "0x0000000000000000000000000000003f14d7f440e8578acce63f8eec32380f7a", + "0x0000000000000000000000000000000000303d66f56023c8588baffd7e092e67", + "0x000000000000000000000000000000fedfeb52b321b9cb36c9634c3730492ab1", + "0x00000000000000000000000000000000002f0aff78047292f42b7f5bb19c05f7", + "0x000000000000000000000000000000994d21d6354422208e38715f37e48fa16d", + "0x00000000000000000000000000000000001eb0eb53130ca20d5e87c0a254f7c6", + "0x00000000000000000000000000000007f75f0866bac3efe692c450e2c6de3a55", + "0x000000000000000000000000000000000017a3177f2e8def9f22c11e4b6d7618", + "0x000000000000000000000000000000a763b50f06bec58aa0e1e7a36aa5e0ef9d", + "0x0000000000000000000000000000000000072fcc6fdb06628b8adff26ce4f3f6", + "0x0000000000000000000000000000004e587f87e7ecfb15dd38d65b300a0ed04b", + "0x00000000000000000000000000000000001067a37239b8f86c8b34885e5f93f4", + "0x000000000000000000000000000000d532562004237072c915a771ef2abd6a00", + "0x000000000000000000000000000000000012f352a9d1783669dbd48c685920db", + "0x0000000000000000000000000000003b1f4cb9dcde9f5112acea5e520123a491", + "0x0000000000000000000000000000000000143a7afda4f460bbebe4ba1141501a", + "0x000000000000000000000000000000bc5cf78a7230c328e37d3f2fe19f6777ca", + "0x00000000000000000000000000000000000dcbe3389d11e40a5faf40a385ad22", + "0x000000000000000000000000000000f7c9cfa27095a937ada1a7897eb222ce89", + "0x000000000000000000000000000000000014b4924c74371f51dacd2bf2866c13", + "0x000000000000000000000000000000f2d8c4588bb4679bff57e660e17cc33973", + "0x0000000000000000000000000000000000151e2efe25ec498ed563261e36c555", + "0x0000000000000000000000000000001f2e91f77895aa5de8e452c6fca1550a7c", + "0x000000000000000000000000000000000023a05e0263e278950bccbabc25d273", + "0x00000000000000000000000000000005057a4276a0a97ef69b09241d942e1a9c", + "0x000000000000000000000000000000000018c875aec30f26a998a59cd9204d7f", + "0x0000000000000000000000000000008e7332630bd450e6ac0ee872e7e83aca38", + "0x00000000000000000000000000000000000eb1e133f51a031dfee4d967ec7321", + "0x00000000000000000000000000000034530e460a13a571bc35cfa6451fe6187e", + "0x00000000000000000000000000000000001de2c208c273d874060093c41d6815", + "0x000000000000000000000000000000e4f54fcade01d40e3e2858b5dd48341f72", + "0x00000000000000000000000000000000001e9026e6c62cfacecca45033e276cd", + "0x00000000000000000000000000000048fe4b2e662e8f72008deaaeb3cae82889", + "0x00000000000000000000000000000000000f23cd4f99e1879d8446159daeb62c", + "0x0000000000000000000000000000007a40e933ce7da86e405e300f09e9696a80", + "0x00000000000000000000000000000000002be3c84c3b52d758c814a963ba2f94", + "0x000000000000000000000000000000052c1133e365eda815b0be14c147398afd", + "0x00000000000000000000000000000000002e362f1ae1a9653e20e4ea7fff40a8", + "0x000000000000000000000000000000e550b0f1e7405c2a3eff981bb0f01c7d1f", + "0x000000000000000000000000000000000013dba20a64ae2d9f8482e61610a66f", + "0x000000000000000000000000000000642e7b3cbb6059b084f85a6010a256faa0", + "0x00000000000000000000000000000000001956c1f43bf67c2c942afd7e48353d", + "0x0000000000000000000000000000000e48669367ac01cdc80311fc55a0e60bd8", + "0x00000000000000000000000000000000002139d444b492ec82d558636ffc1e97", + "0x0000000000000000000000000000006fa4e2aa15e6518b1a6bb34141b1c46202", + "0x000000000000000000000000000000000011ded7a51635993f8ba273a699c2bb", + "0x0000000000000000000000000000004c1dc1dc7bfa3216f08dcfb9311062f721", + "0x000000000000000000000000000000000003696e65c014736dadc105517f571a", + "0x0000000000000000000000000000008de75372e4ec795c962f02a2e099c02489", + "0x00000000000000000000000000000000001e04420c925ab1c6575c7be2bf84c2", + "0x0000000000000000000000000000004858ea68d4d6587c4d8fb1856940db0220", + "0x00000000000000000000000000000000000b120f02c14e10a3fb1ce4ed95e4c6", + "0x00000000000000000000000000000095fce621e5d13adb1600ff34a7cab78ce7", + "0x0000000000000000000000000000000000138f458a343844776fda405a5271cf", + "0x00000000000000000000000000000046a68a67cbd929d663206821ce8fc5e230", + "0x00000000000000000000000000000000000baad17f09e16020481a4d67f735a2", + "0x0000000000000000000000000000005d157a3ade75ffbbc28195549243fd12a3", + "0x000000000000000000000000000000000017cabc064e4238d6844b8703d41d24", + "0x000000000000000000000000000000152ce071b703eb0716af995f8c91e13ce9", + "0x00000000000000000000000000000000002299066301428e31449b88fe5a4a76", + "0x00000000000000000000000000000039d0f4c6ba5eb83fd6fe632dba5ccd9361", + "0x00000000000000000000000000000000001bbb5e0fe4c482f456058dfb96f9ab", + "0x0000000000000000000000000000006ada264c4d8f433774b81314666f8e9d09", + "0x00000000000000000000000000000000002889ea5c1cdd05bca629fc629023cf", + "0x0000000000000000000000000000002b819d712cc9b72347f629fa9ae632b155", + "0x0000000000000000000000000000000000257b6eabdd8823096556a6263402b1", + "0x000000000000000000000000000000460b98103674e0ac00918e8877f22f1b71", + "0x0000000000000000000000000000000000054eae798f898372c126db4bd48259", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000000000aea6c2f5d00b46c5ccf035d8c19f11101a", + "0x00000000000000000000000000000000002728e3debd0a243c2174d473988eb3", + "0x0000000000000000000000000000000ee308876e5271eb3bf8b463c94ce996e7", + "0x00000000000000000000000000000000001d9bc82bf7a9b8810f3c4ae1690471" +] +hash = "0x2e7f7b71ec9506e7c37f331a6e16f9e576f5ac374fa60e4aea986776087da83f" + +[inputs.previous_rollup_data.vk_witness] +leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000e" +sibling_path = [ + "0x2efa03aa055caa1718bf1e397afc0f2c2628ec115188f95f9f46027a21fab345", + "0x29e27c1d0934d5550f382c4b65288f9e4e62757ebaf45fc1c197c920c3528cdd", + "0x220ebe2ec739267877ea7a9dfdd070c92cc88f558917466660908410bd66dabc", + "0x268b4fb54bbdda64dd707ee86cb0729dfb9a9e8b6ae83e973b37bc7e4b18f875", + "0x1967335d7b185023afd52d8f7f40be4ced0d80ba63d4dce2de3e26bfe772e394", + "0x122cddd247164987e2287f8ce124bea7a68052e85bffebe2fc6cd71718689069" +] + + [[inputs.previous_rollup_data]] +[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs] +previous_block_hash = "0x022087729c552378b2572eb9be555e7dff2161a22e9a1d5e175d3558163a615b" +end_block_hash = "0x205dc0e6c4055f045d9c226b52b42ccc6062d9ab2702e4e0acbf3209178b1e53" +out_hash = "0x0007638bb56b6dda2b64b8f76841114ac3a87a1820030e2e16772c4d294879c3" +vk_tree_root = "0x0bee8f04d48c18c88f2b9dd3b87daba3b3c8d000f44d290587504ae770942c56" +protocol_contract_tree_root = "0x1c4e64cbb91a46bc2fd73590e1dacd3ddf84d1b5e7a7182795ab02fe80399caf" +prover_id = "0x0000000000000000000000000000000000000000000000000000000000000051" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.previous_archive] + root = "0x04b51aa5df89d177213335ca62dee74d15b920e231f5ea5198ed405967d188fd" + next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.new_archive] + root = "0x176c781186011b45fed098e21264ed31abe491d165380b1490641d5bc1c7ec85" + next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000a" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables] + chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" + version = "0x0000000000000000000000000000000000000000000000000000000000000001" + block_number = "0x0000000000000000000000000000000000000000000000000000000000000008" + slot_number = "0x0000000000000000000000000000000000000000000000000000000000000015" + timestamp = "0x00000000000000000000000000000000000000000000000000000000675c2e96" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.coinbase] + inner = "0x000000000000000000000000ed846b6f217c7084a6c108eda50abce8c8367eac" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.fee_recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.gas_fees] + fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd4533a" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables] + chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" + version = "0x0000000000000000000000000000000000000000000000000000000000000001" + block_number = "0x0000000000000000000000000000000000000000000000000000000000000009" + slot_number = "0x0000000000000000000000000000000000000000000000000000000000000016" + timestamp = "0x00000000000000000000000000000000000000000000000000000000675c2eae" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.coinbase] + inner = "0x000000000000000000000000ed846b6f217c7084a6c108eda50abce8c8367eac" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.fee_recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.gas_fees] + fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd4533a" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000011b417896f129a" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x000000000000000000000000ed846b6f217c7084a6c108eda50abce8c8367eac" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000011b417896f129a" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x000000000000000000000000ed846b6f217c7084a6c108eda50abce8c8367eac" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] + value = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x05620cfa3125101fc126dcb1cd967ae0cda5bfbb0c413bb1ad570ede664953cf" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x1965375f1fcd10c386e8da3da65bf4", + "0xb17c73370563522d2debdb7994b039", + "0x17f0" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x00aae0654b3ba2a2f1e2fa2c7d23b35ab21cfba67951dcf917925cc2325eb866", + "0x0000000000000000000000000000001eea78b1856d5770ee11f410332f1be2af" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x172d7f736e107938e1bc1e8a4a11b55937b11a6d1bac463f17efe75495db19e5" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x3bb56352d775bd9572666507c876fa", + "0xabf177bc013f733764b4f023e81e66", + "0x19f1" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x00b4b024814b9a355c67327ec0af765ab3871da695c51a4bdfbe3407ab865fe2", + "0x00000000000000000000000000000074b4d39d0d3840c2a1e97f1924f19a4455" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000002", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000006937c5aee3de5a637b09986a2d9e03d7c2", - "0x00000000000000000000000000000000001888a62c288d1481615105fe1cfb70", - "0x00000000000000000000000000000052f5a726beb55d24f0a043faf01e3b20be", - "0x00000000000000000000000000000000000a291ac5b9d40127d2b141d3c63fca" + "0x0000000000000000000000000000000000000000000000000000000000000000" ] -hash = "0x069c05604b7dfd07c0364ac373551af4ffbf9b823494d4bbc77158a60da46d7d" -[inputs.previous_rollup_data.vk_witness] -leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000e" -sibling_path = [ - "0x14a1b1348f7f59ee3fa669c13cf1e62132809cf17ba93039ec625499c3cd924f", - "0x2caff5c729ea398cdea8f45486191cc2de687f05e5a3b5a7dbfc84829d85a846", - "0x07dcf10f13b75a0fee443823cce9ba4f4d0cf6b1244bd1a72c22388b2cf6044a", - "0x043018912588f9874fea852ab854ccaa9b13b8c1b201b55eda7a2fbdd1224ae0", - "0x022f5ac8ff86489f5492d016d0ac69cd39e93b518da3f5a15a8c3177b92bc008", - "0x122cddd247164987e2287f8ce124bea7a68052e85bffebe2fc6cd71718689069" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" ] - [[inputs.previous_rollup_data]] -[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs] -previous_block_hash = "0x148654793384eeab5a0c8b73d18ced24816c0cdc72c0ee5b18bbdaa2b8f9c126" -end_block_hash = "0x1135231bcbc0b8388661794a5f3699dda422dec0d0928db2913229d53ef1b3e7" -out_hash = "0x00a5f5876ec759adc95105718e057fbbb7eb0d5698e48d228f17d76a83b8313c" -vk_tree_root = "0x0a118eae659eb1671e3f579a83c4ad3688cee1b9f23dcec48af4d3f3a2de1733" -protocol_contract_tree_root = "0x296690a67333fb896eff0ef812d31f9be26161726e47057bb688ddcf08164453" -prover_id = "0x0000000000000000000000000000000000000000000000000000000000000051" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.previous_archive] - root = "0x25c8c19c00ade5d9ee2e42a0b6ba0487a228c008c9216227b3cfe6483cc8c274" - next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000a" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.new_archive] - root = "0x2b8f360fd738b1934531cb9c1ccd888ff71f62cbe5043d7b08c331541579a261" - next_available_leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000c" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables] - chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x0000000000000000000000000000000000000000000000000000000000000001" - block_number = "0x000000000000000000000000000000000000000000000000000000000000000a" - slot_number = "0x0000000000000000000000000000000000000000000000000000000000000024" - timestamp = "0x00000000000000000000000000000000000000000000000000000000675b06b2" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.coinbase] - inner = "0x000000000000000000000000dde7ef1ed87eb5cbb0562efd27c3ad9eda8c800a" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.fee_recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.start_global_variables.gas_fees] - fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd150e0" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables] - chain_id = "0x0000000000000000000000000000000000000000000000000000000000007a69" - version = "0x0000000000000000000000000000000000000000000000000000000000000001" - block_number = "0x000000000000000000000000000000000000000000000000000000000000000b" - slot_number = "0x0000000000000000000000000000000000000000000000000000000000000025" - timestamp = "0x00000000000000000000000000000000000000000000000000000000675b06ca" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.coinbase] - inner = "0x000000000000000000000000dde7ef1ed87eb5cbb0562efd27c3ad9eda8c800a" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.fee_recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.end_global_variables.gas_fees] - fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000c9bd150e0" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x000000000000000000000000000000000000000000000000001ca941b182ee80" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x000000000000000000000000dde7ef1ed87eb5cbb0562efd27c3ad9eda8c800a" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x00000000000000000000000000000000000000000000000000117815f5ec0920" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x000000000000000000000000dde7ef1ed87eb5cbb0562efd27c3ad9eda8c800a" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs]] +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" +[[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner]] +z = "0x0000000000000000000000000000000000000000000000000000000000000000" - [[inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees]] - value = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.y] + limbs = [ + "0x000000000000000000000000000000", + "0x000000000000000000000000000000", + "0x0000" +] - [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.fees.recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + [inputs.previous_rollup_data.block_root_or_block_merge_public_inputs.blob_public_inputs.inner.kzg_commitment] + inner = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] [inputs.previous_rollup_data.proof] fields = [ @@ -1760,109 +6464,109 @@ fields = [ [inputs.previous_rollup_data.vk] key = [ "0x0000000000000000000000000000000000000000000000000000000000200000", - "0x000000000000000000000000000000000000000000000000000000000000008c", + "0x00000000000000000000000000000000000000000000000000000000000003ec", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x000000000000000000000000000000000000000000000000000000000000007c", - "0x000000000000000000000000000000000000000000000000000000000000007d", - "0x000000000000000000000000000000000000000000000000000000000000007e", - "0x000000000000000000000000000000000000000000000000000000000000007f", - "0x0000000000000000000000000000000000000000000000000000000000000080", - "0x0000000000000000000000000000000000000000000000000000000000000081", - "0x0000000000000000000000000000000000000000000000000000000000000082", - "0x0000000000000000000000000000000000000000000000000000000000000083", - "0x0000000000000000000000000000000000000000000000000000000000000084", - "0x0000000000000000000000000000000000000000000000000000000000000085", - "0x0000000000000000000000000000000000000000000000000000000000000086", - "0x0000000000000000000000000000000000000000000000000000000000000087", - "0x0000000000000000000000000000000000000000000000000000000000000088", - "0x0000000000000000000000000000000000000000000000000000000000000089", - "0x000000000000000000000000000000000000000000000000000000000000008a", - "0x000000000000000000000000000000000000000000000000000000000000008b", - "0x000000000000000000000000000000f4ee8be5575eecc1ce0bb8fd11bd6e11ff", - "0x00000000000000000000000000000000000c56851f5bd830a1b9dd37809d4d09", - "0x00000000000000000000000000000072ce15a2d8b5fe7a609f60fc569fcbbca8", - "0x0000000000000000000000000000000000184b9e0f7a76592bf43c04b5de5db9", - "0x000000000000000000000000000000b8d69a85dae9b151995edb90a081f56664", - "0x000000000000000000000000000000000024b3ba576df2b9009acb1a60a895b9", - "0x000000000000000000000000000000541cc83b461e17f3a9f1bed0227d940f60", - "0x00000000000000000000000000000000000591523a5e136546c8f91e9cd76ab9", - "0x000000000000000000000000000000105950ac85bd4ed877612b0c99b2904064", - "0x00000000000000000000000000000000000d566ab60ea805cdac5c87abc5f75a", - "0x0000000000000000000000000000000c8f6b43b79e806d153e00ba966446d51b", - "0x000000000000000000000000000000000024720ff1978cc7fe927656261c96cf", - "0x000000000000000000000000000000679dd6fd40b02b9a2725a8d05410e662e8", - "0x000000000000000000000000000000000025879f8fb1f2b326f2ede9072667b8", - "0x000000000000000000000000000000b61b3f79d513a4db161c85b957a1813633", - "0x00000000000000000000000000000000002cafef84602e3df50af5fccd5c22d9", - "0x000000000000000000000000000000ebdf68631550a455b92856ab585bde77ef", - "0x00000000000000000000000000000000002d622b91afe8b8bb10026e43596d06", - "0x00000000000000000000000000000059eff4e2a20ecb7af04a279dbf81237e60", - "0x000000000000000000000000000000000004e5dc2ea5f6a693b839becd60ec05", - "0x000000000000000000000000000000c49ba2b5e195c97b452a8931ff80fdb2ab", - "0x000000000000000000000000000000000022d687491b3a279bb9746fdfbb1ef6", - "0x0000000000000000000000000000001e2d0a8be50078d192f671b9939919c9f2", - "0x000000000000000000000000000000000011f94691b88c5c78972dc1fed0b641", - "0x000000000000000000000000000000b3f4fb5f1cad97a6f4b0deada9739bd9f1", - "0x0000000000000000000000000000000000244216513805b5004e59fb1684f24b", - "0x000000000000000000000000000000f319b59aa77e4f8b3a122c5b1e724d328f", - "0x00000000000000000000000000000000000a249d6704db26c50848809c885cdc", - "0x0000000000000000000000000000004822e7c5602d5f7ee0369b59db676af679", - "0x0000000000000000000000000000000000180517396615de73c7c9d9222348ce", - "0x000000000000000000000000000000cd6b3068f49beb56fba8f3d9154ae91d8b", - "0x00000000000000000000000000000000000e2f471e416785b063f730cfcc788e", - "0x000000000000000000000000000000e52e3f8737041d3735596ffe70e6d0ea69", - "0x000000000000000000000000000000000025079307b8c86810ff149092bfab7c", - "0x000000000000000000000000000000a68bc19a8ebc1d56a12672f444a2f2cb4e", - "0x00000000000000000000000000000000002aa855c7f839ea5ac7cd60401c7b1f", - "0x0000000000000000000000000000003cb5e65aba7e5f5825e2e61300f002cb9a", - "0x0000000000000000000000000000000000231d43a2559ea389fa052b48888368", - "0x0000000000000000000000000000003998e0a8b7e8c3eb9e40fd3f7f9c843022", - "0x00000000000000000000000000000000000b34f8a6beb8327ca2f823a55bb049", - "0x0000000000000000000000000000008f84fe988554d61de1e4c1ab8bb6796467", - "0x00000000000000000000000000000000000c837e7a978aaea1511eeb4239173e", - "0x000000000000000000000000000000540908c87504bfda2fb41e4a6aea952914", - "0x000000000000000000000000000000000001d76f7b4026a470464c407055ed34", - "0x000000000000000000000000000000b61d74211cc2edc76e7ec356f10a1e2f20", - "0x00000000000000000000000000000000000316a146fa461532db18190ec45133", - "0x000000000000000000000000000000b9eda82c16ed70a83d999c13068ce11b96", - "0x00000000000000000000000000000000000b1cf3f3d2673a7f5819b32403dcfd", - "0x00000000000000000000000000000086405be1c6dd9e35ade1be0ad249e52a57", - "0x00000000000000000000000000000000001053ec579c6e88ac1a82e0a677efda", - "0x000000000000000000000000000000b48d10978c149ff9068911f2d50b3256b6", - "0x00000000000000000000000000000000000a1c18aa1928c5755fad365ae4c7ef", - "0x00000000000000000000000000000023238b3808175b7298ecfe1aa260c4ff72", - "0x00000000000000000000000000000000002554b9762cfaa5dc45c8099e873691", - "0x000000000000000000000000000000b743fc16f8b029f5451d85f47ebe02c6fa", - "0x000000000000000000000000000000000027074d495f77efc3f1ed63ef77c12a", - "0x00000000000000000000000000000016e7a036e20a7aeaccfc888bec45181c2f", - "0x000000000000000000000000000000000007eeb84661d5f2974c13819b8165ec", - "0x000000000000000000000000000000c05c48ac284466869ebbb13534841a5cc3", - "0x0000000000000000000000000000000000117324c145bb49e13978b507470b9d", - "0x0000000000000000000000000000005d0ee9ae5f5b507845ef22adf271b2ec34", - "0x00000000000000000000000000000000002419da7cdaeb97e685d0253b2fe7f9", - "0x0000000000000000000000000000000a0aa2fa7fd61da2cd7cf383de61bd807d", - "0x0000000000000000000000000000000000029673e8f6d032d1e71476643d1c15", - "0x0000000000000000000000000000005b1bf6643c04c1dd9c398faeaac392481a", - "0x0000000000000000000000000000000000150ef899b718ad11e2c0d0de2ffde4", - "0x000000000000000000000000000000c67733285978d428d0d2374bd0e8c4119e", - "0x00000000000000000000000000000000000c3cdde5ffb9e97664a79102f72051", - "0x000000000000000000000000000000ac700a1bbaef67d50083cebf2c456902e8", - "0x00000000000000000000000000000000002c6436bc2425bfb7a7fcd169083cc4", - "0x000000000000000000000000000000d899bd52fd4c87f64c271a814da8300fa5", - "0x00000000000000000000000000000000002f20391807148121873dad080988a8", - "0x000000000000000000000000000000132e2187f7423b76d4ba35ac1e80f39219", - "0x00000000000000000000000000000000000ec5361f9a757254f5cfd931d86b54", - "0x000000000000000000000000000000f6c9378e57db43358fc9777267ac279eaf", - "0x000000000000000000000000000000000009f23862ddd7d2a9a5a15f5d7e686b", - "0x000000000000000000000000000000346e91e21cb76c83b0de4140d5858302dc", - "0x0000000000000000000000000000000000183e3d022a1dd32c06a068088da3e2", - "0x00000000000000000000000000000089254fa07a65aa2fd402ed5a3201de8936", - "0x00000000000000000000000000000000000e1eec1221f0ae5ea7d3b81dc6507e", - "0x000000000000000000000000000000952518581beaf50fa238729a53010d4e27", - "0x00000000000000000000000000000000001adff32cff238194792ea8205f46f7", - "0x000000000000000000000000000000ee8b6734284bd458bd29554520126ee692", - "0x00000000000000000000000000000000002b679c59d44da62711edba6395bc36", + "0x00000000000000000000000000000000000000000000000000000000000003dc", + "0x00000000000000000000000000000000000000000000000000000000000003dd", + "0x00000000000000000000000000000000000000000000000000000000000003de", + "0x00000000000000000000000000000000000000000000000000000000000003df", + "0x00000000000000000000000000000000000000000000000000000000000003e0", + "0x00000000000000000000000000000000000000000000000000000000000003e1", + "0x00000000000000000000000000000000000000000000000000000000000003e2", + "0x00000000000000000000000000000000000000000000000000000000000003e3", + "0x00000000000000000000000000000000000000000000000000000000000003e4", + "0x00000000000000000000000000000000000000000000000000000000000003e5", + "0x00000000000000000000000000000000000000000000000000000000000003e6", + "0x00000000000000000000000000000000000000000000000000000000000003e7", + "0x00000000000000000000000000000000000000000000000000000000000003e8", + "0x00000000000000000000000000000000000000000000000000000000000003e9", + "0x00000000000000000000000000000000000000000000000000000000000003ea", + "0x00000000000000000000000000000000000000000000000000000000000003eb", + "0x000000000000000000000000000000998e5be31abe68fe2f1d08ec68178d5e55", + "0x000000000000000000000000000000000025ab0352159abdadfb1c5163f7d202", + "0x000000000000000000000000000000bcd393b12573d6d5e53fc42c17f71d4c8b", + "0x000000000000000000000000000000000027925c9ebd2056d20410e57df614ed", + "0x0000000000000000000000000000004a0d4495d868843067a6d1ad3607e091a7", + "0x00000000000000000000000000000000001958c78407cbcd95b771b31d38a1c1", + "0x0000000000000000000000000000007e68740a53fd37e46590ab1c6f5b58b328", + "0x00000000000000000000000000000000002980bcd4948a9fbb5723af68df31da", + "0x000000000000000000000000000000dcdb1d1d1c5173490b696673e0313c62bd", + "0x000000000000000000000000000000000028d0610e818fedd71ec3a9281a7781", + "0x000000000000000000000000000000d17c67572cce970c5757a9a84445102eed", + "0x00000000000000000000000000000000002f4c160a312790dabbd93d572f07bb", + "0x0000000000000000000000000000004c61674567376a482c90a5bf7c53976cfe", + "0x00000000000000000000000000000000002d7f4779d914d01d064e7b406fb808", + "0x0000000000000000000000000000006c3b45eb8698c1e59dfeea80a9c3db9f5f", + "0x0000000000000000000000000000000000060a2cfa606a2ce7d86eb2162d7e71", + "0x00000000000000000000000000000062f1da156b5112d7cb9f320d5452e60627", + "0x000000000000000000000000000000000023325f29f5d61154778ac60e962c31", + "0x000000000000000000000000000000071a7bd0219e592d3a65f399b2a4964241", + "0x0000000000000000000000000000000000162558d3b4de45fdbde1b0d8f89bf8", + "0x000000000000000000000000000000488d6af9e2b2c6dfed9a16bef551a40255", + "0x0000000000000000000000000000000000099f9e36cd0b4f59b9c98c01b88003", + "0x000000000000000000000000000000a9267458a56c12b55c15b7c51e505b8e6c", + "0x000000000000000000000000000000000015ca0f8807b968cf2dc4222c0ec955", + "0x0000000000000000000000000000004b4b7c7b2144700873a7af327468d6edf5", + "0x00000000000000000000000000000000001f0c1785ec10d742cdd7817c9ff404", + "0x0000000000000000000000000000004ade21f14ed1ff588175882ce70339db26", + "0x0000000000000000000000000000000000279f17c283202f883245d3a4c47747", + "0x00000000000000000000000000000085157b1b29066dfe5edf96c38344140801", + "0x000000000000000000000000000000000023791cefa64559dbdade3a6190f039", + "0x000000000000000000000000000000164cfe1d74198193dd30197a589b236f88", + "0x00000000000000000000000000000000000c70733b2a932741394e86bd8a57e2", + "0x0000000000000000000000000000003f14d7f440e8578acce63f8eec32380f7a", + "0x0000000000000000000000000000000000303d66f56023c8588baffd7e092e67", + "0x000000000000000000000000000000fedfeb52b321b9cb36c9634c3730492ab1", + "0x00000000000000000000000000000000002f0aff78047292f42b7f5bb19c05f7", + "0x000000000000000000000000000000994d21d6354422208e38715f37e48fa16d", + "0x00000000000000000000000000000000001eb0eb53130ca20d5e87c0a254f7c6", + "0x00000000000000000000000000000007f75f0866bac3efe692c450e2c6de3a55", + "0x000000000000000000000000000000000017a3177f2e8def9f22c11e4b6d7618", + "0x000000000000000000000000000000a763b50f06bec58aa0e1e7a36aa5e0ef9d", + "0x0000000000000000000000000000000000072fcc6fdb06628b8adff26ce4f3f6", + "0x0000000000000000000000000000004e587f87e7ecfb15dd38d65b300a0ed04b", + "0x00000000000000000000000000000000001067a37239b8f86c8b34885e5f93f4", + "0x000000000000000000000000000000d532562004237072c915a771ef2abd6a00", + "0x000000000000000000000000000000000012f352a9d1783669dbd48c685920db", + "0x0000000000000000000000000000003b1f4cb9dcde9f5112acea5e520123a491", + "0x0000000000000000000000000000000000143a7afda4f460bbebe4ba1141501a", + "0x000000000000000000000000000000bc5cf78a7230c328e37d3f2fe19f6777ca", + "0x00000000000000000000000000000000000dcbe3389d11e40a5faf40a385ad22", + "0x000000000000000000000000000000f7c9cfa27095a937ada1a7897eb222ce89", + "0x000000000000000000000000000000000014b4924c74371f51dacd2bf2866c13", + "0x000000000000000000000000000000f2d8c4588bb4679bff57e660e17cc33973", + "0x0000000000000000000000000000000000151e2efe25ec498ed563261e36c555", + "0x0000000000000000000000000000001f2e91f77895aa5de8e452c6fca1550a7c", + "0x000000000000000000000000000000000023a05e0263e278950bccbabc25d273", + "0x00000000000000000000000000000005057a4276a0a97ef69b09241d942e1a9c", + "0x000000000000000000000000000000000018c875aec30f26a998a59cd9204d7f", + "0x0000000000000000000000000000008e7332630bd450e6ac0ee872e7e83aca38", + "0x00000000000000000000000000000000000eb1e133f51a031dfee4d967ec7321", + "0x00000000000000000000000000000034530e460a13a571bc35cfa6451fe6187e", + "0x00000000000000000000000000000000001de2c208c273d874060093c41d6815", + "0x000000000000000000000000000000e4f54fcade01d40e3e2858b5dd48341f72", + "0x00000000000000000000000000000000001e9026e6c62cfacecca45033e276cd", + "0x00000000000000000000000000000048fe4b2e662e8f72008deaaeb3cae82889", + "0x00000000000000000000000000000000000f23cd4f99e1879d8446159daeb62c", + "0x0000000000000000000000000000007a40e933ce7da86e405e300f09e9696a80", + "0x00000000000000000000000000000000002be3c84c3b52d758c814a963ba2f94", + "0x000000000000000000000000000000052c1133e365eda815b0be14c147398afd", + "0x00000000000000000000000000000000002e362f1ae1a9653e20e4ea7fff40a8", + "0x000000000000000000000000000000e550b0f1e7405c2a3eff981bb0f01c7d1f", + "0x000000000000000000000000000000000013dba20a64ae2d9f8482e61610a66f", + "0x000000000000000000000000000000642e7b3cbb6059b084f85a6010a256faa0", + "0x00000000000000000000000000000000001956c1f43bf67c2c942afd7e48353d", + "0x0000000000000000000000000000000e48669367ac01cdc80311fc55a0e60bd8", + "0x00000000000000000000000000000000002139d444b492ec82d558636ffc1e97", + "0x0000000000000000000000000000006fa4e2aa15e6518b1a6bb34141b1c46202", + "0x000000000000000000000000000000000011ded7a51635993f8ba273a699c2bb", + "0x0000000000000000000000000000004c1dc1dc7bfa3216f08dcfb9311062f721", + "0x000000000000000000000000000000000003696e65c014736dadc105517f571a", + "0x0000000000000000000000000000008de75372e4ec795c962f02a2e099c02489", + "0x00000000000000000000000000000000001e04420c925ab1c6575c7be2bf84c2", + "0x0000000000000000000000000000004858ea68d4d6587c4d8fb1856940db0220", + "0x00000000000000000000000000000000000b120f02c14e10a3fb1ce4ed95e4c6", "0x00000000000000000000000000000095fce621e5d13adb1600ff34a7cab78ce7", "0x0000000000000000000000000000000000138f458a343844776fda405a5271cf", "0x00000000000000000000000000000046a68a67cbd929d663206821ce8fc5e230", @@ -1883,20 +6587,20 @@ key = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000002", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000006937c5aee3de5a637b09986a2d9e03d7c2", - "0x00000000000000000000000000000000001888a62c288d1481615105fe1cfb70", - "0x00000000000000000000000000000052f5a726beb55d24f0a043faf01e3b20be", - "0x00000000000000000000000000000000000a291ac5b9d40127d2b141d3c63fca" + "0x000000000000000000000000000000aea6c2f5d00b46c5ccf035d8c19f11101a", + "0x00000000000000000000000000000000002728e3debd0a243c2174d473988eb3", + "0x0000000000000000000000000000000ee308876e5271eb3bf8b463c94ce996e7", + "0x00000000000000000000000000000000001d9bc82bf7a9b8810f3c4ae1690471" ] -hash = "0x069c05604b7dfd07c0364ac373551af4ffbf9b823494d4bbc77158a60da46d7d" +hash = "0x2e7f7b71ec9506e7c37f331a6e16f9e576f5ac374fa60e4aea986776087da83f" [inputs.previous_rollup_data.vk_witness] leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000e" sibling_path = [ - "0x14a1b1348f7f59ee3fa669c13cf1e62132809cf17ba93039ec625499c3cd924f", - "0x2caff5c729ea398cdea8f45486191cc2de687f05e5a3b5a7dbfc84829d85a846", - "0x07dcf10f13b75a0fee443823cce9ba4f4d0cf6b1244bd1a72c22388b2cf6044a", - "0x043018912588f9874fea852ab854ccaa9b13b8c1b201b55eda7a2fbdd1224ae0", - "0x022f5ac8ff86489f5492d016d0ac69cd39e93b518da3f5a15a8c3177b92bc008", + "0x2efa03aa055caa1718bf1e397afc0f2c2628ec115188f95f9f46027a21fab345", + "0x29e27c1d0934d5550f382c4b65288f9e4e62757ebaf45fc1c197c920c3528cdd", + "0x220ebe2ec739267877ea7a9dfdd070c92cc88f558917466660908410bd66dabc", + "0x268b4fb54bbdda64dd707ee86cb0729dfb9a9e8b6ae83e973b37bc7e4b18f875", + "0x1967335d7b185023afd52d8f7f40be4ced0d80ba63d4dce2de3e26bfe772e394", "0x122cddd247164987e2287f8ce124bea7a68052e85bffebe2fc6cd71718689069" ] diff --git a/yarn-project/end-to-end/src/e2e_prover/full.test.ts b/yarn-project/end-to-end/src/e2e_prover/full.test.ts index bdb6e69ca55..a3672413d00 100644 --- a/yarn-project/end-to-end/src/e2e_prover/full.test.ts +++ b/yarn-project/end-to-end/src/e2e_prover/full.test.ts @@ -169,7 +169,7 @@ describe('full_prover', () => { // Create the two transactions const privateBalance = await provenAssets[0].methods.balance_of_private(sender).simulate(); - const privateSendAmount = privateBalance / 10n; + const privateSendAmount = privateBalance / 20n; expect(privateSendAmount).toBeGreaterThan(0n); const firstPrivateInteraction = provenAssets[0].methods.transfer(recipient, privateSendAmount); diff --git a/yarn-project/noir-protocol-circuits-types/src/index.ts b/yarn-project/noir-protocol-circuits-types/src/index.ts index 74ef83e8157..1955e7bfbd1 100644 --- a/yarn-project/noir-protocol-circuits-types/src/index.ts +++ b/yarn-project/noir-protocol-circuits-types/src/index.ts @@ -552,6 +552,7 @@ export function convertBlockRootRollupInputsToWitnessMap(inputs: BlockRootRollup */ export function convertSimulatedBlockRootRollupInputsToWitnessMap(inputs: BlockRootRollupInputs): WitnessMap { const mapped = mapBlockRootRollupInputsToNoir(inputs); + updateProtocolCircuitSampleInputs('rollup-block-root', TOML.stringify({ inputs: mapped })); const initialWitnessMap = abiEncode(SimulatedServerCircuitArtifacts.BlockRootRollupArtifact.abi, { inputs: mapped as any, }); From f420a79bb80a1865ededea70099f387a731e7370 Mon Sep 17 00:00:00 2001 From: MirandaWood Date: Fri, 13 Dec 2024 15:11:04 +0000 Subject: [PATCH 38/39] chore: add brillig gates skip to earthfile --- noir-projects/Earthfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/noir-projects/Earthfile b/noir-projects/Earthfile index 42cfb3d89ad..6fbbd87db9e 100644 --- a/noir-projects/Earthfile +++ b/noir-projects/Earthfile @@ -105,7 +105,7 @@ test-protocol-circuits: # Install nargo COPY ../noir/+nargo/nargo /usr/bin/nargo - RUN cd /usr/src/noir-projects/noir-protocol-circuits && nargo test --silence-warnings + RUN cd /usr/src/noir-projects/noir-protocol-circuits && nargo test --silence-warnings --skip-brillig-constraints-check test-aztec-nr: FROM ../yarn-project/+txe @@ -161,7 +161,7 @@ gates-report: COPY ../barretenberg/cpp/+preset-release/bin/bb /usr/src/barretenberg/cpp/build/bin/bb ENV BB_BIN /usr/src/barretenberg/cpp/build/bin/bb - RUN cd noir-protocol-circuits && yarn && node ./scripts/generate_variants.js tiny && nargo compile --silence-warnings + RUN cd noir-protocol-circuits && yarn && node ./scripts/generate_variants.js tiny && nargo compile --silence-warnings --skip-brillig-constraints-check COPY ./gates_report.sh ./gates_report.sh RUN ./gates_report.sh From 436b7d63f81f5bc8520074fbfe82c3d0272935d7 Mon Sep 17 00:00:00 2001 From: MirandaWood Date: Fri, 13 Dec 2024 22:28:51 +0000 Subject: [PATCH 39/39] chore: reenable test --- scripts/ci/get_e2e_jobs.sh | 3 +-- yarn-project/end-to-end/scripts/e2e_test_config.yml | 3 +-- yarn-project/end-to-end/src/e2e_epochs.test.ts | 1 - 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/scripts/ci/get_e2e_jobs.sh b/scripts/ci/get_e2e_jobs.sh index 1d0d6aaa877..ed6379e6a46 100755 --- a/scripts/ci/get_e2e_jobs.sh +++ b/scripts/ci/get_e2e_jobs.sh @@ -26,8 +26,7 @@ allow_list=( "e2e_cross_chain_messaging" "e2e_crowdfunding_and_claim" "e2e_deploy_contract" - # TODO(#10177): reenable - # "e2e_epochs" + "e2e_epochs" "e2e_fees" "e2e_fees_failures" "e2e_fees_gas_estimation" diff --git a/yarn-project/end-to-end/scripts/e2e_test_config.yml b/yarn-project/end-to-end/scripts/e2e_test_config.yml index 288f1a30a8d..2fb7902c93f 100644 --- a/yarn-project/end-to-end/scripts/e2e_test_config.yml +++ b/yarn-project/end-to-end/scripts/e2e_test_config.yml @@ -36,8 +36,7 @@ tests: e2e_devnet_smoke: {} docs_examples: use_compose: true - # TODO(#10177): reenable - # e2e_epochs: {} + e2e_epochs: {} e2e_escrow_contract: {} e2e_fees_account_init: test_path: 'e2e_fees/account_init.test.ts' diff --git a/yarn-project/end-to-end/src/e2e_epochs.test.ts b/yarn-project/end-to-end/src/e2e_epochs.test.ts index f828cfb3219..c64ff2d6eda 100644 --- a/yarn-project/end-to-end/src/e2e_epochs.test.ts +++ b/yarn-project/end-to-end/src/e2e_epochs.test.ts @@ -98,7 +98,6 @@ describe('e2e_epochs', () => { afterAll(async () => { clearInterval(handle); - // TODO(#10177): The below times out await context.teardown(); });